May 2006 Archives

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is removing around a thousand lines of code while improving test coverage. Really? Really!

Steve Mallett

AddThis Social Bookmark Button

I reformatted my MacBook today after finding out the default installation took up a whopping 18Gigs of space.

That doesn’t sound too bad, if you’re a windows users and are watching Vista news, but to me that was just waaaayy too much HD space to give up. Consider: 80G harddrives aren’t really 80Gs. Mine was ~74 (-6). Then the install (-18), then if you load up a standard(?) 20Gs of music (-20)… thats 44Gs used up and you’re not doing anything new. Oh, and that’s less than half your drive if you got the black MacBook with the default 80G drive vs white with 60G.

Anyhoo, here’s the saga, but in short you want to do a reinstall from scratch when you get the machine and customize the install with a fine toothed comb.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is fixing the NodeBase tests.

Curtis Poe

AddThis Social Bookmark Button

LAMP technologies traditionally include Linux, Apache, MySQL, and, by happy coincidence, one of three “P” languages: PHP, Python or Perl. Of course, this is changing a bit. Many folks have long preferred PostgreSQL over MySQL because prior to MySQL 4.1 (or 5, depending upon your point of view), MySQL was pretty much a sophisticated toy, but LAPP probably doesn’t sound as cool. Others prefer Ruby to Python, PHP and Perl, but prior to Rails, many folks assumed that switching to Ruby wouldn’t be a good career move.

But the question that some folks wonder about is whether or not Perl6 will take its place along the “P” languages. The loudest objection I hear today are that Perl6 is taking too long and that it’s too complicated. Well, as anyone who’s programmed C++ can tell you, complexity is not a guaranteed barrier to language adoption. However, while Perl6 is very feature-rich, the common usage of the language is easier to learn than Perl5. As for “taking too long”, were I a betting man, I’d be willing to bet that we’ll have an alpha in 2007, and probably in the first half rather than the second. Given that I’ve been paying attention to Perl6’s development and I know some of the designers and implementors, I feel very comfortable with this prediction. But if Perl6 really is everything the designers hope it will be, why should we bother? Admittedly, I love Perl and its quirks, but I readily concede that those quirks are something of a liability. Not so with Perl6.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to unentangle the database code from the nodebase code. This is the biggest and most valuable refactoring yet.

Jeremy Jones

AddThis Social Bookmark Button

I just read that Google has released Picasa for Linux. Google has set up a main Picasa for Linux page and a download page. I installed the .deb from the download page on my Ubuntu Dapper laptop. I noticed that the only dependency in the .deb was on libc6 >=2.2. The download page states that WIne and the gecko engine are included in the download.

Here is a screenshot of Picasa running on my laptop:

picasa_full_screen.jpg

It’s hard to see from this screenshot, but the menu items in particular suffer from the standard Wine look and feel. Otherwise, it looks really good. The little bit of functionality I played around with seemed to work OK. I haven’t had a chance to plug in a camera or to index thousands of images yet. I find this an interesting port to Linux. It’s not something I’m particularly excited about since my wife is the one who manages the photos. I’m glad to see the effort, nonetheless.

Jeremy Jones

AddThis Social Bookmark Button

As I’ve mentioned here before, I’m a father of two children, aged 2 and 4. We, primarily my wife, have begun the process of homeschooling our oldest. She knows all of her letters and numbers, knows the sounds that most of the letters make, and is starting to phoenetically read simple words. I keep an eye out for educational things that I might be able to use to help teach the kids. In addition to the more traditional ABCs and 123s, my daughter is quite proficient with GCompris and ChildsPlay (as well as a number of Strawberry Shortcake-styled games). So, you can imagine that I was quite interested by this post on Ned Batchelder’s excellent blog. Ned referenced an entertaining post from David Bau’s site.

This post stirred my recollection of Guido van Robot (hereafter referred to as GvR), an education program written in Python and designed to teach programming. I installed it on my laptop from the Ubuntu repository and brought it up. It isn’t at all intuitive what to do with it once you bring it up, so I found an online tutorial. Here is an image of the main screen:

gvr_main.png

I’ll leave reading the tutorial to the reader, but the two main concepts in GvR seem to be your world and your actions. After going through the tutorial for a couple of minutes, I created a world that looks like this:

gvr_world.png

And after loading the world into the main GvR program, my world looks like this:

gvr_main_loaded_world.png

Next, I created a program to kind of traverse the new world:

gvr_program.png

Initially, I created a square set of walls and a program to walk the robot to a wall, turn right, walk until he came to another wall, turn right, and so on. I decided it would be interesting to create a “jut” in the walls and make GvR navigate around it properly. If you run my program, you’ll notice that he winds up going to a wall, turning right, then going back and forth across the top wall. If I wanted him to really navigate the “jut” properly, I’d have to modify the logic for what to do when he comes out of a jut.

I thought this was a really clever little application that can gently teach kids (and adults!) the basics of programming. The syntax is pythonish, but doesn’t have access to the full Python language. If there is a drawback, this is it. I understand the benefit of creating a stripped down language for educational purposes, so maybe this isn’t a drawback at all. Regardless, this is a nice little piece of work and if my daughter is as curious as David Bau’s son, I’ll be introducing GvR to my daughter within a couple of years.

Jeremy Jones

AddThis Social Bookmark Button

Here is the download page. This release fixes a number of bugs and gets it closer to CPython compatibility.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to figure out what to do next — and to plan for reshuffling the database code.

Curtis Poe

AddThis Social Bookmark Button

Imagine you’re programming an application and you run across the following (pseudocode) method:

  double foo (int num) {
      return someNum/num;
  }

Any programmer who’s been programming for more than, oh, 3 days, is going to ask “what happens when you pass a zero?” What’s remarkable about this is not just that the original programmer forgot to consider this case, but that many times the original programmer will have all sorts of fascinating arguments about why they deliberately ignored this case. Why is it that many serious programmers would be aghast at these arguments but somehow accept them when it comes to programming a database?

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to finish porting all of the node tests and to clean up the mess!

Dave Cross

AddThis Social Bookmark Button

Many years ago, london.pm were involved in a scandal that rocked the Perl community to its very core. In order to raise money for the first YAPC::Europe a member of the group proposed printing and selling a t-shirt with a slogan so controversial that it polarised the opinions of everyone who heard it. For days a flamewar the like of which I’ve never seen before raged across three mailing lists.

When the dust settled, wiser councils prevailed and far less controversial shirts were printed. But the original shirts were still produced in a strictly limited edition which was sold to people with close connections with the london.pm cabal. A few years later, one emerged at a YAPC::Europe auction and was sold for EUR250. Since then any trade in these shirts has been on the black market. See the london.pm FAQ for more details.

But it has just come to my attention that one is being sold on eBay. If you want to purchase a piece of Perl history and own what some people consider the most offensive Perl t-shirt ever produced, then now is your chance.

Personally, I’ll be watching the auction very closely to see if it’s worth selling my shirt :-)

Andy Oram

AddThis Social Bookmark Button

Both I and the heads of Jitterbit battled torrential rains and the maze of Cambridge streets to make it to an early morning
meeting. It was well worth it. From this young company I learned a new way consultants and businesses might be able to make a living from open source. Furthermore, I saw an interesting play on the Web 2.0 concept–not for the customary mash-ups between different organizations’ offerings, but to integrate different backends within a single enterprise.

Curtis Poe

AddThis Social Bookmark Button

A few years ago I was trying to explain to a Java programmer what closures were and after listening to me, he merely replied “I’d use an object for that”. After he started working with Python, he began to change his mind after encountering Python’s somewhat limited lamba expressions. Once you understand closures, they become an indispensable tool for making code smaller and more flexible, but trying to explain closures to someone is about as daunting as explaining objects to seasoned COBOL programmers.

The Sapir-Whorf hypothesis basically asserts that thought is constrained by language. Some have interpreted this to mean (incorrectly) that we cannot understand ideas that we do not have words for. However, it might be better stated that we have difficulty understanding ideas that we do not have words for. Programming languages support this hypothesis.

Steve Mallett

AddThis Social Bookmark Button

I’ve been exploring the social networking space lately and have come to one solid conclusion. They’re driven by fun. I belong to a number of social networks and despite a few having a purpose they don’t really have any activity there because they’re boring. Utility has its purpose, but zzzzzz. I don’t care if “Peter Pumpkineater wants to be your friend” if there’s nothing to do otherwise.

I know this is hardly a shocking revelation to most, but if it’s common knowledge than why are some networks still so ho-hum?

