Kuroko Project
chilling and grilling

Mar
31

So after wasting spending a few days checking out other test frameworks for Ruby/Rails, I’ve come up with this:

Rspec:
The Textmate plugin is barely useable; it appears to have a completely different manner of loading files versus the standard spec command(placing a spec file next to its target and doing a simple ‘require’ worked for the spec binary; the Textmate plugin waves its hands desperately). Wolf howls and tumbleweed are all that is received from asking about it on the #rspec IRC channel.
The bundle works OK under Rails,but of course now the simple use of cache_fu is freaking it out when coming to fixtures(and not even guarding the acts_as_cached statement with ‘defined?’ works because rSpec hooks into Kernel and does all kind of crazy voodoo).
This post gushes about “rspec leaving TDD in the dust”, I’ll believe it when some more consistency is gained.
rspec’ers are going to accuse me of being another idiot user who can’t set up their system correctly. I’ve setup Mysql multiple times(binary release, DarwinPorts, Macports, version) and made countless other mistakes(and fixed them) on my G4 laptop since 2004; I have a hard time thinking that some obvious mistake I’ve made is gumming up the works.

Shoulda would be a nice alternative(plugs into existing test/unit, but it depends heavily on autotest, and autotest still petulantly refuses to believe in namespaced Rails controllers, despite the availability of a patch. I may try updating the patch in the next day or two and giving it another go, but after two days and negative productivity gains, my gut feels like sticking with Test/Unit and friends, because They Just Work. And Just Working is rated higher in my book, no matter what sexy new features are in abundance(like mocking/stubbing)

Mar
11

Last Monday, the Rails pseudo-content-management-system that I’ve been working on for the past nine months went live at the Yakima Herald.com, replacing a 4-year old system that ezmobius designed as his first Rails project.

This one’s brand-spankin’ new: Rails 2.0 from the get-go, fairly proper REST(where possible), using a dedicated SQL database, adherence to clean design(again, where possible), and copious use of plugins.
(current favorites: has_finder, thinking_sphinx, acts_as_state_machine, will_paginate, and acl_system2).

Granted, there’s still holes, and I’m already working to fix some poor architectural assumptions I made four months ago, but the newsroom is breathing relief at not having to jump through server hoops anymore(which weren’t ezmobius’ fault so much as limitations of tech and budget at the time).

Now eagerly waiting to see if I merit one of the expected Internet replies:

  • “Newspapers are no different than blogs! You’ve wasted your time reimplementing Mephisto! You’re dragging the rest of us Ruby folk down by not implementing something new that nobody’s ever seen yet!”
  • “Man, Rails isn’t really cut out for building a CMS. Why didn’t you use Drupal or Django? Fail, dude, fail.”
  • “Obviously your paper has money to throw away if they let you sit around for nine months instead of buying Ellington!
  • “you use rails haha i could hav don it in a month with PHP u suk”

My human brain needs beer now.

Feb
16

So the public version of Audio Surf has just been released as a Steam app. As you can see, it’s already becoming addictive for replays in addition to beating other people’s high scores(someone’s already beat my score on Deltron 3030’s “Battlesong”).

Of course, there’s potentially one problem for some people: the default distribution is not compatible with Windows 2000. Rather than being the use of an XP-exclusive technology, it’s because of the XBox360 pad support, the DLL of which is compiled against a slightly higher DirectX version than Microsoft allows for Win2k. Fortunately, there’s a quick way to fix it if you don’t mind doing some hex-hacking.

Standard disclaimers: do this at your own risk, not my fault if your computer bursts into flames while the “Psycho” shower-scene music plays, etc.

0. If you don’t have a hex-editor, I recommend HxD.
1. From the root of your Steam directory, find this file: SteamApps\common\audiosurf\engine\xinput1_3.dll
(it’s probably wise to copy it somewhere as a backup, just in case). Open the file with your hex-editor.
2. Find the string “TraceMessage”. There should be exactly one occurence.
3. Replace it with “GetUserNameA” (case is important). Save the file.
4. Start Audiosurf, and you should be good to go!

Now, to start working through my JAM Project songs..

Jan
09

In the wake of the Intel-OLPC fallout, the chief designer of the OLPC technologies asked Groklaw about ideas for an open hardware project. Even better, it made me aware that OLPC itself is still an ongoing process, rather than being cut-n-dried.

To me, this tickles my inner-struggling-hardware-geek in a really good way. Not just in Jepson’s commercial efforts in the “making components public and affordable” part, but also in her advocation of the “we’ve got no vendor secrets, here’s the exact part-list, schematics, and source-code” method of development.
Of course, making it open isn’t a guarantee of success(OGP, OpenMoko), but it’s a nice perceptual move away from the Wintel alliance’s long standing policies of “we know what’s best for you, and there are no user serviceable parts inside”.

(Yes, my reading list for the past two months has included Stross’ Halting State and Vinge’s Rainbow’s End)

Powered by ScribeFire.

Jan
07

_why had a neat post on Io today, showing off a cool introspection+meta trick that I wasn’t aware of. And since it’s _why, the Io mailing list has shown another flurry of activity, which I’m hoping will snowball into another group of fresh users, to eventually reach that goal of “1.0″..

Interestingly enough, Io was the language I learned right after Ruby, for much the same reason: trying to get a good grip on concurrency in simulation environments, after too much exposure to UnrealScript.
 (And along those lines, Thunder and Lightning still stands as the only major game project using Io as a scripting language).

Jan
05

So, Zed spewed. Since I guess I’m now a Rails “professional”, I guess I’m supposed to have some sort of up-in-arms opinion.

I really couldn’t care less.

Once you pick up that Zed writes in a deliberately provocative manner, reminiscent of the SA Forums, the rant’s main points boil down to his personal experiences with consulting, and elements of the Rails community being too uptight.

The only thing I found really entertaining about the affair(outside of the Rubinius praise) are the responses popping up on mailing lists looking to move away from Mongrel, because they just can’t trust software written by a person who posted “something like that”. If your sentiments are similar, I hope you’re not using OpenBSD(Theo), ReiserFS(Reiser), or anything GNU-related(Stallman)

In my professional life I’ve had to use a lot of software I considered brain-damaged(custom Java object-frameworks, antiquated news databases, PHP), but the dislike almost always stemmed from experience with the software itself, not the person/teams behind it.

Nov
29

“Use Fink until it pisses you off, then switch to DarwinPorts. That’s what everyone else seems to do.” : from jwz’s blog.

“Indeed”, he said, as he executed “sudo rm -rf /sw” on his developer machine at work.
(That’s not to say MacPorts is a utopia free from stupid issues though, it just seems to guarantee more consistency).

Nov
28

One of the things I’ve noticed is that most OSX hints for setting up anything in *nix-land tell you to add path statements just to ~/.bash_profile, usually assuming that you’re working on your own machine. But if you’re ssh’ing to another OSX(or -nix based) and set up the path in the same way, this will probably cause vlad(and capistrano, I guess) to fail with “command not found”, since they use a non-interactive shell to run commands. There are simple fixes: enable PermitUserEnvironment in your /etc/sshd_conf file. Which works, but 1: it’s a potential security hole(paranoia, a game we all can play!), and 2: it’s overkill, because having your path in ~/.bashrc is the proper way to do it, as pointed out here.

Sep
19

I had bullet points for a Visual Studio rant after wrapping up the C# side-project that has consumed my summer, but this guy already said much of what I wanted to say.
About all I can add to it is a harumph at Microsoft documentation: yes, MSDN is obviously a force to be reckoned with(if you can pay the entry fee), but it’s tedious to play the back-n-forth game of “look up the actual API via IntelliSense, and look up actual examples in MSDN’s clunky public web interface / hope that a google search for the control will return more than a ‘getting-started tutorial’ that covers what MSDN already did”.

Contrast that with How To Learn Cocoa, Cocoa Dev Central, and Apple’s own Cocoa Reference Library. All free, fairly well written, and more than enough to get you started with basic Cocoa apps.

Meanwhile, discovering exactly how to fire events from buttons in .NET took up most of a week’s evenings.

Aug
27

And lo, the Visual Studio build tool did proclaim to the masses, “Interop.Photoshop8.dll” and “Interop.Photoshop9.dll” both declare “ps.Application”. And there was much wailing and gnashing of teeth, for another clever approach had failed.

(seriously, if anyone knows how to get multiple interop DLLs for a single interface to play together in VS.net, or alternatively, why an older interop DLL would not be able to invoke a newer version of the same interface in COM, please please please let me know)

Edit(2:09AM): hurr, if you build the object library manually with a different namespace, you can use both. Of course, now this opens up multiple namespaces for a single set of actions, but that does reduce it to a design issue rather than a “bang the rocks together” issue..