ReadWrite - pythonhttp://readwrite.com/tag/python
enCopyright 2015 Wearable World Inc.http://blogs.law.harvard.edu/tech/rssTue, 31 Mar 2015 15:03:19 -0700Open Source Is Data Science's Missing Ingredient<!-- tml-version="2" --><p>Here's the dilemma: your company has lots of data and little clue what to do with it. So you figure you should hire a data scientist but, as it turns out, they're in short supply. Good ones, anyway.</p><p>What do you do?</p><p>As an increasing number of companies are figuring out, you grow them. But not just anyone will be able to make the leap. It turns out that the best data scientists tend to be very comfortable with open source.</p><h2>Buying A Big Data Clue</h2><p>Over a year ago <a href="http://readwrite.com/2013/09/18/gartner-on-big-data-everyones-doing-it-no-one-knows-why">I picked apart Gartner's Big Data surveys</a>, finding that while nearly every company purports to running Big Data projects, the reality is far murkier.&nbsp;</p><p>Dig into the data and it becomes evident that as much as we may wish we were masters of the Big Data universe, we're actually neophytes that are trying to "determine how to get value from big data," struggling to "define [a Big Data] strategy" and to hire "skills and capabilities needed" to do so.</p><p>Good luck with that!</p><p>Years into the Big Data movement companies are desperately, often <a href="http://readwrite.com/2014/12/19/big-data-why-companies-are-so-bad-at-it">futilely trying to hire a Big Data clue</a>. Hence, even though Big Data skills top the list of <a href="http://readwrite.com/2014/12/19/linkedin-2014-hottest-job-skills-report">LinkedIn's hottest job skills of 2014</a>, they also top the list of skills enterprises want but can't find (which is why the relatively few data scientists in existence <a href="http://www.networkworld.com/article/2463946/big-data-business-intelligence/big-data-scientists-get-100-recruiter-emails-a-day.html">get 100-plus recruiter emails each day</a>).&nbsp;</p><h2>Discovering Your Inner Data Scientist</h2><p>Which is why companies are increasingly trying to figure out ways to train data scientists, and why a <a href="http://www.forbes.com/sites/emc/2014/06/26/the-hottest-jobs-in-it-training-tomorrows-data-scientists/">booming industry is developing</a> around the training of data scientists.</p><p>Some will wait on a <a href="http://www.beatthegmat.com/mba/2014/12/18/big-data-drawing-big-student-enrollments">swelling population</a> of students being trained for a data-rich future. Others are encouraging employees to get trained through Codecademy, Coursera or other options that&nbsp;<a href="http://dataconomy.com/top-10-data-science-skills-and-how-to-learn-them/">Eileen McNulty showcases</a>.&nbsp;</p><blockquote><p><strong>See also:&nbsp;<a href="http://readwrite.com/2015/01/02/open-source-big-data-2015-entropy">How Open Source Can Fix 2015's Data Entropy</a></strong></p></blockquote><p>However these employees (future or current) get trained, it's helpful that companies are now looking within. Even if there weren't a dearth of data scientists, it still makes sense to look within, as Gartner's <a href="http://blogs.gartner.com/svetlana-sicular/data-scientist-mystified/">Svetlana Sicular has called out</a>:</p><blockquote tml-bad-render-layout="inline"><p>[C]ompanies should look within. Organizations already have people who know their own data better than mystical data scientists...The internal people already gained experience and ability to model, research and analyze. Learning Hadoop is easier than learning the company’s business.&nbsp;</p></blockquote><p>She's right, but not just anyone can do this.&nbsp;</p><h2>Open Sourcing Your Data</h2><p>I've <a href="http://readwrite.com/2014/07/21/data-scientist-income-skills-jobs">written before</a> about why data scientists get paid so much. As <a href="http://www.datasciencecentral.com/profiles/blogs/data-scientist-core-skills">Mitchell Sanders posits</a>, data science is hard because it depends on a blend of domain knowledge, statistical and mathematical prowess, and programming skills.&nbsp;</p><p>It's hard to find all those skills in one person, which is why they get paid a lot. Supply and demand.</p><blockquote><p><strong>See also: <a href="http://readwrite.com/2014/12/31/big-data-companies--applications-money-startups">Applications Drive The Biggest Money In Big Data</a></strong></p></blockquote><p>It may be even harder when we unpack that last attribute - programming skills. Implied but not stated in this attribute is the reality that data scientists need to be comfortable with a particular kind of programming: open source development.</p><p>As Gartner analyst <a href="http://blogs.gartner.com/alexander-linden/2014/12/19/open-sourced-advanced-analytics-is-increasing/">Alexander Linden writes</a>:</p><blockquote tml-bad-render-layout="inline"><p>A lot of innovative data scientists really favor open source components (especially Python and R) in their advanced analytics stack. I hear this a lot, even from the most advanced of our clients… One department head, leading a dozen data scientists at one of the top retailers, gave me the following rationale:&nbsp;“I would be paying about $5 million just in annual maintenance, if I stuck with vendor xxx … imagine how many gifted data scientists I can buy for that money (?) … and by the way I did hire them and they all use a combination of R and Python”.</p></blockquote><p>Most of the essential Big Data technology today is open source, whether Python and R or Hadoop, Spark, MongoDB, HBase and Cassandra. While you don't have to develop Spark in order to use it, those that know how to swim in open source currents will do far better with such technologies than those who only know how to install and run whatever SAS, Microsoft or some other vendor offers them.</p><p>In short, the best data scientists are those that can thoughtfully ask questions of data, but also manipulate their data analysis tools to better craft the question. That's the essence of open source, and your next data science trainee or hire will be much stronger if she groks open source.</p><p><em>Image courtesy of <a href="http://www.shutterstock.com">Shutterstock</a></em>.</p>It's not enough to be a quant jock.http://readwrite.com/2015/01/08/open-source-big-data-science-python
http://readwrite.com/2015/01/08/open-source-big-data-science-pythonHackThu, 08 Jan 2015 08:47:48 -0800Matt AsayTeach Your Fish To Text And Beyond: ReadWrite's Year In Tutorials<!-- tml-version="2" --><p><em><a href="http://readwrite.com/series/reflect">ReadWriteReflect</a> offers a look back at major technology trends, products and companies of the past year.</em></p><p>Here at ReadWrite, we strive not only to see technology as something that shapes our world, but as something we can access ourselves, to make our lives better and more fun. </p><p>That’s the spirit behind ReadWrite tutorials, which are sometimes silly, sometimes practical, but always designed to teach you something new about technologies we rely on every day. </p><p>If you’re resolving to become more technologically proficient in 2015, we’ve compiled our favorite tutorials of the year that cover languages like Python and JavaScript, and skills like working on the command line syncing an app with an API. All of these tutorials are designed for beginners, so all you need is a computer and some free time. </p><p><strong>1. </strong><a href="http://readwrite.com/2014/03/04/raspberry-pi-quantified-fish-acquarium"><strong>The Quantified Fish: How My Aquarium Uses Raspberry Pi</strong></a><strong> </strong></p><p><strong>2. </strong><a href="http://readwrite.com/2014/04/23/raspberry-pi-connected-home-fish-text-message-twilio"><strong>My Fish Just Sent Me A Text Message</strong></a></p><p>The tiny, customizable computer Raspberry Pi is affordable at about $30, so early this year I bought a designated one just for monitoring my aquarium. Tutorials one and two outline how I use my Raspberry Pi and a waterproof temperature sensor to text me information about the fish tank and let me know when it needs my attention. </p><p>I have also expanded on these two tutorials in a book, <a href="http://www.amazon.com/Make-Raspberry-Projects-Augmenting-Sensors-ebook/dp/B00PCZJGWQ/ref=asap_bc?ie=UTF8">Make: Raspberry Pi and AVR Projects: Augmenting the Pi's ARM with the Atmel ATmega, ICs, and Sensors</a>, produced by Maker Media. The basics are the same, but the book also describes how to feed the temperature data into a MySQL database and interpret that into a graph you can access online. </p><p><strong>3. </strong><a href="http://readwrite.com/2014/04/04/winjs-how-to-build-app-html5-10-steps"><strong>How To Build A WinJS App In 10 Easy Steps</strong></a></p><p>Is your New Year’s Resolution to finally build your app this year? If so, I recommend WinJS, which has simplified the art of quickly producing an HTML5 app you can share online with friends, family, or anyone who you want to impress.</p><p><strong>4. </strong><a href="http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing"><strong>Building A Raspberry Pi VPN Part One: How And Why To Build A Server</strong></a></p><p><strong>5. </strong><a href="http://readwrite.com/2014/04/11/building-a-raspberry-pi-vpn-part-two-creating-an-encrypted-client-side"><strong>Building A Raspberry Pi VPN Part Two: Creating An Encrypted Client Side</strong></a></p><p>We all know it’s not safe to check secure sites like your bank account on public WiFi, which is where a Virtual Private Network comes in handy. With a VPN, you can experience secure browsing no matter who is providing your Internet. </p><p>I built this tutorial while I was myself learning how to build a VPN, so the part I am most proud of is that it includes a lot of troubleshooting based on real problems I experienced. Even better, the comments section has become an incredibly helpful FAQ since this was published.</p><p><strong>6. </strong><a href="http://readwrite.com/2014/04/09/raspberry-pi-projects-ssh-remote-desktop-static-ip-tutorial"><strong>5 Pointers To Supercharge Your Raspberry Pi Projects</strong></a></p><p>These five mini-tutorials outline techniques I use over and over whenever I do a project using a Raspberry Pi computer, or a Python project in general. From learning the ins and outs of the SSH (secure shell) protocol to establishing a static IP, these five tutorials go over basic skills every Raspberry Pi owner should know, but that some advanced tutorials tend to skip. </p><div tml-image="ci01b2d9814074860c" tml-image-caption="" tml-bad-render-layout="inline" tml-render-size="medium" tml-render-position="right"><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,dpr_1.0,q_80,w_620/MTE4MDAzNDE2ODc3MDA4Mzk4.jpg" /><figcaption></figcaption></figure></div><p><strong>7. </strong><a href="http://readwrite.com/2014/04/21/easy-arduino-projects-basics-tutorials-diy-hardware"><strong>Easy Arduino: Two Projects To Help You Get Started</strong></a></p><p>For a jolt of confidence that anyone can truly become a programmer, I recommend learning to use an Arduino, the tiny, cheap microcontroller that knows how to communicate with sensors and outside stimuli the way your regular computer can’t. In just a few lines, this tutorial shows you how to make an Arduino communicate with an LED light, or with your regular PC. </p><p><strong>8. </strong><a href="http://readwrite.com/2014/06/20/random-non-sequitur-twitter-bot-instructions"><strong>Five Steps To Build Your Own Random Non-Sequitur Twitter Bot</strong></a></p><p>I love my personal Twitter bot, which takes my tweets and garbles them in a way that will never stop being silly. Case in point:</p><p>To build your own, all you need is a new Twitter account and a phone number that isn’t already connected to Twitter (I recommend using Google Voice). My tutorial shows you how to connect an app to the Twitter API and get up and running in about 20 minutes.</p><p><strong>10. </strong><a href="http://readwrite.com/2014/09/26/friday-fun-twilio-flickr-api-picture-roulette-drinking-game"><strong>Friday Fun: Build A Drinking Game With Twilio MMS And Flickr API</strong></a></p><p>Twilio Developer Evangelist Matt Makai and I teamed up to create two silly apps that are just for fun, but will also teach you quite a bit about using Python. (Matt also helped me with the Twilio integration on the fish tank text message tutorial further up.) </p><p>Yo was one of 2014’s one hit wonders, an app I was convinced anyone could make! And with Matt’s help, I proved it. We show you how to create your own Yo to annoy your friends, and you can use any word or expression in place of “Yo.”</p><p>The drinking game, titled <a href="https://github.com/makaimc/mms-picture-roulette">Picture Roulette</a>, was a result of the Flickr API not working the way we expected it to. Since Flickr is only as accurate as its users doing the tagging, sometimes a search for “turtle” might net you pictures of ice cream. Hence, a drinking game in which you are rewarded if your guess is correct. </p><p><strong>11. </strong><a href="http://readwrite.com/2014/07/02/github-pull-request-etiquette"><strong>How To Win Friends And Make Pull Requests On GitHub</strong></a></p><p>I use GitHub to store my tutorials and, despite <a href="http://readwrite.com/2014/04/21/tom-preston-werner-departure-github">the drama this year</a>, I remain a fan. However, I agree that we all need to do our part to keep GitHub’s community nontoxic and friendly. This tutorial is about contributing to projects in a way that should be most rewarding and effective, and I talked to GitHub’s Matthew McCullough to make sure that was the case.</p><div tml-image="ci01bf4fae100199de" tml-image-caption="" tml-bad-render-layout="inline" tml-render-size="medium" tml-render-position="right"><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI1OTA2OTIyNTI3MjcxNTU1.png" /><figcaption></figcaption></figure></div><p><strong>12. </strong><a href="http://readwrite.com/2014/11/11/how-to-use-emoji-in-the-browser-window"><strong>How To Use Emoji Anywhere With Twitter's Open Source Library</strong></a></p><p>I’m not casting judgement on whether it’s a good idea, but now that Twitter has made its emoji library open source, you can set them up to function anywhere on the Internet, including on your own website or app. I used and clarified Twitter’s own how-to in order to make this tutorial especially beginner-friendly. </p><p><strong>13. </strong><a href="http://readwrite.com/2014/10/27/five-arduino-tutorials-halloween"><strong>Five Arduino Tutorials For The Ultimate High Tech Haunted House</strong></a></p><p><strong>14. </strong><a href="http://readwrite.com/2014/12/05/high-tech-holiday-diy-tutorials-arduino-raspberry-pi"><strong>6 High Tech Tutorials And Kits For DIY Holiday Decorations</strong></a></p><p>Of course, ReadWrite is far from the only place to find helpful tutorials. For both Halloween and the winter holidays, I compiled other people’s tutorials so you can make some truly festive high-tech projects. Our resident graphic designer, Nigel Sussman, contributed fully accurate technical drawings that make the Halloween hacks a cinch.</p><p>As always, email me if you try a ReadWrite tutorial and have questions or comments. What tutorials would you like to see on ReadWrite in 2015?&nbsp;</p><p><em>Lead photo by Lauren Orsini, secondary photos by Lauren Orsini,&nbsp;</em><em><a href="http://getemoji.com/">Get Emoji</a>.</em></p>Our best beginner computer programming tutorials of 2014http://readwrite.com/2014/12/31/readwrite-top-tutorials-2014
http://readwrite.com/2014/12/31/readwrite-top-tutorials-2014HackWed, 31 Dec 2014 08:05:01 -0800Lauren OrsiniFriday Fun: Build A Drinking Game With Twilio MMS And Flickr API<!-- tml-version="2" --><div tml-image="ci01bb85a210012a83" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwMzQ0OTc3MTk3MDY2.png" /><figcaption></figcaption></figure></div><p>You never know the true value of an app until it’s finished. </p><p>Twilio developer evangelist <a href="https://github.com/makaimc/">Matt Makai</a> and I wanted to take advantage of Twilio’s latest feature, <a href="https://www.twilio.com/mms">an API for sending picture messages</a>. (See our <a href="http://readwrite.com/2013/09/19/api-defined">API explainer</a> if you don't know what that means.) I pitched Cheer Up!, an uplifting image delivery service. It’d harness the Flickr API to deliver pictures of whatever you want on demand.</p><p>That all went out the window when we decided to use Flickr tags as the image retrieval system. People use tags for all sorts of reasons, and they don’t always make sense. As a result, the app only delivers the photo you want about 50% of the time.</p><p>We could work with that, though. Now we’re introducing <a href="https://github.com/makaimc/mms-picture-roulette">Picture Roulette</a>, an MMS application you can easily create for yourself. Type in a query of one or more words. Does the photo Flickr sends back look like your query? You win! If not, you take a drink. It’s a penalty game made possible by Flickr users’ tagging nonconformity. </p><p>It’s not what we expected to build, but it turned out to be a lot more fun. And at only two cents per picture message, it’s a very cheap thrill. </p><p>Here’s how to get Picture Roulette working on your own phone:</p><h2>Requirements</h2><p>You’ll need a Twilio account, complete with a registered phone number and about $5 in funds. For very thorough instructions on signing up for Twilio, see&nbsp;<a href="http://readwrite.com/2014/04/23/raspberry-pi-connected-home-fish-text-message-twilio">my Twilio tutorial</a>. You’ll need both your AccountSID and secret AuthToken for this project. </p><blockquote><p><strong>See also: </strong><a href="http://readwrite.com/2014/04/23/raspberry-pi-connected-home-fish-text-message-twilio"><strong>My Fish Just Sent Me A Text Message</strong></a></p></blockquote><p>You’ll also need a Flickr API number. In the <a href="https://www.flickr.com/services/">Flickr App Garden</a>, choose to create a new app with a non-commercial license. Flickr will instantly deliver to you a key and a secret key. We don’t need the secret key for this project, but paste the key where you’ll remember it. </p><div tml-image="ci01bb85b0e0019512" tml-image-caption=""><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwNDA4NTk2Mzg3MDkw.png" /><figcaption></figcaption></figure></div><p>Finally, you’ll need a free-tier Heroku account. We’ll be using Heroku’s one-click-deploy button on GitHub, which makes it so you won’t actually have to do any hard coding. The button, which launched for GitHub last month, lets you create our GitHub app on your own Heroku account without cloning the repository. </p><blockquote><p><strong>See also: </strong><a href="http://readwrite.com/2014/08/07/heroku-github-preview-button-learn-to-code-app"><strong>See What The Code Behind An App Does With Just One Click</strong></a></p></blockquote><h2>Instructions</h2><p>On our <a href="https://github.com/makaimc/mms-picture-roulette">Picture Roulette GitHub repository</a>, click on the purple Heroku button on the Readme file. It should immediately launch Heroku. </p><blockquote><p><strong>See also: <a href="http://readwrite.com/2014/04/15/amazon-web-services-hack-bitcoin-miners-github">Developers, Check Your AWS Accounts For Bitcoin Miners</a></strong></p></blockquote><p>Once on Heroku, the app will prompt you to input your Twilio AccountSID and secret AuthToken followed by your Flickr API key. Heroku can’t launch an app that isn’t fully functional, and the app as it sits on GitHub isn’t fully functional without input from you. That’s because we know better than to put our secret key in a public GitHub repository. <a href="http://readwrite.com/2014/04/15/amazon-web-services-hack-bitcoin-miners-github">Right?</a></p><div tml-image="ci01bb85a9d001c80a" tml-image-caption=""><figure><img src="http://a1.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwMzc4MjYzMjAzODEw.png" /><figcaption></figcaption></figure></div><p>Click “Deploy for Free” and wait for the app to build. Sometimes it can take quite a while. Once all the steps have green circles next to them, click “view it” at the bottom of the screen.</p><div tml-image="ci01bb85af4001c80a" tml-image-caption=""><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwNDAxMzQ4NjUzMDI2.png" /><figcaption></figcaption></figure></div><p>If the app deployed correctly, it shouldn’t look very exciting. As the screenshot indicates, it will simply let you know if the deployment worked. Now, do as it says and copy the browser URL for your Heroku app—i.e., the URL in your browser window right now. No two Heroku apps can have the same name since they’re <a href="http://readwrite.com/2014/09/23/heroku-for-beginners-app-hosting-101">all stored in the same stack</a>, so it’ll have a funny nature inspired name like “boiling forest” or “blooming spring.”</p><div tml-image="ci01bb85ac4001efe2" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwMzg4NzMyMTM2MDY3.png" /><figcaption></figcaption></figure></div><blockquote><p><strong>See also: </strong><a href="http://readwrite.com/2014/09/23/heroku-for-beginners-app-hosting-101"><strong>Heroku 101: A Beginner's Guide To Hosting Apps In The Cloud</strong></a></p></blockquote><p>Now, navigate to your Twilio account and go to the Numbers tab. Click on your Twilio number and paste the URL into the Messaging Request URL field. Press save. </p><div tml-image="ci01bb85adc001efe2" tml-image-caption=""><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwMzk1MTc0NjE3MTYw.png" /><figcaption></figcaption></figure></div><p>Try texting a word to your Twilio number from your phone. Wait about 20 seconds, and Flickr should send you back a photo of that word! Maybe. </p><h2>How It Works</h2><p>If you look around the Picture Roulette repository, you’ll notice that no document contains more than 50 lines of code. That’s because this Python application lets the Twilio API and Flickr API do most of the heavy lifting. It also uses <a href="http://www.fullstackpython.com/flask.html">Flask</a>, a Python microframework, to hold everything together. </p><p>The heart of the program lies in <a href="https://github.com/makaimc/mms-picture-roulette/blob/master/roulette/views.py">views.py</a>. Here, you can see where Matt imported the Twilio and Flickr APIs and set up three functions:</p><ul><li><strong>send_image</strong> is the function behind the Heroku app deployment. If your app launches correctly, this function makes a message display on the screen when you view it in your web browser.</li><li><strong>_get_flickr_image</strong> is what makes the game stay fresh, even if you play it day after day. This function calls the Flickr API and tells it to browse the 25 first results by their tag. One of those results will randomly be sent to you. So if you keep texting “pumpkin,” over and over, you’ll get a different image every time. As people continue to load new images into Flickr, the 25 first tagged results will change over time.</li><li><strong>_send_mms_twiml</strong> interacts with the Twilio MMS API. “TwiML,” stands for <a href="https://www.twilio.com/docs/api/twiml">Twilio Markup Language</a>, and is used as a set of instructions to tell Twilio what to do in response to a text to your Twilio number. In this case, the function tells it to return a photo message to the sender.</li></ul><p>The bulk of the other files tell the Picture Roulette GitHub repository use the Flask framework to interact with Heroku so it can be easily deployed. You can also read about setting up any GitHub repository to deploy to Heroku in an <a href="http://readwrite.com/2014/08/07/heroku-github-preview-button-learn-to-code-app">earlier tutorial</a>. </p><p>Here's what it might look like in action. Maybe:</p><div tml-image="ci01bb85a4b001c80a" tml-image-caption="" tml-render-size="large" tml-render-position="center"><figure><img src="http://a4.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTI0ODQwMzU2NTE5OTMxODc0.png" /><figcaption></figcaption></figure></div><p>Let us know if you had fun with Picture Roulette. And if you’ve got suggestions for how we can make it better, you’re welcome to submit a <a href="http://readwrite.com/2014/07/02/github-pull-request-etiquette">pull request</a>.&nbsp;</p><p><em>Screenshots by Lauren Orsini for ReadWrite</em></p>BYOAPI.http://readwrite.com/2014/09/26/friday-fun-twilio-flickr-api-picture-roulette-drinking-game
http://readwrite.com/2014/09/26/friday-fun-twilio-flickr-api-picture-roulette-drinking-gameHackFri, 26 Sep 2014 12:59:19 -0700Lauren OrsiniWhy Do Some Old Programming Languages Never Die?<!-- tml-version="2" --><p><strong></strong></p><p>Many of today’s most well-known programming languages are old enough to vote. PHP is 20. Python is 23. HTML is 21. Ruby and JavaScript are 19. C is a whopping 42 years old. </p><p>Nobody could have predicted this. Not even computer scientist&nbsp;<a href="http://en.wikipedia.org/wiki/Brian_Kernighan">Brian Kernighan</a>, co-author of the very first book on C, which is still being printed today. (The language itself was the work of Kernighan's <a href="http://en.wikipedia.org/wiki/Dennis_Ritchie">co-author Dennis Ritchie</a>, who passed away in 2011.)</p><p>“I dimly recall a conversation early on with the editors, telling them that we’d sell something like 5,000 copies of the book,” Kernighan told me in a recent interview. “We managed to do better than that. I didn’t think students would still be using a version of it as a textbook in 2014.”</p><p>What’s especially remarkable about C's persistence is that Google developed a new language, <a href="https://code.google.com/p/go/">Go</a>, specifically to more efficiently solve the problems C solves now. Still, it’s hard for Kernighan to imagine something like Go outright killing C no matter how good it is. </p><p>“Most languages don’t die—or at least once they get to a certain level of acceptance they don’t die," he said. "C still solves certain problems better than anything else, so it sticks around.”</p><h2>Write What You Know</h2><p>Why do some computer languages become more successful than others? Because developers choose to use them. That’s logical enough, but it gets tricky when you want to figure out why developers choose to use the languages they do. </p><p>Ari Rabkin and Leo Meyerovich are researchers from, respectively, Princeton and the University of California at Berkeley who devoted two years to answering just that question. Their resulting paper, <a href="http://asrabkin.bitbucket.org/papers/oopsla13.pdf">Empirical Analysis of Programming Language Adoption</a>, describes their analysis of more than 200,000 Sourceforge projects and polling of more than 13,000 programmers. </p><p>Their main finding? Most of the time programmers choose programming languages they know.</p><p>“There are languages we use because we’ve always used them,” Rabkin told me. “For example, astronomers historically use IDL [Interactive Data Language] for their computer programs, not because it has special features for stars or anything, but because it has tremendous inertia. They have good programs they’ve built with it that they want to keep.”</p><p>In other words, it’s partly thanks to name recognition that established languages retain monumental staying power. Of course, that doesn’t mean popular languages don’t change. Rabkin noted that the C we use today is nothing like the language Kernighan first wrote about, which probably wouldn’t be fully compatible with a modern C compiler. </p><p>“There’s an old, relevant joke in which an engineer is asked which language he thinks people will be using in 30 years and he says, ‘I don’t know, but it’ll be called Fortran’,” Rabkin said. “Long-lived languages are not the same as how they were when they were designed in the '70s and '80s. People have mostly added things instead of removed because that doesn’t break backwards compatibility, but many features have been fixed.”</p><p>This backwards compatibility means that not only can programmers continue to use languages as they update programs, they also don’t need to go back and rewrite the oldest sections. That older ‘legacy code’ keeps languages around forever, but at a cost. As long as it’s there, people’s beliefs about a language will stick around, too. </p><h2>PHP: A Case Study Of A Long-Lived Language</h2><p>Legacy code refers to programs—or portions of programs—written in outdated source code. Think, for instance, of key programming functions for a business or engineering project that are written in a language that no one supports. They still carry out their original purpose and are too difficult or expensive to rewrite in modern code, so they stick around, forcing programmers to turn handsprings to ensure they keep working even as other code changes around them.</p><p>Any language that's been around more than a few years has a legacy-code problem of some sort, and PHP is no exception. PHP is an interesting example because its legacy code is distinctly different from its modern code, in what proponents say—and critics admit—is a huge improvement. </p><p>Andi Gutmans is a co-inventor of the Zend Engine, the compiler that became standard by the time PHP4 came around. Gutmans said he and his partner originally wanted to improve PHP3, and were so successful that the original PHP inventor, Rasmus Lerdorf, joined their project. The result was a compiler for PHP4 and its successor, PHP5. </p><p>As a consequence, the PHP of today is quite different from its progenitor, the original PHP. Yet in Gutmans' view, the base of legacy code written in older PHP versions keeps alive old prejudices against the language—such as the notion that PHP is riddled with security holes, or that it can't "scale" to handle large computing tasks. </p><blockquote><p><strong>See also: <a href="http://readwrite.com/2014/08/11/why-learn-php">PHP, Once The Web's Favorite Programming Language, Is On The Wane</a></strong></p></blockquote><p>"People who criticize PHP are usually criticizing where it was in 1998,” he says. “These people are not up-to-date with where it is today. PHP today is a very mature ecosystem.”</p><p>Today, Gutmans says, the most important thing for him as a steward is to encouraging people to keep updating to the latest versions. “PHP is a big enough community now that you have big legacy code bases," he says. "But generally speaking, most of our communities are on PHP5.3 at minimum.”</p><p>The issue is that users never fully upgrade to the latest version of any language. It’s why many Python users are still using Python 2, released in 2000, instead of Python 3, released in 2008. Even after six years major users like Google still aren’t upgrading. There are a variety of reasons for this, but it made many developers wary about taking the plunge.</p><blockquote><p><strong>See also: <a href="http://readwrite.com/2014/08/22/nodejs-node-js-tj-fontaine-version-10">Why The JavaScript World Is Still Waiting For Node.js 1.0</a></strong></p></blockquote><p>“Nothing ever dies," Rabkin says. "Any language with legacy code will last forever. Rewrites are expensive and if it’s not broke don’t fix it.”</p><h2>Developer Brains As Scarce Resources</h2><p>Of course, developers aren’t choosing these languages merely to maintain pesky legacy code. Rabkin and Meyerovich found that when it comes to language preference, age is just a number. As Rabkin told me:</p><blockquote><p>A thing that really shocked us and that I think is important is that we grouped people by age and asked them how many languages they know. Our intuition was that it would gradually rise over time; it doesn’t. Twenty-five-year-olds and 45-year-olds all know about the same number of languages. This was constant through several rewordings of the question. Your chance of knowing a given language does not vary with your age.</p></blockquote><p>In other words, it’s not just old developers who cling to the classics; young programmers are also discovering and adopting old languages for the first time. That could be because the languages have interesting libraries and features, or because the communities these developers are a part of have adopted the language as a group.</p><p>“There’s a fixed amount of programmer attention in the world,” said Rabkin. “If a language delivers enough distinctive value, people will learn it and use it. If the people you exchange code and knowledge with you share a language, you’ll want to learn it. So for example, as long as those libraries are Python libraries and community expertise is Python experience, Python will do well.”</p><p>Communities are a huge factor in how languages do, the researchers discovered. While there's not much difference between high level languages like Python and Ruby, for example, programmers are prone to develop strong feelings about the superiority of one over the other.</p><p>“Rails didn’t have to be written in Ruby, but since it was, it proves there were social factors at work,” Rabkin says. “For example, the thing that resurrected Objective-C is that the Apple engineering team said, ‘Let’s use this.’ They didn’t have to pick it.”</p><p>Through social influence and legacy code, our oldest and most popular computer languages have powerful inertia. How could Go surpass C? If the right people and companies say it ought to. </p><p> “It comes down to who is better at evangelizing a language,” says Rabkin.</p><p><em>Lead image by <a href="https://www.flickr.com/photos/blakespot/2444037775/">Blake Patterson</a></em></p>We like what we already know.http://readwrite.com/2014/09/01/programming-language-coding-lifetime
http://readwrite.com/2014/09/01/programming-language-coding-lifetimeHackMon, 01 Sep 2014 09:01:00 -0700Lauren OrsiniWhy The JavaScript World Is Still Waiting For Node.js 1.0<!-- tml-version="2" --><p><strong></strong></p><p>Software version numbers seem increasingly passé in these days of continuously updated apps and cloud services, but in some corners of the programmable world, they still matter. A lot.</p><p>Take, for instance, <a href="http://nodejs.org">Node.js</a>, the development framework that popularized the use of JavaScript-based Web apps on servers as well as browsers. Node has been on the scene for five years, during which time it's become the go-to tool for JavaScript developers who build messaging tools, game servers, and other real-time applications that require a speedy response from servers.</p><div tml-image="ci01a87e1f2d5f860f" tml-image-caption="Node.js project lead TJ Fontaine"><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,dpr_1.0,q_80,w_620/MTE5NTU2MzIzOTI0OTM2MjAz.jpg" /><figcaption>Node.js project lead TJ Fontaine</figcaption></figure></div><p>While Node isn't exactly an industry standard, <a href="http://nodejs.org/industry/">several high-profile websites swear by it</a>, including&nbsp;LinkedIn, eBay and Uber.&nbsp;</p><blockquote><p><strong>See also: <a href="http://readwrite.com/2013/11/07/what-you-need-to-know-about-nodejs">What You Need To Know About Node.js</a></strong></p></blockquote><p>Yet the world is still waiting for Node 1.0. That's the somewhat arbitrary milestone that to many developers (and, perhaps more important, many IT managers) distinguishes experimental, "beta" software from a mature, ready-for-prime-time product. That's no small thing for a software platform like Node, which aspires to be an everyday tool for big business as well as individual developers.</p><p>Which is the main reason Node project lead Timothy Fontaine, who goes by "TJ,"&nbsp;is in the midst of an intermittent international tour called&nbsp;<a href="https://www.joyent.com/noderoad">Node on the Road</a>. His aim:&nbsp;to convince the business world that even Node 0.10 is ready to handle big tasks—such as, for instance, Walmart.com's massive traffic spike every Black Friday. (Walmart is one of the largest corporations to adopt Node.js so far.)</p><h2>On The Road With Node</h2><p>“That’s part of what this event is about,” Fontaine told a crowd Wednesday night at a Node on the Road event in Washington, D.C. “To highlight production use cases and to show that Node is a thing you can be using on an enterprise level.”</p><p>PayPal is one of the companies that bet big on Node as an early adopter. In a blog post late last year, engineer Jeff Harrell explained that the team <a href="https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/">slipped Node in as a prototyping platform</a> before deciding to try it out in production. Even then, a separate team built an equivalent application in Java so the company would have something to fall back on should the Node project stumble.</p><p>Much to their surprise, the developers managed to build the Node application almost twice as quickly, and with fewer people. In tests against the Java app, Node handled twice as many requests per second and served up pages 35% faster. Node worked out for PayPal, which has since been building all its consumer-facing Web apps using Node.</p><blockquote><p>See also: <a href="http://readwrite.com/2014/01/17/nodejs">How Node.js Stays On Track</a></p></blockquote><p>During the event, engineers from local DC companies like Capital One and Mapbox talked about how they got their teams to adopt Node. "When we decided on Node in 2010, there were zero Node developers or projects," said <a href="https://twitter.com/younghahn">Young Hahn</a> of Mapbox. "But I believe you should always bet on JavaScript."</p><h2>We're Number 1.0! Just Not Yet</h2><p>Fontaine, however, can still sound a little defensive when pressed on the question of when, exactly, he expects Node to graduate to 1.0 status.&nbsp;</p><p>"I could move the decimal today," he said. "We could call it version 1.10, problem solved. But the last thing we want to have happen to the Node ecosystem is to create a Python 2, Python 3 situation."</p><p>That's a reference to a version-related schism involving the Python programming language. Its most recent major update, Python 3, came out in 2008, yet many developers still prefer to work in the incompatible Python 2, which dates back to 2000. Reasons for the split are still <a href="http://alexgaynor.net/2013/dec/30/about-python-3/">hotly debated</a>, although two major factors seem to be the difficulty of migrating to Python 3 and the fact that the language's overseers never wound down Python 2.</p><p>Overall, Fontaine is reluctant to announce Node 1.0 until the project is ready to “commit to a version we want to support forever.” In other words, he doesn't want to risk breaking Node by crowning a formal production release too soon.</p><p>“1.0 is tricky,” he said. “We can’t just release something and then say, ‘Oh, we’ll just fix it up with version 2.0 next year.’ We don’t want an environment where we create Perl 5 and Perl 6 and then get zero adoption moving forward.” (That's a reference to yet another version issue—in this case, one that <a href="http://www.fastcolabs.com/3026446/the-fall-of-perl-the-webs-most-promising-language">helped stall growth of the scripting language Perl</a>.)</p><blockquote><p><strong>See also: <a href="http://readwrite.com/2014/07/15/bet-big-node-js">It's Time To Bet Big On Node.js</a></strong></p></blockquote><p>Until version 1.0, the Node.js project can experiment freely. It's unwilling to commit to a higher version since some people will inevitably use that version forever and will resist moving to news ones.</p><p>So before that happens, there are still a few unreliable features that still need fixing, Fontaine said. Simply pulling out those features isn't really an option, because they're widely used. "We have to very cautiously make those decisions because people are depending on Node to be a quality piece of software,” he said.</p><p>Instead of 1.0, Fontaine focused on Node's next release, version 0.12, a relatively minor upgrade.&nbsp;“We’re very cautious when we make changes and add features that we’re adding them for the right reasons and fixing the right things,” he said.</p><p><em>Photo of Timothy Fontaine by Lauren Orsini for ReadWrite</em></p>Node is a little wary of commitment.http://readwrite.com/2014/08/22/nodejs-node-js-tj-fontaine-version-10
http://readwrite.com/2014/08/22/nodejs-node-js-tj-fontaine-version-10WorkFri, 22 Aug 2014 07:01:00 -0700Lauren OrsiniMeet The Python Programmers Who Taught A Fish To Play Pokémon<!-- tml-version="2" --><div tml-image="ci01a87e1f2801860f" tml-image-caption="Catherine Moresco and Patrick Facheris"><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,dpr_1.0,q_80,w_620/MTE5NTU2MzIzODQzOTMzNzA3.jpg" /><figcaption>Catherine Moresco and Patrick Facheris</figcaption></figure></div><p>Having learned to play Pokémon, betta Grayson Hopper is precocious by fish standards. But the real brains behind <a href="http://www.twitch.tv/fishplayspokemon">Fish Plays Pokémon</a> are two tech-savvy university students.<strong></strong></p><p><a href="https://twitter.com/catmoresco">Catherine Moresco</a> and <a href="https://twitter.com/plfacheris">Patrick Facheris</a> built the program that allows Grayson to navigate a game of Pokémon depending on which tank quadrant he swims to. The program is written in Python using <a href="http://opencv.org/">OpenCV</a> (a Python library that gives computers the ability to detect vision), and the only hardware component is a webcam.</p><p>“Python was my first language,” said Moresco, who taught herself to use it in high school. “It’s a very friendly language to use. I still haven’t taken an official Python class.”</p><div tml-image="ci01b7298a6856860e" tml-image-caption="Grayson's Twitch stream."><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYyNDA1NzIzNjYz.png" /><figcaption>Grayson's Twitch stream.</figcaption></figure></div><p>Moresco, a University of Chicago physics major, and Facheris, a Columbia University computer science major, met in this summer’s <a href="http://hackny.org/a/fellows/">HackNY fellows program</a>, and quickly became friends.</p><p>“HackNY has been a really great program not just for networking in the tech community, but also for building really strong personal relationships with like-minded hacker folks,” said Moresco.</p><p>Grayson is an even more recent acquaintance. The two picked him up at the pet store few weeks ago. He’s named for Moresco’s hero, iconic computer scientist and U.S. Navy rear admiral&nbsp;<a href="http://en.wikipedia.org/wiki/Grace_Hopper">Grace Hopper</a>. </p><blockquote><p>See also: <a href="http://readwrite.com/2014/04/23/raspberry-pi-connected-home-fish-text-message-twilio">My Fish Just Sent Me A Text Message</a></p></blockquote><p>Each year, the HackNY program caps off with a 24-hour hackathon for the fellows. Two days beforehand, the inspiration struck to use Grayson in their hackathon project.</p><p>“Cat texted me at 2 a.m. saying, 'I know we talked about a fish game, but what about a fish plays pokémon game like <a href="http://www.twitch.tv/twitchplayspokemon">Twitch Plays Pokémon</a>,'” Facheris said, referencing this years’ social experiment in which thousands of people attempting to all play the same game at once.</p><div tml-image="ci01af657b5066860d" tml-image-caption="Moresco and Grayson" tml-render-size="medium"><figure><img src="http://a1.files.readwrite.com/image/upload/c_fill,cs_srgb,dpr_1.0,q_80,w_620/MTIxNDI3Mjk1MjY2NDQwNzE3.jpg" /><figcaption>Moresco and Grayson</figcaption></figure></div><p>All in all, the project took days and two sleepless nights to complete. Moresco wrote the Python program and integrated OpenCV, in <a href="https://github.com/catherinemoresco/whereisthefish/blob/master/motiontracking.py">about 200 lines of code</a>. Meanwhile, Facheris put it online and set up the emulator. The biggest obstacle? Setting up the emulator using a Linux machine, which Facheris hadn’t been able to find documentation of anyone doing before.</p><p>Currently, the project is hosted on <a href="https://www.digitalocean.com/">Digital Ocean</a>, the inexpensive cloud server, but may soon move to <a href="https://www.optimalhosting.com/">Optimal Hosting</a>, which liked their project and offered hosting for free.</p><p>“I chose Digital Ocean—and Optimal is very similar—because you could spin up a VM [Virtual Machine] of a certain size and power and size it up really easily,” Facheris said. </p><p>Fish Plays Pokémon went from 0 to millions of views in just a few days, but fortunately scalability isn’t an issue, since the Twitch website handles that, Facheris said. </p><p>“All we have to do is make sure we have the processing power to do the stream.”</p><p>As Grayson’s fame grows, so do the two’s aspirations for building on the project. The first improvement was a randomizer quadrant. When Grayson swims into this quadrant, the buttons all switch up. Since Grayson spends a lot of his time asleep on a leaf, this adds a much-needed element of chance to his movements. </p><p>For future projects, they’ve considered giving Grayson the ability to chat in the Twitch livestream, or allow viewers to vote on when Grayson’s buttons randomize. </p><p>“That’s all the control I’d want to give to the audience though,” Moresco said. “It’s not Twitch Plays Pokémon, it’s Fish Plays Pokémon.”</p><p>Moresco and Facheris’ project lives in a <a href="https://github.com/catherinemoresco/whereisthefish">GitHub repository</a> where anybody who wants to can submit pull requests, or clone their own version. "Favorited" on GitHub just five times, it’s clear that far fewer people than those watching the stream are checking out the back end. </p><p>“We link the repository to anyone who wants to see it, but we haven’t been asked much,” said Facheris. “We also still need to add the list of dependencies to the Readme file.”</p><p> Feel free to fork the repository, but keep in mind that you’ll have to figure out some of the details—like dependencies—on your own. After all, the program’s still in beta. (Get it?)</p><p><em>Screenshot via Fish Plays Pokémon stream.&nbsp;All other photos courtesy of Catherine Moresco and Patrick Facheris.</em></p>Behind the scenes of the viral Twitch stream.http://readwrite.com/2014/08/13/twitch-fish-play-pokemon-twitch-python-programmers
http://readwrite.com/2014/08/13/twitch-fish-play-pokemon-twitch-python-programmersHackWed, 13 Aug 2014 08:04:38 -0700Lauren OrsiniPHP, Once The Web's Favorite Programming Language, Is On The Wane<!-- tml-version="2" --><p><strong></strong></p><p>When I started learning PHP earlier this month, I excitedly shared my new goal with my editors, my colleagues, and my friends. </p><p>The response from anyone tech-savvy was always the same: “Why?”</p><p>PHP—which once stood for Personal Home Page, suggesting its roots in building simple yet customized websites—is a general-purpose programming language which lets you put interactive elements into a page.&nbsp;</p><p>When you run PHP on your website, you can turn pages from static, unchanging information pages to changeable, dynamic pages—like a blog homepage which instantly updates as you add new entries.</p><p>That’s why I became interested in learning PHP in the first place. WordPress, the popular blogging platform, uses it as the backbone of its theme engine, which is how you customize a WordPress website's look, feel, and function. If you master PHP, you can tweak any WordPress blog's most minute detail. </p><p>PHP—which now stands, recursively for PHP Hypertext Processor—is deeply embedded in some corners of the Web, which is why some people like me feel compelled to master it. But while I’m just getting started, it seems like other people have long been moving on.</p><h2>The Long Decline Of PHP</h2><p>PHP has been around since 1994. Back then, it was the very first scripting language that allowed programmers to build dynamic HTML pages easily and for free. Combined with its easy database integration, especially with the ultrapopular, open-source MySQL, it did everything webmasters needed with a low learning curve.</p><p>PHP experienced its biggest surge of popularity after Mark Zuckerberg, still in his Harvard dorm room, chose it to code Facebook in 2004. With a large popular site running it, PHP became an "it" language.&nbsp;</p><p>Yet even Zuckerberg &amp; Co. have moved on to a custom language named Hack, which some developers describe as “<a href="http://www.phpclasses.org/blog/post/230-Hack-Language-is-All-that-PHP-Should-Have-Been.html">all that PHP should have been</a>.”</p><p>Today, PHP is past its prime. According to job search engine Indeed.com, PHP job listings peaked around 2011 and have since <a href="http://www.indeed.com/jobanalytics/jobtrends?q=php&amp;l=">plummeted</a> nationally.&nbsp;</p><p>What’s happening? With many alternatives to choose from for powering websites, like Python and Ruby, PHP is falling out of favor.</p><p>“PHP grew over time," developer <a href="http://blog.tommoor.com/about/">Tom Moor</a> told me on Twitter. "There [are] a lot of quirks and oddities compared to other languages.&nbsp;For example, some methods have underscores, others don't. Some take arguments in a different order for no reason at all. It's basically guesswork.”</p><p>PHP is especially confusing because of its awkward start. While Python and Ruby began as functional languages from the start, PHP was originally designed to automate the building of HTML templates, and grew into a functional language later. As it added functionality, it picked up a lot of what Moor called its "quirks and oddities."</p><p>There's a small Internet cult devoted to chronicling the strangeness of PHP. Several sites categorize developers' issues with PHP, including <a href="http://www.phpwtf.org/">PHPWTF</a>, <a href="http://phpsadness.com/">PHP Sadness</a>, and <a href="http://quaxio.com/wtf/php.html">PHP Turtles</a>. </p><p>A developer named Eevee wrote an&nbsp;<a href="http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/">oft-quoted rant on PHP</a>, which someone even translated into Spanish. It's received 2,000-plus comments since its 2012 publication. Here's a sample:</p><blockquote><p>Imagine you have uh, a toolbox… Everything in the box is kind of weird and quirky, but maybe not enough to make it completely worthless. And there’s no clear problem with the set as a whole; it still has all the tools.</p></blockquote><p>On top of that, developers criticize the backers of PHP for poor "stewardship"—a term in the open-source software world for a project's quality of management and responsiveness to the community.</p><p>When asked in an interview how PHP (which is even <a href="http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&amp;lang=java&amp;lang2=php">slower than Java) </a>could be sped up, creator Rasmus Lerdorf’s simple response was, "<a href="http://www.sitepoint.com/rasmus-lerdorf-php-frameworks-think-again/">Well, you can’t.</a>" (Lerdorf did not reply to my requests for comment on this or other criticisms of PHP raised.)</p><h2>PHP Is Dead; Long Live PHP</h2><p>And yet, for all the people who hate PHP, there are developers who love it just as fervently. </p><p>Thanks to its simple learning curve and high adoption in the past decade, PHP was the first language for a considerable number of programmers working today. For all its inelegant code, it's still an <a href="https://maurus.net/resources/programming-languages/php/">effective beginner language</a>. A friend of mine—who asked not to be named, lest he be drawn into the online PHP debate—suggested that it may be, for lack of a better word, sheer snobbishness that causes some to turn their noses up at it:</p><blockquote><p>[Coders] don’t want newbies in their circle. They want veterans. PHP being open-source invites any mother, brother, sister, or dad to try it. You get a lot of people that are copy/pasters. The other languages are seen as the elitist languages. You aren’t cool if you don’t know .NET or Python or Ruby.</p></blockquote><p>“<a href="http://www.reddit.com/r/PHP/comments/1fy71s/why_do_so_many_developers_hate_php/">Why do so many developers hate PHP?</a>” asked leashlaw on Reddit. When he told a panel at a conference that he coded in PHP, his fellow panelists offered him their condolences. </p><p>“Elitism” was just one of the rationales other Reddit users offered leashlaw.&nbsp;</p><p>The bigger problem PHP has, they said, is all the old code still running on the Web, frustrating developers who have to deal with its idiosyncrasies. The fact that PHP is easy for beginners to learn means that there's lots of websites out there filled with rookie mistakes.</p><p>“There's a bit of a reputation with PHP that it's slowly shaking off,” one redditor <a href="http://www.reddit.com/r/PHP/comments/1fy71s/why_do_so_many_developers_hate_php/caezfe3">suggested</a>.</p><p>One way to address PHP flaws would be to update the code to use the latest version of the language. Not that PHP made this easy—all three existing versions of PHP are <a href="https://maurus.net/resources/programming-languages/php/">incompatible</a>. And old versions are incredibly persisent: It took roughly three years for PHP 5 to supplant PHP 4 as the dominant version installed on websites. </p><p>Things are better now. In <a href="http://drupalmotion.com/article/php-not-dead">PHP Is Not Dead</a>, Drupal developer and blogger David Corbacho wrote that by 2013, 96% of sites running PHP are finally running PHP 5.&nbsp;</p><p>WordPress seems like it's sticking to PHP for now, so I’m still working through Jesse Friedman’s book&nbsp;<a href="http://www.amazon.com/Web-Designers-Guide-WordPress-Launch/dp/0321832817"><em>Web Designer’s Guide to WordPress</em></a>.&nbsp;</p><p>It’s clear that PHP has a small but loyal fanbase, many of whom are beginning coders just looking for something easy to use and not worrying about how pretty their code looks.</p><p>So learning PHP will be a good exercise for me, and may help me with building websites. I just won’t expect my new PHP knowledge to be useful for very much else.</p><p><em>Photo by <a href="https://www.flickr.com/photos/kea42/4372405053/">Manuel Baldassarri</a></em></p>Why? Too much junk in the trunk.http://readwrite.com/2014/08/11/why-learn-php
http://readwrite.com/2014/08/11/why-learn-phpHackMon, 11 Aug 2014 08:00:57 -0700Lauren OrsiniIt's Time To Bet Big On Node.js<!-- tml-version="2" --><p><strong></strong></p><div tml-image="ci01b529043190860c" tml-image-caption="" tml-render-position="right" tml-render-size="medium"><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MjY1MTgxNzA5.png" /><figcaption></figcaption></figure></div><p>Here’s a sure indication that <a href="http://nodejs.org/">Node.js</a> is getting big: more employers are marking the server-side framework with JavaScript as a required job skill. </p><p tml-render-size="medium" tml-render-position="right"><strong>See also: <a href="http://readwrite.com/2014/01/17/nodejs">How Node.js Stays On Track</a></strong></p><p>As&nbsp;<a href="http://www.infoworld.com/t/it-jobs/nodejs-talent-its-sellers-market-245505">InfoWorld</a>'s&nbsp;Serdar Yegulalp notes, job openings on Indeed.com that require Node.js skills have jumped from <a href="http://www.indeed.com/jobtrends?q=node.js&amp;l=">zero to 4,000</a> since 2011. Ranging from Node.js-specific positions to general programming jobs that require the knowledge along with several other frameworks, Node jobs around the country offer salaries ranging from $60K to mid-100Ks.</p><p>While there are still fewer listings for Node.js skills than there are for Python (31,000) or Ruby (18,000), those numbers have peaked in the same time period. Judging by <a href="http://www.indeed.com/jobtrends?q=ruby&amp;l=">the graph</a>, Ruby may even be past its height. Yet, Node.js jobs continue to grow. </p><p>The fact that demand for Node.js jobs has grown so starkly since 2011 indicates the framework’s potential to remake the programming landscape. As need for their talent grows, Node.js developers could be some of the most highly sought after in the future. </p><h2>The Rise Of Node.js = The Rise Of Mobile</h2><p>An increasingly mobile Web has paralleled the rise of Node.js. Mobile devices make up at least <a href="http://marketingland.com/mobile-devices-generate-30-pct-traffic-15-pct-e-sales-75498">30% of total Web traffic</a>, and&nbsp;Node.js is a framework with a lot to offer mobile app developers.</p><p tml-render-position="right" tml-render-size="medium"><strong>See also: <a href="http://readwrite.com/2013/11/07/what-you-need-to-know-about-nodejs">What You Need To Know About Node.js</a></strong></p><p>Mobile apps are designed to serve Web pages to mobile users. Most of the heavy lifting goes on in the back end of a mobile app, where websites are made available and managed. That means back-end frameworks, like lightweight Node.js, are enjoying a moment in the spotlight. </p><p>Node.js makes a great back-end framework for mobile development because its core purpose is to respond to network requests. The way this works on mobile is that iOS, Android and other mobile web clients connect to NodeJS over HTTP to send requests through an API. </p><p>Since Node.js is an asynchronous framework, it is able to handle multiple HTTP requests in tandem, and therefore handle more traffic than many competing back-end frameworks. Combine it with Node.js’s ease of development (since it uses popular language JavaScript), and you’ve got the technical explanation for why developers refer to Node.js as fast or “responsive.”</p><p>Larger technology companies have already noticed the appeal. In 2011, LinkedIn swapped Ruby on Rails for an <a href="http://venturebeat.com/2011/08/16/linkedin-node/">overhauled mobile app</a> running Node.js. Since then, the Node.js <a href="https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node">GitHub page</a> has recorded hundreds of companies, including eBay and Walmart, that are implementing Node.js for increasingly mobile purposes. </p><p>The spike in job listings is an indication that still more companies are hoping to adopt Node.js into their mobile plans. Developers, it’s time to list “Node.js” higher up on your resumes. </p><p><strong> </strong></p>The back-end framework is poised to shake up the development world.http://readwrite.com/2014/07/15/bet-big-node-js
http://readwrite.com/2014/07/15/bet-big-node-jsHackTue, 15 Jul 2014 08:20:53 -0700Lauren OrsiniFriday Fun: Create Your Own Obnoxiously Simple Messaging App Just Like Yo<!-- tml-version="2" --><p>You’ve heard about <a href="http://www.justyo.co/">Yo</a>, the bare-minimum messaging app that does nothing but send your friends a "Yo" message with just one tap. In its wake have come&nbsp;<a href="https://itunes.apple.com/us/app/oy-one-touch-sms/id895685479?ls=1&amp;mt=8">Oy</a>,&nbsp;<a href="https://itunes.apple.com/us/app/yo-hodor/id892110291?mt=8">Yo, Hodor</a>, and others.&nbsp;</p><p>Bare-bones messaging is all the rage, because, let's face it, actually composing a message made up of original words you think up in your head is a lot of work.</p><p>The sheer fatuousness of these apps has riled people up. While others pondered why anyone would sully the world by creating Yo and its ilk, we had a different question: How hard is it to code a simple messaging app that just sends a predetermined phrase?</p><p>There was only one way to find out.</p><p>We had to build our own annoying messaging app.</p><div tml-image="ci01af657b11e0860d" tml-image-caption=""><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE4MDAzNDE2OTg2MjU2OTEw.png" /><figcaption></figcaption></figure></div><p>Meet <a href="https://github.com/laurenorsini/one-click-message">One Click Message</a>, a Yo-like app built with the help of <a href="https://twitter.com/mattmakai">Matt Makai</a>, a developer evangelist at <a href="https://www.twilio.com/">Twilio</a>.</p><p>&nbsp;I used text messaging rather than push notifications because text is a universal, sure-fire way to annoy your friends without requiring them—as Yo does—to download an app.</p><p>I wrote the app in Python, an <a href="http://readwrite.com/2014/07/08/what-makes-python-easy-to-learn">English-like programming language ideal for beginner developers</a> who want to make something silly while working with Python. It took all of 29 lines of code.&nbsp;</p><p>Here's a tutorial to help you follow along with the process, so you can see how easy it is for anyone to build a simple Yo clone.</p><p>One Click Message is a Web app, not a phone app, but it still texts anyone you want. When you build it, you select a word or phrase that you’d like to send in one click. Mine <a href="http://knowyourmeme.com/memes/rickroll">rickrolls</a> people with Rick Astley lyrics.</p><div tml-image="ci01af657b1220860d" tml-image-caption="" tml-render-size="medium" tml-render-position="center"><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MjIxNjY1ODA1.png" /><figcaption></figcaption></figure></div><p>And when your friends text you back, you can display all their exasperated replies like trophies right there on your Web app. (Note to self: I may need to get a lawyer soon. Or new friends.)</p><p>There’s very minimal coding required to get this off the ground. While I'll walk you through how I wrote the app, you don't have to redo the raw coding. Instead, you can copy my work—feel free!—by cloning my GitHub repository, where I stored the source code for the very small, simple program.</p><p>Want your own? Here’s how to do it in just ten steps. </p><h2>1) Sign Up For Twilio</h2><p>Twilio is a company that makes developer-friendly set of tools for creating text and voice applications. Twilio lets you call and text your own phone number for free and charges three fourths of a penny for calls and text messages to any other phone.</p><div tml-image="ci01b2d98146a5860c" tml-image-caption="" tml-render-position="center" tml-render-size="medium"><figure><img src="http://a4.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NTU2MzIyNjU4NjQ5NjEx.png" /><figcaption></figcaption></figure></div><p>When you sign up, Twilio will give you a phone number (this is what our app will use to text your friends) and API credentials (this is what will allow our app to access our account). I’ve blurred mine out because you should never share these with anybody! </p><h2>2) Upgrade Your Twilio Account</h2><p>In my previous tutorial, <a href="http://readwrite.com/2014/04/23/raspberry-pi-connected-home-fish-text-message-twilio">My Fish Just Sent Me A Text Message</a>, we used Twilio for free, because I was just sending texts to myself. But for a messaging app, we’re going to want to be able to text other people too, so we’re going to have to <a href="https://www.twilio.com/help/faq/billing-pricing/how-do-i-upgrade-to-a-paid-account">upgrade our Twilio account</a> by paying for it.</p><p>Twilio uses a credit card on file to bill you, but if you add $5 to your account, that’s enough to send and receive about 666 texts on your app—plenty for an experiment like this.</p><p>Why pay for texts? Twilio is one of the easiest ways I've found to integrate messaging into your development projects, and carriers charge for every text message anyway. It's hard to find a similar service that's both free and flexible.</p><p>I promise this is the first and last time you’ll have to fork over money for this tutorial. Let’s move on to another tiered free-to-pay tool, of which we’ll be using just the free part...</p><h2>3) Sign Up For Nitrous.io</h2><div tml-image="ci01af657b11e3860d" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIyMzk5Mjg5MTUxNzUxNjky.png" /><figcaption></figcaption></figure></div><p>There are a lot of options for spaces where you can build and host your own online app. When I built a <a href="http://readwrite.com/2014/06/20/random-non-sequitur-twitter-bot-instructions?awesm=readwr.it_j22A">random non-sequitur Twitter bot</a>, I used <a href="https://dashboard.heroku.com/apps">Heroku</a>. This time I’m using one of Heroku’s competitors, Nitrous.io. They’re both development environments and online hosts for apps. This means you don't have to think about setting up your own server—you can just run your code and go.</p><p>Why choose one Web-based app builder over another? In this case, I chose Nitrous because it launched with Twilio functionality already built in. Using a different service might mean having to write more code, and I wanted to do the least amount of work possible here.</p><p>Sign up with an email and wait for Nitrous.io to email you your confirmation. </p><h2>4) Create A New "Box" For Your Code</h2><p>On Nitrous.io, you build and host apps by putting them in different repositories, or as Nitrous calls them, boxes. A free account earns you one box. That's plenty.</p><p>Once you’re signed up with Nitrous, go to your dashboard and click the orange button that says "New Box." Ours is a Python app, so select “Python/Django.”</p><p>Don’t worry about the unusual name Nitrous.io will assign you. It does so to make sure every box has a unique name. Because it's so easy to create new boxes, Nitrous has to make sure it has lots of names available and they don't repeat.</p><p>Finally, at the bottom where it says, “Download a GitHub repo,” you’ll want to select my One Click Message repository by typing in <a href="https://github.com/laurenorsini/one-click-message.git">https://github.com/laurenorsini/one-click-message.git</a>.</p><p>Take a moment here, if you like, to look at my code. I use&nbsp;Flask, a microframework for Python, which adds new usability to Python in a number of different ways. For the purposes of this project, we're focusing on Flask's ability to simplify integrating Web-based forms with the Python language. In this case, it's a form that collects your friend's phone number and passes it on to Twilio, which in turn sends out your designated annoyance text.</p><p>Why use a microframework instead of just writing it all myself in Python? Because it's another opportunity to write less code than we have to. Instead of writing lines of code to bridge the gap between Web forms and Python functions, we just call Flask in to do our dirty work.</p><p>When you're done, it should look like this:</p><div tml-image="ci01af657b11e6860d" tml-image-caption=""><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MjE3ODY0NzE3.png" /><figcaption></figcaption></figure></div><h2>5) Set up the Integrated Development Environment (IDE)</h2><p>When your box is created, there will be a new orange button below it that says IDE. An IDE, or integrated development environment, is just a place where you can work on code. Click it. You’re now in the part of Nitrous that lets you examine and edit your app’s code.</p><div tml-image="ci01a8bfd78ec1860b" tml-image-caption=""><figure><img src="http://a4.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMjQ5NDA2NDc5.png" /><figcaption></figcaption></figure></div><p>There are a couple of panels here. To the left is the file hierarchy. If you click on “Workspace,” you’ll see the GitHub repository “one-click-message” populated beneath it. To the right is the chat. I usually just close that, because I'm working on this myself rather than with coding partners.&nbsp;</p><p>In the center is where you edit files. And the entire bottom half of the screen is the console, where you test and deploy programs. </p><p>Let’s go down to that bottom screen now. First, we need to install the Twilio API like this:</p><p><pre>pip install twilio</pre></p><p>This is one of the benefits of using Nitrous. Because we selected its Python option, pip, a program which helps install new Python code, is already installed.</p><div tml-image="ci01a87e1ee31b860f" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMjQ5NTM3NTUx.png" /><figcaption></figcaption></figure></div><p>Next, we’re going to install Flask, the framework that adds additional functionality to Python programs. Remember how our finished app allows you to input a phone number? While Twilio is adding messaging functionality, Flask makes it possible to build responsive Python forms.</p><p><pre>pip install flask</pre></p><p>Now you’ve got all the tools you need in your IDE to get this project going.</p><h2>6) Add Your Twilio Identication to App.py</h2><p>If you look inside the one-click-message folder, you’ll see that there are six files in it, not counting images. Two of these, form.html and messages.html inside the Templates folder, make up the visual Web pages that you see when you interact with the app. The cascading style sheet, form.css, is what makes them look pretty. </p><p>But the glue holding the entire project together is a Python script named app.py. This is the only part of the project you actually have to alter in order to get it to function.</p><p>Inside app.py, I’ve inserted comments about what certain parts of the program do. The part you need to pay attention to right now is:</p><p><pre>client = TwilioRestClient ('ABC', '0123')&nbsp;</pre></p><p><pre>twilio_number = "+1234567890"&nbsp;</pre></p><p>Fill in your Twilio credentials on the first line, and your Twilio phone number on the second. With these lines, we’re telling the program how to talk to Twilio's application programming interface, and whose account to use.</p><h2>7) The Fun Part: Add Your Message</h2><p>Maybe it’s a stupid joke. Maybe it’s a really long string of words you text to people frequently and are tired of writing out. Maybe it’s a really long stupid joke. Either way, you’re going to want to put it in on this line in app.py:</p><p><pre>client.messages.create(to=formatted_number, from_ = twilio_number, body = "Message of your choice.")&nbsp;</pre></p><p>As you can see, it’s easy enough to change the message by going back into app.py and adjusting this line. So just put something fun for now. </p><p>Note to out-of-United-States tutorial readers: This is also where you would want to customize the program with your country code.</p><p><pre>formatted_number = "+1" + number</pre></p><p>I’ve told the program to add “+1” to any number inputted in the app because I’m in the US and so are the people I plan to text. But it may be different for you.</p><p>Finally, don’t forget to save the newly edited app.py!</p><h2>8) Run Python</h2><p>OK, we’re getting close to finishing up! Go back to the console at the bottom and navigate to the folder where app.py lives like this:</p><p><pre>cd workspace</pre></p><p><pre>cd one-click-message</pre></p><p>cd is a command that stands for “change directory.” We’re changing from our main directory to the one where app.py is so we can run app.py. </p><p>Here’s how you actual run it:</p><p><pre>python app.py</pre></p><p>If you are in the right directory, the IDE should spit back something like this:</p><p><pre> * Running on http://0.0.0.0:3000/ </pre></p><p><pre> * Restarting with reloader </pre></p><h2>9) Preview Your App</h2><p>With Python still running, go to the navigation bar at the top of the IDE and select Preview: Port 3000. We want the public port 3000, not the SSL (secure socket layer) option.</p><div tml-image="ci01a8bfd78ebc860b" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MjE4NTIwMDc3.png" /><figcaption></figcaption></figure></div><p>Your app should open up in another window, like this!</p><div tml-image="ci01af657b11e0860d" tml-image-caption=""><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE4MDAzNDE2OTg2MjU2OTEw.png" /><figcaption></figcaption></figure></div><h2>10) Get Texting!</h2><p>Try out your new app by texting your own phone number. Don’t forget, you need to put it in like this: 1234567890, not like this: (123) 456 - 7890 for it to work. (It wouldn't be hard to add a few more lines that match patterns by using a library like <a href="https://github.com/daviddrysdale/python-phonenumbers">python-phonenumbers</a>, but for simplicity, I skipped that.)</p><p>After you hit send, try sending a reply text, and refresh the page. This will probably be the least-irritated response you’ll get!</p><div tml-image="ci01af657b11e8860d" tml-image-caption="How the ReadWrite team replied to my app.&amp;nbsp;"><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIyMzk5Mjg5MTUxODE3MjI4.png" /><figcaption>How the ReadWrite team replied to my app.&amp;nbsp;</figcaption></figure></div><p>Text your friends, or share the app’s address with them and trick them into texting themselves. </p><p>Have fun! And if you get somebody to invest a million bucks in your obnoxious one-click messaging app, that’s just icing on the cake.</p><p><em>Lead photo by&nbsp;<a href="http://www.flickr.com/people/jhaymesisvip/">Jhaymesisviphotography</a></em></p><p><a href="http://www.imagecodr.org/"></a></p><p><strong> </strong></p>There's a reason why these bug-your-friends apps are proliferating.http://readwrite.com/2014/07/11/one-click-messaging-app
http://readwrite.com/2014/07/11/one-click-messaging-appHackFri, 11 Jul 2014 09:03:00 -0700Lauren OrsiniWhy Python Makes A Great First Programming Language<!-- tml-version="2" --><p><strong></strong></p><p>Python is now the most popular introductory language at American colleges, a recent <a href="http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext">Association for Computing Machinery study</a> reports. </p><div tml-image="ci01a87e1ee011860f" tml-image-caption="" tml-render-position="right" tml-render-size="medium"><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMTk4NTUwNTQz.png" /><figcaption></figcaption></figure></div><p>In an analysis of the top 39 computer science departments as ranked by <a href="http://grad-schools.usnews.rankingsandreviews.com/best-graduate-schools/top-science-schools/computer-science-rankings">U.S. News in 2014</a>, the general-purpose programming language has replaced Java as the budding computer scientist’s first exposure to writing code. Eight of the top 10 CS departments (80%), and 27 of the top 39 (69%), teach Python in their introductory courses. </p><p>Invented 23 years ago, Python’s discovery as a great tool for first-timers has been more recent. The beginner-oriented <a href="http://www.raspberrypi.org/help/faqs/#softwareLanguages">Raspberry Pi</a> has certainly influenced Python’s new role as a teaching tool, but also its increasing adoption at organizations like Google, Yahoo and NASA that make it valuable to know even after a programmer is no longer a beginner. In modern times, it has routinely been ranked as one of the <a href="http://www.tiobe.com/index.php/paperinfo/tpci/Python.html">eight most popular programming languages</a> since 2008. </p><p>Perhaps not so coincidentally, Python is my first programming language, too. I’m halfway through Zed Shaw’s <a href="http://learnpythonthehardway.org/"><em>Learn Python The Hard Way</em></a> on my road to mastery. And in this liberal arts student’s studies, I’ve noted a few key characteristics that make Python easy to grasp.</p><p>Here are some of the reasons Python makes a great first programming language. </p><h2>Very Minimal Setup</h2><p>To show you just how easy it is to get started with Python, let’s literally get started with Python.</p><p>On a Mac, find your Terminal program and open it. On a PC, find the PowerShell program and open that. It’ll be a blank box where you can write in text prompts.</p><p>Do that now. Write in the word “python” and hit Enter. You should see something like this:</p><div tml-image="ci01a33b7b84d1860e" tml-image-caption=""><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE4MDAzNDE2OTM2ODQyNzY2.png" /><figcaption></figcaption></figure></div><p>If you don’t see that and instead see the words “python is not recognized” or something similar, you need to <a href="https://www.python.org/download/">download Python</a>, Python 2 to be exact, and try again. </p><p>Either way, it only takes a single word to get your computer to run Python. It doesn’t get much simpler than that. </p><h2>It’s Written In Plain English</h2><p>Python is so easy that we’re going to write our first Python program right now. </p><p>If you’re still running Python from the last section, type CTRL-Z on a Mac or “quit” on a PC to exit. </p><div tml-image="ci01af657b0ee9860d" tml-image-caption=""><figure><img src="http://a1.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMTk4MDkxNzkx.png" /><figcaption></figcaption></figure></div><p>Now create a new blank Python file using Nano, a basic command line text editor. All you have to do is give it any name and end it with the suffix “.py” so your computer understands it is a program intended to be read by Python. The “nano” prompt simply opens it in Nano. </p><div tml-image="ci01a87e1ee00c860f" tml-image-caption=""><figure><img src="http://a3.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE4MDAzNDE2OTM2Nzc3MjMw.png" /><figcaption></figcaption></figure></div><p>This is the most basic Python program you can write, a command that simply prints the words “Hello world” on your computer screen. Compare it to Java and C’s “Hello World” programs, which are each <a href="http://programmers.stackexchange.com/a/124823">several lines long</a>. There’s no weird syntax, no cryptic variables. Anybody can look at this one line and figure out what it does. </p><p>Save, and then run the file with the “python” command. It’ll print your program:</p><div tml-image="ci01b2d9814391860c" tml-image-caption=""><figure><img src="http://a5.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIyMzk5Mjg5MDk5NzgxNjQ0.png" /><figcaption></figcaption></figure></div><h2>Errors Appear On Runtime</h2><p>When you’re learning something for the first time, you’re inevitably going to make mistakes. Python makes it easy to identify and fix these mistakes immediately. That’s because Python displays errors at run time, instead of simply failing to compile the program. </p><p>Open up example.py, the program we just wrote before and intentionally make an error. Here, I’ve omitted a necessary quotation mark.</p><div tml-image="ci01af657b0ee7860d" tml-image-caption=""><figure><img src="http://a2.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMTk4MDI2MjU1.png" /><figcaption></figcaption></figure></div><p>When I try to run the program, Python tries to point out where I went wrong:</p><div tml-image="ci01a8bfd78b73860b" tml-image-caption=""><figure><img src="http://a1.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTE5NDg0MDYxMTk3OTYwNzE5.png" /><figcaption></figcaption></figure></div><p>Instead of displaying a blank screen where your program should have been, Python will run your buggy program and try to <a href="https://docs.python.org/2/tutorial/errors.html">help you troubleshoot</a> it.</p><h2>Shallow Learning Curve</h2><p>I began coding Python last week with the program above. A few days later, I’ve programmed my own basic text editor and calculator using Python. </p><p>Because Python has so little overhead and excess code, it becomes easy to grasp continually more difficult concepts since they mimic English sentence structure we’ve seen before. </p><p>We just built the most basic program possible. But even just knowing what you know about Python now, I bet you can take a guess as to what the following program does:</p><div tml-image="ci01a33b7b84cf860e" tml-image-caption=""><figure><img src="http://a1.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MTY3NTMzMDY5.png" /><figcaption></figcaption></figure></div><p>I’ll run this program using the Python command.</p><div tml-image="ci01a33b7b84d3860e" tml-image-caption=""><figure><img src="http://a4.files.readwrite.com/image/upload/c_fill,cs_srgb,w_620/MTIxNDI3Mjk0MTY3NTk4NjA1.png" /><figcaption></figcaption></figure></div><p>Sure enough, it lists how many students and teachers there are, and does a basic division problem for us. Did you guess correctly?</p><p> For the reasons above and many more that <a href="http://zachis.it/blog/why-is-python-the-best-programming-language-to-teach-beginners/">more experienced</a> Python programmers can explain better than I, Python makes a great first programming language, especially if you don’t really consider yourself the math and science type. It’s really no surprise that American universities have come to the same conclusion. </p><p><em>Logo via the <a href="https://www.python.org/">Python Foundation</a></em></p>If you understand English, you already understand Python.http://readwrite.com/2014/07/08/what-makes-python-easy-to-learn
http://readwrite.com/2014/07/08/what-makes-python-easy-to-learnHackTue, 08 Jul 2014 09:00:13 -0700Lauren Orsini