Anyhoo, I -just- setup a social networking site for alphas on Ning (it was perfectly suited). The fun element is to indulge in discussions across a lot of alpha topics (mac, apps, gadgets, games) in one place.

Naturally with the aplomb of mac news this week I set up groups for Mini, MacBook, MacBook Pro, & OSX apps. Feel free to start new group topics. I’d like to join them (Second Life?) when my MacBook arrives.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to port the remaining node tests as quickly as possible. Then it’s on to greater things!

Steve Mallett

AddThis Social Bookmark Button

Update: This data-’sharing’ scenario popped up over the weekend where a new ’service’ is taking content over RSS and wrapping their ads up in it.

People can and will always find a way to steal other’s content if they want. This social network for data idea, at a surface level, might help identify people who have asked permission to use content and been given the nod vs. those who haven’t.

Still lots of loopholes, but that’s a bit of a start. I do wonder though if the only people worried about content ‘theft’ are those making money off it, or those peeved that others are.

I’m throwing this out there as I’m still not sure what to make of it:

There’s talk of, and work underway, for a datalibre movement called Structured Blogging. It includes a bunch of code, human intervention in coding, and seems a bit doomed in the doldrums of who’s going to care enough to bother coding all that.

Let’s try to make data sharing, at least, a little fun and build on two concepts we’re all familiar with: MySpace & Feedburner.

chromatic

AddThis Social Bookmark Button

A little tip flew by Planet Python the other day that Django has joined MySpace.

If a band can join a social networking site and get friends and a celebrity can have a handler join and get lots of friends and if a soft drink or any other form of advertising can join, why not a free software project?

(What’s next? Orkut had groups such as “I love (Perl|Python|Lisp)” and “I hate (Perl|Python|Lisp|Java)”. Will there be anti-project competitions?)

Here’s Django on Myspace. What other projects are there?

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today I ported several test files to the new format… and discovered a nasty bug in my SUPER module. Oops.

Curtis Poe

AddThis Social Bookmark Button

I’m not going to name the software company or their product because I believe they would cheerfully sue me down to my underwear if they were identified. As a result, I’m going to change a few details, but the following nightmare is true. And if you meet me at a conference, I am not going to tell you who they are. Instead, I’ll call them “Alpha”. Comments are enabled for this entry, but please don’t speculate about who this company might be. I can’t afford the legal fees (though feel to post similar horror stories).

Alpha is a huge software company that puts out a very, very fast, scalable piece of software that many companies use for mission critical work. To their credit, their software usually does what it’s supposed to do, but it’s extremely expensive and requires very expensive employees to maintain it. Because of the nature of my work, I’ve had encounters with Alpha numerous times. Here is why I almost always recommend alternatives, preferably open-source.

Steve Mallett

AddThis Social Bookmark Button

I’ve begun to notice the emergence and growth of a new subgenus of AlphaGeek: the “AlphaJunkie”.

This sub-species’ defining characteristics are that it is likely to have an apple desktop, a windows desktop, a Linux server at home or in a colo, at least one or more mobile devices, at least one game console (that’s at least five operating systems), and some dedicated device like a GPS or Tamagotchi. That’s a lot of hardware, a lot of software, and one twitchy geek.

Aside from interest in hardware and software upgrades, ‘twitchy’ is also consumed with the latest, hottest, but smart meme of the day, nay hour. A comedic viral video is of interest or course, but one of time-lapsed FedEx flightpaths…? Well, that’s going to induce a twitch.

I call AlphaJunkie a subgenus of AlphaGeek because while they are related there are two different thought processes at work. The classic AlphaGeek is more a long-term processor. Noticing a new trend it will kick at it for a while to figure out what is happening there and in some way help shape said ‘new’ thing. The AlphaJunkie, or twitcher, is a more short-term animal and is a part of the trend.

Most AlphaGeeks display AlphaJunkie behavior so they are obviously of the same vine and of one another.

I’ve begun a new weblog, aptly named AlphaJunkie, because I indeed display some AlphaJunkie tendencies… plus because it’s fun. I’ve described the content as O’Reilly Radar without all the thinking… more twitching.

I believe that we see this emergence when looking at the differences between Slashdot and Digg. No, this isn’t a X better than Y comparison! Digg’s readership looks distinctly younger, and frankly more hip. As such it embodies this twitch culture with a expansive tech. topical interest.

