Blog

Compiz memory leak?

Recently I’ve started working on an all-linux laptop (named ‘algol’, more on this later), and I’m enjoying using Compiz as my compositing window manager.

Unfortunately, I’ve noticed a problem with memory usage. It appears to be connected with suspending and resuming the machine (which works fine, except for this). Compiz memory usage skyrockets on restart:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
4610 dbs       20   0  848m 626m 5068 S    1 31.2  13:40.13 compiz.real  

(Yep, that’s a resident size of 626 megabytes, on a 2gig laptop. I’m a Java developer, I’m used to large memory footprints, but when your window manager outshadows the footprint of your IDE, J2EE server, and compiler by a factor of 4, something is amiss).

After a logout / login, the footprint drops to ‘sane’ :

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14990 dbs       20   0  221m  17m 6552 S    0  0.9   0:00.98 compiz.real 

A very fast suspend / resume I just did did not make the footprint grow… I’m wondering if it has to do with big screensavers or something (since last time I restarted, it came back up running a GL screensaver). More details when I have ’em, but anyone have an idea what might be causing this? I hate having to restart my entire desktop environment when I resume.

Music Server Remote Access with MPD.

It seemed like a simple question. Consider the problem of [a], a collection of ripped music from a large CD collection, [b] a server containing said mp3’s, located on a bookshelf in the corner, [c] a very nice Bose Lifestyle 48 audio system, and [d] a couch potato like myself wanting to listen to that music, but not willing to walk over to the workstation, hook up a monitor (it’s normally headless), and play something.

There were several things I wanted under the general heading of “I want to listen to music stored on that machine,” but no clear path in sight.

So how to approach this problem?

Continue reading “Music Server Remote Access with MPD.”

OLPC G1G1 Program via Amazon is now up

For those who missed the first Give One Get One program, the OLPC group has made them available again, this time in a partnership with Amazon.com. This means laptops will be shipped and managed by Amazon, thereby avoiding all the shipping and support delays that cropped up with the first program last year

Zach has had his XO since January, and still uses it regularly, particularly for Scratch programming, and also playing on a mud. He’s going to be graduating to programming in Python soon, and this is an excellent platform this.

By the way, there’s a Fedora distribution from Redhat that sold through Amazon on an SD card. Buy the card, drop it into the XO, and it’ll boot up as a fully functional Redhat Linux box with your favorite desktop manager and other application support.

Remember, the G1G1 program is designed primarily to support the developing countries, and get more laptops into the hands of kids that need them. These laptops are by far the greenest laptops ever manufactured, with the lowest impact on the environment possible. If you’re serious about education, environmental support, and getting technology into the hands of people who want it the most, please consider the OLPC project.

Frustrating Eclipse + Ubuntu + JVM Crash

I’m spending some time setting up a new Linux environment for CONGO development – mostly because I haven’t used a Linux desktop for heavy J2EE work in quite a while, and I have a decent laptop available to run it on.

The problem is the JVM is crashing regularly on the machine. I end up with a huge crashdump file, but the gist of it is:

# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f22e44e025a, pid=31427, tid=1077770576
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0-b23 mixed mode linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x1f125a]

Normally the JVM under Linux is amazingly stable, so this sort of internal crash is really puzzling. I’m going to post on the Sun forums for help, but just wanted to vent a little frustration here. Grr!

UPDATE Apparently this is a known bug in the JVM that is tickled on 64 bit systems, and has been around for a while. There’s a couple workarounds posted on the bug page at bugs.sun.com

Randomness…

