Skip to main content


Showing posts from 2007

How To Walk Backwards to HTML 5

The more peeks I get at the HTML 5 spec, the more I dread it. We have barely shaken the last strongholds of crap-HTML since gaining some sanity some years ago. We put content in pages and we control style and layout in CSS, supposedly. Now, we see upcoming tags like article and nav and section, and all of it harks back to the days that were so dark in the web. I don't understand it.

If anything, we should take the suggestions of Douglas Crockford to heart. I want semantics in my content, not layout or anything related to it. I want themes and templates understood by the standard, not developed by a thousand projects in parallel resource squandering.

Any complaints I make about the upcoming HTML spec is completely trivialized by the fact that there is an upcoming HTML spec. Do you know how long it has been since any major shift in web formats? We're talking pre-Mozilla days here. I can't imagine the migration required with an internet the size we have today. The web makes a g…

How To Not Open Your API Enough

So, I didn't see any opening for contributing in any useful way to the discussion about Google's new Chart API, until I read this post. How dare they call this service open. They should have been clear that their greed has lead them to secretly hide abilities of the service from the public, in an obvious attempt to corner the market on really cool graphs in web sites.

My theory is that they hope everyone uses their "Open" Chart API, which doesn't include the full service's abilities, so that their own charts, using the entire breadth of charting power, are inherently better than yours. Beware the wickedness of the corporate greed, my friend.

My sarcasm drips onto the floor. Now, I mean no disrespect to Marty, but this kind of post really does get under my skin from time to time. Maybe it just struck me at the wrong time. So what if Google has features they didn't document? So what if they use a different URL to access the API? Maybe the undocumented feature…

How To Break Twitter

So I haven't realized it, but my twitters from the last day or so have gone unposted. Twitter pod is great, but its completely silent about authentication errors, apparently. The root of the problem is that I have two twitter accounts: ironfroggy and pythoncoders, which I intended as an aggregator of python twitter accounts. At the very least, a place to find other pythoners on twitter. Now, I haven't been keeping up on pythoncoders, so I decided to log in and update the followings, only to realize I forgot the password. Here in lies the cause of my troubles.

The twitter "reset password" form does not take a username. Oh, no, it takes an e-mail address, which I have two accounts with the same of. I crossed my fingers, went through the process, and seemed to be brought back to my ironfroggy account, so I decided to figure it out later.

Somehow, this process leaves the account with an unknown password, probably random or even null, or for some reason the fact that the…

How To Insenstively File People Into Two Types

The development sub-blogosphere is abuzz with responses and responses to responses on the debate over splitting up developersinto two camps. The core idea is that 20% of us care about software development and 80% of us just do our job and go home. We all like to think we're in the 20% and we probably are, because the 80% doesn't care enough to recognize the distinction. They might recognize those few geeks at the office who don't seem to have a life, of course. Is the debate centering around who is what group and what it means or that we are grouping so bluntly in the first place? Well, we are a binary loving people, after all.

For the 20% This Means...

We love to self comment. We're a relatively small slice of the populace spending an unusual amount of time talking about ourselves and this whole deal just exposes that. Who reads about the split between the developers that care and the developers that just pay the bills? Not the bill payers. Even if this all centers arou…

How To Recover Lost Git Branches

Daniel, at work, ran into a problem of accidentally removing a branch he had just created and made a commit to, thus loosing the days work. This was actually the fault of our internal scripts to manage the branching and merging policy we've set up. By "internal" I mean that I wrote them and it was my fault his whole day of work was gone, so that left it up to me to figure out how to repair the situation and salvage the current commit back from the ether. I thought it might be good to document, in the case that anyone else needs to do this.

This works in the case of branch A existing and branch B being removed after a single commit on it and branch B being from A. This means we know commit A and we need to find an unnamed commit, what was B, to recover it.

I can demonstrate the recovery process with a simple transcript.

ironfroggy:/tmp ironfroggy$ mkdir A
ironfroggy:/tmp ironfroggy$ cd A
ironfroggy:/tmp/A ironfroggy$ git init
Initialized empty Git repository in .git/

