November 2007 Archives

Dear Intarweb...

| 5 Comments

Somewhere, back in the mists of UI design, some bright light came up with the idea of making options in an application or desktop environment selectable by using a mouse to point at a menu along the top of a work area, clicking on the menu, and having it present more options.

This was called a 'Pull down menu'

Handy! Picks were readily available when needed, and stayed out of the way until requested.

I'm fairly sure the original designers of menuing systems never said to themselves, "Hey guys, I think it would be a good idea to SHOW A PULLDOWN MENU JUST BECAUSE YOUR MOUSE HAPPENED TO ROLL ACROSS IT ON ITS WAY TO PAUSE YOUR MUSIC!

I'm flabbergasted that the 'popup menu' has become de rigeur in web pages. It's a terrible UI design, and consistently gets in the way when trying to do other things. There's no other menuing system on the planet that does this. Menus should show up when you ASK for them, not because you happen to TOUCH it. That's what the little button the mouse is for. See? Clicky clicky. Now you try it.

Not that I expect this to change anytime in the near future. There's a revolution going on in UI design now, with AJAX services redefining what it means to write a UI. Unfortunately, I have yet to see any AJAX application that comes near the functionality of existing systems. It appears programmers are going back to 1985 and starting over, thus jettisoning all the lessons learned in the last 20 years.


Facebook. Am I missing something?

| No Comments

Dave Belfer-Shevett's Facebook profileSo I have a profile on Facebook. It's been enjoyable fiddling around with the apps and linking up with other folks, and all that has been peachy keen. In particular, I rather like the Twitter-esque 'Status Updates' that folks can use to say "I'm home, and eating sushi" or whatever else strikes their fancy.

The problem is, I frequently see a Status update where someone says "I'm feeling down" and what I really want to do is go "Oh? What's up?"

But it appears the only way I can do that is to:

  1. Click on the users name to go to their profile
  2. Click on 'Send [user] a message'
  3. Type a subject "So you're down?"
  4. type a message
  5. hit send

This doesn't seem like the interactive social structure I was looking for, where I could simply follow up on something I see with a "hey, what's up?". A message sent as above has no context, is not attached to the status update, etc etc.

In fact, Facebook seems structured in a way to NOT encourage that sort of spontaneous communication. It's more geared to "Lets funnel people toward shared functions or applications" as opposed to "Lets make it easier for people to communicate."

What am I missing? The initial funness of the site is starting to wear off a little bit. There's zillions of people on Facebook. What keeps them there?


Google Sketchup - Okay, this is cool

| 8 Comments

I've been having fun playing with Sketchup, Google's 3d modelling system. At first I avoided it because there was no native Linux version, even going as far as to get it to run under Wine (a process that... well, didn't fail completely, but did result in a tool that's unuseable - invisible menus, etc).

After biting the bullet and installing it on clipper, I set about learning what it could do. The project I had in mind was to model Mosaic's building site in Berlin, MA, so folks could have a feeling for what it would be like walking

There was certainly a period of mental adjustment. After all, it's not easy trying to model a 3d object using a 2 dimensional input and display method. But after a while, the keyboard shortcuts began to come naturally, and I found myself enjoying manipulating objects in this non-existent space.

I'm probably halfway through things so far. I'm regularly updating the drawing in 3dWarehouse, Google's sharing service for Sketchup. If you have the tool, feel free to download the drawing so far...

I'll let folks know when I'm done. But Google. Please? Make a Linux native version. You've already got Windows and Mac. This can't be that hard.


Linksys router upgrade

| 2 Comments

Nothing like a nice quiet thanksgiving weekend to take it easy around the house, enjoy some quiet time with the family, and... UPGRADE YOUR ROUTER!

Our Linksys WRT54g has been happily managing our net connection for about 2 years now. I've been noticing some twitchy problems with it off and on (about once a month it stops handing out DHCP addresses, we have to reboot it), and it has shown other small problems. The final straw came about 6 months ago when I realized I had lost the administration password. This meant I couldn't even log INTO the router to find out what was wrong with it. Something had to be done!

(6 months later)

