 Saturday, June 07, 2008
Well, Michael Eaton posted a blog question to everyone regarding how you got started in programming. My blog is up right now, so I thought I would answer the questions.
How old were you when you started programming?
That's kind of a tough question. I don't really remember a time in my life without a computer. Although I dabbled here and there with small alterations with source code, I would have to say that I started really understanding it in my pre-teens. I took a computer course in 8th grade and already had at least a rudimentary understanding of programming; I obviously had spent a lot of time, because I remember clocking around 60wpm with hunt-and-peck typing. I guess I don't really remember not having at least a rudimentary grasp of code. I do remember a lot of copying of code from magazines and books.
How did you get started in programming?
My father was a programmer when I was a kid, so computers were around me. I remember dialing in to his work on an old acoustic coupler modem and playing silly games. Somewhere along the line, I started learning about source listings and taking a look at how the games that I was playing were written.
Now, knowing that my entire memory is filled with at least a basic understanding of programming, there is a distinct point when I consider myself starting actual programming. I started calling up BBS's when I was probably 11-12, and I remember meeting a guy named Fred McClain (who I recently contacted again after all these years). Now, I had already written little things in BASIC, probably starting on the TRS-80, then moving to a PC, but Fred (and others on the bulletin boards) showed me C. My father was a fortran programmer, and I didn't really have a grasp of that. I guess I never really thought about what he actually did as a day job. For me, computers were a hobby and not something I even thought of as a career; hell, I wanted to be a theoretical cosmologist (yeah, even at around 13, I knew what I wanted to be). Fred recommended that I get the K&R and the TurboC Bible, plus, of course, TurboC. So, that's what I did. Holy Shit! It was like a whole new world. I couldn't get enough of it. I remember waking up on Saturday, turning on my hand-me-down Tandy 1000 (when my dad got his 286), then realizing that my mother was calling me down for dinner. I have a bit of strange memory for years, as I thought I got TurboC++ 1.0 (now with MDI support, sweetness!) in 1989, but wikipedia says it was released in 1991. Oh well, you never know (okay, maybe they do know, and I don't). In any case, I remember that all I wanted for christmas was TurboC++ 1.0, and, for sure, it was sitting under the tree (I wonder if it was TurboC that I got for christmas, which would explain the timing difference in my mind). In any case, I loved that app with all my heart. I still remember how wonderful it was to work with; keyboard support for everything, MDI support (editing multiple files at once, wowsers), etc.
Somewhere along being a teenager, I wrote a small calendaring application that I sold to my sister's work. It was a very simple application that allowed you to schedule events. When you turned on your computer, a small application in your autoexec.bat would check to see if there was anything scheduled for that day. If so, it would alert you. Super sweet! Yeah, it was a small database, and I had figured out a rudimentary indexing mechanism using two flat files. It was pretty cool to actually write something and sell it. I think I got $15, or something, which is a lot when you are young.
I also remember writing a fairly complex 'install program' for a game that my friend, Mike Denton, and I were giving to a friend. The kicker was that the 'install' would actually put some other stuff on his machine. The point was to stick a small application in his autoexec.bat that would pop up porn every few boots. The app was sensitive as to whether it was being run on boot, or not, so it spit something like 'microsoft time tracker' or something silly if it was being run from the command-line. The porn was spread out all over his machine, so it was going to be a bitch to track down and remove, if he ever figured out what was causing it. In the end, we didn't deploy it, but it sure was fun.
When I was 19, I moved to Berkeley, CA, for a 9-month stint in the Department of Energy's Science and Engineering Research Semester. I worked in the astronomy department in a team that was searching for supernovae to try to measure whether the universe was going to collapse or keep expanding. I had a solid grasp of programming by then, as I definitely did some programming for them. I remember writing a budget tracking application in Excel 4 using macros. I wrote a small interface in C++ that would integrate with a specific telescope motion controller and draw off the data into Excel to be analyzed (we needed to make sure that this specific motion controller could support the tolerances we needed for a 5-minute exposure). I also worked on interfacing with a clock that synchronized over the air with the national atomic clock. It didn't have any documentation, so I was left sending commands over the RS-232 and trying to figure out what came back. I figured out how to get the data back, but I don't think I ever actually got the time coming back. Somewhere along the lines there I built a null-modem and a rudimentary terminal program between a PC and a dummy terminal. The experience in Berkeley was amazing and life-changing for me, and I met some great people.
What was your first language?
Well, it was most assuredly some form of BASIC, probably GW-BASIC. My first language that I REALLY worked with was C on MS-DOS.
What was the first real program you wrote?
As outlined above, my first real program was a calendaring application. That was super cool and led to some great understandings. I also wrote an application for a citadel-based BBS that simulated a griffin-racing game, so you could win credits on City of Edgekeep (Scot Ranney's BBS).
Scot Ranney and I also learned C++ together by writing a port of the old Atari 2600 combat game.
My first major application was a language school management application that I wrote in Hungary for the school I was working at. I figured I could write it in Excel, since I had experience with the macros. This was in 1995, I believe, and Excel 5 had come out with VBA. Wow! I ended up writing the application in VBA. Unfortunately, I only had the help files to learn from, and, to top it all, they were in Hungarian. Needless to say, the application was ugly, but it worked. One side note is that I ended up writing a fairly robust relational database system in Excel, including referential integrity and cascading deletes. It was super sweet! Of course, I could have done it in Access, but I had never heard of it. :) I actually got paid for writing that application, so I was pretty excited. It wasn't a lot of money, but it definitely helped my living expenses there.
Based on my database system in Excel, I wrote a super cool little quiz application, as well. I originally used it as a way to practice Hungarian, putting in words and having the system ask me what they meant. I ended up selling this to a few of my students, as well. It had a few different quiz types that you could use, as well as allowing you to invert the language. It supported exporting lists into a file that another user could import into their own copy. This allowed students to share the burden of typing in the lists.
What languages have you used since you started programming?
In the beginning: C/C++, GW-Basic, MS-Dos batch
For various amounts of pay: Visual Basic for Applications, Visual Basic (4-6), C#, VB.Net, Java, VBScript, Javascript, Ruby, XSLT
For fun and learning (this means varying levels of actual writing code/familiarity): Lisp, F#, Python
What was your first professional programming gig?
Well, if by 'gig', I mean 'actual job' then it would be in 1996 at the Hungarian company, Elender. I worked as the web developer there from fall of 1996 to fall of 1997. I ended up running the web studio there, which was when I learned that I shouldn't be a manager: I am horrible at it. Would I be better now, based on my experience? Sure, I would. I don't want to, though, so I just keep telling everyone that I'm a horrible manager.
If you knew then what you know now, would you have started programming?
Absolutely! It is an amazing hobby and career.
If there is one thing you learned along the way that you would tell new developers, what would it be?
This has been repeated many times by people answering these questions, but I'll repeat it: Programming is a social activity. Do not let yourself get stuck in a heads-down, cube-farm job. Get involved in the community. Make connections, build your network. The best way to get ahead is to do with with support from other people.
My own contribution is that you are responsible for your own career. A company is responsible for your job, but you must actively take steps to further your own career. Don't complain that your company isn't sending you to that conference: pay for it yourself and go, even if you have to take time off. Read, write, talk, program!
What's the most fun you've ever had ... programming?
Wow! What a crazy thing to answer. I have had so many fantastic experiences programming, I don't know which to choose. Here's a couple examples:
- Writing code with Scot Ranney as a teenager. How awesome is was to program as a hobby; we would just sit down and start writing code. What do we want it to do? Let's write it. Doesn't work? Change it and try again.
- Working on the first version of FUnit with Mike Kerkel. I remember my first real experience with getting into the pair-programming groove: we worked for something like 8 hours straight together and just cranked out an amazing amount of code.
- Pairing at agile conferences. 2004 XP Universe: when I stumbled into the coding room and met David Chelimsky. Late night drunken programming at Agile 2007.
- Definitely neither last nor least, I am loving my job at within3. We are a small team of really passionate people working on something that could potentially save lives. Am I working my tail off? Yes. Am I having more fun than I've had in a long time? Absolutely!
 Monday, May 19, 2008
I have a post coming up to recap the Cleveland Day of Dot Net (CDoDN), but I wanted to make sure to blog about the beginning of 30 days of vegetarianism. For a while now, I've been having some thoughts about how eating meats fits with my life. I've been contemplating how the animals around us are related to me. Genetic evidence shows that we all have a common ancestor. What makes me that much different than them? Yes, I have self-awareness, which the animals we eat don't have, but that is just a fluke of evolution.
The higher-order animals that make up our diet, while not necessarily self-aware, most assuredly feel pain, have feelings, personalities. Now, these qualities may not be as strong in some animals as in us, but they still have them. So, if this is true, and I accept it, I feel a bit hypocritical supporting an industry that is notorious for cruelty. It isn't really that I feel bad eating them, it is more that I feel bad with the circumstances that lead to my dinner; I started feeling a bit hypocritical. This always bothers me.
The way I see it, I had two choices: stop eating meat or switch to a diet of verifiably humanely raised and slaughtered meat. Now, thinking about it, the second option just seems like a lot of hassle, not to mention very expensive. That certainly helped my decision. Of course, I hate plants, so eating vegetables seemed like a good option.
I've been fooling with this for a few months now, but, the timing was right at the CDoDN this weekend. I was lucky enough to sit next to Alan Stevens at dinner. He is a vegetarian, and we had a nice conversation about it. I don't remember exactly what was said, but, during the course of the conversation, I determined that I would try to be a vegetarian. Alan was very cool about his reasons, not really overbearing about it. That's super cool. So, coming back from the conference, I determined to see if I could do it. One of the things they say about making a habit is to try it for a certain amount of time. So, I decided to try it for 30 days. At this point, I certainly hope that the 30 days will be enough for it to become part of my day-to-day life, but we shall see.
The other thing they say is to make sure that the people around you know. Don't be obnxious, but just let people know. This will make it more likely that you will keep it up. So, consider this letting people know.
Everyone says that switching to a vegetable diet will help you lose weight, too. That's a definite plus.
 Wednesday, February 27, 2008
As I've mentioned earlier, I'm experimenting with two DSCM providers: Mercurial and Bazaar. I'm currently using Bazaar, but will be switching to Mercurial soon to try it out. Joe Fiorini, the Faithful Geek, and I were hanging out on Saturday, talking about it, and he had the idea of recording a conversation on my DSCM experience for his "Conversations in Technology" podcast. He plugged his microphone in, and we had a nice conversation. As conversations do, we meandered a bit, got on some tangents, but it was fairly focused. I haven't listened to it, yet, but I'll post any comments if I notice anything crazy.
 Sunday, February 10, 2008
Currently, I put a validation step in the coupon savings new user registration that forces a user to wait until I can verify their email before giving them an account. This is annoying, as a captcha should work okay (I hope). Dead Programmer's Society had an article on implementing captcha in rails backed by Recaptcha. Recaptcha is cool, as it uses words from digitized books that couldn't be understood by an OCR. So, as people use Recaptcha on my site, they will be helping digitize books. Look at it; it is pretty cool. Let's see how long it takes me to get it integrated. [Update: Well, it appears that following the instructions in the blog post worked, and I have captcha up in the new user registration. I haven't uploaded it to Heroku, yet, as I want to test a bit more on my local and make sure it really does work.]
 Thursday, February 07, 2008
