Putting Rollerskates on a Cow… Not Always a Great Idea

What’s the old adage?  “You can put rollerskates on a cow, and it’s still just a cow.  With rollerskates.  But it’s not always a great idea.”  Never heard of it?  Probably because I just made it up.


She wants those rollerskates.  You can tell.

What am I talking about?  Some people seem to think they can just randomly decide to be in the computer programming world because it’s a “safer bet” than, say, going into business school at the moment.

And they’re wrong.

It’s a Lifestyle

Being a programmer, coder, hacker, or any other variant of the idea of creating computer software (on any level) is not something you just wake up one day and decide to do.  You can’t, even if you wanted to.  This isn’t the same as studying for 4 years at your favorite college to get a degree in Economics and go pretend you know what all those giant spreadsheets mean.

Programming is typically borne from a love of computers, an obsession with them, and a need to know more.  You start tinkering with your Operating System (probably Windows of some sort), modifying things you don’t like and figuring out workarounds for those “people are dumb, treat them that way” software design idea.


Einstein seems to get what I’m saying.

And then you realize that you can create software.  Maybe you start with HTML and websites.  Maybe it’s PHP in the form of a mashup from your favorite websites.  Or maybe you even start playing with C++ or Java.

All while in middle school, or maybe even high school.  Because you definitely know you have a love affair with computers before you go to college, and have a high level of proficiency at any number of things computer-related.

Trust Me

I’m not making this up.  Us programmers are the same people you called geeks, nerds, and whatever else when we were younger, and now we happen to be the cool kids.  It doesn’t matter if you’re 40 or 20, people put you on a higher pedestal when they know you design software, because they simply don’t understand it.

Ask “that guy” that you know about how he got into it.  He’ll tell you.

It’s Important

Why is it important?  Because programming is not just about learning how to program, the syntax, structure, and quirks of a language.  It’s not even about being qualified to cry about pointer management or laugh at people who think Internet Explorer is “the Internet”.

It’s important because programming has alot to do with how you think.  How you approach situations, analyze them, and segment them into solution-oriented tasks.  How you continually test your code, trying to account for every possible outcome, and include contingencies for any and all failures.


Former MBA students:  this is you.

There’s a reason why people are called “Software Engineers” and not “Software Artists”.

Read More

If you come across a scientific analysis of programming or how programmers work, take the time to read it.  Because current findings are that programmers are not just Engineers, but they’re also artists, despite what I said three sentences ago.

Programming requires the massive analytical processes of an Engineer, but it also requires a high level of finesse, creativity, and “out of the box” thinking typically associated with artists.

This means you need both sides of your brain when you are writing your Pizza Hut Ordering System hack.


This is what happens when you only code for the money.

My Point

So here’s my point:  these kids may go to school thinking they can just graduate with a Computer Science degree, be programmers, and make lots of money in a secure job.  They may even accomplish that.

But they’ll never be true programmers.  They’ll probably hate their jobs.  And they’ll definitely never do anything great or revolutionary.

True programmers, the ones that change the world, do it not for the money, even though it’s nice to have.  They do it because they love it.  These are the people who have full-time jobs and multiple side projects, always hoping one day to run their own company or get a research grant to do what they want, on their own time.

Some of the best programmers of today and of yore don’t even have degrees.

How is having a degree, when you’re the wrong type of person, going to make things better?

Introducing Java

If this were a carnival, this post would be titled “Introducing Java, The Programming Wunderkind That Everyone Loves After They Actually Try It And Stop Being A Hater”.

Which is entirely too long, I think.

Anyways, I’m proclaiming to the world that I have been experiementing with Java (corporate site | Wikipedia), and have found it highly useful.  So useful, in fact, that I’m going to use it to write the backbone/most-of-the-real-code for the JanePrime project… instead of the planned C/C++.


Yes.  This is me giving in.

Why?  My main problem, which is also a “benefit” ironically enough, with C/C++ is the disjointed nature of the library structure.  A few libraries are naturally included, but it’s a huge hassle if you want to do anything past string maniuplation… but this is also part of the “control” that I love about C/C++.

But.  The biggest reason I’m doing this in Java is: NetBeans IDE 6.1 (corporate site | Wikipedia).

It’s like a Visual Studio environment for Java.  Except that you know your program isn’t going to be Windows-only, and randomly decide not to work if they’re not using the correct version of Windows.  Project and code management becomes very easy.

The long and short is that I don’t have to poke around in an advanced text editor and juggle a terminal.  NetBeans handles it all, in addition to letting me know in-flow if I reference a “method” (function), class, etc. that doesn’t exist.


Awesomeness in a can.  Er, uh, in a software package.

Now if only I could find one of these for PHP, then I’d have the programming environments triple threat…

Visual Studio + NetBeans + ??? = Profit!

Cool Javascript Trick

