Random thoughts I've had over the past 5 minutes that weren't enough to fill a whole blog post on their own, but were too much to shove into a tweet:

I wish I didn't have to sleep. Things happen overnight that would be useful to be present for. My coworkers being awake and international Habari support, for two. Also, I'd be able to get all of those things done that I don't have an extra couple hours every day for. It would be useful not to sleep. Being sick has put me into the routine of sleeping more, which is good for sanity, but bad for productivity.

I have a new recruiter policy. If you call and offer an opportunity that doesn't meet the criteria that I've outlined clearly in my published resume, I simply tell you not to ever call me again. This is brought on by today's recruiter call from Sandeep in "Columbus OH" (according to the caller ID - yeah, right), confirming that I am in Chester Springs, and wondering if a daily commute to Erie would be acceptable to me. I informed Sandeep that Pennsylvania is roughly 300 miles across, and that Chester Springs is in the far Southeast corner, while Erie is in the far Northeast corner, and that yes, I was actually serious about not relocating, and no, teleportation technology that would allow me to perform that 375-mile daily commute had not yet been invented. When he said, "If I have any other opportunities I will let you know," I replied, "No, I don't accept calls from recruiters that don't know their own business." Hopefully, that ends that.

I've long been looking for a way to keep focused on tasks and moreover come up with a comprehensive time-management system that works for me. I discovered the Pomodoro Technique, which uses one of those tomato timers to get you to focus on an individual task for 25 minutes between 5 minute breaks. Seems like it could be effective and would like to try it, but one of the more effective bits of the technique is how it suggests to record interruptions. I think this part would do very well for me, allowing me to continue work, and evaluate later whether I really need to check Twitter again or get back to that person I should have emailed days ago. But I want a digital tool to do it, and the ones I've found (including this otherwise really good one, Pomodairo) are lacking in certain ways that seem obviously essential to me, particularly in their ability to collect and then organize interruptions. I might just go back to paper.

It's come up at least twice this week that I used to write desktop software, and should be able to produce small apps that I would like to use (like the Pomodoro app from above). I think it might be entertaining to get back into some minimal desktop development, maybe with some of the newer .net stuff that uses Expression for design.

Although it's not the topic of this post specifically, my workplace is currently all male. This is not by design. There have been occasions when we've attempted to hire competent people and they also happened to be female. The dearth of women in the software and web development industry is a sad fact that I believe is common worldwide.

Every so often the topic once again crosses my radar. This time, it comes in via an article unearthed by Chris Shiflett written by female developer, Nicole Sullivan. The article, "Women in Technology", has been quoted by many on Twitter with the phrase "Why is computer science a sausage fest?" The article itself was spawned by a comment made on twitter about Google's recent funding of a grant to allow female developers to attend JSConf on Google's dime.

After encouraging my wife (who is in my mind an exceptional female developer) to debate with me on the topic for a bit, I only have a few scant points to make, and then I'll wander back off into my male cave of ignorance.

Point 1: Google is not your mom

So I brought this topic up with Berta. "What would you think if Google did this?" And her very astute mind immediately replied with an argument I had not considered before.

Google can do whatever it wants with its own money.

If Google wanted to fund trips for 10-year-old red-headed stepchildren to Disney World, that's their prerogative. I may be wrong, but it seems that there is no law saying that Google must distribute its money evenly among diverse groups. I certainly wouldn't want to be forced to give my money to groups in opposition of the charitable organizations I've donated to in the past.

Google is not your mom. It need not love all its children equally. What right do we have to impose our ideals on Google? Seems like none.

The debate should really end there. But let's talk about women, because that's what makes people mad.

Point 2: The state of balance

Here are the fun facts that you'll contradict later: I like women. Women can make fine developers. I live with one, after all. And I have female friends that are developers, whom I respect. I believe that the differences in how male and female minds work can be an asset to development work.

It is bad that there are women who would enter the field but don't because of bigotry. Although I believe I have never personally witnessed bigotry the likes of which Ms. Sullivan describes in her article, I don't doubt that it exists. And that's a terrible thing. However, asserting that equal numbers of men and women in a field would eliminate the bigotry she describes seems erroneous to me.

I'm sure we can think of several times in history (perhaps even current history) where a field dominated by women was still a dwelling place for bigotry of the worst kind. The number of women in the field seems, at least to me, to have only a partial effect on that bigotry, if any.

Don't get me wrong -- I think it's great that Google is trying to encourage more women to take part in technology. I don't see it as "encouraging women" though, as much as encouraging developers that are competent but reluctant (for whatever reason) to join the wider development world. And yet I don't think it explicitly addresses an issue of bigotry -- I'm not even sure that was Google's goal at all.