Okay, time to fix it! I reset the router (holding in the reset button for 10 seconds does this) which resets it to factory defaults. The default password on Linksys routers is just 'admin' in the password field (surfing the neighborhood? See an SSID of 'linksys'? Hit 192.168.1.1, and try 'admin' in the password field. Welcome to someone's router! - some versions of the linksys may require admin in the username field as well).

The first thing I did was confirm that I could log into the router and that default configurations worked with our Comcast cable modem (they did). After resetting the password and the SSID, I took the opportunity to upgrade the firmware in the router. And I'm super-happy I did.

The firmware I was using was v 1.00.02. The current version is 1.02.2. The number of 'fixes' between those versions? somewhere around a bazillion. On the one hand, I do appreciate that Linksys is actively updating their firmware. On the other hand, that's a lot of bugfixes for a router that's only 18 months old.

I'm seriously considering checking out DD-WRT, the opensource firmware for the WRT54G. It has a truly impressive feature list, including native OpenVPN client and server support. Unfortunately, my router is a Version 6, which only has 2mb of flash in it. That means I can't run fit a larger firmware image onto the device. Alas. Maybe I'll eBay an older revision that has 16meg in it.

For now, I'm back up and running, and hopefully won't have my roomies having to fight with constant connection drops and router resets.


OLPC G1G1 Program netting $2m a day

| 1 Comment

As reported on Engadget :

Negroptone's OLPC Buy One, Give One program has been extended to 31 December, 2007 -- well beyond the initial two-weeks originally announced. The deal buys both yourself (or rather, your kid supposedly) and a tot from a developing nation new XOs for just $399. Already, the non-profit claims to be pulling in about $2 Million worth of "donations" each day. They've also opened up bulk buying to schools in quantities of 100-999 ($299 each), 1000-9999 ($249 each), or 10,000 and more ($199). Oh, and the program is now officially renamed "Give One, Get One" (GoGo) -- we presume BoGo'ing the kids just sounded a tad too dirty.

We ordered one for Zach already, and I'd been curious about how the sales were going. Folks on the #olpc Freenode channel were saying that the manufacturer would build based on orders, and if orders were slow, they wouldn't ramp up the daily production. But it looks like things are moving briskly.

Yay!


Dear eBay. Fix your HTML. Again.

| 3 Comments

I know you're the largest online auction house on the planet. I realize that despite the bazillions of dollars you rake in on a yearly basis, you still haven't been able to hire a single competent site designer, and after 10-ish years of operation, your site still looks like it was hacked together by a business major playing around with Microsoft FrontPage.

Requiring ActiveX when selecting images to upload is patently ridiculous, particularly when my browser signature specifically says I'm coming from a Linux box.

c.activeXVersion = '1,0,3,48';

You'll be receiving a bill shortly for the 20 minutes I spent booting my Windows machine, moving images over to it, and recreating my auction from scratch.

Luv, me.


Life snapshot...

| 2 Comments

"Dad?"
"Yeah zach, what's up?"
"I'm posting something in a forum, how do you make a link?"

(Dad pauses here, thinking scary thoughts about open forums, but willing to check it out...)

"What forum?"
"OneMoreLevel"

(Another pause to check it out - chats about online games. Okay, this seems innocuous enough...)

(details about how to make a PHPBB link in a forum post)

"Oh, that's easy, thanks!"
"Enjoy!"

sakkura. My son. Am I ready for this? I mean, he's already talking smack to other players :) :) :) . Not sure if this should make me squee with glee or totally give me the heebee jeebees.


Settlers

| No Comments

Settlers
Originally uploaded by eidolon
Back from NJ, a few friends over, family together. Let's play Settlers.

It's good to be home.

Mame Cabinets - Things learned thus far

| No Comments

Blk and FroggerWe're about halfway through the whole Mame project hullaballoo, so, since I inflicted my Mame cabinet on Ubercon a week and a half ago, it's really only fitting I take a few minutes to contemplate the lessons learned so far.

First and foremost, I have no regrets embarking on this whole rigamarole. It's been a tremendous amount of work, but it's work that's resulted in something tactile. I can point to the cabinet and say "See that? I built that. And those folks gaming on it? Yep, they're enjoying themselves because of my handiwork. Rock on."

That's not to say the path hasn't been without it's bumps and bruises. None of the decisions I've made so far are gruesome enough to regret, but it's certainly time for a bit of reflection. Lets see what's working, and what isn't.

Works

Lets start things out on a positive note. What's working?

  • Xmame
    Because I'm using an older version of MythTV on deathstar, I'm still using Xmame. In the retrogaming world, Xmame is a dinosaur. Most serious Linux-runners have moved on to SDL-mame, which is more up to date and has had some wonderful work done to it. Having said that, Xmame has behaved swimmingly for running my games. I will certainly migrate away from it to SDL mame soon, but for the time being, it's working great.
  • I-Pac from Ultimarc
    Originally I was going to hack in the console controllers using USB-based gamepads modified for the pushbuttons and joysticks. But after thinking about it, using a $39 iPac keyboard encoder seemed to be by FAR the path of least pain. The board arrived, and was up and running in no time. In the basic configuration, it's awesome (and they even have a USB version now. Double-bonus).
  • Plywood
    I had my misgivings about using raw plywood on the cabinet. However, it's working out remarkably well. Cheap, easy to build with, quick to assemble. Once the entire cabinet is done, I'll sand, paint, and finish the surfaces so they're less rough on the skin, but all in all, I'm pretty happy.
  • Panel layout
    I was very nervous about this one. I came up with my own joystick / button panel layout, after looking at various ones online. It's not a massive variation from standard 6-button + JS arrangements, but it was also not from any known template. Single player and dual player gameplay worked just fine, with the joysticks and buttons and other controls all working the way they should, and players being comfortable with where everything was.
Needs Improvement

Since the project is only halfway done, what's really on my mind are the things that don't work so well. So here's my punchlist of stuff I want to work on...

  • deathstar
    This makes me sort of sad, but I have to really take it into account. deathstar has been my all-around mythtv / retrogaming box for several years now, and it's showing it's age. It's a mere Athlon 1400, and the larger games were not running well on it. That, combined with it being a full size chassis (heavy!) means that there are better options for the brains of the box. A new machine is really needed
  • Mythgame
    This is the component in MythTV that is used for playing retrogames. In theory, it has a nice GUI interface that allows basic menu navigation, even using the joystick and buttons. In practice, it works VERY poorly. Keystrokes were misplaced, the menus were hard to navigate, and searching through large game lists was nigh on impossible. There are several other Linux front ends kicking around on the net, it's time to explore the others.
  • 4 way Joysticks
    I picked up the standard el cheapo 4 way microswitch based joysticks off ebay. They're.. okay. I can feel the springs already wearing out on the left hand controller (it now has 'slop' in the neutral position). I'll need to replace them with 4 / 8 way joysticks with a restrictor plate at some point.
  • Cabinet stability
    If anything pointed out that an arcade cabinet needs to be stable, it's schlepping the whole thing to a convention and back, and letting others bang on it. The cabinet needs to be SOLID. The current incarnation is getting there, but I'll need to pay more attention to stability.
  • Monitor size
    I used a spare 15" LCD monitor, sitting on the cabinet, for gameplay. While this was 'okay',it missed a lot of the arcade experience. A 19" 'high mounted' display, which I'm planning for the upper part of the cabinet, is definitely going to be the way to go.

All in all? I'm reasonably happy with the progress. I can see where I need to improve things, and see where things are working. I'm still playing games on it and enjoying it, but I also want to improve and expand it. All good traits, I think.


It's 8AM, and you are...listening...

| No Comments

... to rain.

This week has me down in New Jersey visiting my client. These visits are invariably very productive, very tiring, and very important in maintaining an even keel and a steady course on the work that's being done. (I blame the rain for all the nautical references. Hopefully it doesn't carry over into my drive to the office). The visit is pretty much a repeat of the other times I've been here. The seasons just keep changing, so sometimes it's hot, sometimes it's snowing, today, it's rain.

