Archive for the ‘General’ Category

How I got started in programming

Monday, June 30th, 2008

How I Got Started Programming

My good friend Amy Hoy has pinged me in the latest geek-cum-chain-letter-sucker meme. Since I am enamored with myself, I figured I should let the world know my answers to these.

How old were you when you started programming?

The answer to this depends on how you define “programming.” Not to mention how you define “started.”

It could be when I was around 7 or 8 with our Apple IIc.

It could be when I was 10 making pictures out of ascii.

Maybe it was when I was 15 making doors for BBSs.

Maybe it didn’t happen until I was 17 and scrambling for a class.

How did you get started in programming?

Again, this depends on a few things. However here are a couple of possibilities:

  • Sitting in my living room in front of our Apple IIc, a friend (George?) showing me the classic 10 print, 20 goto 10. I tweaked it to make different patterns in the offsets
  • The computer lab in 5th grade (I went to a private school for one and only one year… it’s a long story) making teletype ascii art (on real PCs, not on dumb terminals). They gave us instructions like “line 5: 25 spaces, 5 stars, 1 vertical bar, 5 stars”. When you were all done, you’d see the picture. The one I remember very vividly is a Space Shuttle with “USA” on the booster rockets. I would spend *hours* after-school making and tweaking these things. It’s fair to say that the teacher was programming us, and WE were the “computers”
  • Spending hours making frames for my Etch-a-sketch Animator 2000 Etch-a-sketch animator 2000 - image from Wikipedia

What was your first language?

BASIC was the first language I had any exposure to, but the first language I achieved any proficiency with was Pascal (Turbo Pascal 6.0). I still have a soft-spot in my heart for Pascal, it was my gateway to the beauty and elegance of Computer Science.

What was the first real program you wrote?

Then, as well as now, I didn’t finish many projects. Getting (or not getting, as the case may be) to the “crux” of the problem was my main goal. One project I did finish was in my senior year of high school. I wanted to understand Object Oriented Programming, and started poking around with C++ (I had learned a bit of C before-hand with a friend in school - Jason Kochel). What I ended up making was a program that took two lines of text, put them on the screen, then made them shrink and expand opposite each other. The lines I used were “I love” and some girls name (for a friend of mine - his girlfriend at the time).

What languages have you used since you started programming?

This question should really say something along the lines of “… more than once,” or “… for any period of time.” Here’s a short list of things I’ve messed with:

ASM, C, C++, BASIC, Pascal, JavaScript, Bash scripting, Java, processing, ASP, Visual Basic, POVRay, Ruby, Python, Perl, Objective C, PHP….

What was your first professional programming gig?

I think I made a few bucks from some BBS Doors, but the first real paycheck had to be from Pacific Bell Internet in 1997. I was working tech support for the ISP when I got bored and attempted to make a demo version of our customer management system (Vantive) in JavaScript. That got the attention of some people higher-up, and I was brought into a skunkworks project to implement our side of a web-based CRM we had just purchased (Silkenet eService). This was my first exposure to server-side programming, and taught me many lessons that I’m still trying to digest. From there, I moved around in the company a few times, picking up VIM, Perl, VB and a few other things along the way.

If there is one thing you learned along the way that you would tell new developers, what would it be?

  1. Don’t be afraid to break things
  2. Once you get past fear, find your joy and follow it completely
  3. NEVER STOP LEARNING OR CREATING.

I’ve made many, many, many mistakes while programming (Hey John, remember the 2 gig file I wrote out to your 200meg hard drive?) Having a group of awesome friends kept catastrophic computer failures to a minimum. And then having a supportive mother for when I did really mess things up let me explore.

The bigger advice is mostly don’t ask for permission. If you need to jailbreak your phone to explore your passion - do it. If you need to tear apart your Furby and solder his guts together to learn how he works - do it. If you need to stay awake 2 days straight just so you can impress someone - do it.

What’s the most fun you’ve ever had… programming?