To sum up I’ve begun this new blog/digest which I’ve been kicking the tires on for almost two weeks now. Topics range from Teen Watch, Robots!, and Virtual Worlds to VoIP. Lastly, I’m very interested in hearing from like minded AlphaJunkies interested in becoming contributing bloggers (email | AIM). We’re all Japanese schoolgirls now.

Robert Pratte

AddThis Social Bookmark Button

With all of the recent hoopla surrounding other languages, it sometimes seems as if Perl is being left behind. When will Perl 6 be mainstream, where are the frameworks to provide ease-of-use like other languages, and will Perl stay ahead of the curve into Web 2.0 and 3.0 applications? More importantly, to me, is the question of when Perl will make it as an enterprise-class language? Sure, Perl is widely used in large systems, but usually for testing, systems administration, CGI, and “glue.” What about large, critical applications, however? How many architects and managers have considered Perl lately when it came time to look at an alternative to Java or C++? Moreover, if they aren’t considering Perl, what are the reasons - what are the areas that need to be addressed in order to turn Perl into a respectable corporate contender?

This isn’t the first time the question has come up, but why are people frothing over Python or Ruby when Perl still has so much to offer? What can Perl do? How about a catchy name? Joking aside, there was a fair amount of marketing that made Java so popular (at least with management) and more people probably know the phrase ‘Ruby on Rails’ than could tell you anything about it. Perhaps, like Java, Perl could have its own ‘enterprise’ version. This isn’t a new thought, others have brought it up in the past, including P5EE and Enterprise Perl. Personally, I think that it should be called Perl In the Enterprise (PIE), but that is mostly because I think that, like sex, food is a good selling point.

A catchy name might turn the head of a non-technical manager, but what goodies would an Enterprise level Perl need to have under the hood to keep the attention of a serious Enterprise developer? This is perhaps the point where opinions will diverge, but I think that I am fairly safe in listing better error handling, logging, and threading as top priorities for a bigger, better Perl. Adding assertions, native compilation, and a snazzy IDE would sweeten the pot even further. Finally, some nice frameworks for web, CORBA, and SOA would be nice.

At this point, several members of the Perl community (if not CPAN contributors) are probably saying to themselves, “Wait, most, if not all, of these things are available in one form or another already.” For the most part, they would be correct. However, adoption of some of these technologies hasn’t been what it should, particularly in that Perl hasn’t taken over the Enterprise on its way to world domination. Over the next few months, I’d like to look at what choices the Enterprise developer has for addressing these needs.

Moreover, I would like to stress that the term Enterprise isn’t just a way to calm hyperactive management in large organizations, but that it can reflect an attention to detail and the notion of “failsafe” that allows other, more interesting languages to displace that spinster Ada as what people would rather have running the navigation systems of the submarine they are on when exploring underwater Arctic caves. That said, I think it goes without saying that features such as error handling and excellent logging facilities are equally attractive to companies spanning the range from startup to blue chip.

chromatic

AddThis Social Bookmark Button

Jeff Croft’s Django for non-programmers article is a good introduction to one of the top Python web development toolkits. You can build a weblog in thirteen lines of declarative Python — and no SQL.

Of course, the “non-programmer” has to be capable of putting those nine lines of code in the right place with the right customization, but that’s not awful at all. I’m certainly impressed.

This does raise one important issue (no, not “does the world need yet another weblog program” — it doesn’t): “how do people get Django installed on cheap hosting providers?

That is a subject worth much more thought.

Jeremy Jones

AddThis Social Bookmark Button

I’ve been listening to the Distributing the Future podcast from the beginning. It’s a well produced, informative, thought-provoking podcast which covers a variety of technology related topics. I was catching up this morning on a couple of episodes I hadn’t gotten around to yet. The episode that really caught my attention was The Maker Faire.

I’m not a maker. I’m a code junkie. I used to tinker around with things in my younger years. I recall disassembling nearly every toy that I had as I was growing up which could be disassembled because I wanted to see how it worked. And, of course, I would (attempt to) put it back together after I had finished destroying it. I guess I’ve shifted most of my energy toward code, but I maintain an interest in breaking and making stuff. (In fact, I’ve been subscribing to the RSS feed for Make Magazinge for a while now.)

