It’s hard to say when it was that I left UW-Superior. I guess it was probably some time early in my last semester. If you don’t believe me, you can look at my transcript. Like most seniors, chomping at the proverbial, graduation bit, my interest had been gone for a while before the actual graduation ceremony. Whether it was true or not, I felt like I had taken the most from my undergraduate teaching and needed to seek out something more.

I have always been a very dedicated student, but over a series of poor decisions by myself and faculty, I became largely disinfranchised with the idea of finishing my last semester. While I still remain personally attached to some of the faculty and staff, there was a lot that I needed to get away from in order to be happy with my future.

A large portion of what I left in Superior revolved around a very long and very painful relationship. It was one that I tried to solidify and ground but, instead and much too late, wound up destroying there. Most of the relatively small city carried some bad memories and it was time for me to move up and move on.

One professor, call him V (purely random letter), actually recommended the program in Tulsa to me in late November. He talked about the reputation that our school had with the advisor and how my performance as an undergrad would make me a possible competitor for a slot. Probably the most interesting thing about this suggestion professor was that he and I had a rather complicated past. During several occasions, in courses, the students ran into “issues” with the way things were proceeding. At the time, we got in to some very tense situations, but I realize that he was fantastically professional and understanding through each situation. Any lack of respect that I may or may not have had in the man has vanished over the years, and I can now say that he was one of the best people I’ve been able to work under as a student.

After a whirlwind, and somewhat last-minute, romance with the graduate program, I was accepted and I began preparing to leave. Friends and family were fairly pleased with my decision to start my graduate degree in Tulsa. But that is not to say they were pushing me out of the door with a stick, they were civil despite the opportunity to be rid of me. Some of my closer friends that I wound up with at the end of my college career were friends that I had made years before in high school and with whom I had renewed relationships. They had it worst of all as I’ve learned that my charm is much like an exploding star: certainly striking but you better not pay to close attention or you’ll blind yourself and gain lasting, nagging burns whose intensity depends on the exposure to the radiation. Despite all this,  I confess that I will miss their support and friendly faces in the coming years (though we’ve continued phone conversations already).

We did much to part ways, and the move out process was slow and awkward. Still, by seeing them frequently and still knowing my exodus was emminent allowed us to sort of ease into the prospect of being apart. I am glad to say that it was not painful to leave, and it has not and will not be painful to be apart. To be honest…I think that without the leave, there would be a lot of fishbowl inertia keeping us all in place. It’s not exactly poetic, but it is nice to think that perhaps splitting up will give each of us enough fin room to make escape velocity and jump into the open air. Now it only remains to see if each of us will be able to survive out of the water.

Good thing this garbage is purely metaphor, and an obnoxiously contrived one at that. I like my neck without gills, and my life to be more than a monochromatic, two-dimensional etching of a three-year-old. On that note, I’ll wish myself luck and luck to my friends (Godspeed, SHRELM).  In the words of a tragically misunderstood dogsledder but wonderful librarian, “Love you, miss you, bye.”

Posted on August 31st, 2008 | Filed under personal | 2 Comments »

Yes, the lyrics to this delightful song by Santana (featuring the always forgettable Rob Thomas) share a truly fascinating phenomenon. It is the belief or need for reason merely because of the existance of one’s true love…or, in my case, a Cryptanalysis course.

While studying common methods for cryptography, there was quite a debate when discussing how humans crack the Caeser Cipher. Everyone seemed to have a strong opinion on whether the method was induction or deduction that humans would use to experiment with various 2- and 3-letter word possibilities, as you do in my mother’s personal vice: the cryptogram.

As I pointed out, to much derisive laughter, it’s neither. The correct form of reasoning to use here is abduction. This kind of methodology is not as pure as its bother and sister, deduction and induction, as it can lead to incorrect results. However, this sort of reasoning is arguably the most visible in our modern society. In particular, mysteries and detective-work almost always begin with a great deal of abductive reasoning. A trick to remembering these is to walk through a scenario. Here’s one that I made up:

Sherlock Holmes went to his friends house for tea and found his friend laying in the entrance with a gash on his head and a bloody candlestick next to him; he was dead. Using abductive logic, he could guess that he was struck and killed by the candlestick. It is possible that he died some other way, and that may not even be his blood on the candlestick, but it is fairly reasonable to make that step. Based on this, he could could also use inductive reasoning to estimate that a human struck him (a fairly strong induction as Sherlock remembers only 1 in 200 beating victims that he’s seen attacked by an animal).

Sherlock then remembers that his friend’s will stated that ‘if I die, my butler will take over and own my estate’. Since the man is dead, the butler must own the estate. This fine bit of deductive reasoning tells Sherlock It’s probably a good idea for him to go talk to the butler.

Posted on August 27th, 2008 | Filed under Uncategorized, academia | 2 Comments »

The first piece of assigned reading in my graduate studies is a paper by Maconachy (et als) entitled “A Model for Information Assurance: An Integrated Approach”. It is the first of many I plan to be reading for the Enterprise Security Management class, which is a broadly scoped class dealing with security and policy from a managerial point of view. This latest sweep of courses follows the Information Assurance (IA) standard that is torching older concepts of computer and data security.

By and large, the paper is extremely simple (and quite short), but I’m not really aware of how influential this paper has been over the years. It was written in 2001, and I have been told that it’s the seminal piece of this entire movement…but that’s really hard for me to believe. Especially since the McCumber INFOSEC Model (the McCumber Cube) was published in 1991, and this paper basically just tosses that model into a “fourth dimension” and expands, a little ridiculously, the characteristics part of the model.

The contributions that I see to the model’s data characteristics are trivial distinctions in the terminology.  The new Information Assurance Model (a.k.a. McCumber Cube 2.0) merely splits the three Information Characteristics into five Security Services. Their main contention with the earlier work, I infer, was that the loose definition of data integrity was insufficient to outline what was really needed. Their addition of Authentication and Non-Repudiation may have merit, as Integrity of data is commonly used to measure immutability and structural continuity, but I don’t see it as necessary for those with a background in data integrity. I guess if everyone is reading something, it’s probably good that  CIO’s to hackers probably need to see the distinction between the data integrity itself and the integrity of the source and the retrieval process.

Regarding my statement on, and obnoxious quotation of, their “fourth dimension”, this paper added the additional, singularly organic concept of Time to this idea. Where most previous outlines have neglected this concept, I do see the point they make with the steady changes over time. My experience in this area isn’t immense so I don’t know if they’re singularly responsible for this idea, but the modeling of that idea is actually quite sound.

For me, this concept of adapting security over time is a lot like dropping a 12 gallon, cube-shaped water mass (in honor of McCumber) into an 8 gallon bucket with a hole in it. If you figure the water is about 6 feet up then there are a few reasons why a lot of the water isn’t going to make it into the bucket to begin with: it’s just not a perfect match. When it does hit the bucket there’s going to be a pretty large splash, and a lot of what was put in place will be thrown out right away. The last few phases are a sort of balancing until the surface water is still. Unfortunately, still water is the worst place to be and you’re never going to have a completely full bucket unless you’re measuring and adding slowly until you’ve balanced the flow of water coming in and the water draining out of that hole. This image is simplified, but it’s pretty apt.

It is important for me to point out that any negative perspective I have regarding this paper may not be for any other reason than because a perfect, albeit figurative, cube was converted into an elongated box which poses as a cube.  I’ve been known to commit worse acts of hostility, but I’m just all about cube-equality.

The biggest point that I share with people is that technology is the cutting edge, and the very tip of that edge is security. This is becoming validated on an ever increasing increment with the growth of cloud computing and high-availability, online systems. Not only do IA standards address this, but they also encourage the constant measurement and addition of water. Google, Amazon, and all the other big players need to have this technology and need to assess it with respect to time and progress. While this paper did bring out those concepts, I don’t know how much this was solidified beyond existing standards. But I’m not too worried about Google missing the boat on this.

