The current Quickstart guide for the new FB Messenger Chatbot is in Node.JS. I am currently working on a project in Python and couldn’t find any Copy & Paste-able Python webhooks. So, I created one myself. Hope this is helpful to someone else 🙂
Per my last post about the splendor of GAE, below is one example of a tool I built for us at Socialize to keep an eye on code coverage and lets the group know if a build is broken (if our tests have failed.) This script is built to run on Google AppEngine, checks against a TeamCity Server install, and expects that each project in team city has code coverage outputted to its artifacts folder.
What is C.I. Server and why is it important?
C.I. stand for Continuous Integration, and is a system used to constantly/”continuously” checks to see if a code base is “working” or not. Team City (by JetBrains) is a product made for that process. Usually it is used to run tests against a code base to make sure it is working as expected, as a part of the QA life cycle. These tests are made up of “unit tests” that are created by the developers whom write code to test the code they are writing. It can be a bit odd for those that have not ever done so, but it is quite important when trying to deliver stable code. In short, and in its simplest form, this whole system makes sure new code/changes doesn’t break old code already in place. You can read more about these processes and purposes here: Unit Testing & Integration Testing.
What is code coverage, and why is it important?
Code coverage examines how much of your code is being tested. For instance, you may have a C.I. system in place, and a unit test frame work running within it, but if the tests only test/”cover” 1% of all of the code you aren’t really delivering a level of confidence you should be. In this tool we track the coverage percentage over time. Seeing it as a graph helps recognize dips in coverage easily.
The cost to scale a web application has changed considerably and therefor the way most people decide to plan out thier development strategies has changed as well. Not every web site is an enterprise solution and getting many sites or versions of sites out to the public quickly has become the greatest focus on a fledging comapanys mind. Because scaling is so cheap and servers are so easy to set up with clouds I often hear, ‘lets deploy first and see what people think and if it gets big we will just through some servers at the problem, and improve the code as we grow.’ For the most part I agree, in the case that a complex problem arises an RPC call to some seperate more efficient code base, server or algorithm can be used.
Dividing up a site into 3 parts is key, re-inventing the wheel tasks, already built better then we can build it widget/api tasks, lets solve a new problem tasks. For example: login, and register has been developed 100 times over as well as setting up projects and DB connection settings. Getting a users feedback or publishing your content to all the social networks has been done beautifully by many companies that now give it away for almost nothing and are great to use, unless your new great idea has a core innocation in such technolgies. Then there are the problems out there that may be partially solved, but there is still quite a bit of technique and brain power needed to tackle your unique version of the problem to complete your companies mission, like improved search of billions of peices of data or 3 degree+ of sepration colculations. The mission is use what you can that already exists if its not your CORE business to own such IP (often times people think they have 5 core’s….they don’t) and use what you can to get that core going as quickly as possible. This isnt true for all web startup’s — but it is for most.
I will save more on that topic for a later post. Today I simply wanted to take the problem of getting started up a level or two and look at the first part of development for non developers. I mean I personally know what I like to develop in, and it’s always good to ask someone with more experience then you what he/she thinks, but I all to often I find people that have inadvertenntly chosen the more expensive, more timley path and in the end they have a mess, a bill, and an almost incomplete site. They are then left with finding a batch of new developers who can jump right in and take over. I see this ALLOT and it breaks my heart. Is it jus a product of bad consulting? Is there a way to help get non developers a leg up and allow them to make good desicions quinatitatilbyl without a consultant telling them biasedly which way they can go to suit there own needs.
I know that oDesk, and other internet based freelance servcie is where allot of folks turn to so I went out and got some basic datapoint to start this conversation. Below are some charts I put togther using search scripts to get results sets from oDesk (whom I think should put out more repots on this matter to help out the public). I simply tried to query things people may be wondering and get results sets for each lanuage respectivley. I was suprised to see how flat the results were.
oDesk Search Results:
# high rated feedback (2+ FB & 4+ stars)
total feedbacks (4+ star)
most hours (2+ FB & 4+ stars)
$/hr of most hours (2+ FB & 4+ stars)
avg top 10 hours
avg $/hr of avg top 10 most hours
avg cheapst top 5
avg most exensive top 5
highest reqested rate
Below is a list of some languages and how many hits came up when the languages marked with an X where combined in the search. I guess what I was going for here is how many people know what combinations of languages. For example people who posted a knowlagdge of all languages was 7, and those that claim to provide services to both python and ruby were 35.
I will admit I dont like .net and I am not a fan of PHP as much as I used to be and although I enjoyed building FamilyOven.com in Java iterating over quick changes on the fly got really annoying having to compile and recompile my code. The pside of course is its great stability and easy to debug format. It’s just that scripted code suits my needs more these days. I put things together to push out new sites and stabiiy in the first year isnt that hard to do with server costs the way they are these days. Python and ruby have allot of abstraction but for the first year I probably wont care, second year I will just pull hard tasks out like I explained in the first part of this email.
The data I gathered made me seriously wonder for a moment, am I just falling into the hype or is python and ruby as smooth, efficient and easy to develop sites quickly as great as it seems? I didnt jump on the ruby, python band wagon quickly. I created a few sites on it before I formed an opnion for sure. I guess whats more important to notice here is how the hell is a non-technology/development person able is to decide on a languge to go with after talking to vendors and seeing results like these. I mean these data points love .net and php as giving off the impression that they are affordable, and popular. I feel however that those that I know that use Ruby and Python are more innovative, fast, and love what they do more so then the others, not to mention cheaper in that they get more done more quickly. (or so it seems that way as of late) I would love to get some advice on ways to mine for data that respond with data that can statistically prove my sentiment isn’t just an opinion, a sort of freakenomics style of analysis if possible. I dont want to try to manipulate data to prove my point I just want to see if there are any true data points out there that confirm what my gut tells me.
Of course being that ruby and python are new compared to the other languages one could expect such unimpresive numbers and stats, I also think that being that they are so new to the common developer tool set it is impresive just how many people code on it already and how many plugins are available. One metric that could be usefull is expense to get started materials wise, free easy to use documentation, number of plugins, and time to start a basic project/site.
Python for instance is part of the Google standard languages, that speaks highly to me. It is supported by the Google App Engine and it has jython a frameowkr taht allows python to run in java runtime. That is mportant as well as java run time is more efficient then most things out there so you have flexability. Ruby has tons of plugins as well as python. and all scripting languages take almost no time to set up. Also it is important to pointout that other then biz spark from MS getting a project developed is MS systems are not free to get started on from servers, to dev environments to documentation and support many MS product cost quite a bit which can get in the way of trial and error, innovation, speed to market, and keeping initial expenses down.
Please comment if you think I should account for a factor I missed or if youhave some data on your own. If you have some crutial data points please list them and the source you were able to get it from. THe more straight data we get the more we can help people make better descisions rather then just using he told me so approach.