I found this on a certain unnamed Gov. Palin hating (or loving, depending on your view), “hackers on steroids” website…

  1. Open any site with images.
  2. Replace the URL with:  javascript:R= 0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI= document.images ; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position=’absolute’; DIS.left=Math. sin(R*x1+ i*x2+x3)* x4+x5; DIS.top=Math. cos(R*y1+ i*y2+y3)* y4+y5}R++ }setInterval(’A()’,5); void(0)
  3. Press Enter
  4. ???
  5. Profit!

Works, as far as I can tell, in FF and IE.

Joining the Air Force

I haven’t made many “real” posts here recently, because I’ve been busy deciding what the hell I’m doing with my life.  And I have the results:

I’m enlisting with the Air Force.

This may sound drastic, and completely random, but if you’re truly interested in the “Why?  When?  How?” then read the rest of this post… it’s long, but full of lots of data- no rambling or ranting.

Why?

As most of you know, I decided to not finish school at the end of May, and went job hunting for a full-time software position here in Silicon Valley.  I spent a large portion of two months on the phone talking to both recruiters who I neither understood nor cared to deal with, and actual real people.

Some of those phone conversations turned into phone screens.  Some of those turned into in-person interviews.  But there was a major problem.

The end result of every interview fell into one of two categories:

  1. They brought me in under one set of requirements, and decided to grill me on a completely different set.  For example, if my job description is to work primarily with PHP, how are esoteric data structures in C relevant?  These situations obviously ended horribly because they were looking for “God”… or because the economy is so bad that they want someone with Senior-level experience, in a Junior-level position.  Take your pick.
  2. The interview went fine, or even fantastically, and then I got a random made-up response as to why I wasn’t going to fit.  “We’re looking for someone more senior” is one I heard alot (even for Junior-level positions where I was overqualified), and I even heard “you’re not enough of a gamer” once.

Predictably, after three or four months of this circus act, I became very angry and jaded with the whole “scene”.

The clock was running down on my window to find a job, since as soon as the insurance company realized I wasn’t a student anymore, that would get pulled.  So, not being able to find a job, I went back to school, only being two classes short of an A.S. in Computer Information Systems, which I’m finishing up now.

But, thinking forward, I realized there was a problem.  Four, or even nine, months from now, the job situation wasn’t going to change.  An Associates of Science degree wasn’t going to make any difference in how people saw my age, and the economy is only going to get worse.  The end result is that after I’d have my degree, I still wouldn’t be able to find a job.

I then realized the military would be a good way to circumvent the whole corporate world.  Before going to college, I had considered Air Force ROTC, but hadn’t committed, since they wouldn’t pay for full tuition.  So I once again contacted them.

As it turns out, I can be guaranteed a position as a programmer in the Air Force if I pass a test of theirs, after which I’ll be sent to a highly specialized AF Tech School for 1-2 years, with the minimum tour of duty being 4 years.  I’ve talked with the same AF recruiter a number of times, and did some digging into the military lifestyle through people I know either in ROTC, ex-military, or currently in a military academy.

And as of the last few days, I’ve decided to pursue that course of action.

My college experience will put me at the rank of E-3, or “Airman, First Class” (see table), which mostly just means a difference in how much money I earn.  All of which is “expendable” (aka “used to pay back loan debt”), since I will have essentially no bills… food, clothing, and housing are all taken care of.

When?

Basically, the timeline for the next few years is going to look like this:

  • “Graduate” with an A.S. in CIS late May 2009
  • Deploy to AF Boot Camp in July 2009
  • 1-2 years of AF Tech School
  • Remaining years working on some very cool military-grade technology
  • Decide to re-enlist? / Officer Candidate School?

It’s pretty cut and dry.  But one of the things most people don’t realize is that I’ll have 30 days of paid vacation every year… compared to 2 weeks of unpaid vacation in the corporate world.  So I won’t be disappearing like most people imagine.

How?

Essentially, I’ll be leaving California.  Some of the things I’ve acquired will be put into local (San Jose) storage, some will be sold, and others will go back East with me.  I’ll be closing up shop in my apartment, and dividing things into “eventually need/want on base” and “goes home for when I’m on leave” categories.

After Boot Camp and school, I may end up at a base here in California, or maybe elsewhere.  But in the long run, after I leave the military (whenever that is), I’ll most likely be back in the San Jose area… hence the storage.

Other than that, I’ll have to make a few other changes in my life… cut my hair, remove the piercings, and live a little differently, but it’ll be worth it.

End Game

The “endgame” to all of this is that I get to have exposure to some very interesting technology, and doing things that actually matter, as opposed to grinding away for a few years in the corporate world trying to move up the ladder enough to not hate my everyday existence.

Whether I become a civilian after four years or twenty, there’s one thing I know for sure…

People will never question my talents again.

Thought of the Day- Job Hunting

Job hunting at the age of 20 is apparently difficult.  Alot of the places I’ve talked to won’t ever officially say it, obviously, but I’m dealing with “age discrimination”.

Everyone wants the young, hot, and cocky programmers… but apparently 20 is too young.  Why does 21 sound older, especially when it’s only 3 months away?