As I was listening to the Maker Faire episode, especially a clip where a girl and her dad were talking about their “redneck pool heater”, I kept thinking to myself, “This is what I want for my kids. I want to provide them the opportunity to learn how things work and build them for themselves.” I guess one of my reasons for wanting this for my kids (currently 2 and 4) is that I see the same disassembling curiosity in my son’s eyes (my 2 year old) that I had (have) in my own. I would love for him to have the opportunity to really learn from tearing stuff up and then building it back together.

Make has a section on their site for kids, interestingly under the Maker Faire area. Great podcast. I’m looking forward to more of the same. I hope my kids share my excitement.

chromatic

AddThis Social Bookmark Button

Zak Greant reminded me that PHP Vikinger registration has just opened. This unconference is a small, informal meeting for PHP developers, superstars, and anyone who can get to Norway in late June and register.

If you can make it but don’t consider yourself a PHP rockstar, don’t worry. Sign up anyway. Unconferences are always enlightening and often quite a lot of fun.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

With nodegroup ported, I can port the nodeball tests. How well does inheriting from other test classes work? Not as well as I had hoped.

chromatic

AddThis Social Bookmark Button

I don’t know how I missed this until now, but Noel Llopis and Sean Houghton have a length weblog posting containing their GDC 2006 paper Making Better Games with Test-Driven Development.

There are several good ideas: parts stick out for me. First, the quote:

TDD is a development methodology, not a testing one.

We are hoping that as TDD becomes more common in the games industry, middleware providers will make their APIs more TDD friendly and even ship with their unit tests.

Imagine then how useful TDD can be on a full engine developed with TDD from the start.

We have found that counting the number of unit tests is a really good measure of progress.

There’s also a good discussion of three ways to test graphics code.

(Next year I have to go to GDC.)

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is finish porting the nodegroup tests. I finally made a decision about how to handle parent test methods.

chromatic

AddThis Social Bookmark Button

Working with complex, nested data structures takes practice and patience. It helps to be able to visualize your data. Data::Dumper is one of the oldest and most widely used modules because it does what it says – it serializes a Perl data structure to its equivalent Perl code.

It’s not a perfect module, though. Its default output is a little verbose (if customizable), it can use a lot of memory, and it can be slow. It also doesn’t handle complex references well.

Data::Dump::Streamer is a newer alternative that works better in some cases. Here’s what I learned from playing with it one afternoon.

Jeremy Jones

AddThis Social Bookmark Button

Ubuntu Dapper Flight 7 came out earlier this week and I decided to do a fresh install on my laptop. Part of the reason for a fresh install is that I’m ready for a new Ubuntu to install and automagically configure my system as a few things have gotten unconfigured and I can’t seem to re-configure them properly. Another reason is that I’d like to get Windows on this laptop as well as Ubuntu and the easiest way to do that is to repartition the hard drive and do a from-scratch install, anyway.

When I booted up after installing Dapper, my laptop was set at a proper 1920×1200 and it looked great. The video was configured to do direct rendering, but was using the xorg ati driver rather than the ATI proprietary fglrx driver. The 3d performance was pitiful and the quality of playing videos was poor, so I decided to try the fglrx driver. It only took a one-line change to my xorg.conf file (changing “ati” to “fglrx”) and it just worked. Another thing X related that just worked without any configuration on my part was the Synaptics touch pad scroll area. I’ve gotten this working in the past, but only with some hacking on the xorg.conf file.

Of course, none of the video files I tried to play worked since their respective codecs don’t come installed with Ubuntu. I Installed win32codecs and VLC was able to play everything I tried. xine is having some trouble seeing any codecs I give it, so I’ll keep plugging away at xine and use VLC in the meantime. Or maybe I’ll just stick with VLC.

Curtis Poe

AddThis Social Bookmark Button

The latest issue of Dr. Dobb’s Journal arrived today. Frankly, I’m not a fan of this magazine but they keep offering me a free subscription and I keep hoping I’ll get something useful out of it. The problem with Dr. Dobb’s is that it’s just not relevant to me as a programmer. With its heavy focus on Java, C++, .Net and similar languages, I find it useful for little more than taking up room in my recycling bin. With the latest issue, though, there’s hope. The cover story is the luridly titled “Ruby On Rails - Java’s Successor?”

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to continue porting the nodegroup tests. This is a great way to test the inheritance of test methods.

Curtis Poe

AddThis Social Bookmark Button