There are far too many to name. Every time I stay up all night trying to get something out into the world, it is, to me, the most fun possible. Here are a few instances of pure joy from programming/learning:

  • When I was sans-home, I would hang out at friend’s houses A LOT. At a few of them, they had old computers. I’d load up BASIC, and make it draw circles and spirals. It was nearly an obsession. It’s hard to explain, my technical chops were far beyond sine, cosine and drawing dots. However - it was the first time I can remember that I coded 100% on my own. No books, no articles on line and no source code to crib from. It was truly liberating. To this day, opening up a blank editor and creating something without reference is a beautiful thing.
  • The night before my senior year of high school started…
    I was signed up for Advanced Placement Computer Science (the only honors level class I took in HS), a pre-requisite was the Pascal class the school offered as part of the Math Department. Due to circumstances outside my control, I wasn’t able to take that class before senior year. I lied and said I knew Pascal enough to do just fine in the class. I spent hours looking at all the source examples I could find and retyping them into a stolen version of Turbo Pascal at home. By the time I went to sleep, I knew as much as anyone else in the class (except for Jason.) I ended up getting a 5 (the highest possible grade) on the AP test, and finishing the class with a grade in the high 90s (which was totally unheard of for me.)
  • I recently made an application that I didn’t announce on here. It’s just for me, but complete and not missing any corners. I stayed up until the sun came up writing Ruby (with Sinatra), HTML, JS and CSS. It explores a few interesting concepts and scratches an itch I’ve had for years. If you can’t make yourself happy (and maybe a few geeky friends), then why bother fighting with these wretched machines?
  • “Hello World” on the iPhone.

Bonus Question: How do you get into “The Zone” for programming:

I added this question because I’m a tinkerer and couldn’t leave well-enough alone.

For me, it’s always been music. Not just music, but music on repeat. It filters out noise, and is repetitive enough to sooth the doubting part of my mind. Two times:

  • I had an old, beat up cd player that didn’t have repeat. It didn’t even start the disc over when it ended. I got up to hit play to re-start Jagged Little Pill a thousand times if I did it once.
  • During Rails Day 2006, I played “Unfaithful” non-stop for the entire time I programmed (I think it was 18 hours total.)

Tagged:

Without passing these things on, they’d die. Cold. Alone. Help stave off meme-death. Ping these people and let them know the fate of this meme is in their hands:

(wow, I could keep adding people forever. I need to know everyone’s story…)

For anyone who needs the list of questions, here it is in one easy to copy and paste block:

Project #3 - Fluid CSS TextMate Bundle

Saturday, June 14th, 2008

So my last project ended up being a much bigger deal/effort/undertaking than I expected. I’m just now starting to get back in the swing of small releases. Still shooting for 10 projects this year though!

Not counting the super secret project, this is my 3rd release and it’s a huge departure from my normal stuff.

Fluid CSS TextMate Bundle

This will appeal to maybe 10 people in the world, but for them it could be a huge time-saver (it already is for me.)

Fluid (elastic, em-based, etc) layouts are ones that specify all sizes in relative units (usually ems - a typographic term). Here’s a great introduction to making one of these layouts: The Incredible Em & Elastic Layouts with CSS. The advantage to having everything set in a relative unit is that it allows the site to scale (like “Full page zoom” on IE7 and Firefox 3). It’s also a great way to know exactly what’s going on with your layout.

Since you’re working in relative units, you always need to be aware of your current font-size, and use that to calculate the size you’re setting.

In the past, that meant a lot of asking google (did you know it’s a calculator?) or spotlight (did you know it’s a calculator?)

Well, NO MORE!

Here’s a video showing you what it does:

How to use my textmate bundle for em-based designs from kastner on Vimeo.

Grab it on GitHub.

Or - get the tarball

My Railsconf Talk

Friday, May 30th, 2008

I just gave my first-ever presentation. From what I’ve been told, it went ok despite running 15 minutes short.