Bah.

Thought of the Day- Programmers

There’s programmers, and then there’s programmers.

The former being those who do it for money, and the latter being those who do it out of love, enjoyment, and a natural inclination.

It’s usually pretty obvious as to who’s who.

ClassicallyAwesome, Postponed

Over the last 2.5 weeks, I’ve been experimenting with producing an online comic (you’ve probably already noticed).  I’ve really enjoyed an outlet for my weird sense of humor, and have gotten mixed responses, as well as some pretty big traffic spikes.

But I’ve kind of put myself into a corner for the moment, where many different things are converging.  I can’t really disclose full details at the moment, but it’s safe to say that I’m not going to be back at the webcomic game until at least mid-May, and at the latest, early June.

This has nothing to do with any of the number of violently verbal attacks on my insanity, and in fact those are much more appreciated than the positive feedback… it makes me laugh, knowing that I bothered someone with my “creativity”.  Like I’ve said, this has everything to do with the end of my last semester at school (by choice, not by graduation), the looming deadline for a real-world life, Intuitive Industries, OneSwirl, and a small handful of other things.

I’ll keep blogging at random, and may even spit some code out on here tomorrow… but no comics for awhile.

Some Updates

  • You may or may not have noticed (I don’t know who “you” are) that OneSwirl has been down recently.  This was thanks to a botched server install, and a failure to fix their own problems, by MediaTemple.  But we’re back up and running… for the official letter, see the official message.
  • I’ll no longer be posting links here, unless I really think they’re worth noticing.  Most of the stuff I see comes in through RSS feeds, which are now monitored by OneSwirl, so when I “star” them inside Google Reader, they’ll show up on my public page.  Keep an eye on the “Links” and “News” sections.
  • We (Intuitive Industries LLC / OneSwirl) are looking for someone to do some work in C/C++.  If you’re interested, let me know.

Quote from a Book

This is from “After the Gold Rush” by Steve McConnell:

Project managers both love and fear “hero programmers” because these programmers are smart, temperamental, and sometimes a little self-righteous…

Never have I heard something that described me so perfectly, and it was written 10 years ago…

XMPP/Jabber As a Language

Recently there’s been alot of talk about the XMPP/Jabber Protocol as being used instead of other languages or methods to do… well, alot more than handling Instant Messages.

What (Is It)?

For the uninitiated, XMPP/Jabber is an open source instant messaging platform, with software on both the server and client ends. It, until lately, has been used as a free and open alternative to popular services like AIM, Yahoo! Messenger, etc. The protocol got alot of attention when Google rolled out their Google Talk platform, which is built using the XMPP/Jabber Protocol, making it very easy for “advanced” users on multi-user clients to user it, without needing to install “yet another” program.

Who (Uses It… Besides Google)?

TiVO apparently uses XMPP to send update notification to their users’ boxes, telling them when they have new software or listings that need to be downloaded. AOL claims they’re transitioning from their proprietary formats to XMPP, to be rolled out at some point in the future. Some new startups use it as an easy IM method, instead of building a custom one, or on top of a complicated method.

XMPP Logo

Why (Do We Care)?

The Internet, and pretty much all software, runs pieces of code periodically (could be on a daily, hourly, or even minute basis) to check for updates. For example, Desktop Email clients go out on a specified interval and check the server for email, and on non-AJAX websites you have to hit “refresh” if you want to see new data.

Now, imagine if this was all changed. Instead of waiting for your email to show up in your Inbox, what if it automatically knew when it had to update? And didn’t even check for hours, as long as you don’t have any new email? This might not seem like a big deal to the average user, but from a computing standpoint, it’s major. The resources (memory, processing cycles, etc.) saved by only accessing data when needed could cut operating costs of services and companies by large portions… especially when you’re consuming large amounts of bandwidth for a data transfer that may be meaningless.

But (Alot of Websites Use AJAX, So It Doesn’t Matter…)?

True, but AJAX is not the most developer friendly. Or resource friendly. Even if you have a site that auto-updates itself, chances are high that it does it the old fashioned way: queries a database, returns results, maybe doesn’t print anything. This is done, typically, using four languages: JS/AJAX, database (MySQL, Oracle, etc.), processing (PHP, Ruby, etc.), and rendering (HTML). Remove the AJAX layer, and suddenly websites run infinitely faster, especially on older computer.

Speaking from experience, you usually have to do weird workarounds to get AJAX to do exactly what you want. Call an AJAX function, call a script, query the database, print/return data, pass the data, and render it. This is a huge pain, and you hear about it all the time.

When (Will It Be Popular)?

Maybe never, but I’m going to start using it as soon as I can. I’m currently hosted on (mediaTemple)’s (gridserver) plan, and they don’t support it, but I’ve asked for it and it’s apparently being “prioritized” [if you use them too, ask for it… maybe they’ll do it faster]. The ability to create programs and scripts that automatically update and talk to each other, without complicated CRON Jobs, is something I’m looking forward to.

Alot.

Next >>