Note: if you’re not familiar with my writing, I should tell you that it often represents a bizarre stream of consciousness where I hop from stepping stone to stepping stone in a most unpredictable fashion and the other side of the stream bears little resemblance to the original bank. You’ve been warned.


About a year ago, a friend took me to see the film What the Bleep Do We Know. I’m afraid we annoyed many others watching the film because we couldn’t stop laughing at how ludicrous much of it was. For example, the film gave extensive coverage to “Dr.” Emoto insulting water and claiming this makes ice crystals ugly. He’s making a lot of money from books but, curiously, scientists have had trouble replicating his results.

This got me to thinking about the excellent book AI Application Programming by M. Tim Jones. I had been busy reworking his example of evolutionary behavior in synthetic ecosystems and my “animals” were not evolving as expected. After much mucking about in my code, I realized that the “eyes” worked, the “brains” worked, but I had accidentally severed the “nerves” between the eyes and the brain. Much like the audience at the aforementioned awful movie, my creatures could think and could see, but they could’t think about what they saw.

Andy Oram

AddThis Social Bookmark Button

Jason McIntosh, who used to work (and play games at lunchtime) with me at O’Reilly in Cambridge, Massachusetts, just contacted me to show me the project he’s currently devoting his life to: an open-source platform for multiplayer interactive games. Named Volity, it has a web site for game-players as well as one for game developers.

Volity provides libraries in Perl and Python. These aren’t so much for creating the settings, pieces, rules, or moves of a game (those are all game-specific, and you do them on your own), but for the wrapping that makes it possible to sign up players and get them communicating.

With Volity, for instance, gamers can easily search for other gamers and invite them to games. Volity handles all the messages passed between gamers, and does so quickly and efficiently, although it’s not designed for intensive twitch-based gaming (as Jason called it) with real-time requirements. Gamers can chat while playing. A reputation system is being developed (personally, I think that will be the hardest part).

Andy Lester

AddThis Social Bookmark Button

Thomas Wailgum’s article, “Out of sight, out of control,” in the May 1 issue of CIO magazine was an excellent illustration of why telecommuting can be a dismal failure. Wailgum imagines scenarios like a remote colleague who “seems distracted” on a phone call, presumably by texting on her BlackBerry, and how it’s best to “‘accidentally’ shut down her BlackBerry service” in response. The message is clear: Remote workers just won’t do the work you want them to do (at least so long as you distrust them).

At first I thought Wailgum might be joshing us, humorously holding up anti-patterns in management of remote workers (indeed, in any type of management), but I’m sad to conclude that he’s serious. What’s clear by the end of the article is that Theory X management, suboptimal for knowledge workers in general, is doomed to failure when applied with extra vigor to those workers that don’t benefit from overview of his watchful eye. I imagine Wailgum in the 90s, assigning his IT staff to a search-and-destroy mission for C:\WINDOWS\SOL.EXE, secure in the knowledge that he’s removed the siren call of Solitaire, preventing all slacking of his peons. Then, as now, his expectations of his grunts slacking during the day are sure to come true.

No one denies that telecommuting has its own challenges. It’s radically different from life in a cube farm, and yet both rely on one concept to get the most from those on your team: You must expect the best from your team, and trust them to do it. Many of the challenges are the same. Just as people game the system to make it look like they didn’t come in late to the office, people can use automated scripts to check and receive email to simulate their “being at work.” The answer isn’t to make the command-and-control system harder to get around, but to throw the system away.

People do their best work not because they have to, but because they want to, and it’s a rare IT professional who wants to do their best work under the iron fist of someone who looks to Dilbert’s Pointy-Haired Boss for inspiration. When telecommuting works, as it does for so many of us, it’s a thing of beauty. Mr. Wailgum, I invite you to work with your team, not against them, and see what magic comes out of a team that doesn’t have to be a slave to geography.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to start porting the nodegroup tests. This will take a couple of days. It’s painful, but it’s good for me. That’s what I keep telling myself.

Curtis Poe

AddThis Social Bookmark Button

Update: Being my first entry here, I didn’t realize that my listed name would be “Curtis Poe”. Everywhere else it’s “Ovid” or “Curtis ‘Ovid’ Poe”. Sorry for the confusion.