The entire movement to IA is quite interesting to me, and I’m looking forward to getting more exposure in the coming months. Most of my closest colleagues know that I’m much more interested in policy than your normal CS-geek. Actually, I’m fully cognizant of the fact that policy makers hold all of the power and still get to see a lot of the fun. My ideal job would be working for a leading, technology-driven agency and pioneering/expanding policy while getting to sit in on disciplinary and review committees to observe impacts of changes being made. At least that’s what I see right now; this ESM class will probably make or break it for me.

Posted on August 26th, 2008 | Filed under academia, security | No Comments »

For those three of you who didn’t know, I’m not a Minnesotan any more. Or a Wisconsinite, I guess. No, my home is now in Tulsa, Oklahoma. It’s strange to say, but I almost feel like I’m already living that small dream. I’ve heard people say that “if you talk about something it long enough, it’s real”.

I don’t know how long it will be before I start to feel like this is where I’ve always been. It will probably be after I stop hearing about my accent, and maybe after I change my license plates. I hope it will come like the pentecostal flame, only giving me the strength to kill giant spiders instead of speaking in tongues.

There were a few steps to this journey, and I’ll probably document them for you in the next day or two. Without internet access or a working knowledge of Tulsa’s geography, I’ll probably be sitting inside a lot without much to do. It’s good, and I’m not trying to ‘fix that’.

But in summary: it’s now a week before my graduate courses start up in computer science, and three days before I find out just how small I am relative to the entering class of graduate students. These are major events, and major chapters that I’m now going to be exploring. I’m glad you’re reading this, and I hope you can find time to leave a comment or two on this blog series. I’d like to hear what other people are going through.

Posted on August 25th, 2008 | Filed under Uncategorized | 3 Comments »

One of the biggest, although non-normalizing, issues that I’ve struggled with is that of the natural versus surrogate keys. Now, I didn’t know what these were a few years ago so on the off chance that you are me in that time period, I’ll briefly explain. A natural key is a unique/primary key that is made up of strictly information that is logically connected with the entity you are storing in the row. The tried and true example is that of a social security number or a detailed title, basically anything that is part of the entity that makes it unique. What makes things hard is choosing the right data to make that storage easier, obviously the same FIRST_NAME occurs in more than one PERSON so you’ll have to use another or more rows (ex. FIRST_NAME, LAST_NAME, BIRTHDATE, BIRTH_PLACE). But it’s a lot easier to use a surrogate key, most often an autoincrementing integer, to just represent each row, because you know that will be distinct.

When instructed in my undergrad database lectures I was told, flat out, to never use surrogate keys. Fortunately, the man I learned this from can now be properly labeled as a “hack” when it came to practical computational theory. He would literally grab his shirt collar and adjust it uncomfortable while making strange, wounded-animal-like noises every time a programmer stuck an extra method call in a constructor or used a surrogate key. His goal was to make us flawless when it came to design practice, but he really just made us terrified that if we did something outside of his strict guidelines he would leap on us with his red pen. Or that the noises he was making was part of the summoning act to bring some giant bird to come and tear our typing fingers off.

Well, we learned to do a pretty good impression of him, and we also learned that what he was saying wasn’t exactly flawless, or even reasonable. The reality of the matter is that it’s OKAY TO USE INTEGER PRIMARY KEYS. First of all, it’s not the end of the world to de-naturalize a piece of data. Plus, not only is it okay, but there are significant benefits in speed and tool interoperability.

The only argument in existence against using a surrogate key is that you are essentially defining rows as being defined by a simple number that has nothing to do with the actual data. Sure, this is a loss, and it’s going to make comparisons between multiple tables a whole lot easier. But what about complex tables that aren’t easy to represent in one or two fields. I remember that same “E” professor made us, for a practical software course, store foreign key relationships to a table using 3 varchar fields. Since we had 2 mappings to said table, this meant 6 varchar fields defining the relationships instead of 2 integer fields that would have been much faster for our thousands of rows and much more readable.