One thing that has struck me is that I'm actually commuting to work. Up in the morning, do my morning stuff, pack up, drive to the office, do that stuff, then drive back to the hotel. It's a short commute, only about 9 miles (I keep saying I'll bike to the office some day, but haven't yet), but it's far more of a commute than I have when I'm at home. I'm still not sure about which one is better for me in the long run, but the variation lets me have perspective on it.

In a year, there'll be a whole new living situation, so it's not like we're in a long term situation with the commute. There's change-a-comin.


Buy my printers!

| No Comments

I'm unloading my old badge printers to help finance upgrading to new, smaller, lighter printers from Evolis. This means the badge printers I've been using at conventions for the last couple years are up for sale.

See the Craigslist ad for details.


Zorching Memory Leaks. I Am Teh Stud

| 2 Comments

Tonight, I am Da Man.

It's rare I get to sit down and see, so directly, a problem in the code I'm working on. In this case, while running at Ubercon the other weekend, I noticed that CONGO was showing every sign of a memory leak. After a while I'd get sluggish performance, and eventually I'd get an OutOfMemory error from the JVM. Didn't look good.

This had me in somewhat of a panic, since Arisia is right around the corner, and I need the system stable and useable for the event. With the help of the wonderous tool that is JConsole, I was able to actually see the memory usage going up in the JVM as I worked with the server. There was definately a problem.

