Thursday, December 29, 2011

Egoless Programming

As mentioned earlier, the odd name for these pages comes in part from the idea of Egoless Programming.  To help get the idea across, I'll throw out some suggestions:
  1. You are not your code.
  2. You discard your code for something better.
  3. You look for strengths in other people's solutions.
  4. When you criticize, it is "defects only," and not style points.
  5. You are ready for the next person in the door to have a great idea.
  6. You work with others to (re)combine ideas in pursuit of excellence.
I think these reminders work in parallel to whatever management hierarchy is in place.  In general, co-workers will respond in kind.  Now and then you get a guy stuck on his idea being best .. let him be, and of course try not to be that guy ;-)

Wednesday, December 28, 2011

Middle-aged borrowers piling on student debt

The full story is here.

It's interesting.  There are fields, of course, where formal education and debt are necessary.  And then there is computer programming, where Robert Speer, Eric Raymond, and I suggest you can learn for "free."  Well, at least for any of definition of "free" that includes a web connection and a spare PC.

I'm sure free-form learning on a web connected PC isn't for everyone, but I don't think the bar is that high.  You just need to think about your own learning plan, and then work at it patiently.

Rome wasn't built in a day.

Saturday, December 24, 2011

Alerntate Paths: via Eric Raymond

Eric Raymond won infinite geek points with his essay The Cathedral and the Bazaar.  It at once cataloged the Open Source dynamic and gave it direction.  Slightly less known is his document How To Become A Hacker.  It is worth reading in full, but one interesting bit is the ordering of his road map for "Basic Hacking Skills:"


1. Learn how to program.
2. Get one of the open-source Unixes and learn to use and run it.
3. Learn how to use the World Wide Web and write HTML.
4. If you don't have functional English, learn it.


That's a bit different than the order I suggest in my sidebar. I'm basically saying (using his numbers) do 2, then 3, then 1. Perhaps that's because I expect that people coming to my site have some small experience to programming and are committed to a long-term effort.

If you aren't sure, and are testing the waters, then I'm with Eric. Dabble with programming first, and then attack a software stack (like LAMP).

Friday, December 23, 2011

Alternate Paths: Processing

Wikipedia describes Processing as:

an open source programming language and integrated development environment (IDE) built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks. The project was initiated in 2001 by Casey Reas and Benjamin Fry, both formerly of the Aesthetics and Computation Group at the MIT Media Lab. One of the stated aims of Processing is to act as a tool to get non-programmers started with programming, through the instant gratification of visual feedback. The language builds on the Java programming language, but uses a simplified syntax and graphics programming model.

It looks really good to me, as a first language, as does this Learning Processing site.

For someone looking for a first programming experience, and immediate graphic feedback, it looks pretty ideal.

Alternate Paths: JavaScript

In contrast to all the other computer languages I've discussed so far, JavaScript is a client-side language. It can run purely in a web browser, which makes initial tinkering pretty easy. Assuming some simple HTML chops, the student can show off some real programs pretty quickly. It can be done on any PC with a text editor and a web browser. JavaScript is a web standard. If you program long, you probably will want some JavaScript skills.

What's not to love? Well there is a pretty interesting discussion here at John Resig's blog. JavaScript is kind of a messy language, evolved over time to get things done in web pages. That makes it a little hard for me to endorse for beginners. As comments at John's page show though, people have learned JavaScript as their first programming language, and they endorse it.

JavaScript is also used at Codecademy to teach first-time programmers. There are many happy reports coming from Codecademy students as well.

So perhaps this is a good first-step approach for many. It doesn't start at the low levels I prefer, it kind of starts at the top of a web-programming stack, but if you like programming after a JavaScript exposure, you can branch back down.

Update: Alternate Paths: HTML5

Thursday, December 22, 2011

Should You vi?

When I was coming up through UNIX programming, GUI editors were not that common, and certainly not across the Sun, HP and IBM systems I commonly used.  On the other hand, vi was always there.  It's old-school.  It's infrastructure.

I'm going to say that yes, you should learn it if you are taking a Linux/UNIX centered development path.  There will be a time when you just need to quickly edit some dumb little text file, maybe over a telnet or ssh connection, and vi will do it.

Google "vi tutorial" and spend some time.  It might be fun, as well as a little frustrating ;-).  Just remember, when in doubt, pound that Esc key!

A few additional comments:

1) I run vi from the command line.  When I'm in a GUI mood I choose something else.

2) Whenever I load a new Linux system, I add the full vim package.  Vim is vi plus nice things like colored syntax highlighting.  When I can, I vim rather than vi.

3) Back in the old-school days there were "vi versus emacs" arguments (see Editor War).  I won't comment on that.  I ended up a "vi guy" alternately because I like a light environment, or I just happened to use vi first.

Don't Forget Exercise

In the NY Times article How Exercise Benefits the Brain we learn that this oft-reported claim has been tied to a mechanism:
For some time, scientists have believed that BDNF helps explain why mental functioning appears to improve with exercise. However, they haven’t fully understood which parts of the brain are affected or how those effects influence thinking. The Irish study suggests that the increases in BDNF prompted by exercise may play a particular role in improving memory and recall.
So, alternate that butt-in-chair time with a little time on the trails.  Not only does it feel good, it improves learning.