Beyond that, do you know how to fix the entity integrity issue? Really, you can just add a unique key constraint on the same fields you would have used for the natural primary key. By using this method you essentially recreate the exact same restrictions on a faster indexed table for which it is much easier to define relationships.

CAVEAT: But it’s not right to say that a database designer, especially a green one, gets to use surrogate keys off the start. Why not? Because it’s not the best case. To be honest, I think this whole world would (www) be a little bit better off if we could make the initial model work. I will continue to use natural keys whenever it is convenient for the model, but the difference is that I will make a conscious decision about which one to pick.

Call me a glassy-eyed, idealist youth, but I honestly believe that you can test a good programmer not by what he knows but by how he evaluates his options. It’s a fine balance between diving off the board before checking for pool water and hourly, broad-field pH tests, but it’s the one that will make you a solid programmer/architect/designer.

Posted on August 1st, 2008 | Filed under databases, programming | No Comments »

My developer friend, Scott Sloan, has been working on his DB class for some time now and it’s quite a useful tool for doing queries simply. Part of the ongoing movement, between him and myself, is designing a rock-solid set of framework classes that will aid in rapid PHP development. Of course, his project has some stuff to show for it while mine are still awaiting a beta release. But I really do love this class and others from Scott, and I use them in Droplet and contribute as I find need to break them. :D

The most recent change to this DB class was the addition of exception based error handling, making database connections an entirely simpler creature to deal with. This class does a lot of abstraction, and up until now it’s been virtually impossible to debug it, or any db interactions, without stack traces. Unfortunately, every silver lining comes with a dark cloud.

This cloud, not dealing with Scott, happens to be PHP’s development traditions. Just like most functionality, exceptions are good, maybe even necessary, but the implementation of them was very poor from a security perspective. The fact that you can’t disable the printing of the stack trace from an uncaught exception is inexcusable at best. But I can guess how that conversation went:

-Should we have an option to disable stack printing (specifically of method parameter values) for select Exceptions?
-Why?
-Well, maybe they wouldn’t want the end user to see what was passed in a particular method?
-But you just catch the exception!
-But what if you don’t catch the exception? They see everything!
-Are you suggesting that we write code to protect programmers who are breaking rules? Plus, all production servers have warnings/errors disabled for output, unless their people are idiots.
-Oh….I suppose you’re right.

Here’s my beef: you need to plan on some mistakes. No offense, but haven’t you ever forgotten to catch an exception? Since this is a scripting language, you don’t have the parental compile time warnings or blocks, like Java, to say “Yo, you didn’t tell me to do anything when this code freaks, and believe me it can. Fix yo’ code, homes.” (I assume that a PHP compiler would use a similar compile error vernacular). The reality is that there are many production systems that don’t hide warnings/errors, and even if they did you wouldn’t want password information getting written to a log file whenever you fail to connect to a database.

The key here is a “who needs to know” system, just like I talked about in my blog entry about keys. There should never, ever, ever,ever,ever be a way for the language to “accidentally” print a system password to a user. Even if the developer is a complete idiot! If he passes a password or hash into a function,  he’s not going to think about what would happen if that function would error. He’ll fix that when it happens. It probably sounds like I’m defending the Cro-Magnon programmers of the world, but I’m not…..really.

An even worse PHP prospect is the ability to dump a class with private class values onto a page with one motion (i.e. var_dump). I know that these are all helpful tools in debugging, and that private variables were never meant to be a security constraint in this fashion, but the way they did it DOESN’T MAKE SENSE!! That function should not, I repeat ‘NOT’, be able to print private access variables unless there are appropriate accessor functions. That’s what object oriented design is all about.

I wouldn’t be so hard on PHP if it weren’t for the fact that these examples are the ones that give PHP a bad name. When someone’s data gets stolen on a PHP site it isn’t that PHP is a bad language, it’s that the programmer wasn’t thinking about that specific hole. But there are a lot of spots where developers can not know the rules, or forget a step and accidentally release loads of information to an eager hacker. As part of the group defining how the tool gets made, we need to be careful that the tool doesn’t have a cigar cutter that’s big enough for our “baby developers” to fit their arms in.