It turns out my hastily set up code to handle changes to my JDBC driver was not being handled correctly. Apparently with the old mm.mysql driver, SQL handles were automatically closed at the end of use. With the new Connector/J driver from MySQL, you had to explicitely issue a close() statement on any Statement, or the handle would never be freed. This was probably always the case, it was just my sloppy code and a twitch of the old driver that made it never come up.

Unfortunately, this necessitated changing just about every SQL call in the server, all 10,000 lines of it. It was long, painful, boring work. I had some help from blk, but it still took a good week of off-hour fiddling to finish the changes and do some basic regression tests.

Tonight, I made the last set of changes, did some basic runthroughs, and didn't have a single crash. With someone trembling fingers, I started up JConsole again, connected to the application server, and started working with CONGO. Registrant lookups, reports, modifications, creations, subscriptions, convention detail editing - throughout it all, JConsole happily continued showing the normal 'sawtooth' pattern of memory usage. Things would get allocated, used, and then the garbage collector would come along and reap the memory.

Success! I had successfully searched for, found, and fixed a major memory leak that was persistent throughout the code.

For those insisting on the details, here's a properly structured, Prepared, and appropriately exception-managed call to get a number from the database. (And, before I get abusive comments all over the place, the Exception handling here is VERY POOR, and will result in a clean result coming back from the method, even though the call may have crashed. I know, thank you, now go away).

private static int calcRegistered(int cid, String typeName) {
        PreparedStatement p = null;
        ResultSet rset = null;
        String sql = "SELECT count(*) AS total FROM reg_state " +
            "WHERE state_cid=? AND state_regtype=? " +
            "AND state_registered=1";
        int value = 0;
        try {
            p = cserver.Conn.prepareStatement(sql);
            p.setInt(1,cid);
            p.setString(2,typeName);
            rset = p.executeQuery();
            if (rset.next()) {
                value = rset.getInt("total");
                logger.debug("\tcalcRegistered: count for conference '" + cid + "', type '" +
                   typeName + "' is --: " + value);
            }
        }
        catch (Exception e) {
            dumpException(e);
        }
        finally {
            try { p.close(); }
            catch (Exception e) { dumpException(e); }
        }
        return value;
    }

I feel all geeklystudly.

Next is to start seriously hammering away at the buglist, and get a test environment set up so other CONGO users can test out the new Merge function against 'real' data. If all goes well, we'll roll this version into production in time to run Arisia.