My conclusion is that while the people who are decrying Google's generosity as favoring women are themselves insane, the people who point at Google's generosity as helping snuff out bigotry against women may also be a bit delusional. Sure, we can look at the disparity in the ratio of women to men in the computer industry as a warning sign, but I think it's more important to search for its specific cause and address it than to simply encourage more women to enter the field and be accosted by it. I am not yet convinced of the positive effect adding more women to the industry will have toward the goal of making that workplace a good environment for women to work.

Is it necessary that there be equal numbers of men and women in a particular field? While I can see it as a reasonable test for whether a field is wrought with discrimination, I do not think that this is the final determinant of whether a field is healthy. I would wish that all women - all developers - to have an equal opportunity to do this type of work if they chose, free of any kind of unwarranted discrimination (if you're no good at it, please try another field). It is a useful measuring stick, but the remedy of adding women seems akin to pushing down on side of the scale measuring gold to make it seem like there's more there.

I don't know how to fix bigotry. Maybe encouraging women to attend conferences like this is the best way, though I'm skeptical. Isn't there some other way?

Your thoughtful consideration is appreciated.

Saying this now basically dooms me to wandering once again into obscurity, but you might have noticed that I'm writing again more. These things usually come in cycles. I'll go through a period where I don't want to have anything to do with whatever else I'd do, and I'll write instead, since the time is free. Writing is not a chore, it's just something I don't have time to do unless I toss other things aside. Still, there are other things that I'm doing, trying to keep relevant.

Recently I started throwing a project onto GitHub in an effort to catch up on git. This should be useful with my Drupal work, since Drupal is switching their source control over to git. Anything is an improvement over cvs, and while svn is still my scm of choice, git doesn't seem too difficult to work with.

Anyway, this project I've put onto GitHub is kind of my starting point for new miscellaneous projects. I call it microsite. It's good for just throwing a quick site online with some pages and no frills. It's definitely not a full CMS and I don't encourage anyone to run out and use it for anything. What it has helped with is rethinking some things that I've built elsewhere.

Michael Harris recently asked me what about Habari I might have done differently, looking back. The list is reasonably short, but each item is significant. I've been reviewing these things and trying to incorporate my thoughts into the microsite project.

One thing you'd see (and I expect to expand on this with a later post, perhaps over at RedAlt, since it's more technical) is that templates are parsed and converted into custom DOM objects before they're rendered. This will ultimately allow two things: First, it will allow the DOM to be rendered to different output targets - such as HTML, XHTML, or HTML5 - without the template itself being written with any of those specifically in its intent. Second, it will allow individual portions of the page content to be marked as cached and expired. So it will be possible to cache the page content, but mark a specific section of the output as cached and expirable. The system would be able to load the DOM from cache, look for components that expire based on specific criteria, and either expire the whole page based on a single component's expiration or update only the expired component within the DOM (and re-cache it). You non-technical folks are probably like "yeah, ok, yawn".

I've noticed a sort of stagnation in my own learning that seems dangerous. I picked up a new O'Reilly book over the weekend, Building iPhone Apps with HTML, CSS, and Javascript. Whether we like it or not, the future is in going to consist largely of mobile apps and connecting them to the cloud. I like the idea, although I'm not personally in love with the current crop of devices.