How To Predict The Solid Web

Developers from both Opera and Mozilla have recently blogged about 3D rendering contexts for the canvas element, confirming my year-old predictions. Of course, the news is a bit saddened by the decision from Opera to support a new, non-GL-based API. I understand the desire for something more high level, but putting well known GL functions underneath is a perfectly acceptable idea. One side or a third party needs to provide a compatibility layer, or they need to decide on one of these APIs. I really hope OpenGL ES makes the win here. This also ties into the OpenGL APIs on Android, accessable through WebKit, so it only makes sense that Firefox, Opera, and all the WebKit-based browsers should standardize, before Redmond releases DirectX 1.0 Web Edition Premium.

For Users This Means...

We're going to see some fun web applications taking advantage of this, but there isn't a lot we'll see that we didn't have with Flash, for years now. I think some of the most interesting effec…

How To Work a Sigmoid

Software Development in Really Big Steps
How To Work a SigmoidHow To Work a Sigmoid - Part Two

I've written about my use of FogBugz, driven by their great time tracking and estimation features. Using these, I've come across what I think is probably common and should be a goal for estimating the time of a project.

There are two estimations of a project. When you start, you can make some wild guess, pulled from the ether, weeks or months ahead of when you think it will be complete. This is the number that is notoriously and unequivically wrong. This kind of prediction is simply an invitation to make a smart person look dumb, since so few of us realize that he never was able to make that estimate. The larger the project, the greater the exponent on your chances of being able to make this estimate. This is not new to any of us.

The second estimate is the running estimate, compiled from the tasks the project has been broken down into. Now, the pro of this running estimate is that it is…

How To Combine Your Own Efforts

I came across the invite-only beta for and I've had some good conversations since having my invite request responded by one of the developers. The upcoming plans are looking really interesting, and I like being able to combine my feeds. I'm still wanting some aggregation for things like bookmark feeds, and it would be nice if trivials like Twitter or Jaiku didn't put full posts into my final feed, but annotated the existing posts with my status. There are a lot of ways this could all go and I'm really interested in this.

You can view my Onaswarm feed. I'm going to continue keeping an ear on things over there and try to get in on this band wagon. This is more my kind of social network, because it deals with the things I already care about. What am I talk about, where have I surfed, and what am I talking about? It lets me pull all this from what I am already doing. I think this can turn out very well.

I have a related surprise to announce here, probably af…

How To Have Too Much To Do

I've got a lot of things I'd like to tackle and I just wanted to layout some of the things on my mind lately. Many of them are small, so maybe I'll even complete a few before 2008.
Launch a small, free service that uses a account to take social bookmarks and forward them to Twitter or Jaiku or Onaswarm automatically.Learn how to write a Firefox sidebar application and replace the crappy TwitBin. I want to only see the most recent status from each user and to remember my preferences better.Develop a small desktop tool to grab my bugs from FogBugz and let me track time offline. This will come in handy when I travel around the holidays.Get reacquainted with Nevow and Athena for a few small games, like TicTacToe and Squares.And, as I write this, I want something that will take highlighted text and replace it with a link to a Google search for the text. Easier than looking up the links to everything I just mentioned!It really seems like an OK plate, now that I have i…

How To Enjoy a Week of FogBugz

I have been on an eternal struggle to find the rights tools to keep me organized and on track with my projects. Flying blind is just not something I can do, with such a wandering mind. I especially like time tracking tools, because if I am tracking my time in a task, I am far more likely to focus on it until it is complete. Distractions make a lier out of me. When Joel Spolsky blogged about the Evidence-Based Scheduling in the newest release of his FogBugz product, I finally decided to try the service out for a new project I am starting on over the holiday. It has been about a week and I already have some really good impressions.

As far as bug tracking goes, FogBugz seems to be bare a good deal of similarities with Bugzilla, but is still very familiar to a Trac fan. They've even added a Wiki, although I've not used it. I'm working in solo on my FogBugz trial, right now. (More on that later.) I do wish for dependancy field on cases, instead of just linking to them in the com…

How To Really Want To Love Flock 1.0