Gary Bernhardt says that Bazaar is different Mercurial, because it stores more metadata about the tree rather than just the state of the tree. This keeps you locked in a certain version of the repository, keeping them from being able to add metadata. Mercurial just stores the state of the tree, so you get a better chance of keeping up with the versions. Interesting! I'll have to keep this in mind if Mercurial is as easy to use as Bazaar. [Update: Gary has put a comment on this entry that gives more detail about what he means. Well worth reading it.]
 Monday, February 04, 2008
Well, as I am writing stuff on my home computer, I need to step into the modern world and get into a DSCM. I put out an email to the rspec group to get people's opinions on what I should use. David Chelimsky likes mercurial and git, then bazaar came up. Git doesn't run on windows, so it is out. Mercurial and Bazaar are written in Python, so they'll run on my system. After reading this comparison of Mercurial and Bazaar (yeah, I know, it was written by the Bazaar people), I decided to give Bazaar a chance first. If I find anything interesting, I'll post. I'm going to give Bazaar two weeks of use, then Mercurial two weeks of use.
We are having the first coding dojo for the Cleveland Ruby User Group
 Sunday, February 03, 2008
Mary sent me this editorial from the new york times. UGH! Here's the first paragraph: At a New York or Los Angeles cocktail party, few would dare make a pejorative comment about Barack Obama’s race or Hillary Clinton’s sex. Yet it would be easy to get away with deriding Mike Huckabee’s religious faith. So, the first part of his argument is that Obama's race (what is it, really?) and Hillary Clinton's sex (can I say the same thing?) is exactly the same as Mike Huckabee's choice of invisible friend. Yeah, that makes sense. That's like saying that mocking goth kids is the exact same as making fun of children with down syndrome (note: I'm not condoning the active mocking of this girl more like mocking this girl). He then quickly switches to the standard argument of "look, everyone, we aren't burning people at the stake anymore. Evangelicals do some good." Here's a good quote: Scorning people for their faith is intrinsically repugnant, and in this case it also betrays a profound misunderstanding of how far evangelicals have moved over the last decade. Today, conservative Christian churches do superb work on poverty, AIDS, sex trafficking, climate change, prison abuses, malaria and genocide in Darfur. He starts off, of course, with making a statement as though it is a fact: "Scorning people for their faith is intrinsically repugnant..." Really? Why is this such a self-obvious fact? Explain to me why scorning people because they have a leftover from the invisible friends of childhood is "intrinsically repugnant." I love the line "...how far evangelicals have moved over the last decade." Oh, I'm sorry, I didn't realize they had much such strides in their humanitarianism OVER THE LAST DECADE! He goes on to explain how evangelicals have FINALLY started putting fighting poverty over abortion as their issue of choice. WOW! Thanks, christies! As he says, they used to be mean (Falwell describing AIDS as "God's judgement against promiscuity"), but now, oh man, they are so nice and interested in helping people now! He then goes on to talk about Rick Warren and how fantastic it is that he and his megachurch are finally getting around to helping people. I wonder what percentage of their profits are used in pure humanitarian aid and what percentage are used to further their own aims of poisoning the minds of our youth. Well, the rest of the column is just the same old attempts to give examples of how the christies are doing good and we should be thankful for it. We've heard these arguments before, and they follow the same pattern: give examples of how there are some nice christee organizations, not bothering to mention all the of the negative that is done, all the while ignoring the secular organization doing exactly the same task without the negative overhead of an invisible friend telling you that you have the truth over the person you are trying to help.
 Saturday, February 02, 2008