Misc ramblings, just have to get them out there.

  • KDE4 – Not Ready
    KDE4 is so not ready for prime time. Or maybe it’s whatever version is currently bundled with Hardy. Ick ick ick. Not stable, unuseable, bleah.

  • Struts2 – So far so good
    I’m getting into the proper mindset to go “Make that, wire it up, go.” in S2. I’m missing a good powerful JPA layer though – too late to roll Hibernate into v2.0, but I so see it in the future.

  • Laptop battery, not so good
    clipper has a dying battery. After 3.5 years, I’m not surprised, but it is sad. I’m only getting 15-20 minutes out of it now, the question is replace the battery or the laptop and the battery. Decisions decisions.

  • Scratch is still cool
    Zach is still totally emfatuated with Scratch. I watched him ‘program’ for a bit today, and he clicks and moves components around with the best of them. He even figured out how to get it to generate an error and pop up a diagnostic window (“Cool, huh? What is that?” “That’s smalltalk.” “Neat!”), etc. Ahh, my little hacker.

  • Work kicks my ass
    Tech Barbie says “Work is hard!”. It is – it’s taking up a huge portion of my brain and focus, which is something I’m not used to. I finish the day drained and wrung out, but still force myself to get code done for Congo before falling over for the night.

  • Hudson is cool
    We have a hudson install going on one our servers. It’s doing continuous integration builds and deployments. FAR better than the hacked up scripts of yor. Need a new build? *click* Build in progress!

  • Perl made tolerable
    I’m still stuck with working on perl sometimes. But if I have to go total immersion, I’ll likely use EPIC. It’s a Perl IDE plugin for Eclipse, and actually seems to work. Very tasty.

Nuff rambling. Back to the grindstone.

Mom and her MacBook




momsmac

Originally uploaded by eidolon

Mom’s mac mini has been acting up lately, throwing disk errors, refusing to boot, etc. It’s 3.5 years old, out of Apple warranty, and, well, it was time to upgrade.

After a brief discussion and a glance at Apple’s refurb listings, we picked up a Macbook. 120gig of disk space, 1gig ram, dual core 2.1gig, combo drive, the whole works – for a mere $850.

This is Mom’s first laptop, and by appearances, she seems to be taking to it just fine.

And so ends our busiest month.

So here we are on November 1st (I could tell it was a new month because of all the Mailman notices in my inbox this morning).
But there’s another reason this is an important milestone.
Whenever I make a change to CONGO, I submit it into our SVN repository. That submission generates a mail message letting other interested parties know a change has been made, and they should update their local copies.
My philosophy, and one that is the ‘unwritten rule’ for SVN usage is “Commit Early, Commit Often. The idea is that the repository should reflect the most recent version of working code, and avoids the “I have had such and such code checked out for months, and you went and changed the repository on me! Now I can’t merge my code in!” problem.
Because my pattern really hasn’t changed, I can use my commit timing to judge how busy I’ve been on a project.
Last month, October, 2008, was the busiest, and therefore (arguably) the most productive month of coding on CONGO since the project started. The congo-dev mailing list statistics show that during October there were 119 commits against he repository. The previous ‘record’ month was December, 2004.
Virtually all of this work is reflected int he progress being made in Congo V2, and I would be remiss in not giving thanks to Owen Jacobson’s help in porting Congo to a Struts / Spring model – his commits are in there too.
V2 is coming along. I’ll have something to show soon!

The weekend. Let me tell you about it.

So this weekend had me out to Ubercon down in NJ. All in all, things went pretty well. It was the second time I took Zach with me to an event, and he and blk’s son Justin had a riproaring time gaming, socializing, and geeking.

On a personal level, this wasn’t one of my banner events. It’s been a while since I ran at at-con registration of a reasonable size, and a lot of things conspired together to fail so that, by today (the last day of the con), I felt pretty down about my showing. Let me esplain. No, there is too much, let me sum up.

  • Mame – My MAME cabinet, which I’d been hauling down to Ubercon for now the third event, gave up the ghost last week. deathstar refused to boot, and I almost cancelled bringing the machine. The UC folks happily offered up some spare hardware, and I decided to bring the machine down. Early Friday morning I did an emergency load of Kubuntu 8.10 on a spare laptop, installed my MAME drive that has my roms in as an external drive, and configured up KXmame. The end result? Unstable, video modes not working right, and general bleah. I managed to keep it limping along through the weekend, but it was not the glorious, elegant machine of the last event. There needs be work here.
  • CONGO – Hardware – The server I use for events, ‘endor’, has been running faithfully for almost 20 events now. I’ve done one full OS reload, and for the most part it has been dependable as all git out. This weekend however some hardware twitches started to come up. First, the CMOS battery died, which causes the ‘things have reconfigured!’ message on boot. What I didn’t realize was it had also reset the dates, so that all the log entries for CONGO this weekend have a datestamp somewhere in 2006. This will require manual fixing. We also lost power twice due to a flaky outlet. The last bit was I attempted to cut back the amount of hardware I bring to events, and in doing so managed to arrive short 2 keyboards. Fortunately, Ubercon loaned me a pair so things were fine, but Grr.
  • CONGO – Software – For the most part, CONGO behaved appropriately and did all we asked of it. I’m itching to get v2 up and running, because of all the deficiencies I keep seeing in v1. But, the old tried-and-true still chugs along, and we cranked out hundreds of badges over the weekend.
  • Organization – I normally have a very competent reg manager running the event with me. This time, the normal Ubercon chap I work with was unavailable (due to health issues). While other folks helped man the desk (we were never short on people), not having an “In charge” Ubercon person with us really pointed out weaknesses in the process control in CONGO (things like cash drawer management).