Anyways, code smarter not harder!

Posted on August 1st, 2008 | Filed under open source, programming, security | No Comments »

I love coding in text editors because I don’t have to think about all the extra stuff. That’s not to say that I don’t love code completion and auto-generation tools, but it’s nice to sit down with just just you, a cup of hot apple cider, and ASCII. There’s no better tool for this than Notepad++, in my opinion.

It boast an expansive built in syntax-higlighting library and great tools for automating some of your frequented commands. But a major problem, aside from the inability to do multi-line regex stuff, is the way comments are set up. I found out that I love the fact that it shrinks them, but I hate that it uses a non-monospaced font. But you can fix it, and fast.

First open up your %APP_DATA%/Notepad++/stylers.xml file in Notepad++. The APP_DATA variable usually points to your ‘Documents and Settings/youruser/Application Data’ folder, but I could be wrong. Then do a find and replace to find “Comic Sans MS” and replace it with “”. That’s right, nothing.  Save and restart Notepad++ and you are ready to rock.

Thanks to Nathan for pointing this out to me. I’m fairly confident that he doesn’t even know I have a website. The only place I don’t talk about it, annoyingly, is at work. :D

Posted on July 24th, 2008 | Filed under software, tips | No Comments »

In a recent article on the blog I link to most, Jeff Atwood took the time to discuss database normalization and its rather blurry scale of reason. As usual, I found myself agreeing with Jeff and questioning a few of my own practices in database design. This is something I encourage all my peers to do, especially those who don’t spend much time contemplating the rules by which you program.

Now, when I say that I agree with the fact that normalization logic is blurred, that doesn’t mean that I abandon it. Quite the opposite, I’m actually kind of a fanatic about getting information nomalized, at least up to about 4NF….because beyond that I think it gets a little masonic, if you know what I mean. But I can also see the reasons that one has for denormalization.  Tools are the biggest one that I deal with because many applications from Oracle and reporting tools cannot deal with complex joins, intricate keys, or other common tricks. There are also speed issues that would get you to commit flattening and other acts of database treason.

The big deal here isn’t the fact that these practices are right or wrong (which they often are…clearly), but rather that there is a lack of openness on the topic in the CS curriculum and among the ‘elite programming circles’. When I got to my first serious development job I saw that people were designing tables with an apparent ignorance to the “Laws of the RDBMS”. It didn’t take me any time to throw my nose up and strut by like a upstart schoolgirl passing a pack of teenage smokers.

The reality is that young developers can’t come out of college thinking that they hold the keys to the ‘Normal Universe’ just because they took a database class or two.  No, you cut your teeth on your first 5 gut-wrenching projects, and at that point you earn the rights to sidestep a database design or two, but not before. It’s not black and white and it certainly has little to do with mathematics that you may have been taught. I’m not saying the math and theory isn’t important or even necessary to get to that point. I’m just saying that your decisions on who to marry comes less from the math knowledge that adding 1 and 1 returns 2, and more about the experience you gain in what works and what doesn’t after that first step.

Now that I’ve compared database design to marriage, theoretical mathematicians to freemasons, and myself to a snobby schoolgirl, it’s time to say that this isn’t the end of this. In fact it’s just the beginning. Hopefully I’ll have a few posts for you on breaking down the illusions that I’ve struggled with in the real world of database applications.

*Two things: 1) Normalcy, especially in the physical universe, doesn’t exist. 2)Just because compared DB laws to smoking and then some laws are breakable doesn’t mean you should go smoke. If you’re of age and you want to fine, but it’s a gross habit folks. Just like ignorance of design patterns. And you don’t want to be loke those freaks, do you?

Posted on July 22nd, 2008 | Filed under programming | 1 Comment »

