Skip to content

Server side scripting statistics 2015

I’m continuing my study on popularity of different server side languages, and made a few adjustments this year I’ll go over.  This is the exact searches I’m placing on the different job sites:

Keywords: “Ruby on Rails”, “PHP”, “ASP.NET”, “Python”, “Perl”
Location: “San Francisco, CA”
Search Radius: within 30 miles
Posting date: within 30 days

Paying attention to the search radius and posting date are new here, these are the defaults for the different sites:

Monster: defaults to 20 miles with no time limit
Career Builder: defaults to 30 miles within 30 days
Craigslist: doesn’t offer an advanced search so we can’t normalize that
Dice: defaults to 30 miles within 30 days

Both Career Builder and Dice default to 30 miles in 30 days, so I went with that. And there’s nothing I can do to specify the craigslist results, so really only Monster’s numbers will change here.  I did search Monster using the default settings, and the are those numbers:

Default criteria Monster numbers: Ruby 73, PHP 76, ASP 8, Python 135, Perl 9

The numbers are a bit different, but not significantly so.  So, I’m not going to include them in the table, and I don’t believe that’s a significant enough change to skew the results from the numbers from previous years.

One additional thing to note it that I no longer need to omit the . from ASP.NET on craigslist, though doing so didn’t change the number of results.

And, as a note to myself – I found a site that will calculate the totals and percentages for me, which saved a lot of time.

SiteRoRPHPASP.NETPythonPerl
2008 total71 (5%)860 (69%)309 (24%)
2010 Total193 (18%)720 (67%)158 (14%)
2011 Total (2273)374 (16%)1508 (66%)391 (17%)
2012 Total (2085)402 (19%)1396 (67%)287 (14%)
2013 Total (1889)396 (21%)1109 (59%)384 (18%)
2014 Total (2003/5291)412 (21%/8%)1262 (63%/24%)329 (16%/6%)2167 (41%)1121 (21%)
2015
Monster.com (364)64 (17.6%)111 (30.5%)9 (2.5%)175 (48%)5 (1.4%)
Career Builder (346)25 (7.2%)59 (17%)30 (8.7%)154 (44.5%)78 (22.5%)
Craigslist (1281)61 (4.8%)624 (48.7%)44 (3.4%)399 (31%)153 (11.9%)
Dice (1833)425 (23.2%)234 (12.8%)99 (5.4%)756 (41.2%)319 (17.4%)
Total (3824)575 (15%)1028 (26.9%)182 (4.7%)1484 (38.8%)555 (14.5%)

Ruby is higher then it’s ever been, while PHP has gone down a bit.  ASP.NET and Perl took a huge dive – they’re roughly half what they were.  This is the second lowest I’ve seen ASP.  I only have last years number for Perl, so I can’t really deduce too much from this change.

In general over the years it looks like Ruby is gaining popularity, while other languages are just bouncing around.  This suggests to me that the newer Ruby is still finding it’s place, while the other languages are more settled in their positions in the marketplace.

I included totals on the job sites this year too, Dice ended up with the most – which isn’t surprising since it specializes in tech jobs.  With Craigslist right behind – which also isn’t very surprising since it’s the cheapest to list out of all the job sites here.

Social Login with Phonegap, Omniauth, Tokens, and InAppBrowser

For a project I needed to integrate Facebook and Twitter logins to a phonegap app.  I went through a ton of plugins and jsOAuths, but they were all quite cumbersome. I really wanted a simpler approach that would handle Twitter and Facebook at the same time.

This article about Twitter integration with Child Browser got me started in the right direction.  It’s a little dated with Child Browser, so I set out to update it to work with InAppBrowser, but during the process I realized that I could actually handle this issue a lot simpler.  Mostly because I only needed to login and didn’t require any deeper integration with Social platforms.

So after a little more digging I came across this lovely article on cross window communication with InAppBrowser which was everything I needed to take care of business!

In my case, the server is going to be doing all the heavy lifting, and for this project we already had Omniauth set-up for social login and tokens so I only needed to make a few tweaks to get this rolling.

The first tweak was to get it to output JSON for the App.  Out of the box Omniauth will keep track of your params, so I made it return a JSON response when I requested it in the query string like so “/users/auth/facebook?json=true”

Just for example, here how it would look if you were using the standard facebook action for omniauth:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    @user = User.from_omniauth(request.env["omniauth.auth"])
 
    if @user.persisted?
      sign_in @user, :event => :authentication #this will throw if @user is not activated
    else
      session["devise.facebook_data"] = request.env["omniauth.auth"]
      return redirect_to new_user_registration_url
    end
 
    return render :json => current_user if request.env["omniauth.params"]["json"]
 
    set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
    redirect_to "/"
  end
