This guy is hilarious. Whoever the asshat is that constantly plugs his work on reddit is having the intended effect. It’s rare to find a guy that can be funny and not have a niche.
This guy is hilarious. Whoever the asshat is that constantly plugs his work on reddit is having the intended effect. It’s rare to find a guy that can be funny and not have a niche.
In the “polishing a turd” department, DBI 0.4.0 is out.
I suspect by the next release (0.6.0) it’ll be something I’m not embarassed to maintain anymore. This gives me a great feeling of accomplishment.
Here it comes! Break out your copies of the entire works of Descartes and Augustine and try to follow along, this post is going to be DEEP.
For some reason today I started thinking about commonalities in many places I’ve worked in the past, and the development methodologies they used.
One place used a modified waterfall. I won’t go into the modifications but I will say that it was a very strict, strongly followed process which sometimes impeded real progress instead of encouraging it. However it produced solid, beautiful code, at the breakneck pace of a turtle with three broken legs.
Another place used pure XP. I don’t know about you, but even if both participants are hygenically with the status quo, have cheerful dispositions and are intelligent and observant, pair programming for 8 hours a day sucks. It sucks rocks. However, the code was well-maintained, beautiful and undeniably brilliant.
Two places I have worked used what they called “Agile”. These places both had different definitions of the term, yet basically boiled down to one thing: do what you want and the project lead and management will sort it all out later. Being the project lead for one of these projects, I can safely say that it is not a fun position to be in. I prefer to call this methodology, “hedonism with a slight dash of procrastination”, as that was what it usually amounted to. One of these places has code that would make a newbie cringe. The other has code that’s easy on the eyes but would make a seasoned programmer cringe.
I’m of reasonably lax faith, I believe in god but I don’t find myself following any specific religion or tenets. My views would be loosely described as “Unitarian Universalist”, even though I do not attend a church of that faith. The upside of this is that I get to explore a little more in unbiased context, and view religions for what they are, which I believe to be a collective moral system that incorporates duty. No, there’s nothing wrong with that.
Congratulations. You can put the philosophy down now. How am I gonna make an oreo out of these topics? The backstory has reached an end, and I suppose at this point I have give you some reason to continue reading.
Programming methodologies are no different than blaming god for your problems.
Note that I specifically said “problems” and not “everything”. A rare subset of people actually attribute god to everything in their life with a full heart of truth. Most people will resoundingly rebuke the concept of some temporal effigy that lives in the heavens as the responsible factor for their successes. Everyone does it themselves and reserves no space for others, until they fail. Then this god guy (or girl, depending on your viewpoint) starts entering the picture.
You can see this every day in the software development world. It’s windows. It’s perl. It’s 32-bit vs. 64-bit. It’s that joe intern on the team used quick sort when he should have used insertion sort. No one blames their own lack of control or heaven forbid, shoddy programming for their problems. This only happens when a party that does not fear termination is kind enough to empirically prove otherwise to the point of getting the code changed, which pretty much means it’s limited to open source projects. Just to be clear, I’m blaming everyone, including myself.
Plenty of places blame this methodology or that methodology for the faults of many projects.
Pro tip: if you spent half the time you spend gardening that wiki thinking about your code and not the process that gets the code into the text file, you’d probably not need any of this information, and still be able to blow your hot air 50% of the time you did previously.
Jurisprudence has a long tradition of what’s called the Adversarial System. I ask you, why the hell aren’t we using this in the workplace? I’m not saying outside of work and then make a choice based on the options available, but actually in the workplace itself. No, no, no.. No matter how much you delude yourself into thinking it does, it doesn’t. Politics always influences decisions in the workplace, and I’ve yet to work in an environment (good or bad) that displays anything otherwise.
If one thing is true about software projects, it’s that every project, no matter if it does the exact same thing, even for the same organization, is different. And I’m not talking about “just” arguing either, I’m talking about real, formal arguments judged by a group of peers. If done properly this could be fluid and integrated into every aspect of the project, with the management (the “judges”, if you will) just sitting to the side to facilitate and intervene if necessary.
You may notice that both XP and Waterfall do this, but in different ways. “Agile” does not, and ultimately involves a process that is anything but democratic. And frankly, the rest of XP and Waterfall can go find a place to die in the history books, and hopefully “Agile” will never make it there, and this is why:
My experience has been that programmers are just like any other person, and when you give them an arbitrary reason to rebut something they don’t like, whatever the reason, they will. Development methodologies are just like god in that sense, that they give you an arbitrary, undeniable reason to eschew direct attachment to a personal objection instead of an empirical one. It is only the truly rational and penitent that understand that god and development methodologies are merely a facilitator, not an excuse.
Methodologies don’t build programs. Hell, in a lot of cases programmers don’t either. Code does, however, and someone has to build that. So stop building reasons to waste money and start building code. We can call this methodology “Agile**0″.
I wish I had recorded a demo.
One of my skeletons is that I have a gaming habit. This is limited to a few games, but my true guilty pleasure is Counter-Strike. I’ve been playing it for almost 10 years, and even spent a little time in the server rental industry doing system administration and writing deployment tools. Some of these made it to rubyforge, but they’re not that good.
Anyways, the sad thing about Counter-Strike is that all the guns, the terrorism theme and the general difficulty of the game lead to an over-population of 15-25 year olds (that all act 15) with something to prove.
In recent times I have just turned to turning off the voice chat altogether, because the 10% of the time where strategy, and not chest-beating is relayed over it is just not worth it. Add in the fact that some people who play too much get openly hostile whenever their pride is damaged, and it just doesn’t play well booming in my ears. This is less of a problem (the attitudes still exist, but they manifest themselves in different forms) in other games I play.
As the culture says, ‘voice_enable 0 ftw.’
There are good, adult servers (generally the cue is that they censor swearing and other hate speech) out there, but I find as I get older that the more I want to play these games, the more I get turned off by the community that surrounds it, and I blame little more than an age gap. I don’t want to imply that I feel superior, but find a recording of the chatter that goes on in these games; you will not disagree.
While I’m rambling at 2:30am unable to sleep it’s important to mention that I believe the problem is the competitive nature of these games. The results are realtime and therefore it gives instant gratification on the competition front (more like basketball, as opposed to a game like civ or more mundane pasttimes like chess). Anyways, my point is the very thing that draws me to it is the same thing that turns me off. Quite the dichotomy, but I never did get along with sports.
Add in the fact that there is a strong stigma, even in former gamers that certain computer games are “for kids” (really, it disturbs me enough to think that these games are played by children at all, but the fact that the stigma caters to them bothers me more.. these are not kids games.) and the assumption that all players must act like children makes it nearly impossible to find local people my age to enjoy this with, not unlike a monthly game of poker many of you may enjoy. Hell, at one place just mentioning I played online period generated quite the office buzz (but they were predisposed to that, they had nothing else to do).
Anyways, add this all in and I find myself constantly asking myself why I play at all, especially when you have to explain to someone online that your character that has a funny name and isn’t something like “death merchant” or “k00lk1dn1ggaz4l1f3″ isn’t a harry potter character.
Anyways, this rant has gone on too long. To sum it up:
1) I think video game culture is slowly slaughtering itself with the culture embedding itself in chest-beating contests
2) the result of #1 is that less intelligent people play
3) “Narcissus” is now a Harry Potter character.
Really. And I fuckin’ hate Harry Potter.
I’m very happy to tell everyone we are running on a new machine.
Things are significantly cleaned up and operations have been streamlined. We are now running the latest Arch Linux which has a packaging strategy that blows my mind, making it trivial to keep system maintenance simple.
The host is still provided by Linode, which is so flexible that I was able to install and configure this distribution on a local vmware host, upload it and boot to it within 20 minutes of the disks filling (which with my upload speeds took all day, but that’s not the point here). It was a pleasant experience and the support for the whole thing was awesome.
Now, I’m really looking forward to getting back to moving at a normal pace and getting some development done, particularly on Ruby/DBI. I also have a few other projects that I’ve promised people and can’t talk about (yet).
But for now, sweet, sweet sleep.
App::Open is an emulation of the OS X open tool, with an abstract MIME -> Application API that allows us to support many of these kinds of backends (e.g., including but not limited to OS X’s default programs database).
Currently, the package installs the openit tool for you and has mailcap and a generic YAML backend available, although KDE and GNOME support are in the works. Like OS X’s open, it can open both URLs and files. As far as the author knows, there’s nothing to stop it from being run on Windows as well, although this is untested.
App::Open is available at your favorite CPAN mirror, and obviously available via your cpan or cpanp tools. The author has no intent of distribution via specific operating system packages at this time. There is also a git repository at git://hollensbe.org/git/open.git, should you wish to check out the bleeding edge or patch things.
0.0.1 taught me a lot about releasing something on CPAN, but I believe 0.0.2 will actually pass tests on machines other than my own.
Try it out, patch it, send the patches to me, and allow me to veg more on the couch.
I’ve documented it and put it up on the code.hollensbe.org site if you’d like to browse the source/revision history.
If you’d like to install it, you need 3 packages from here. You will also need ruby, rubygems, rake and libxml-ruby, all of which are available from the rubyforge website or through the gem command if you have rubygems installed.
After that, run this:
$ mkdir tmp; cd tmp $ git clone git://hollensbe.org/git/bclient.git $ git clone git://hollensbe.org/git/libxml-tools.git $ git clone git://hollensbe.org/git/blogapi.git $ cd libxml-tools/libxml-xmlrpc; rake; sudo gem install pkg/libxml-tools*.gem $ cd ../../blogapi; rake package; sudo gem install pkg/blogapi*.gem $ cd ../bclient; rake; sudo gem install pkg/bclient*.gem
Note: even if you don’t follow these instructions, it’s really important that you don’t run the test suite for blogapi; mostly because it requires a lot of pre-configuration and the setup of about 5 weblog engines.
Tell me what you think in the comments! Don’t hold back.
bclient, a new project that I am working on, is a command-line utility to post to weblogs that implement an XML-RPC interface. It leverages the blogapi and libxml-xmlrpc libraries that I wrote some time back.
It has a variety of command-line switches and at this point is pretty close to getting the “hard parts” done, namely navigating old posts, posting new entries (like this one!) and posting edits.
The goal is to provide a tool that can be used with any editor; while I like ecto quite a bit, it’s nice to have the familiarity of vi, and I imagine I’m not the only person that feels this way.
bclient also has the nice side-effect of being able to export and migrate your whole blog to new software in a database-agnostic (and to a degree, software agnostic altogether) way, by dumping all your posts to XML with one client implementation and posting new entries with another client implementation.
Anyways, that’s my ramble for now, more on this as time allows.