Went out with friends tonight to see Wall-e (it’s faster to spell this way, please just roll with it :). By and large, HA, I found this movie to be delightful. Actually, adorable is probably the better term. The two girls 3 girls in our party were constantly “aww-ing” and I did my best to keep mine hidden behind my popcorn container. This was not an easy task, however, as I’m quite a sucker for heart-twanging romance and adorable characters.

One nice feature was the opening cartoon about a magician and his rabbit(I don’t speak Romanian, I assume it says ‘this is a legal showing of this feature, all proceeds go to Pixar’). The rabbit, a good challenger for the adorable characters in the main feature, was probably the most enjoyably cute animal creature I’ve seen since Yakky Doodle. His quest for gestational satisfaction leads him and his magician friend into a particularly clever battle that is both visually and creatively appealing. My only qualm was one or more groin injury jokes, something I’ve always considered in poor taste, but it was quickly over and the good far outweighed the bad. Very clever, and my congratulations are bestowed on the design team.

As for the main feature: very fun. It’s a wonderful romance story between two people who happen to be robots and happen to change the path of humanity. While the beginning was almost entirely given away by the trailer, it develops into a simple but enjoyable plot that would engage most movie-goers. The voice acting was great, proving once again that less really can be more, and I think we all agreed that the emotional connection that you get with the characters is the product of some amazing work at Pixar. I can’t remember the last time I felt so connected to a robot (no…that can’t be right).

The environmental message was obviously strong as the story moved on. While it became a little obvious at times I think it was very appropriate for younger kids without becoming too overpowering. When I came back I started reading some of the reviews with a particular interest in the ‘Christian family’ perspective. While I liked the positive sentiments (especially the fact that there were NO un-family-friendly moments AT ALL), I found that most complaints about this movie drift toward some kind of secret or lobbyist-driven environmental smackdown. But it appears that most, if not all, of these reviews come from clearly pre-viewing biased individuals.

I think this message of environmental responsibility was awe-inspiring for kids, who need to get motivated, and probably nothing more than a peanut m’n'm in the brain candy department for adults. I’m glad it’s out there and presented positively and I hope it does encourage someone to reduce waste, but I won’t hold my breath if that’s okay with you.  (Also, it’s cool to be green right now….however it’s not a mark of the secret ruling class. Please bring yourself back into reality and accept that ‘the man’ isn’t trying to control your brain to make you recycle against your will.)

Another point I have to make is about the morbidly obese population of people who all look the same: implausible but a reasonable caricature. It’s obvious that this was a shock portrayal and that by making a population full of fat people, you’d be setting yourself up for great jokes (like banana bombs from the top of a high tower in Worms). It is still unimpressive, just as in Idiocracy, how the portrayal of future generations falls flat in realism just to make a single, over-simplified point. Call me hard to please (’You’re hard to please!’), but I think that there could have been a little more depth to that plot-point to make it tastier for the thinking-man. I mean, the kids weren’t paying attention to that plot anyways, right?

I mean, do you seriously think that these people wouldn’t ever get bored sitting at their computer screens? At what point does Che Guevera (I know it’s a ridiculous point) grow up to be complacent in a hover chair? Does accidentally breaking the TRANSLUCENT video screens really cause a eureka moment in a fat person’s life. I don’t think so. Everything is cooler on television, if anything they’ll start complaining about how there aren’t enough cool explosions in real life.

Possibly the most interesting message, and one I believe was missed by some, was the significance of the corporation’s actions in the film. It’s another dark-side tarring view of corporate control, but it’s interesting to see what lengths they’ve gone to in the story line. While it, again, mirrors the advertisement-crazed, thought-blinding control of Brawndo, this movie actually shows the corporate head of BnL in a ‘presidential’ role. While it doesn’t really focus in too closely, it’s clearly a parody to some degree. This makes a significant note about the encroachment of corporate entities in areas of public sector power. Is it earth-shatterning? No, it’s Disney…just be cool, okay?

