Monday, September 14, 2009

Habits, past jobs to present.

Something that has been a big part of each job I have had (excluding Ross and Taco Bell) was that I would always find something I could fix with software (well actually I could've fixed the Taco Bell stuff but they wouldn't let me) so I begin coding away on the problem.

At first just taking a small portion of each day working on it, then progresively ramping up the amount of development time I take at work, along with spending more time on the project at home. I've always chocked this up to me wanting to be a professional programmer, along with my drive to fix problems I see, especially problems that inconvinience me.

Each of these times people asked me why I would work on work related stuff at home when I wasn't getting paid for it and I would tell them it fun or it will make work easier, or in the case of working at Retail Imaging it was to get off the phones and into the IT department.

It gave me experience, made work easier, though I was working at home so there was no net lessening of work, in fact there was probably an increase. Be that as it may, it was a fun increase in work, it let me relax and gave me a sense of accomplishement.

Now I am programming for a living, I love it, I get to come in and work my way through problems and challenge myself. I have already begun fixing things and am getting that sense of accomplishment, along with the experience and with each thing work seems to get a bit easier.

But I am still doing my old habit. We have these data files at work (YAML) that are unweildly and not very fun to edit, add to, or create. There is no validation that the type of information put in for a value will actually go into the database until it blows up when trying to shove it all in there.

I decided I wanted to write a tool for this, now it isn't a bid deal for everyone else it seems, even the QA folks don't seem to care too much about this. For me though this is a big deal, so I spoke to my boss to see if he knew if there were any existing tools, and he gave me a detailed explaination about why not.

So I have now started development on a tool to do this task, that I am working on at home, and now I have no excusses, it is just fun for me and if my friends and family insist on questioning it and warning me I am going to burn out, I am just going to ignore them.

Programming is a passion for some of us, sure there is too much of a good thing, but that is why there are many programming languages, design models, domains, and environments to program in.

Saturday, September 12, 2009

Coding for fun vs 9-5 coders.

In an interview with founder of WordPress Matt Mullenweg he said "...I don't think like, dentists go home at night and like want to do more dentistry for fun, but engineers do! You know, it's what we love and what we're passionate about."

There are probably lots of posts on this topic out in the world... but I wanted to share my thoughts on it too.

This is a topic that comes up now and then, mostly among programmers who code outside of work (likely at a gathering of them) talking about current or past co-workers and/or peers at school. Some cite how these programmers burn out quickly and find another profession, others comment on how their quality tends to be lower...

Mostly it is talks of how people like me, who can go to a job where they program all day, then come home, and code more on personal projects, are superior and those who code during work hours only then go home and don't touch a line of code until 9am the next day should leave our industry.

I was thinking about this a lot at my last PDX Python meeting, a friend of mine Michael did a talk on packaging python scripts for distribution. If I recall correctly he had started into this subject because he needed to do packaging at work and was looking into the different tools. But in order to do this talk he had to gather his notes and spend considerable time outside of work researching this subject.

The research will likely be really useful for him at work, but the fact that after his shift was over, he was still concerned something work related and wanted to pursue it further is something you see in some fields but not many.

Does this want to pursue knowledge that is work related, while we are in the comfort of our homes, a sanctuary that most use to forget about or at least, not think about work, and/or the lack of this pursuit by our 9-5 peers make us the only ones suitable for the job and them not acceptable at all? I don't think so, those of us that seek more knowledge while away from the work place may be better programmers, but that doesn't mean those who don't are horrible programmers.

What people do outside of work is their business, the people who are 9-5 programmers are just as entitled to not spending their evenings coding as those of us who code for fun are entitled to working on our projects. We will likely stay in the business longer but switch jobs more often because for a lot of us, it is the pursuit of knowledge and problem solving that drives us, whereas our 9-5 counterparts tend to stay at the same company longer and they will end up mentoring the new hires since they will have the most experience with the code base.

It is really a symbiotic relationship, even thouh most of my kind have less than kind things to say about the 9-5ers keep in mind the times these guys have helped you out in the office.

Interviews, and my dream to be an entrepreneur