end

The important parts here are:

  • I’m using “sign_in” instead of “sign_in_and_redirect” so I can handle the redirection later down the line.
  • Then I’m adding in “return render :json => current_user if request.env[“omniauth.params”][“json”]” so the callback will output the current user in JSON.

In my case the JSON output for current_user includes a token I can use to integrate with the API.

With that all set you’re ready to capture that JSON in phonegap:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
win = window.open(base_url+'/users/auth/facebook?json=true', '_blank', 'location=yes,enableViewPortScale=yes');
win.addEventListener('loadstop', function (e) {
  if (e.url.indexOf(base_url) >= 0 && e.url.indexOf('callback') >= 0) {
    win.executeScript(
      { code: "document.body.innerHTML" },
      function(values) {
        r = values[0];
        r = r.replace(r.substring(0, r.indexOf('{')),"").replace(r.substring(r.indexOf('}'),r.length).replace(/}/g,''),"");
        r = jQuery.parseJSON(r);
        //now r.api_token is available to use however you need in your app
        win.close();
      }
    );
  }
});

This works by:

  1. First opening a window with the social login page “/users/auth/facebook?json=true
    on my app base_url is the domain of the API, like http://api.google.com for example.
  2. Next I’m listening for every-time the page in InAppBrowser finishes loading with “addEventListener(‘loadstop‘”
  3. Then I’m waiting for the URL to have my API’s domain name plus “callback” here “if (e.url.indexOf(base_url) >= 0 && e.url.indexOf(‘callback’) >= 0) {
  4. Once there I use “executeScript” to fetch the document body, which is returned as values[0].
  5. Then I clean the return value of any HTML using replace and substring, then parse that to JSON

After that you can use that token in your App however you need to integrate with your API.

Whats in a calorie?

I feel like after working on my protein shake recipe and exercising daily I’m in a pretty healthy place, which was my main goal.  But, it hasn’t helped my weight loss one bit!  It feels like balancing calories in vs calories out is really only half the story, the other half being exactly what those calories are made of.  I’m still quite a fledgling in these matters, so I’m making an easy summary of what calories are, and which ones are OK to eat.

I think it’s important to really understand what a calorie is.  I was a bit mind-blown when I first encountered an article that discussed what they really were, I never really gave it any thought before.  A calories isn’t something in your food – it’s a unit of energy.  A calorie is made up primarily of the three macro-nutrients: protein, carbs, and fats. Each gram of macro-nutrient gives it’s own calories, as explained here. And this article has some good formulas on calculating calories.

When I was growing up it used to be that “eating fat makes you fat,” but now it seems to be all about “good vs bad” fats.  Also, now it seems that carbs are the big problem, leaving protein as the last acceptable macro-nutrient.  So for this article, I’m going to do some digging into these three.  What kind of fats are good, what’s so bad about carbs, and what’s so good about protein.

Fats

I keep hearing “good vs bad” fats – but I don’t really know which ones are good and bad.  I found a nice article about it on BB.com, and the skinny of it is as follows:

Bad Fats

  • Saturated Fat
  • Trans fat
  • Cholesterol (not really a fat, but still bad)

Good Fats

  • Monounsaturated & Polyunsaturated Fat
  • Omega 3 Fatty Acids

Carbs

For carbs, there are two kinds Simple/Bad and Complex/Good as explained here.  It seems in general simple carbs come from sugars and complex carbs come from starch. It seems tricky to figure out which ones are in your food, but I found this article with a simple explanation. So, in short:

Bad Carbs

  • Sugars

Good Carbs

  • Total carbs – sugars

Protein

I read a few articles, most notably this one, and it seems like they’re all in agreement: protein is good because it’s filing, and takes more energy (calories) to digest.  I did a little more digging to see if there where any kind of bad/good proteins, and I came across this thread and this article.   So, from what I can gather it’s a difference between incomplete/good and complete/best proteins – but it’s really not important enough to stress over.

All protein is good, yay!

IFFYM Meal Replacement v2

After over a month with the last recipe, I ended up getting used to the taste.  Though, I wasn’t able to get used to calorie counting :/  Every time I try it ends up eating to much time and I can’t keep up.  So, instead I’ve decided to try and focus on appetite suppressants so hopefully I’ll eat less naturally.

So I want to change up this recipe to make it more filling.  To help get me started I reviewed several online articles to help pinpoint what foods I should try.

According to the results my current recipe already has quite a few appetite suppressants already, eggs, flaxseeds, and protein powder which only leaves cranberries and pea flour as the ingredients that won’t suppress appetite.  I was a bit surprised that apples were suggested by quite a few articles, so that seems like a natural substitution for my cranberries.

I found out that almond meal is a thing, it has a lot of fat, but my recipe as it is is a little carb heavy.  For now I think I’ll stay with pea flour because I have quite a bit left but also because, at $.53 a serving, almond meal is a bit pricey.  I really want to keep the recipe as close to $2 a serving as possible.

So here is my new recipe:

IngredientCarbsProteinFatFiberCalories$$/servingGradeFPAmazon
Nutribiotic Rice Protein (2 serving)422001200.72B2Buy
bob's flaxseed meal533.54600.11A-2Buy
hooster powdered egg165800.56A?2Buy
Dried Apple Rings301051200.49B?3Buy
bob's pea meal (2 servings)188081000.02A?2Buy
Totals58428.5184801.9011

I guess it’s not surprising, but some of the prices have changed since last time, I went with vanilla protein since the chocolate went up in price, and bought the flaxseed meal in bulk.  And, happily, it ended up under $2 this time 🙂

One more addition is that I want to try adding in spices, I’ve gone through the list of appetite suppressants and filtered out the spices and herbs.   Some of these are kind of odd things to be adding to a protein shake, so I’m planning on experimenting with the flavor.  I’m not going to calculate any of these into the cost, since serving sizes are so small with spices.  Between the local dollar store and Herb Co I managed to get quite a few for a good price.  I may try more later, but initially I’m just going to stick to the cheaper spices. I’ll be coming back to cross out the ones that were just horrible x3

Appetite Suppressant Spices I purchased:

  1. √ Cinnamon
  2. √ Green Tea/Matcha Powder
  3. Cayenne Pepper
  4. Ginger
  5. ~ Red Pepper
  6. ~ Chickweed
  7. Fennel
  8. √ Licorice Root
  9. ~ Psyllium
  10. ~ Burdock
  11. Garlic
  12. √ Chia Seeds
  13. Bladderwrack

The big winners here I’ve marked in green, the ones in black are just pretty meh and taste like dirt IMO – while the red ones were quite strong and even with a dash really gave the shake an unpleasant taste.  Licorice Root was the most surprising to me – it has a really nice sweet flavor, and tastes nothing like black licorice.  Apparently it’s used in soft drinks and other foods as a sweetener, but I’ve heard it can be bad in large doses – so a dab will do ya!

I’m also considering ordering some Citrus aurantium powder, since it contains Synpehrine which is an active ingredient in Shred JYM.

Expensive/Unavailable Appetite Suppressant Spices:

  1. Mint
  2. Dandelion Root (little pricey)
  3. Garcinia/ Indica
  4. Ginseng (really expensive)
  5. Lemon
  6. Wasabi
  7. Hoodia
  8. Aloe Vera (kind of expensive)
  9. Evening Primrose
  10. Seaweed
  11. Gareinia Cantbogia
  12. Cardamom (little pricey)

Appetite Suppressant mini-study

Like everyone, I want to loose weight 😀  Though, cutting calories back too far tends to have a bad effect on my quality of life (hunger pains, irritability, ect.)  Exercise helps, but ultimately exercising can’t make up for simply eating less.  Trying to exercise off one extra doughnut could easily run you an hour or more.  So I’ve decided to look into appetite suppressing foods, to help cut down without all of the nasty side effects.  I may give supplements a try in the future, but I’m first going to focus on more natural appetite suppressants. However, there seems to be a lot of variety out there as far as what foods are considered appetite suppressants.  So, to decide which ones I’ll try, or at least which ones I’ll try first, I decided to go through 20 articles, and rank food suppressants by how many articles they appear in.

When I searched I grabbed articles from the first two result pages with the following search terms “Natural Appetite Suppressants,” “Herbal Appetite Suppressants,” and “Appetite Suppressant Spices.” I would have added more, but a lot of the same articles started popping up even with different keywords, and most of the articles past the second page where promotional items for specific appetite suppressant products.

Water was a no brainer 🙂 And a lot of the top items are all things I heard of before.  Apples really surprised me, which makes me wish I didn’t hate them :X  Another thing I found surprising is that Saffron wasn’t mentioned in any of the articles, though I’ve heard that it can be used as an appetite suppressant.  I’m wondering if price was taken into consideration with some of these lists, as Saffron can be quite expensive.  I expected Mint to be higher, I purchased a Mint reed diffuser to help with appetite suppression after hearing that aroma therapy can help.  Whether or not aroma therapy works for appetite suppressant seems rather shaky, but worse case scenario is that my office smells nice – so it’s worth it in my opinion 🙂

Here are all the suppressants, that had more then one entry, ranked:
The numbers following each item are how many articles that item appeared in

  1. Cinnamon 11
  2. Green Tea 10
  3. Water 9
  4. Almonds/Nuts 8
  5. Cayenne Pepper 8
  6. Apples 8
  7. Oatmeal 7
  8. Flaxseeds 7
  9. Coffee 6
  10. Soup 6
  11. Ginger 6
  12. Avocado 5
  13. Mint 5
  14. Red Pepper 5
  15. Chickweed 5
  16. Dandelion Root 5
  17. Fennel 5
  18. Eggs 4
  19. Leafy Greens 4
  20. Salmon 4
  21. Licorice Root 4
  22. Garcinia/ Indica 4
  23. Psyllium 4
  24. Siberian Ginseng 4
  25. Lemon 3
  26. Sweet Potatoes 3
  27. Dark Chocolate 3
  28. Tofu 3
  29. Wasabi 3
  30. Vegetable Juice 3
  31. Hoodia 3
  32. Aloe Vera 3
  33. Burdock 3
  34. Evening Primrose 3
  35. Seaweed 3
  36. Gareinia Cantbogia 3
  37. Coconut Oil 3
  38. Garlic 3
  39. Chia Seeds 2
  40. Yogurt 2
  41. Whey Protein 2
  42. Umeboshi/Plumbs 2
  43. Cardamom 2
  44. Bladderwrack 2
  45. Pineapple 2
  46. Chillies 2
  47. Kelp 2

And here are all of the articles used:

  • http://www.popsugar.com/fitness/Natural-Appetite-Suppressants-Keep-You-Feeling-Full-16417130
  • http://www.shape.com/healthy-eating/diet-tips/top-25-natural-appetite-suppressants
  • http://weightloss.allwomenstalk.com/safe-and-natural-appetite-suppressants
  • http://abcnews.go.com/Health/Wellness/appetite-suppressants-work/story?id=20807807
  • http://www.emaxhealth.com/8782/dr-oz-top-4-appetite-suppressants-compared-natural-suppressants-fighting-belly-fat
  • http://au.askmen.com/top_10/fitness/top-10-appetite-suppressants.html
  • http://www.livestrong.com/article/495954-homemade-natural-appetite-suppressant/
  • http://www.foxnews.com/slideshow/health/2013/07/29/appetite-suppressants/#slide=1
  • https://natural-herbal-remedies.knoji.com/safe-herbs-that-reduce-appetite-and-hunger/
  • http://www.thealternativedaily.com/3-herbs-curb-appetite/
  • http://www.livestrong.com/article/85072-appetite-suppressant-herbs/
  • http://www.myspiceblends.com/glossary/herbal_properties_glossary/Anorectic.php
  • http://wiki-fitness.com/natural-appetite-suppressant-foods-herbs/
  • http://articles.mercola.com/sites/articles/archive/2012/11/26/herbs-and-spices.aspx
  • http://www.womenshealthmag.com/nutrition/appetite-suppressants
  • http://www.livestrong.com/article/90542-appetite-suppressant-spices/
  • http://www.boldsky.com/health/wellness/2013/healthy-spices-suppress-appetite-034304.html
  • http://www.ehow.com/list_6949053_spices-suppress-appetite.html
  • http://www.dailymail.co.uk/femail/article-1383610/Weightloss-From-cinnamon-seaweed-foods-naturally-curb-appetite-help-shed-pounds.html
  • http://www.holistic-online.com/remedies/weight/weight_herbs-for-obesity.htm

Here’s everything that was only mentioned once:

  • Astragalus
  • Brewer’s Yeast
  • Fengugreek
  • Guggul
  • Mushrooms
  • Legumes
  • Black Pepper
  • Mustard
  • Termeric
  • Cumin
  • Pomegranate
  • Stevia
  • White Kidney Bean
  • Ephedra
  • Grapefruit Oil
  • Hibiscus
  • Orange
  • Spirulina
  • Cacao
  • Acai Berry
  • Carob
  • Coleus
  • Forskohlii
  • Guarana
  • Black Tea
  • Gurmar
  • Oolong Tea
  • Hawthorn
  • Kola Ntu
  • Parsley
  • Queen’s Flower
  • Bee Pollen 4
  • Bladder Wrack Kelp
  • Gymnema Syvestre
  • Nettles
  • Cascara sagrada
  • High-fiber cereal
  • Alfalfa
  • Apple Cider Vinegar
  • Extra Virgin Olive Oil
  • Rosemary
  • Basil
  • Skim Milk
  • Hot Sauce
  • Rye
  • Beans
  • Vinegar
  • Edamame