Since this is my first blog entry for O’Reilly, an introduction seems to be in order. If you’re involved in the Perl community, you probably know who I am. For those who don’t, I’m one of the authors of the new Perl Hacks book, along with chromatic and Damian Conway. I also sit on the Perl Foundation steering committee and I run the Perl Foundation grant committee. I also have a moderately popular CGI Course online and a fair amount of code released on the CPAN.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task demonstrates how easy it is to port further tests. The new system works.

chromatic

AddThis Social Bookmark Button

Perl 6 pumpking Patrick Michaud recently posted an announcement of a Perl 6 compiler running on Parrot. This version uses Patrick’s PGE and Allison Randal’s Parrot compiler tools.

That is, this is probably the approach that the official released version of Perl will use.

With a little bit of hacking after Patrick’s initial checkin (kept slightly secret mostly by the lack of an official announcement), this compiler can run some of the Perl 6 specification tests developed by the Pugs project. It’s also inspired some cleanups to Parrot, the Parrot compiler tools, and a handful of other languages running on Parrot.

This is how progress looks.

(Oh, along those lines, Chris DiBona just published an interview with me about Perl 6, also featuring Brad Fitzpatrick of LiveJournal, about Perl 6 and our progress.)

Jeremy Jones

AddThis Social Bookmark Button

The BDFL blogged today that Django is “gaining steam”. He mentions a talk that Jacob Kaplan-Moss, a Django developer, gave at the Bay Area Python Interest Group, aka “Bay Piggies”, and that several folks at Google are interested in Django. I found a Google video link to the above-mentioned talk on the Django mailing list. I haven’t listened to it yet, but will probably listen to it tonight. This level of exposure that Django is receiving is really exciting. Mark Ramm, from the TurboGears side of things, posted on Guido’s blog that he was excited at what was going on in Django, TurboGears, and Zope. As he mentioned, these are exciting times for web development in Python. Well said, Mark.

Spencer Critchley

AddThis Social Bookmark Button

We may have the seductiveness of the amazon.com shopping cart to thank for CivicSpace, an enhanced content management system (CMS) that has spawned many of the leading political web sites, starting with that of the Howard Dean for President campaign.

As an impoverished University of Illinois computer science student, Zack Rosen browsed his way across titles such as Emergence, Smart Mobs and Linked - and then accidentally bought them all. When the expensive pile arrived, he figured he might as well read it, and he quickly found himself absorbed in ideas of connection via networks. At the same time, he began hearing more and more about longshot presidential candidate Howard Dean, and how his campaign was using the web to find supporters and raise money. Things clicked. Rosen entered his zip code for a Dean meetup, and soon he found himself working with a team of like-minded technologists, adapting the Drupal CMS to build Deanspace, which would eventually evolve into CivicSpace, a robust and growing platform for grassroots online political organizing (aka netroots), especially in its pairing with CiviCRM, a politically-oriented Customer Relationship Management system.

I came across CivicSpace while researching open source technologies for montereycountydemocrats.org. Our team elected to custom code the main public site, while also using or experimenting with pre-built solutions such as Wordpress for our blog, and CivicSpace, Advokit and dotproject, among others, for our internal needs. CivicSpace has proven to be one of the most robust and usable of them all.

I interviewed Zack recently via email.

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today the porting of yet another node test worked almost flawlessly. Am I getting good at this?

Dave Cross

AddThis Social Bookmark Button

Do you know anyone who is language-agnostic and has chosen a Perl MVC framework to build a new web application?

All of the people I know who have been using Perl frameworks (and there are many who have been using them very successfully) are people who would choose to do any programming task in Perl. But I don’t know of anyone who has thought to themselves “I need to build a new web application, let’s review all the framework options in all the languages - oh look, that Perl-based framework looks good, we’ll use that”. Do you?

chromatic

AddThis Social Bookmark Button

Patrick Michaud joined the Perl 6 project in 2004, after the team put out a call for a compiler pumpking. Since then, he’s ported Perl 6 rules to Parrot, written an operator precedence parser, and has a working Perl 6 compiler. In addition, Patrick is an active contributor to the design of Perl 6 and the implementation of Pugs. Recently, he agreed to answer Perl.com’s usual interview questions.

Dave Cross

AddThis Social Bookmark Button

The second Google Summer of Code gets under way today. But for those of us who haven’t been students since the last century there’s also the Google Code Jam where Google are offering large cash prizes and money to Europe’s best programmers.

