Archive

Archive for the ‘software’ Category

Amazon EC2

December 5th, 2009 kirk No comments

I started my new job at Amazon three weeks ago, working on Elastic Compute Cloud.

In order to help learn the product I’ve just moved my blog (and a few other things) over to an EC2 instance. The instance is in the new US West region and is using the new Boot from EBS feature. I’ve also created a large EBS image for backing up files from my Macbook. Both of these EBS images can easily be backed up to S3 via the snapshot feature and, most importantly, it is very easy to restore from a snapshots to a new running instance (so many backup mechanisms handle restore poorly).

Long story short: the stuff I’m going to be working on is pretty neat.

Categories: programming, software, work Tags:

NaSoWriMo

November 14th, 2008 kirk No comments

I decided after the first day to not do NaNoWriMo. I didn’t have an idea that I cared about enough for a 50,000 word novel and I realized that I hadn’t worked on any of my writing skills over the past two years. Sure, I would have learned more about writing doing it a second time, but not as much as if/when I actually take a writing course and/or practice some of the finer points via short stories.

Instead, I decided to take something that I know well and see how it feels to apply the same principles to a project that I’ve never gotten around to finishing… or even starting. So I’m doing Na-Software-WriMo instead.

The project I’m working on for the next 30 days (I’m running a bit late due to the last minute change) is related to parsers and compilers. I won’t go into too much detail until I see that the idea is going to work.

Categories: nanowrimo, software, writing Tags:

MarsEdit

August 19th, 2007 kirk 1 comment

I’ve been using the latest Safari beta for all my browsing lately and it works great. The one thing that seems flakey is using it to post things to WordPress… so I’m trying out blog clients. MarsEdit seems nice and simple.

Categories: software Tags:

December Project

December 2nd, 2006 kirk 1 comment

I’ve decided on a software project for December. Lines of code should make a good replacement for NaNoWriMo’s word count, though I don’t know what a good LoC quota would be and I doubt I’ll stick to it as closely as the word count goals of last month. It is important to have that arbitrary measurement of progress, I think, in order to keep the perfectionist inside me from ruining everything.

In this post I mentioned an integrated software testbed, which doesn’t really mean anything. What I want to create is difficult to explain.

I recently remembered making school presentations with HyperCard in the 9th grade. Are there any software packages like HyperCard anymore? Keep it in mind, as that is kinda/sorta how I want this project to look.

A lesson I learned early in my programming career is that breaking almost everything up into a library is generally a good idea because it allows for reuse. In fact, I have this ideal in my mind about how all programs should consist of dozens of libraries and a simple main.c file that just pulls in everything and ties it together.

Unfortunately, it seems that breaking code up into libraries often doesn’t help. Libraries that involve socket I/O often try to handle all file descriptor event processing (via select/poll). Data structure libraries might require that the data objects contain a next pointer as the first element. Or a library might require the use of threads when using threads isn’t desired.

Another issue I have with software is how difficult it can be to get at external data. How often do programs ask the user for data that really shouldn’t be too difficult for the program to get directly? Or perhaps the program could probe the network or hard drive for some possible clues and present them to the user for choosing?

To be fair, Apple and a few other companies seem to write software that often presents user with intelligent choices. I think the situation could still be improved, though.

As a professional developer I know why it is rare – software is complex and the data might be difficult to access. Perhaps the data is on another machine or there is a library to parse the data, but it requires the use of threads or it is slow and blocks the rest of the program while running (see above).

An issue related to external resources is the program screen. I love the way it allows me to run many programs on a system, detach, go to a different computer, and reattach to that session with all my programs in the same state. What I’d like is for that to apply to all of my programs, not just my Irssi and Emacs sessions.

Finally, I want software to be more flexible. That may take some more thinking, though, before I can explain it.

So my project is to create a testbed application that can be attached/detached, allows for easy access to internal or external data, can easily be enhanced with an internal scripting language, allows for true reuse of code, and is very flexible (again, more on this later).

Yeah, that’s all. Piece of cake.

Fortunately, this will work well as a month long project where the goal is to just write lots of code. It will certainly require lots of code to get running and even more for the benefits to become apparent.


I’ve started using git for revision control with my non-work projects. Over the past 8 years at 3 jobs I’ve used SourceSafe, CVS, Perforce, and Subversion. Perforce is pretty good and SVN is not bad. So far I like Git best. It is the type of revision control system I’d expect from a kernel developer, which makes sense as Linus started it.

Categories: projects, software Tags: