Surya's Tumblr: After Disappearing For More Than 3 Years, Why The Lucky Stiff Returns To The Internet
#SuryaRay #Surya With few exceptions, the world of developers (and startups in general), is really known for its scandals. But when Ruby icon Why the Luck Stuff (also known simply as _why) suddenly took all of his projects offline - including the famous Why’s (poignant) Guide to Ruby - offline…
Wow. Big news for the Ruby community.
I have to get Ruby working on my machine…
Drew Conway ranked programming language by popularity on GitHub and Stackoverflow in 2010, and many people like it. I wrote this post after Stephen O’Grady’s Ranking made a new ranking September 2012. He compares new data to the original data from 2010, but I am not impressed and doubt his…
My Life on Rails: Where we begin
By Jacob Harris, late of the New York Times. ”…if you want to advance as a programmer, you need to take some impractical detours.”
These recipes may be most helpful to journalists who are trying to learn programming and already know the basics. If you’re already an experienced programmer, you might learn about a new library or tool you haven’t tried yet.
I’ve found that novice and non-programmers sometimes don’t get much from seeing a wall of code. Or worse, they blindly copy it, not thinking about how such code runs or why it was written the way it was. It may work for them the first time. But when they try to do harder and more creative tasks – which is the point of learning to program – everything falls apart and they quit coding because it’s all just a jumble of electronic voodoo.
So the first part of this book contains a bare-bones run-through of what I consider to be the most important programming fundamentals. I skip important topics so that there are fewer concepts to juggle at first. And I believe that once you get to the point that you can make code useful, you’ll naturally go back and learn those important fundamentals on your own."
This is an issue for me too. I’m at the point where I can often get others’ code working, and modify it for my own purposes. But writing stuff from scratch is hard — a lot of times, what I write doesn’t work, and I’m not sure why it doesn’t work or how to fix it.
I do try to write more and more code on my own, though.
If I’m not careful, I’m going to reblog 100% of Mindy McAdams’ Baby Data Journalism tumblr.
My favorite, in comments:
Erlang: The Mary Celeste of programming ships, it appeared out of nowhere, nobody really knows what it does or what it’s good for, and nobody knows whats happening to it, or where it is going.
COBOL: the papyrus boats of the Egyptians. Ancient, but Thor Heyerdahl managed to reach America in one
I am at the Story + Algorithm Hack Day, held at MIT and organized by Knight/Mozilla.
The intention of the gathering is to turn loose a bunch of people to work together on news-oriented projects, and see what we can get done in 24 hours.
Originally, I wanted to take some data I have about funding of nonprofit news sites and put them in a timeline. Mainly, it was an excuse to see if I could get Timeline Setter, the timeline generator created by nonprofit investigative news shop ProPublica, to work.
AND IT WAS HARROWING!!
Now, I want to point out that it was harrowing for reasons that have absolutely nothing to do with the code created by the ProPublica team.
It was harrowing because I had to begin by shaving a yak.
If you’re not familiar with the phrase “shaving a yak,” here’s what it means. Let’s say you want to do A. But in order to do A, you have to do B. And in order to do B, you have to do C. And pretty soon, you find yourself on a hillside in Nepal, shaving a yak, with no real notion of what you originally set out to do, or, indeed, how you got there.
So in order for me to get Timeline Setter to work, I had to get Ruby working on my machine.
Then I had to get RVM, Ruby Version Manager, working, and update Ruby — which was in fact already installed on my Mac — to the latest version.
But before I did all that I had to install XCode, Apple’s developer toolkit.
Then I had to install some “gems” — Ruby bits and pieces upon which Timeline Setter depends.
Now, none of that happened with cute little installers with buttons. (Well, okay, XCode did). It all happened at the terminal windows, typing arcane incantations and hitting Enter.
Of course, not all of the arcane incantations actually worked, either because they were the wrong incantation, I typed them incorrectly, or perhaps I didn’t offer them with either A) the correct spirit or B) I didn’t sacrifice any chicken nuggets.
There was much Googling to find new incantations that might get RVM working, for example, and more for magical incantations to be added to the mysteries of The Bash Script. (I’d tell you, but there’s a ritual involved, and I’m completely beat).
Having surmounted all the previous obstacles, I typed a final incantation:
timeline-setter -c /Users/lisawilliams/Documents/test.csv -o /Users/lisawilliams/Documents
AND LO THERE WERE TIMELINES!
A file appeared that hadn’t been there before. Timeline Setter had taken the .csv file and, indeed, created a timeline from it.
Now I just need some interesting data.
It’ll probably be either funding of nonprofit journalism projects or voter suppression efforts.
_why talking about Hackety Hack, a whimsical all-in-one downloadable app aimed at teaching novices to program using the Ruby programming languages.
After becoming one of the Ruby community’s most well-known contributors, _why disappeared, taking much of his source code with him. Annie Lowrey’s profile “Where’s _why?” is a fascinating story and one of the best pieces about a computer programmer I’ve read in a mainstream outlet.
Teach Kids to Program!
I keep a running list of learn-to-code resources aimed at kids and teens in the Life And Code Resource Guide. Here’s a selection, but I update it frequently:
Hackety Hack — teaches kids to program in Ruby. Good for former children, too.
Scratch — a programming language and environment developed for kids; designed to encourage kids to create games and animations.
LearnScratch.org has great video tutorials for Scratch, delivered in a very fetching French accent.
Snake Wrangling for Kids — Free downloadable e-book teaches programming in Python.
Python4Kids — tutorials for kids age 8 and up.
How to initiate kids — or anyone — in coding - great list of resources.
Intro to Scratch for Kids — Scratch is a visual programming environment created for kids. Lets them make games and animations to share online. It’s really great.
KidsRuby Have fun making games or hack your homework with Ruby
AgentSheets lets you create agent-based games via a drag and drop interface
Alice is a 3D programming environment aimed at kids who want to create games and animations
Hack the Future is a hackathon/self-guided hacking experience for people from the ages of 10 to 19
It took me some twenty-plus years to really learn how to program. It wasn’t for a lack of trying either, it was just that I was trying the wrong way. I tried to learn to program by following tutorials that created programs I didn’t have the slightest interest in keeping. I was trying to learn for the sake of learning.
What made it click for me was programming in anger. Programming because I needed to. Programming because I gave a damn about what I was writing and I wanted it done sooner rather than later."
Ben Joven, 37 Signals. I also learned to code because a lot of things pissed me off.
This morning before work, I made a Ruby program that sings ‘99 bottles of beer on the wall’, until, once there are zero bottles left on the wall, proclaims “You’re drunk!”. Then I made another, “Deaf Grandma” that shouts “NO NOT SINCE (random year)!!” at everything you say until you tell her “bye!”. I used Ruby to calculate how many seconds I’ve been alive, and the number of minutes in a decade (only 5.256 million, am I the only one that seems low to?). None of these programs have much utility beyond their immediate answer or entertainment, but these exercises are the most useful thing I’ve done in terms of learning to program so far.
Chris Pine’s book “Learn to Program” is written with the non-developer in mind, which is a near-rarity for most of the programming tutorials I’ve found so far. Even Michael Hartl’s much heralded Rails tutorial assumes the reader has a fair bit of knowledge- or that they don’t mind that half the material will go right over their heads. The only comparable platform is Codecademy, and although the lessons are designed with beginners in mind, the lack of a glossary of programming terms, or even better a theoretical introduction to programming, the lessons can often feel more like typing practice than acquisition of coding concepts and knowledge.
The brilliance of “Learn to Program” is that Chris not only teaches you how to use the most basic functions of Ruby- critically important and totally basic methods like to_s or to_i, upcase, center, etc- but also the theoretical and structural concepts of programming. It’s the only tutorial so far that I’ve encountered the word “Branching” (i.e If-Else) or “Flow Control”, and even better, a section titled “The Art of Programming” that honors DRY (don’t repeat yourself!) and gives the student a sense that there is an aesthetic quality of beauty to code, beauty in both functionality and simplicity of the best and most fluid way to accomplish a task.
For those of you just starting out, I can’t recommend this book highly enough as an introduction. Many of the tutorials out there never stop to explain the most fundamental concepts of programming or give any sense of the big picture- they focus completely on the syntax, building up a vocabulary of methods and terms instead of focusing on the grammar and theory behind the language. “Learn to Program” builds your knowledge from the ground up, giving you a sense of how a larger, more complicated, and maybe even profitable (! not that that’s what it’s all about…) program would be made.