The main proof I have of it being Disney: the happy ending. So here’s my thinking, and I was alone in this, wouldn’t it have been better if he never remembered? What if she found the boot again and kept it with her as a reminder of how he cared enough about her to sacrifice everything. Yeah, heartwrenching, I know. But imagine the power of that moment. As I discussed (basically was taught) with an old friend, most other countries hate the happy endings that we American’s need in every story. Feel good, yes, but at the cost of realism and power? I know. It’s unrealistic to ask for, but I gues I’ll take the cute happy ending with me for now as I know it’ll still give me those warm fuzzies as i go to bed tonight.

Aside from that, the major plausibility flaws include: size issues between the initial spaceship landing and the larger spaceship, plant flourishing inside an closed refridgerator, artificial intelligence available through a malfunction or sheer will (see the end), gravity control on spaceship, buttons are predominant way of computers communicating in the future despite obvious inefficiency,  return of species on the planet like birds at the end. Other things are suspect, such as the force of a fire extinguisher (even in the future) being able to so drastically being able to create such a significant effect on a creature of Wall-e’s mass,  failure of Wall-e to melt on takeoff while on the outside of the spaceship, communication in space, and the ability of morbidly obese people to procreate easily. This is just more proof that I am a fun-hater, right?

Despite what appears, now, to be a callous review, I did really enjoy this. It’s probably the first of many movies that I’ve seen in theatres that I wouldn’t mind owning some day. Go see it, you’ll enjoy it. And leave a comment, fool. I want to hear how far off I was. I’m not saying I won’t ignore you, I’m just saying I wouldn’t mind hearing it. :D

Posted on July 12th, 2008 | Filed under entertainment | No Comments »

A new section of my personal website has just been opened and will hopefully see a lot of growth in the coming years: the Open Source Section. While I’ve been contributing for a while to a colleague’s open-source projects, this is my first time creating my own projects from the ground up.

I’ve described my reasons for opening this section on the home page and a few others, but it’s really important to hear. Actually, I’ve been really hesitant to make my code open source for a while now, but I realize that it’s not acceptable. After about a year of thinking about it and finding out what my problems were, I’ve decided that it’s in my best interest to break out and try it. That’s not to say that I didn’t have valid reasons to hold me back.

My first concern was credit. While I’m not terribly attached to my code, like other programmers I do feel the need to be at least partially recognized for the work I’ve put in to it. To be honest, it’s from a long line of experiences I’ve had where people have been unsupportive of hours of work or ideas that I’ve created. I’ve grown to hate the idea of someone devaluing or stealing my work. Unfortunately, this has lead me down the path to the Dark Side(see also) of proprietary ideas and opening myself to other opinions.

The fact of the matter is that I’ve benefited from other tools in my work but I’ve never credited the developers then. But there’s a reason why that’s okay. It’s not about the programmer(s)…it’s about the code. While every programmer wants to make a life out of this, it’s not appropriate to take every little action and demand credit for it. If I write something pretty nice, which isn’t quite likely, maybe someone will use it and tell a friend about it: “this is pretty nice“. If I need credit, I can my potential employer “I did this” or “I contributed to this”. But notice that the pride is in the finished product and you can enjoy your work on it…not on the casual afternoon of programming that you have the urge to brag about. I’ve been guilty of this a thousand times over.

The other issue is code quality. While I like to think of myself as a pretty solid programmer, I’m definitely not comfortable with showing my code off to the world. Actually, my first project, Droplet, saw a complete redesign the day before I put it online because I was worried about what my peers might think of my half-decent code. After reading Jeff Atwood’s post on programmers who fear outside eyes, I realized that I was part of my own problem and that this was a good way to break out of that.

In any case, I hope that you check out the open source website and try out Droplet. I really have enjoyed using the software and I hope you do the same. It’s not pretty, and it’s not a money-maker…but it’s a nice tool that you can share with everyone. Please share your comments and suggestions, and write a few lines of code yourself…I’m still waiting on my first user-submitted patch!

If Droplet isn’t your cup of tea, I have a few more on the way including a couple PHP classes and a fun few items in Java.

Posted on July 9th, 2008 | Filed under open source, programming | No Comments »