The only problem is that the only allowed competition languages are C++, Java and C#. All nasty restrictive languages that make you jump through ridiculous hoops in order to achieve anything even moderately complex. And if you believe Paul Graham all the really great hackers are using dynamic languages like Perl, Python and Ruby.

I wonder why Google chose that particular set of languages?

Jeremy Jones

AddThis Social Bookmark Button

I just happened across a mesage in the IPython mailing list where a user was trying to get IPython working with PyDev. This message sparked my interest again in PyDev. (For anyone who doesn’t know, PyDev is an extension to the Eclipse IDE which focuses on Python coding.) I’ve tried Eclipse several times over the past few years and have never been impressed with it. I’ve also tried PyDev a couple of times and never felt that it would benefit me much. However, in the spirit of openness and discovery, I’m giving it another go.

I checked my system (Ubuntu Dapper) and found that I had Eclipse 3.1.2 and PyDev 1.0.3 installed, so I fired it up. I had apparently created a workspace and project some time back since the project and workspace appeared when Eclipse came up. The first thing I was interested in was how well the code completion worked. (Maybe I’ve been brainwashed with my recent exposure to Visual Studio.) I imported the “os” module and tried to complete on “os.lis”. Ugghh. Why isn’t this working?? I went to the PyDev site and noticed that the most recent version was 1.0.6, so I updated my PyDev to that version. (Side note: Eclipse’s extension system is really slick, especially how easy it is to install and keep extensions updated.) That update certainly didn’t help at all. Then I noticed that I was trying to edit Python files in a Java project. User error! I quickly created a PyDev project and a Python source file. My “import os”, “os.lis”<CTRL><SPACE> came back with the exact results I was looking for. I found completion worked for global variables, functions, and classes as well as “self.” for attributes and methods. Very nice.

I then tried some of the items under the “Source” menu, such as commenting and uncommenting code blocks. Commenting code blocks with <CTRL>3 works great. Uncomenting with <CTRL><SHIFT>3 doesn’t seem to work for me, though. Auto-indenting works great. The refactoring seems to work pretty well. I tested it by writing a little piece of code and telling it to refactor out a method and it seemed to do so pretty cleanly. The “code collapse”ing works pretty nicely as well. You can (un)collapse with keyboard shortcuts or by clicking on the +/- in the gutter next to the appropriate pieces of code. There are a number of other utilities under the “Source” menu that I haven’t yet touched. There also appear to be some capabilities to script things with Jython. I’m also trying to get the debugger working. PyDev doesn’t appear to have a shortage of features.

I’m definitely going to have to install the SVN plugin for Eclipse and play around a little more with this. When I first tried out Eclipse, I remember it being sluggish and bloated feeling. The version I have installed is actually quite responsive. It’s hogging down a good bit more memory than I’d like, but I pretty much expect that with a tool like this. Overall, I’m really impressed with what I see with PyDev. I’m not sure I’ll be switching away from my beloved vim, but I’m sure some folks will find PyDev and Eclipse an excellent development environment. Good work, Fabio!

chromatic

AddThis Social Bookmark Button

Google’s second Summer of Code has started to accept student applications since I started to write this. The project has expanded and matured and the list of mentoring organizations has grown.

I’ve volunteered as a mentor for the Perl Foundation this year. In particular, one project has my eye — an improved, nearly-automatic native call interface generator for Parrot and Perl 5. We’re looking for one student with some C and Perl abilities as well as an interest in parsers, compilers, and shared libraries. I don’t want to give away the secret too much, but if this project works out it could completely change the nature of language interoperability.

The Perl Foundation’s Summer of Code site has more details about the entire project. TPF’s SoC Project Ideas is a great list of potential projects. If you’d like to flip bits, not burgers this summer, dig through the ideas from any of the mentoring organizations and apply. We’d love to have you.

(Mentors and mentoring organizations, feel free to post your top project ideas here; it’s fun to see what other projects need and want.)

chromatic

AddThis Social Bookmark Button

This 30-day project explores the refactoring of a legacy system. The Everything Engine is an aging software project that powers Perl Monks, Everything 2, and a few other websites. It suffers from poor design and maintainiability. Learn what it’s like to look over the shoulder of an experienced developer as he refactors, redesigns, and updates the code.

Today’s task is to port another node tests to the new system. Unfortunately, the order of porting matters quite a bit… problems abound!!

Advertisement