Lately I've taken to listening to lots of those podcasts, interviews, and tech talks. It started when I started watching/listening to Google talks more often. I linked one in my earlier posts about CSP and since have watched a whole slew of them.

My latest ones I've been listening to is Mixergy interviews. The ones I care about and listen to are about folks that start a business from open source software, and/or how popular websites have come into existence.

Lots of my ideas and projects fall by the wayside but these interviews have had me thinking about if any of those projects would be viable to start a business from. I think to be able to make money from a project that you really enjoy and get to work on it all day is great.

The biggest problem with trying to make money from these things is multifaceted. I love open source and writing code I can't share sucks but it is what sustains me right now so I can't knock it too much. But any code that I would be passionate enough to want to turn into a business I would have to either dual license (free for personal, pay for commercial) which in a lot of cases wouldn't work (little to no commercial interest) or need a pay for service portion (which could also be free personal/pay commercial)

The dual license option is moderately common but lots of my projects and libraries I create are for my own enjoyment and I can't see folks paying to include code in their commercial product, nor can I see many ways to do things as a service while maintaining a full open source product other than maybe commercial tech support like some Linux distros use, again that would require lots of commercial interests to be viable though.

The other options I have is that I could write closed source code for companies using my open source libraries. That way I could build a framework, set of libraries, and/or tools to manage and write the end application (be it web or otherwise). This way a good portion of the reusable stuff is open source and available to the community but I could still make money by writing software using it.

I can do that with my current job to an extent, if I want a tool I can code it up at home, make a release of it, and then use it at work and see if the boss is cool with me spending company time on any other changes/bug fixes it needs. Should it prove useful enough I could see him easily approving that.

In closing, I hope to someday have my own business, maybe I will focus on that a bit in college, but for now, I am pretty happy with being able to code all day for money, even if the majority of the code is not open source.

Monday, August 10, 2009

Tech support (NL2)

I spent a good portion of the morning working on my little brother's computer. It was an unpleasent experience to say the least.

This all started when he wanted to start playing World of Warcraft again. It was locking up really often so I told him to upgrade his video card drivers. So he went back to his room, and came back a little bit later and said he couldn't even get on the internet anymore. My first question was of course: What did you do to it? You see, us techies while even we think computers use dark magicks to operate, we know that most of the time when something breaks, it is the user's fault.

He informed me he tried to upgrade his video drivers but that failed, so he tried to upgrade his other drivers, including his network drivers. So I tell him to run to the store and get me a soda and I will fix his computer.

My initial reaction when I sat down:


First thing I see is IE6 up on the screen... quickly hunt for Firefox, Chrome, hell, I would have taken Opera at that point. So I go to windows update to grab IE8, since he likes his IE I figure I would leave it and just update that. No dice, it looked like when he upgraded network drivers it crapped out and didn't fully install them. So I check his windows version and again I am horrified. Windows XP SP1. Last time I checked it was 2009, not 2002. But ok I go to my room, hug my computer and grab SP2 and 3 and burn them to CD to install on his system.

I go back to his room, install SP2, only a little trouble, ended up removing most of his drivers and XP let it install. Then I attempt to get his network card back online, installing the newer drivers he downloaded. This is the first thing that works first try on his system. Now I have internet and a moderately updated system, I am starting to feel better about this. I go online to windows update, grab IE8 and start installing it.

Once again I get fun errors, it is having a hard time reading or removing a file (go go ambiguous error messages) so I wipe out all his temprary internet files, cookies, still no go. Remove his bookmarks and it works! Ok, now I have IE8, SP2, working internet. I install SP3 and it goes on without a hitch, ask him what video card he has so I can get the proper drivers... I get ATI' from him. I ask what model? 'Um, ATI?' is his response. So now I get to pull the side of his case off to see what video card he has.



I don't think it has ever been cleaned or blown out... I go out to the garage and turn on the compressor, blow out his computer get the model number and install it all.