Everyone is abuzz with the release of Flock 1.0 and I so wanted to get on the bandwagon. I just couldn't make the jump. I tried to like it, very hard. Twitbin trumps Flock's Twitter integration and the bookmarks extension does a better job of helping me find my bookmarks. I find it very annoying that I wanted Flock for integration with online services, yet I couldn't remove the local bookmarks I care nothing for from the bookmark sidebar.

Now, there were some things I really liked. I loved that logging into a supported service configured it automatically. I want to see more of that.

How To Demo With Zero Barrier

When one browses to MindMeister and looks at the nicely designed page, the user will notice a nice screenshot of the service. This is not a screenshot, but an anonymous, live embedding of the actual mind mapping service. Right at the first page, you get to start messing around with things. I think all Web 2.0 apps need to provide this kind of immediate use. We can provide such a low barrier to use, with no installation, but we've really lowered the bar, so to speak. The users won't jump very high for us these days. Let them trip and fall right into our arms.
For Web 2.0 This Means...Web-based applications need to provide an anonymous access to their application on the front page of the website. If you have a to-do application, let the user start interacting before they do anything. Even registration is a barrier to entry. Of course, if you take what they did anonymously and migrate it when they register, you get a gold star. You get two gold stars if you also keep their anonymo…

How To Git Away From CVS

James went along with the idea of moving away from CVS quicker than I thought and we put the plan into action last week. I put in the time to the project and started off with the default CVS replacement: Subversion. I really was looking forward to using it at work, until a friend made a subtle suggestion to look closer at the git project, which Linus Torvalds is heading as the version control system of choice for some little thing he's writing called Linux. Needless to say, I was skeptical, given the track record of the developer.

Quicker than I realized, I was falling head over heals for the examples of git use I was seeing. I cooked up a latest stable for OS X, as the installer I found was 130MB from the 1MB source tarball. Universal binaries on a project that generates about 145 distinct executables is a real bitch. I whipped up a little script to name git and toss into $PATH, while keeping all the git-* executables and other files tucked away in /usr/local/git/. I've cleane…

How To Fullfil The (Geek) Rockstar Dream

I've been putting a lot of though to my ongoing desire to write something in the way of a video game. This was my original foray into programming and I just didn't stick with it. Turns out I am such a geek that I actually found database design and protocols more interesting than first-person shooters. Go figure. Still, the old dream burns inside me. I've spoken with a few people here and there that could gain interest if I started something, and I'm thinking the time is arriving that I buckle down into the nights and see what I can do.

I've been looking pygame versus pyglet and hoping to find a ready-to-use accelerated sprite library. Although I really want to write a straight Python, installable game, the lure of the web is strong. There are a lot of fun ideas I could try there, and probably a much larger audience I would reach. Of course, there are pros and cons to both.




