Feb 23 2008
images only
for the next week, I’ll only be posting images to my flickr feed …
Feb 20 2008
To the spammer who is forging emails using my email address:
I wish upon you a painful, itching, blistering pox of your nether regions, Coprolalia upon your lips so that the world may hear from your lips what I think of you, debilitating tinnitus for your ears so that can’t otherwise hear the world, and perfect vision so that you can see the result of this work for the rest of your years.
In short: fuck you and the horse you rode in on.
Feb 20 2008
Megan McCarthy writes Bill Gates Touts Free Developer Kits, Global Progress in Stanford Speech | Epicenter from Wired.com in which she links to the press release from Microsoft:
“Microsoft founder Bill Gates talked about the future of technology and the advent of, as Gates puts it, ‘the second digital decade’ in a talk Tuesday at Stanford University’s Memorial Auditorium. The ex-CEO, who plans to leave day-to-day work at Microsoft this year, also highlighted his company’s plan to release Microsoft Developer kits free to students, in the hope that they will help make ‘huge breakthroughs’ in technological research using the Microsoft platform.
Not mentioned during the hour-long speech: Yahoo.”
It’s not too late, but it is far, far too little. Wether Microsoft wants to realize it or not, the vast majority of development tools have been completely commoditized. Apple gives away an incredible tool chain for developing on the Macintosh, the Linux tool chain has been free for years, Eclipse is continuing to put the hurt on other IDE’s in the java development space, and even specific components of the java development process (what I’ll consider the long standout of pay-for tools) are under threat by open source alternatives. It’s another market place that is getting commoditized by open source, and it’s one that developers know extremely well. It is finally that rare domain where developers are both the generators and consumers of their product.
Presumably Microsoft is opening up it’s development world to students for that time honored tradition of getting the poor SOB’s hooked on their kool-aid. And let me say here - it’s actually pretty good kool-aid. I have a lot of respect for the work that Microsoft has done with their tool chain and Visual Studio in particular. Sometimes I’m confused by the too-many options in just choosing what the hell to install, and I think there are flaws with what they’re doing other than that - but it’s a very effective environment if you’re sticking entirely to the Win32/Win64 development world.
What they need to do it just open the whole thing up to everyone. No “student” caveat, just open it. They’ve already started this process with their “express edition” of the tool set, they just need to finish it. Either that, or break up the pieces that they consider as “adding value” with the bizarre editions thing they have going and let people purchase and add on in pieces that are well defined and clear.
There are some load testing tools, for example, in the Tester edition of Visual Studio that aren’t available in the Architects edition. (How’s that for indicative of what’s fucked up with Microsoft’s development process?) Those load/performance testing tools are really quite good - assuming that you are load or performance testing Win32 based apps. If you’re doing ASP.NET stuff or ISAPI plugins to IIS, for example, they rock. If you’re testing on other platforms, they still pretty decent. So that is a piece where you can see some clear value. There is open source in that area, but they’re ahead of the game in the niche of Win platforms and integration with the development environment. That component could easily be a clear win.
The dark secret of all this is that most development organizations that I’m aware of just throw up their hands and purchase into MSDN to get these tools. I can’t even imagine how the accountants in Microsoft deal with the money back side of this. It may be that the develop tools are already considered loss leaders inside the big house and they’re not giving them away to keep up revenue through MSDN. Then again, don’t you think that the MSDN value should stand on it’s own? Come on Microsoft - just give away the tools and get on with program…
(Via Epicenter from Wired.com.)
Feb 14 2008
I made some notes on getting Review Board up and running. I thought they might be useful for someone else wishing to do the same… I implemented review board on a virtual machine, with the VM running Ubuntu Gutsy. I highly recommend getting the basic setup from the GettingStarted page on the reviewboard project wiki.
Review Board includes an automake setup solution, but I didn’t take advantage of it. Partly because I felt comfortable setting up a Django project without it, and partly because I didn’t clue in that it was there and I should use it until well after I’d begun fiddling with all this.
From those basics, here’s some additional tidbits
mysql -u root -p (enter password) create database reviewboard; GRANT ALL on reviewboard.* TO reviewboard@localhost IDENTIFIED BY "sup3rsekret"
# Database backend. Any supported django database engine should work. DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_NAME = 'reviewboard' # Or path to database file if using sqlite3. DATABASE_USER = 'reviewboard' # Not used with sqlite3. DATABASE_PASSWORD = 'sup3rsekret' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. DATABASE_PORT = '' # Set to empty string for default.
cd reviewboard ./manage.py syncdb (create an admin account when asked)
I configured my setup using the provided mod_python template - the Makefile setup system seems to include provisioning it, but I did this all by hand.
Running as mod_python means that the account accessing perforce was “www-data” by default - a user that isn’t normally enabled in our Perforce repository. I worked around that issue by handing down additional perforce specific environment variables:
SetEnv P4USER readonly-account
SetEnv P4PORT p4.server.com:1666
SetEnv P4CLIENT reviewboard
SetEnv P4PASSWD xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Place this at the root of your tree. Post-review starts in the current directory and scans upwards to find an instance of this file to know what to do…
# Default Review Board Server REVIEWBOARD_URL = 'http://10.0.0.25' # Per-repository Review Board servers # TREES = { # '/path/to/local/repo/checkout': { # 'REVIEWBOARD_URL': 'http://whatever' # } # }
One other thing of note: post review is sensitive to the Diff Headers in trying to pull out the date. We were using an old version of diff and it had some real trouble with that. We updated to using diffutils 2.8.7 to resolve that.
Feb 09 2008
Until I moved to Seattle seven years ago, I had no idea what a caucas system was. I participated in the caucus for the last election, and today was the caucus for the primaries in the ‘08 presidential election.
Caucasing is a messy, chaotic, noisy, and visceral way of voting. The democratic party determines 100% of it’s electoral delegates in Washington from the caucus system.
It starts out with everyone more or less cramming into this huge room. The turnout this year was significantly higher than 4 years ago - I remember we could all fit into the school gym last time, and we had to break out almost immediately this time.
We organized by precincts, and signed in. As you might imagine, most of the trouble was just finding out where the hell you were supposed to go and what you were supposed to do.
We then break down into our individual precincts (precinct 1744 of district 36) and get into rooms where we can sort of hear each other. At this point, each precinct has a number of delegates we’re going to shove up to the next level of this process, and we need to decide among them.
In our case, we had folks support Obama on one side, Clinton on the other, and a few undecided (of which I was one) fence sitting in the middle. Our precinct had 6 delegates to kick up to the next level, and the math worked out so that the undecided crew didn’t have enough folks to warrant a delegate of our own. Of interest is that if you do have enough “undecided”, you can send an “undecided” delegate up to the next level of the caucus system.
After much chaos, a few miscounts, and a discussion around the specific mathematical process of assigning our six delegates, we finally picked up. Then it was picking the individuals that would be those delegates, and signing everything up.
Our precinct sent 4 delegates for Obama, and 2 for Clinton. The next level of this process apparently happens on April 5th, but I expect that number to hold reasonably true across the area. From my walk down to Queen Anne Ave and back, I heard lots of people talking about the caucus numbers, and there were a lot of “4 obama, 1 clinton” and “4 obama, 2 clinton” kinds of numbers being bandied about. I guess this city just leans towards being a Barack Obama kinda place.
Feb 08 2008
I’ve been meaning to dive into the project ReviewBoard since I first heard about it, many months ago. I had first heard of a similar critter - Google’s internal tool called Mondrian. I was pretty darn excited about that tool when I heard about it, but Google’s not making any of it available. Instead some of the fine staff at VMware (fine products that I use, even if they do seem a tad overly ‘proud’ price wise of their enterprise server products…) made it available. More than made it available, actually - as they’re hosting it, developing it, working it, and making it real with Google’s informal help with code hosting.
I pulled down all the parts and pieces. Getting p4python all set up was a bit of a trick, but the wiki had good hints in the right direction to get me rolling. Just spending a few hours with it, I found a few little quirks, and I’ll be adding more back into the project as I find things - might as well, if I’m debugging and fiddling to get things to work anyway, it seems only right to share it back with the community.
So the first thing to note is that getting a ReviewBoard instance set up isn’t really documented on the wiki as yet. GettingStarted, and UserBasics gives some hints, but you’ll still need to read a little code to get it all happening.
Here’s what I’ve got for the first takeaways:
./manage.py syncdb” to get the database schemas all in place and rolling.p4 info“. When I first set things up, I didn’t realize that. The server name we use internally is different than the data presented in “p4 info“, so that took me a bit by surprise.There’s more, I’m sure - but I had to deal with other tasks this afternoon, so I haven’t yet got the basics up and functional. I’ve at least submitted a bug that I was sure wasn’t just a quirk of my somewhat odd development environment. Something that looked like a re-factoring edge case that just hadn’t been caught yet. I included a patch to fix it - although to be honest, I’m wasn’t sure if I should be submitting that to a ReviewBoard instance someone or not, just I just shoved it into the bug.
I think one of the most impressive things about ReviewBoard is that it supports a nice mechanism, and some example scripts, for doing a pre-checkin review. I had naively assumed that I could only get the discussion/review aspects in a post-commit mechanism - without ever even really looking at the project. While I haven’t read the post-review code in depth, it’s pretty clearly set up with the ReviewBoard server as something where a client could significantly help out with this work.
So it’s not smooth and super easy. Yet. To be fair, the devs don’t say it either, and they’ve got a wiki, issue tracker, and all the code available… so really its just a matter of time before I get it working to suit me. I’m really glad they’ve made this available at all, and I’m looking forward to seeing if I can really make it sing.
Update: The answer is yes - you should submit updates and patches to the reviewboard at http://reviews.review-board.org/.
Feb 07 2008
I slapped together a virtual machine to try out an instance of ReviewBoard. It’s been a little while since I fiddled with Ubuntu, so I grabbed the latest server release(7.10) and set it up. Then I settled in to get all the various python pieces I’d need for django… On a lark, I tried
apt-cache search django
… and sure enough, it came back with a hit.
I had a development environment set up in minutes with the following:
apt-get update apt-get dist-upgrade # dev environment apt-get install python-django python-pysqlite2 # running with MySQL apt-get install python-mysqldb mysql-server-5.0 mysql-server python-egenix-mxdatetime
Nice!
Feb 06 2008
In fiddling with ruby, I noticed that the method names can be really interesting - rails (maybe others too, dunno) has some methods that look like:
object.stop?which is typically used to return a boolean indicating wether or not “stop” is true. Ok, cool. Another interesting method call is
object.closewhich appears to be identical to
object.close()
. That part really confused me, and I’m still not sure I have it completely clear.
In python
object.close
and
object.close()
are two very different things. The first is a reference to the instance method close - which you can pass around. The second is a specific invocation to the instance method. In ruby the parentheses appear to be optional if there are no arguments getting passed in to the function.
Update:
Dave Slorah pointed out that the parantheses option thing extends beyond just the no-argument methods - it applies all over the place!
irb(main):010:0> def foo(bar,baz) irb(main):011:1> puts bar irb(main):012:1> puts baz irb(main):013:1> end => nil irb(main):014:0> foo "hello", "world" hello world
My first thought it “Wow - that’s almost Objective-C like…”
Feb 04 2008
I’m heading to see Jake Shimabukuro at Jazz Alley tonight. I’ve seen Jake play two other times, and this guy is just amazing. If you ever get a chance to hear this guy spin out some tunes, go listen. While the instrument he uses is a ukulele, you’d never know it from what you hear. I think of him very much like Bela Fleck on a banjo - the stuff that comes out is just beyond all the expectations of what you normally think of for the instrument.
Update: Truly incredible. I picked up a couple of his CD’s after the show and met him. He’s an incredibly self effacing guy, at least at a first impression. We got a great seat - maybe 5 feet from him against the stage and watching him play was amazing. Like I said before, if you ever get a chance to see this guy, go do it! Jazz Alley - Monday night - sold out. Just incredible.