That was pretty much it, couple other drivers got installed no problem. In the end there is a lesson for both types of friends, the ones who give tech support and those who recieve it. For those that give tech support, check up on you friend's and family's computers now and then, do the regular maintence or teach them whichever is easier. For those that recieve tech support, when you hurt your computer, you hurt your local techies, please, please, please keep things up to date and clean. If done incrementally over time, these updates do not cause these kind of problems, it is when you try and do ALL of them at once.

Tuesday, July 21, 2009

Exciting Introduction to Newsqueak, for me at least. (NL10)

Sykopomp and I have been speaking on concurrency a lot lately.

I've used concurrency in several applications, the largest of which was a bot for EQ that used an Actor based concurrency system. Other that have used concurrency haven't used any of the larger patterns, and honestly were just off the cuff and likely would not have worked well at all when scaled up.

Sykopomp pointed out Communicating Sequential Processes. I read about it and it seemed like a really good idea, but implementing it was still a bit beyond what I could imagine. He then clued me in on a Google Talk done by Rob Pike, Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak.

After watching this, I am really excited for this style of concurrency. I am looking to use it with Python but I have yet to find a library that implements it. I have considered using newsqueak directly but the problem there is the small community and even smaller amount of libraries available.

If I can not find such a library, I may take it upon myself to implement this, possibly as a wrapper on python. Sykopomp would just as soon I learned lisp and used the lib he found for lisp using this, but I am going to stick with my python for now.

EDIT: Found a library for pyhton: PyCSP. Going to install and play with it today, I am really excited. I'll report back my experience as soon as I have enough code written to decide on if I really like it or not

Monday, July 20, 2009

Read it later (NL2)

I tend to get a lot of links on IRC about various topics, often I'd like to read them but I don't have the time or the focus to do it just that moment. I've tried several methods of saving links to read them later, Emailing the pages to myself, adding it to reader with the tag 'look at later' and none has worked as effectively as I would have liked.

I stumbled upon the Read It Later Firefox extension and strongly considered it, but I use a mod on Firefox that makes it so that extension is pretty much useless, I'll go into why my Firefox looks like this another day. I'd recommend this extension if your UI isn't as minimal as mine.

But my search was not hopeless, I found that the site that did Read It Later, also did a set of bookmarklets which are great. You have to sign up to use them, since they send the URL to the site for your list, allowing you to generate a read it later list on the fly, then you can hit the read bookmarklet to mark it as read and remove it from the list. And there is of course a bookmarklet to bring you to your list.

This solution was nice enough as it was, but they also provide a RSS feed of your list, those of us who use feed readers continue on, those who don't, go here and start using them. They are great.

So I set it up in my feed reader so when I am going through my reader, I am reminded of my list, and can read them as needed, or I can jump straight to my list via the bookmarklet. This allows me to not think about the articles until I have time to read them (like when I am checking my reader)

This solution is great for me, hope y'all like it too.

Sunday, July 19, 2009

Nerd levels (Nerd Level 1)


16:00:09 Wraithan | I can't decide on how technical I want to go
16:00:23 [C]Niall | Meh. Wing it.
16:00:29 [C]Niall | Write crap if you want to write crap.
16:00:35 Wraithan | sometimes i feel like just diving in and fuck those who don't get it, other times I feel bad and want to make it so everyone an understand
16:00:46 [C]Niall | Do it all.
16:00:56 Wraithan | Maybe I should put a level as part of the name
16:00:56 Wraithan | haha
16:01:21 [C]Niall | Yeah.
16:01:23 [C]Niall | Good plan.


Alright, from now I plan on tagging each title with a nerd level. Sometimes I want to go in-depth on programming topics and well, most of my friends wont get it. Other times I am doing light hearted posts and/or explaining different technical things in ways I hope the majority can understand.

Not going to list all the levels, just going to put tiers.
Nerd Level 1: This will be stuff anyone can understand, or hopefully anyone can, ping me on IM/IRC/comments if something doesn't make sense in one of these, so I can improve my writing.

Nerd Level 5: This will be moderately technical stuff, such as computer parts and linux software and what not.

Nerd Level 10+: This will be more in-depth programming concepts, examinations into how hardware works, stuff like that.

Hopefully this will help, and allow me to explore whatever topics I want.