One reason why I so fell in love with the Palm Pre is that the apps seems more integrated with each other and the cloud. After thousands of app releases for the Pre, it's clear to me that everyone is releasing new apps that work just like the iPhone ones. They suck because they don't work together. I'm not sure what the solution is for this, but I am dismayed by the situation. Either you have a very functional app that is trapped in the device (can't export useful data to use elsewhere) or you have a barely functional app that relies entirely on cloud services (such that the app isn't useful by itself or must also be used via the web to be useful). There are very few apps that span the gap well.

So I'm not saying that I'm adamant about building phone apps, but I think that developers seeking to remain relevant need to think about how their offerings will be made useful to the wavefront of mobile users that will soon overwhelm the market.

Yes, it make me want to turn to living as a simple farmer. Oh, I have a good story on the farming topic for later. But speaking of fallback professions...

I have my first voiceover class tonight. I'm looking forward to it. I need to set my expectations low, though, because I'm really excited about the prospect of doing this as a hobby, if not a full-on side job, and I want to love the class. It bothers me a lot that I've been studying and have passion for the work, and I talk about it all the time, yet I'm not a person people associate with doing voiceover. It's weird. It's not good for my confidence. Anyway, I hope to get something useful out of this class, take some more classes - including some more acting workshops - and build a good demo reel. Then I've got a small side business idea I'm going to launch, and I'll see how that works out. Assuming I even have a chance at all.

But my sudden fear today is that I'll be getting irrelevant. There are new technologies flowering and stagnation looming as a result of doing the same thing all the time. I think I'm losing my feel for development technology, and I need to get back into a community of developers and see what's going on; what's new. Hopefully it's a good sign that I at least see this happening.

I am trying to port a WordPress theme over to Habari the only way I know how. Step 1- Make mess. Step 2- Flail around making mess worse. Step 3- Somehow clean up mess miraculously. Step 4- Make another mess and repeat process.”

This kind of thing is an indictment of what Habari is all about. our community has been struggling for some time to produce themes as easily as some other publishing systems. Since there are a lot of themers coming from WordPress looking into Habari, they're looking for similar features in Habari's theming system that aren't quite ripe for use. There are actually a lot of places in Habari's theming system that could use some work.

One of the places that people get confused a lot coming from WordPress is with the "more" functionality. This functionality in Habari is provided by the Format system as controlled by the theme. The reason this is associated with the theme is because some themes will want to display a specific amount of information in certain places. For example, when displaying your home page, the first post may show the first three full paragraphs, but the subsequent listing of posts may only show the first sentence or two. With Habari's formatting system, this is possible. But more importantly, this preference would only be for that theme -- if you switched to a theme that wanted to lay out your posts differently, you would almost certainly not want to use those lengths of truncation. The interesting part is that there's a weird mix of flexibility versus coherency.

Another thing that is evolving in Habari theming is what I like to refer to as "WordPress versus Drupal theme styles". By this, I don't mean that Habari will be able to use themes from either of those systems. What I'm referring to is the style of construction whereby those themes are built.

For example, WordPress themes are built such that every template file is designed to output virtually a full page. Each template includes a header, footer, and the content. For displaying a single post, there is one template. For displaying many posts in a list, there is a different template.

By contrast, Drupal has a single page template that has a kind of hollow body for content. The content area is filled with the type of content that fills a request. So if you request a single post, the same template is used to generate the wrapper, but the template that renders a single post is used to render that post's content, and it is inserted into the hollow space in the wrapper. Likewise, if you request a listing of posts, each list item is rendered using a template based on the type of item it is, and the accumulation of these is output into the wrapper.

These styles of rendering are two completely different mindsets. Habari supports both.

Even with the potential for goodness in the Habari theme system, there's still a lot more ground to cover. What we should really do is build some functions into the theme system that make it as easy to work with as some of the WordPress "template tags". I'm not suggesting that we move away from the OOP approach and go functional. I am suggesting that we provide a more complete basket of template-building tools, including more primitives for output.

At the same time, we need to expand and revise support for things that we already do in a strange way. For example, the pagination functions are just odd. There isn't a clear path for expanding on them, and I think they're sometimes faulty. These things should be themeable, so that theme authors can easily make the pagination look like whatever they want.

Also, there are some things that are completely missing. I'm hoping that for version 0.7, we can add some impressive new features like content areas and blocks. A block would be a chunk of content that can be placed, and an area would be a place in a theme pre-determined for the placement of blocks. Blocks could be provided by plugins or the core system, and would be configurable in the theme settings for the theme. They could be used to display all of the standard stuff: Tag clouds, blogrolls, "about me", Flickr badges, etc. And the blocks themselves would be themeable, so if you had a plugin that provided a block with a basic template, you could make it fit into your theme better by providing a custom template explicitly for that block.

There are many other theme-building enhancements that we should consider for 0.7, and making theming easier is a good focus for the next release of Habari. Making it possible to more easily translate themes from other systems will make it easier for theme developers to produce a Habari version of their themes at the same time as their WordPress or Drupal versions.

I saw this posted in a couple of places, and thought it would be fun to give my own responses.

How old were you when you first started programming?

I was 8 in 4th grade.

How did you get started in programming?

My 4th grade year was the year when my teachers finally recognized some academic ability in me. My math teacher that year sponsored an after-school computer programming club on his own computers, and that's where I first came in contact with them.

What was your first language?

My first programming language was BASIC, since I was writing code on a Timex Sinclair 1000, and that was its default mode.

What was the first real program you wrote?

I wrote a few programs back in computer club, including one that made an animated E.T. (a very popular movie at the time) appear on the screen. I've written more serious programs since then, including a C compiler in 6th grade.

What languages have you used since you started programming?

Plenty. 6502 machine code, C, C++, Pascal, Visual Basic, Delphi, Perl, PHP, Python...

What was your first professional programming gig?

Professional meaning "paid for work performed", I wrote a small program for the county bail office that printed labels correctly on their label printer. Worked pretty good, too. I think I made $20 from that. I think I was maybe 9 or 10.

If you knew then what you know now, would you have started programming?

I'm trying to get my kids into it now... I don't know if they'll like it as much as I did.

If there is one thing you learned along the way that you would tell new developers, what would it be?

Stay humble and network. You don't know everything, and there are people out there who know can fill in those gaps.

What's the most fun you ever had programming?

Natural language parsers are a hobby of mine. I wrote a text adventure in college that included many of the people I knew and some of our group's in-jokes. It was fun to write and fun to watch my friends play.

What's the most fun you've ever had... programming?

No, probably not. I find programming fulfilling, but I doubt it comes close to some of the traveling I've done, games I've played, or activities I've participated in. It's an easy, constant high.