I’ve uploaded the code to the microapp I demonstrated here:
Jeff4Good on GitHub

I’ve uploaded my slides on Slideshare

Here they are on S3: Microapps.pdf (3.4 MB)

If you were at my talk, please let me know what you thought about it. Especially if you have any constructive criticism (just no cricket sounds please).

Here it is embeded:

Project #2 - Color Wars 2008

Thursday, April 17th, 2008

Continuing my goals for 2008, here’s my second project I’m announcing:

Color Wars 2008!

When I heard that Ze Frank had joined twitter, I just knew it would be cool.
One day, he asked for bedtime stories. Then he made mention that he’d like to find a way to show all the cool ones he was getting to everyone else. (here’s where I come in) I direct messaged Ze (he re-followed almost everyone), asking if he needed any help with the bedtime stuff.

He said sure, and the @bedtime script was born.

A few days later, he posted this tweet:
Good Morning! As you can see, I am now a member of the blue team

And then:

what team are you on
Uploaded with plasq’s Skitch!

And since I had just helped him out on the bedtime, he asked if I wanted to be part of this “thing” (whatever it was!). Of course I said no… YEA RIGHT!

Color Wars is running Rails, Wordpress and come custom git magic. One of the other awesome things about this project is who else I’ve gotten to help at various parts:

This has been a very awesome experience, I’ve learned tons, and had some really cool conversations about really strange things :)

Reblogging Anil

Friday, March 14th, 2008

Anil Dash is doing a bit of an experiment. He wanted to see if people would embed his content in their site. Not by copy & paste, but by an embed.

I think this is a really cool concept, and aligns nicely with tumblr’s tradition of re-blogging posts to add commentary and opinion. Let’s hope this takes off! Owning your own data FTW!

Learning Processing

Saturday, February 23rd, 2008

Processing is a really cool language / environment for doing really cool programming projects. One of the things it does really well is graphics. I’ve been playing around with it on and off for a little while now, and here are two things I’ve managed to make.

Video Offset


Video offset in processing from kastner on Vimeo.

This was inspired by Run Lola Run on the IAC wall. Mine isn’t a million miles wide, but I really love the cool effects and patterns I get.

Here’s a link to the code for it. The hardest part was translating the video input from a one-dimensional array, to a 2d one.

Falling Balls


Balls falling in processing from kastner on Vimeo.

This was inspired by a few things - one of which was Mark Chadwick’sGraffiti Particles. Mine isn’t anywhere near his, but I think I kinda understand how he’s doing the camera (maybe?).

Here’s a link to the code for this one. The hardest part was realizing that I needed to push and pop the matrix INSIDE the loop!

I’m just getting started with processing, but looking at some of the things out there it reminds me of sitting at home watching the amazing stuff coming out of the Demoscene and feeling simultaneously inspired and crushed. This is my chance to make great computer graphics, and as long as I have time here and there to work on it, that’s just what I intend to do!

To my lovely wife…

Thursday, February 14th, 2008

An update to the Image Hiding toy

Monday, February 4th, 2008

I spent a few hours yesterday cleaning up, adding features and deploying (to EC2) the Image hiding app I blogged about last time.

Here’s the new address:
Highlite

That was fast

Saturday, February 2nd, 2008

It was just a few hours ago that I posted my Goals for 2008 and I’m releasing my first project of the year.

It’s nothing big, but it was a fun little distraction.

The hide-an-image-in-text-with-css3-creator-thing

If you’re one of those folks who might care about how something like this might work, here’s the source.

My goals for 2008

Friday, February 1st, 2008

It’s February 1st 2008 and this is going to serve as my list of yearly goals. I’m going to review these periodically throughout the year, and have a followup next February.

  1. Finish this blog post
  2. Be the best father and husband I can be
  3. “Ship” 10 projects
    • 1+ on Amazon’s cloud
    • 1+ with a new-to-me language (Smalltalk, Io, Python, etc)
  4. Drop 20lbs of fat