Despite my grumblings, the convention was a success, and I think we did a bang-up job on keeping everything flowing nicely. I am utterly, 100% exhausted – the drives up and down take their toll, and caring for a 9yr old while running an event can be a bit taxing. Would I do it again? Absolutely, and will next year. For now, I’m going to go fall over.

Chairs!




Picture 018

Originally uploaded by eidolon

When we first starting putting Mosaic together, I was all excited to exercise my basic scrounging skills and start accumulating stuff to fill out all our new spaces.

Alas, Mosaic took a LOT longer than expected to come to fruition, but now we can finally start getting all the bits we’ll need. Since we have a great room that can seat 60 or so folks for meals, we needed a lot of chairs.

Through the magic of the Harvard Recycling Program, yesterday morning we picked up 84 very sturdy ex-restaurant (or hotel, we’re not sure) chairs. They’re in great shape, if a bit orange, and very sturdy.

We have chairs!

CONGO Progress and Pretty Pictures

Another good night of coding!

After finishing a hefty project at work, and a busy week of Life Fun, I took 4 or 5 hours last night to hack into CONGO and try and get some rough edges worked out. I really feel like I’m approaching a useable system, with workflow doing what it’s supposed to, database tables updating the way they should, and crashes being few and far between.

I’m a visual person, so I wanted to come up with an up to date ERD for the v2 table structures. Ages ago I used DbDesigner4 to create an ERD for v1, but the tables have shifted a lot since then, and I wanted to see if I could auto-generate a diagram from table structures

Hunting around, it looks like DbDesigner has been absorbed into MySQL Workbench. I downloaded the latest version, and found myself bewildered by it’s interface until I realized what this thing was. It’s a tool for creating and designing databases, as opposed to a passive maintenance tool. Not… quite the approach I was shooting for – I was hoping for something like dbVisualizer that had a button that said “Make an ERD of this.”. While dbVis does have that to a certain degree, it’s pretty weak.

Eventually I figured out the incantations necessary to create an ERD with MySQL Workbench from existing table structures (it involves dumping the MySQL tables to a .sql file, and ‘reverse engineering’ the structures from that file). A few more mutterings and a dead chicken later, I had a visual representation of all my tables and their relationships to each other. Score!

Alas, the tool isn’t really a ‘reporting’ system, so the resulting graph needed some fiddling in Gimp to add titles and other text. Naturally I realized after the fact that I didn’t move a couple tables into the view before snapping the picture, but it’s still a pretty good representation of where I am.

Coding wise, v2 is missing a vital component – the Properties system is not yet working, and this is critical for basic operation. I started into it last night, building up new DAOs and domain objects representing a Property for a registrant and an associated PropertyDefinition. What’s left to do is write all the management tools around them to make them workable from Coconut, and start testing.

The last big project will be the public interface. In many ways, that’s going to be the simplest and most rewarding – it’ll be the outward facing side of CONGO. Essentially what registrants see when they want to attend a convention. Previous stabs at this worked reasonably well. Attendees at the various events were able to do the basics of what the event needed, but I’m really looking forward to going the ‘next step’ and offer a full service deployment.

My delivery date for CONGO v2 FC is December 1st. So far, I think I’m going to make it.