Zero installationHigher number of usersOne target platform (for the ser…

How To Consider Chicago in February

Brett Cannon is considering an import tutorial for PyCon '08, focusing on his new work in the area. I've caught word here and there about talks people are working on, and even had a suggestion to make a talk proposal myself, which is silly. I haven't a clue what I would be able to talk about. I sure would love to listen, and watch, and chat with everyone else. I'm really wondering how likely it is that I could make PyCon '08 the one I am finally able to attend.

For Work This Means...

I have a pretty flexable schedule at work and the boss is a great guy. (No, Van, I am not just saying that because I know you read my blog.) Still, I have no idea what prospects I would have for taking the time to attend PyCon, but I'll deal with that when I decide for sure that I want to try to go. Well, I know I want to go, but I have to make sure that I personally can go, before I figure out if I can professionally go.

For Family This Means...

Either Heather will want to come along …

How To Move Down Three Flights Of Stairs

Well we finally moved into the new office space. It doesn't feel very strange, of course, as I have only been in the old offices for a day over two weeks. Still, it is some feeling. We've got a nice, open space. I'm really loving the use of a long ledge along the one wall as a single, extremely long book shelf. The power and network running down poles at two points in the space allows us to encircle desks around for great collaboration. I'm a little worried about the lack of any personal space barriers, but I don't see it will be a great problem. I really wish I had gotten one of the two desks with their back to a corner, but Daniel grabbed it up pretty quick. He's been there as many months as I have been there in weeks, so I can't really complain about his getting first dibs. Now that we have the new space, I have my keys and I can leave a little early to avoid most of the traffic.

The old leaser of the space was an embalming office. It makes the existence …

First Week At SocialServe

My first full week at Social Serve ended yesterday with me jetting out early to try and avoid the rush hour traffic on top of race weekend conjestion going past Lowe's Motor Speedway. Turns out, everyone else had the same idea. Still, most days I seem to be able to make good time if I just get out before the real traffic clogs the roads. I've learned a few tricks, as well, like avoiding I-77 completely on the way home in favor of Brookshire all the way to the 85 junction. Avoiding the ramps between three interstates makes a huge difference.

The work itself has been good. I still am learning my way around the existing code, and making my fair share of suggestions to improve things with all the stuff I see from the Python community. I'm looking forward to doing some fun stuff.

I've joined the commit team on the GeoPy project to push some patches and further work I've done on it for Social Serve. Where things are is a surprisingly difficult problem to deal with.

How To Work At

Here are my instructions to anyone else who may want to work at
Have a strong enough interest and passion for development to start a contracting business without any formal training. Support yourself for about a year and a half working for one client and the next.Move to an area populated enough to start a user group for your favorite development language, tool, or concept. (Mine was Python)Be suggested to send in a resume to the company of one of the first members.Sweat your way through the first real interview for the kind of job you've wanted your whole life.Cross your fingers not to screw it up.So, that's my story. I had my interview last Tuesday, called Thursday, and started Friday. I've enjoyed it a lot. Learning my way around the codebase has been going pretty well and I've already got my first couple of commits in, as well as two small projects. I like to think I'm moving along nicely.

One of the things I need to get used to is that all of ou…

How To Stop Me From Buying An iPod Touch

So I've been looking at the new line of iPods and thinking about how much I wanted an iPhone without the phone, so the iPod Touch seemed to be exactly what I wanted. Thankfully, Morgan Webb pointed me to this story about why I might be reconsidering. Now, I run both Windows and Linux. My wife is the one in the household who refuses to run Windows at all, how about that? On both operating systems I already have players that can use the old iPod lines. I use WinAmp and Amarok, although I am anxious for Amarok on Windows to be stable enough to move to. Sorry, Nullsoft! Where am I left now? I guess I need to look at my options, and I'm not really excited over the UI itself on the Touch, but the hardware. Do Nokia Internet Tablets include an MP3 player with decent battery time? I could import a miniOne from China. Thank you eastern friends!

How quickly can Apple break their high horse's legs?

How to Confuse _ and locals()["_[1]"]

So, after posting about the exception raising list comprehensions, I got this:
Kevin has left a new comment on your post "How to Add Memory Leaks to Python":

Doesn't '_' only exist in the interactive interpreter? Kevin has a misunderstanding here in that there is a huge difference between the expressions _ and the locals()["_[1]"]. You might spot why they are so different, or you might not. The second, the one from the list comprehension, is unable to be accessed by name directly. You can only get at it via the locals() and globals() functions, depending on your scope (locals() always works right after the LC in question, though). The name is intentially something that, if tried to resolve as an actual name in the scope, won't find the object in question. Python will look for _ and then do a subscript lookup on key 1 on it. This is completely different than actually looking up the name _[1] in the dictionary where names are stored and grabbing up …

How to Pretend Zope Doesn't Exist

I'm doing my best to ignore that I just read Well-kept secrets of Zope, which lists all sorts of things I'm interested in seeing developed and how Zope did it. Zope is our Simpson's to South Park's Python community. All of this ORM wild fire and debates about unicode support and web frameworks seem really petty when someone reminds us that Zope, which most of us never really look at, has been doing some of these things for over a ten years. That's practically a decade in software time!

Will I settle back into a comfortable hole in the ground, cover my years, and chant "There's no such thing as Zope" or am I going to bite some pride and surround myself with Zope? The first talk for a CharPy meeting is going to be on Zope, and I'm going to ask a lot of questions about why it gets ignored and how someone really familiar with Python can get into Zope so late into the game. Now, I am not planning to drop everything else. I still think CouchDB has some i…

How to Add Memory Leaks to Python

One of our greatest bragging rights is the lack of memory management in our Python code and the wonder of garbage collection, so when we find a way to get a memory leak in Python, it should be made well known. I don't know if this is already known, or not. In actuality, these situations are known as reference leaks, sometimes, and they are cases where we forget to remove a reference to an object we don't want to keep around anymore. The following session will cause this problem.

Python 2.4.3 (#2, Oct 6 2006, 07:52:30)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def f():
... for i in xrange(100):
... yield i
... raise Exception("oh no!")
>>> [x for x in f()]
Traceback (most recent call last):
File "", line 1, in ?
File "", line 4, in f
Exception: oh no!
>>> globals()['_[1]']
[0, 1, 2, 3,…

Python, Concurrency, and My Two Cents Today

This is not the first and it will not be the last that I write about the state of concurrency in Python, comment about some debate going on in the community, and outline what I think we need to solve any apparent problems and capitalize on what a lot of us think is the future of software development. Anyone following the Python blogs is bound to have caught wind of the Guido-Eckle debate about what Python 3.0 has become, compared to what it could have been. This was followed immediately by an open letter from Juergen of SnapLogic about the GIL. I feel sure this has all happened again and that all parties involved are just playing some recorded macros.

The most compelling case we have right now against the arguments to remove the GIL are two. Firstly, it was already done! A branch of Python removed the GIL many years ago and actually found a two core/cpu system would run the same code slower, due to all the locking involved to protect mutable structures. So, while people continually say…

How to Shop for a Portable Device

What do I want? Do I even need a phone? When the iPhone came out, my first reaction was wishing it wasn't a phone. If I want a touch screen in my pocket, shouldn't I safe money and open my options with a Nokia Internet Tablet? The iPod Touch and the iPhone will be open, eventually. They can be coerced into running new things, already. The Nokia has a huge library of software, and can be made to run linux with lots of apps I already use. The price is undeniably better, of course.

Everything says "Don't get the expensive Apple device," and yet, I want to buy it. I even want the phone model, when I don't want a phone. What great marketting.

If I could find any decently open e-paper device, I'd jump on it before anything else.

How to Exploit All of You For Traffic

People go through a few different stages of programming Python, and one of the last is learning to optimize well and without sacrificing the quality of the code. When a piece of code is bottlenecking, it comes time to look at how you can really turn a turtle into a hare. Or, should that be the other way around?

I want to showcase ways this transformation is possible so I'm going to make a call for anyone to submit code that needs optimized. The next post in this series will show how the code was optimized, what techniques might have been tried and would have failed, and maybe some tips about why the changes worked. There will also be a sample of unoptimized code at the end, with the challenge for improvements to be sent in. From there, if the series has interest, it will continue and maybe evolve.

Send in samples of code you think could be faster. They can be real world or fake, as long as they are realistic. It doesn't matter how poorly written they are, but we need to know wha…

How to Improve on CouchDB

The CouchDB project has been getting a lot of talk lately, all over the blogosphere and in particular in Python circles, who like JSON and REST and are excited at the new move to them from XML. I really liked what I saw. I also knew I could have liked it a lot more.

You know something interesting is happening when someone with my anti-XML track record says the following: XML should not have been dropped from CouchDB.

I can clarify and reaffirm that I am not crazy by saying that this does not mean JSON should not have been added, but that it should not have replaced anything. In other words, both are fine. While we're at it, why does it matter what format the "document" is in? Be it an XML document, a JSON serialization, or a photo, anything could benefit from the basic architecture of CouchDB.

Looking into the details, I'm disappointed that the distribution model is just smarter replication. Something like this really should be able to do sharding out of the box, with i…

Charlotte Python Group: First Meeting

We had the first meeting of CharPy, the Charlotte Python Group, this morning at Nova cafe downtown. There were only three of us, but most user groups only start with a handful of people, and I'm looking forward to how it grows. We're going to keep this going on the 1st and 3rd Fridays, and anyone else is welcome to join us.

Brain Dump 20070904

When things build up and I haven't posted, what to write about is a difficult thing to decide. This is a dump of recent or queued topics just to get them out of the way for new things.

What's Up With This Hip Cat:
Looks like we're getting Charlotte Python Group (CharPy) together, and hopefully having some coffee one morning this week. Let me know if you're interested!I'm stretching my legs at a bigger desk in the home office.I'm trying to consider how to approach an open Python position I found in this area versus a possibility with someone I had a great time working with in the past versus moving to Australia down the road.Knitt and Oasis are great little indie games. I wish I could have taken part in PyWeek, but I am so busy! Pyglet looks interesting these days.Took on a tight deadline project at the same time as work on Python Magazine ramped up, because I'm just that willing to bend over for money.I know I don't write enough. I have to write my column…

Bookmarks for August 5 to 11

Less for More in Media

I think this is appropriate, because my favorite software is a transport for media. YouTube, music downloads, blogs, and web comics are all old media turned new. TV and movies are old and web videos are new. CDs are old and downloads are new. Books and magazines are old and blogging is new. Newspaper comics are old and web comics are new. Why did I single out comics? Because, Scott Adams, of Dilbert fame (who has an excellent, non-comic-centric blog) took fledgely comic cartoonist, Scott Meyer, under his wing. This is old teaching new, and is interesting to watch.

On the first post from Adams, I commented about how many cartoonists might not even want the traditional route of syndication, and will choose to stay with web formats. On part 2, I commented as follows:

It is becoming one of the defining characteristics of the New Media that more people can make less money. To the eyes of the Old Media, this is obviously a Bad Thing. No one gets quite as much attention or makes quite as much …

Why An Empty Inbox Is Terrible For Productivity

Mark Hurst of Good Experience has had a deceptive experience. I feel for his sense of accomplishment, but I'm here to let him and everyone know that an empty inbox is a terrible recipe for lost productivity.

It was incredible. It was so stunning to me. I had written off the idea of ever having a totally empty inbox.

- Mark Hurst The problem here is a subtle lie that none of realize we tell ourselves or others when we talk about the virtues of keeping a clean inbox. The word "inbox". I did all of this some time back, and I was really excited, just like Mark. It wasn't long before I realized I had only made things worse.

Some people may know that I slowly slipped away from Python-Dev lists, and what you wouldn't know is one of the key causes to my lack of participation in mailing lists for some time now. The problem started when I added filters for all my mailing lists and started regiments to empty out my inbox to 0. I sat, looked at my wonderous empty inbox, and spen…

Pausing in High Definition

This is a tale of the worst customer service I have ever been witness to. I am the victim in the story. Were it not for my love of On Demand, I would have been on the phone with DirectTV days ago. I'm still considering, but it depends on some things.

All I wanted was High Definition television and a DVR box from my new cable company. Now, for background, I am renting my current house from my mother-in-law, to keep the house for her, while she works a temporary position with her company's training infrastructure. We're trying to keep as much as possible in her name, so that her move back is easier.

Here is the tale, in bullet point:
Call and schedule an appointment and backup appointment for HD DVR and a cable modem installation.Miss the first appointment and figure they were busy.Call first thing on the day of the backup, to remove the cable modem from the order. The phone company gave me a discount to keep the DSL, that saved me more than a bundle from the cable company.Find…

Me, Too, Python Magazine!

Thankfully, Brian Jones has finally went public with the Python Magazine he is launching. Why am I so thankful for this? I can talk about it now, and how I'm a technical editor, columnist, and will most likely author an article some issues aside from the column. The working title for my column is "And Now For Something Completely Different" and I think I will stick with that.

It is all very exciting. Being a huge fan of education of and through Python, the magazine is really fantastic in my eyes. Whatever I can do to help it along and turn it into a positive move for the community is worth the effort.

Keep your eyes out here for a surprise about the magazine before the first issue comes out.

See his original post:
Python Magazine Lives

Technorati Tags: , , , ,

Page Chunking, Like Chunky Milk, Is Bad

Search results suck past the first page. Google might have a billion results for some search, but it won't give them all to you in the result page. You are probably only interested in the first five or so results. To be nice, you get a whole ten results on the page. If you want more, you need to go to page after page of ten results at a time, possibly millions of pages worth to get every single result. Obviously, you won't do that, and for two reasons:
You don't care about all ten of the results on the first page, much less the thousands or millions of other result pages.Refining your search is far easier than going through one page at a time.Having or bringing the information you want to the top of the listing is better than looking for it further down in the listing. That being the case, our solutions should center around making it easier to bring information up from the mountain of results, instead of finding ways to bury you inside of it.

Some interesting headway has bee…

Validation for MySpace Hating

The hating of MySpace is not unique, but any professional-seeming information to back it up is rare. The findings are probably dead on with what I would expect, and I don't even see Facebook or know anyone on it. I do see the people on MySpace and the kind of people that I definitely do not see there. Social classes in the United States are always interesting, because there is a different dynamic than the expected class lines. Although, income certainly comes into play, it is not the definitive factor.

After reading about the division it reaffirms my desire to use Facebook. However, I don't know anyone on Facebook. All of my friends are on MySpace, including those running their own businesses, those with families, any of the younger members of my family, and the ones making far more money than I. The social divisions that mark MySpace are also what tie me to it.

apophenia: viewing American class divisions through Facebook and MySpace

Factual Google

Google is building fact mining into the search engine. Coming across a little article over at The Best Article Every Day, I got wind that Google Spreadsheets can do lookup of certain statistical and financial information. You can have formulas that include things like the latest Microsoft stock quote or the boiling point of sodium. This seemed interesting, so I played with it a bit, but changing the formula quickly to play with it was awkward. "Can I just Google this stuff," I thought? Yes. Read on for my findings.
The documentation for the Spreadsheet function, GoogleLookup, talks about entities and attributes. "Pluto" is an entity and "mass" is an attribute. As it turns out, you can just search for "mass of Pluto" or "birth rate in Canada" and are presented with a new type of search result.
We can see that Google seems to be pulling facts from the websites they index. They are structuring the information into subjects and properties ab…

The Stand Up Desk

My back and legs hurt, but this might be a solution: the Stand Up Desk. There are different ways to implement this. Some people shell out the money for adjustable desks. You could place a shelf with an extra monitor and keyboard at standing height and attached to your machine with splitters. I'm looking into the kind of adjustable mount arm attached to portables in hospitals, to install behind my desk and allow my screen and a set of keyboard and mouse to adjust up easily, without the rest of the desk needed. I think alternating sitting and standing will be nice. Until then, I'll stand up to read.

The Stand Up Desk -

Implicit Interfaces and the Web

The best interface to software might be doing nothing at all. Implicit interfaces are gaining mindshare. This is not a new idea. Amazon improves your experience based on your habits, for example. Google increasingly employs subtle, personal weighting of our search results. In The Implicit Web, Alex Iskold talks about the services of Amazon, Google, and All of them take advantage of the implicit actions of their users. lets us track, publish, and find songs we listen to and like, and after installation, I forget it most of the time I use it.
Implicit Today
A number of services have risen that really should be implicit, but are not. This might be caused by implicit interfaces' very nature of being unseen. Although they can be wonderful ways to interact with our networks, they are difficult to deploy. Developing the algorithms to translate user behavior into user interaction, without hindering the user experience, can be difficult. Even coming up with an idea for emplo…

Google Your Spellchecker

Feature volume rises as applications and services merge and soon we will need the power of Google within single applications. Of course, there are reasons for this that lend to the idea that we will not have single applications in the future. As applications migrate into services, and services combine and interact, the whole of software is evolving into a massive software ecosystem. Every state of software can be integrate, broadcast, and pull from a host of other global services. The number of "features" available at any point is rocketing into unimaginable heights. Until we can automate the integration, filtering, and aggregation of the mass of services we have for working with the same data set, we do not benefit as fully from their availability.
Jeff Atwood brought this up in context of Office 2007's Ribbon and the Scout plug-in that may not see the light of day, for internal political reasons at Redmond. The apparent story is that adding a feature to search their int…

Office 2007 and Blogging

I finally started running my copy of Office 2007, and I wish I had abandoned Open Office earlier.
Everything is a lot more snappy and responsive than I expected. The common wisdom of each new version of Office requiring hardware upgrades seems unwarranted in face of this. Certainly, it is furiously faster than Open Office. I don't expect to make as much use of Google Docs and Spreadsheets, either. Word is taking up 20 megabytes in memory, while Firefox is eating 300 MB. Which one I prefer to keep running is obvious.
Now, I tried to write blogs with Open Office, but I found no plug-ins to get it to post to Blogger. You would really think I could use Google Docs, but somehow they don't properly support posting to their own blogging service from their own word processor service! Multiple blogs on one account is not supported. Posting draws the title from the first line in the document, even if the title is present and differs from this, meaning the title appears repeated in the fin…

Object Orientation Has Little to Do With “Objects”

I would like to declare that the word "Object" from "Object Orientated Programming" is damaging to any benefits. If this seems counter-intuitive, you should keep reading. This is a case where the title is harmful to the subject. Some people take things too far and imagine some requirement for the concept of an object, and forbid anything outside their definition. If we understand the real benefits of OOP, the inappropriateness of such object-enthusiasm becomes clear.
Do objects matter? Using a traffic simulation example, we'll say we have instances of a Car class. We add lots of methods, such as accelerate(speed_diff) and implement logic to stop the virtual car at a virtual red light. The non-OO alternative would be functions operating on data describing the state of the vehicle. When we add motorcycles, we non-OO version requires a new function to operate on the new kind of data; or, so we are told. We know the OO way of doing things is to create a Vehicle cla…

The Software Prosumer

The affects of prosumerism are well documented in the evolving economy of content, but the pattern applies equally well and valuably to software creation.

You are most likely a consumer, and if you're an American you think that is a Really Good Thing, most likely. The producers pushed that, and benefit from it. That is not to say we don't benefit from the relationship. Have you seen the price of tube socks at Wal-Mart? I can live with that.

Nonetheless, someone always has to complain, attack the norm, and think they know better. Anyone betting on the dominate future of the “prosumer” is likely right on that current negativity. We don't just read the news. We filter, amend, and combine it. Every novel today spawns even more words of fan fiction. Slashdot1 would be completely worthless without their prosumer users. The barriers between those who produce and those who consume are blurring and the two are mingling. The party is just getting started.

Prosumerism in Software Develo…

Advertising Forgot You Remember

Do you remember when you were walking down the street and you saw that billboard for an injury law firm, so you punched the billboard and were teleported magically to their offices?

How about that commercial break during an episode of Friends, for a brand of tooth paste. Do you remember kicking your TV and bottles of toothpaste falling out of it with the shattered glass and smoke?

If you don't remember these events, why do online advertisers want you to hit their banners right then and there, which is so different from how you are used to getting advertisements? Because, you know and they know, that if they do their job right, you'll remember them later, when you need to.

In this light, I propose a new advertising model for the Web: AdMarks. I see ads for things all the time that I would buy, or want to buy, but that doesn't mean I can buy them right now, or have an immediate need for them. I'm not about to follow the banner, open a new window up, read about it, bookmark …

Python, IronPython, Apples, and Oranges

While Fuzzyman is over at the voidspace, talking about how great it is that, in IronPython, str and unicode are the same things, I'm over here getting more worried every day about the segmentation of Python and IronPython.
IronPython is a new implementation of the Python ... maintaining full compatibility with the Python language.From the IronPython homepage.

They should go ahead and drop that last qualify. I want to make something very clear, and that is that I absolutely hate writing this post. The IronPython project is really great, and I've been impressed by what it has done, and my Microsoft's embrace of the language. Admiration does not trump worry, in this case. A number of issues make IronPython simply not Python. I've been advocating this issue more and more recently, so it is about time I wrote at a moderate length about the issue.

In IronPython, str is unicode

Now, it may be true that Python plans to drop the current behavior, make str unicode, and add a separat…