Well, as I mentioned in part I and part II, I'm building an application track my coupon savings, specifically Entertainment Book coupons, called Coupon Tracker. I've got a couple people signed up, but there is still lots of room for people to try it out. Just go on and go sign up. Today, I got a day to work on it, so I spent the day finishing up my specs for remove, as well as adding some specs for better user feedback if a coupon can't be saved for some reason. I also discovered the form.date_select helper, which creates a nice set of drop-down selections for choosing a date. Before this, the date field was a text box, which makes it way to easy to put in a date wrong. I also added a What's New page, along with some other stuff. I also got to play a bit with some unnecessary AJAX with script.aculo.us to make a title pulsate a bit. Here's the list from the what's new page of what I did today: 2008-02-02 - What's New (this page) added
- Added the ability to delete a coupon. Just click the x next to the coupon in the list
- Put some validation feedback on the coupon to give feedback on why the coupon wasn't saved
- Changed "Date Used" input to an easier input format (drop-down selections)
- Sorted coupons from newest to oldest
- Added header to show how many coupons for how many users we track
I'm learning a lot of rails as I go along, so I'm definitely making this well worth my while. I also recorded a screencast of using Coupon Tracker to see how easy it is right now.
© Copyright 2008 Corey Haines
Theme design by Bryan Bell
newtelligence dasBlog 2.0.7226.0  | Page rendered at Tuesday, December 02, 2008 7:47:35 AM (Eastern Standard Time, UTC-05:00)
Pick a theme:
|
On this page....
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 8 | 9 | 10 | 11 | 12 | 13 | 14 | | 15 | 16 | 17 | 18 | 19 | 20 | 21 | | 22 | 23 | 24 | 25 | 26 | 27 | 28 | | 29 | 30 | 1 | 2 | 3 | 4 | 5 |
Search
Navigation
Categories
Blogroll
Sign In
|