Oops :(

| 2 Comments

IMG_1468.JPGI have a lot of laserdiscs. Last count had it around 210. Since we moved almost 2 years ago, about half of these were stored in the basement in what I thought was a stable box.

Well, it wasn't.

Apparently the box had shifted and moved around a lot, and ended up with the discs leaning over on one side, where they stayed for a year. The end result is I now have a dozen or so burrito shaped laserdiscs.

I've reconfigured the stack, and owing to the fact that laserdiscs weigh a helluva lot, I've placed the 'bent' discs interleaved at the bottom, and placed the rest on top of them. Hopefully this will restore some sort of flatness.

If I have to write off the bad discs, it won't be the end of the world. Most are available now on DVD (and have the benefits thereof, like better resolution and added features and stuff), but I don't like having to replace movies I already own.


Yawl gets a new face.

| No Comments

New Desktop
Originally uploaded by eidolon
Investing in hardware for my workspace is always hard, particularly when it could easily be interpreted as "Oh, that's just for FUN."

But with the price of LCD monitors dropping, it was time to take the plunge and replace my 17" 1280x1024 monitor with a Dell 2001FP 19" 1600x1200 version. Ebay helped me find one for just a hair under $200, and a few days later, here it is.

Gutsy on yawl was very easy to reconfigure, using the nvidia-settings tool to generate a new Xorg.conf file (it was ALMOST pointy clicky from beginning to end, the only thing I had to do manually was copy the Xorg.conf file into place.

I'm already comfortably settled into the idea I've increased my desktop area by about 30 percent, but occasionally I find myself wondering at all this great real estate.

I have a strong attraction to flight, in all it's forms, but I feel the strongest attraction to things that are the closest to free flight... it's one of the reasons I'm very interested in soaring - it's as close as I can get without actually growing wings.

But, what if you can't fly yourself... How about flying models? Okay, that's fun, but you can't actually get IN the plane and fly it around.

Or can you?

This was linked from all over the place, but today's reminder of it came from Hackaday.


Photo Managers - Digikam rocks

| No Comments

Today I am full of Mad Love for DigiKam, the photo manager distributed with KDE. I've been using it off and on for a few years, and for one reason or another, I would stray away and use manual file copies for a while.

As of about a year ago though, I've moved to using it full time for managing the (sometimes hundreds) of pictures I take in a given session. There's a whole slew of wonderful functions in it, but the ones that made me finally stick with it can be summed up as follows:

  • Automatic directory creation and sorting when importing from the camera. Directories can be created according to the date the picture was taken (importing 250 pictures from my camera may make 4 directories, if I was shooting over several days)
  • Direct support for my Canon 400D. When I plug in the USB, KDE prompts me to start Digikam, and everything is imported.
  • Full support for Exif data, including image orientaton, etc. Exif data is never removed or 'flushed' from the images.
  • Excellent export functionality to either Flickr or to a series of HTML files and thumbnails.
  • Very good gallery organization, sorting, and previewing. I can work with thousands of images and sort them into appropriate directories.
  • Tagging allows sorting and categorizing of images without reordering the directories. Searching for tags, dates, or other data generates a new view based on the tag criteria.
  • Easy calling of external programs such as The Gimp for post-processing.

All of this, combined with, well, it LOOKS great, make Digikam one of my favorite KDE apps.


Deep Breath.

| 2 Comments

Aaaaand, we're back.

What an insane couple of days. There's a whole series of posts brewing in my head right now, but I'll just touch on probably the one that's most on my mind.

Last week, I was in mid-preparation for Ubercon, an awesome gaming convention I regularly work down in NJ. CONGO has been pretty idle for the last few months as the summer is not a big time for conventions. With a week to go until Ubercon started, it was time to pull out all the hardware and make sure everything was working.

Well, unsurprisingly, it wasn't.

The first major issue was coming to the conclusion that endor, the venerable server of dozens of conventions, really wasn't going to handle Yet Another Apt Upgrade. It was still running on a baseline Debian Sarge install that had been upgraded a dozen times over the years, and finally, after enough apt tweaking had gone on, a dependency just wouldn't resolve, and the machine would not take new upgrades. It was time to nuke from orbit and reinstall the OS from an Ubuntu baseline.

No problem, sez I. I whip out my Gutsy Gibbon Ubuntu CD, do a quick database dump and backup, install Ubuntu, and restore my home directory and databases. Reinstalled CONGO, loaded the working databases and...

stopped.

See, CONGO was my first big Java application. And as such, it has some... intriguing ways of doing database work. And by 'intriguing' I mean butt-ass stupid. In particular, not using PreparedStatements for SQL commands, not checking for failed transactions, etc etc. While this was okay for a fairly static application, once you replace the entire OS underneath it, things start to get a little squirrely. And, well, we had squirrels aplenty.

So over the space of 3 days I basically had to rewrite every SQL interraction in CONGO, resulting in some fairly major code changes, and all of this 3 days before a con.

Add on top of this the fact that I'm also using a brand new printer from Evolis for the first time under Linux. There's a whole nother post about this experience, but it did bring yet another variable into play. Oh, and did I mention that I rewrote the print routine in CONGO to generate PDFs on the fly and use them for badge rendering? Yep, also new.

Needless to say, things were a little panicy leading up to the event. Fortunately, by Wednesday afternoon, I had things fairly well stabilized, the code worked, endor was stable and functioning properly, and I could start packing for the event with a clear conscience.


The end result? It all worked. The convention went fine, the printer behaved wonderfully, running badges twice as fast as my old Fargo printers, and we had only minor glitches through the weekend. There's still some work to do to get endor ready for larger events, but for a week that started out with totally broken software, an unuseable server, and an untested printing system, things went mighty well.

Onwards.


Twitter

Sponsors!

About this Archive

This page is an archive of entries from November 2007 listed from newest to oldest.

October 2007 is the previous archive.

December 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.