lmjohns3 is currently certified at Journeyer level.

Name: Leif Johnson
Member since: 2002-08-20 12:42:06
Last Login: 2015-01-24 20:04:43

FOAF RDF Share This

Homepage: http://lmjohns3.com


Personal interests include languages (both the natural
and programming kinds), frisbee, and snowboarding. I'm
currently a PhD student at UT Austin.

Recent blog entries by lmjohns3

Syndication: RSS 2.0

Yowsas, it's been a long while since I haven't been here.


In between then and now, I moved almost halfway across the world, thought about getting a gig teaching math, waffled on decisions, was offered a lifeline (in the form of a coding contract) and have, for now, decided to commit to another year of coding. So I'm living in San Francisco (what a great city) and trying to figure out how to pay rent using my computer.

I've also been doing some volunteer work as a precal TA at a high school here. It looks like I'll get to teach a course on programming next semester. Good times, good times.

CCM Tools

We've just reached another release point for the ccmtools ! I'm quite excited. The tools have reached a state of greater maturity (which means they can generate component boilerplate in C++ for more types of input IDL files), and with the next release—in the next month—we'll have a decent generator for remote (out-of-process) CORBA component boilerplate and testing, plus a Python wrapper generator so you can test out your business logic in Python.

Exciting stuff. I can't wait to get access to a Beowulf cluster to test this distributed component development stuff with. Anyone have experience with CORBA components on clusters at all ?


I got going a couple weeks ago with PyGTK and gst-python (many, many thanks to jamesh, dlehn and others) and whipped out a nifty music player applet for the GNOME panel. With GStreamer in the back, GTK+ in the front, and Python in between, it's easy to write nice looking media apps—hooray !

So, that's the activity at the moment ... happy hacking !

CCM Tools

It's been an exciting week : The ccmtools have made a first public release !

I never thought I would enjoy working anywhere near "software engineering." But now that I have worked at an actual software company and seen some of the rationale, failures, and processes behind designing large software systems, I find the concepts intriguing. In particular, generating code is less restrictive to me as a programmer than I had thought ; the only code that can ever really be automatically generated is boilerplate, which is quite tedious stuff to write anyway.

I'm working on embedding the Python interpreter in the generated code, so developers and testers can implement CORBA components using C++ for the inter-component communications and Python for the component internals. Makes for much faster prototyping. Not to mention the sheer wow factor of having a set of simple Python scripts running your component-based application ...


Unfortunately I haven't gotten to do much with GStreamer lately, which is disappointing because I've become mostly talk and only a little hacking. But I did spend some time this weekend building a cool media player applet for the GNOME panel using gst-python ; it's almost blissful writing applications in Python, and with the GStreamer backend it's easy to handle media files, too.


We got a 1.1 release of Confix out the door this week as well ; I'm looking forward to adding support for pkg-config to Confix so it can generate Makefile.am's for more types of projects. Adding Java support might come soon as well, depends on how well things go.

Trip to the US

Last week I got to go to the States for an interview with Teach for America. Though the interview was only one day, the whole trip seems to have flashed by in a whirlwind blur of the insides of various airplanes, airports, cars, offices, houses of family and friends, and coffee and book shops. All with the requisite insane security precautions, of course. It was a little strange being back in a place where I could, without effort, understand everything that people around me talked about. And also strange spending a whole week without constant internet access.

The Iraq War was on everyone's mind, in all the places in all the countries that I visited. Among the people that I talked with, there seems to be no support for Bush and general apprehension about aggression in Iraq. I wonder where the supposed supporters of this war are keeping themselves. Maybe I'm electrically repelled from them.

My friend Jon observed that the Iraq situation shows that there can be times when everybody is just wrong : anti-war protesters, pro-war protesters, brutal Iraqi dictators, belligerent and ignorant American presidents, media purveyors, etc. ... nobody seems to have the right answer, whatever that might mean.


murrayc : I've found that my German, as bad as it is, generally follows your described pattern of random declensions. It's amazing to me that little children will learn this stuff—and even more complicated stuff—just by sitting around listening to it. Though I suppose if I were allowed to sit around and listen to somewhat-linguistically-helpful people talk to me for two years, with no other expectations of work or productivity, my German might improve too. :)


So I'm back at work, preparing for a first open source release of the project I've been working on. If you're interested in a code generator for CORBA components and test components, check out the ccmtools project. We'll have a release out this week, as soon as Confix supports multiple configuration files.

Might also get a chance the next couple of weeks to help out with GStreamer a bit. The editor needs some bug fixes, and the docs still need much love. So much typing to do ...


I picked up Trainspotting in London's Stansted airport. It's an excellent book, very well crafted out of a series of short stories. Next on the reading list are The Poisonwood Bible ; Guns, Germs, and Steel ; and Porno (the sequel to Trainspotting). Reading is so pleasant.


I'm leaving for Oslo in a couple of hours to finally meet up with some of the GNOME multimedia developers. I'm really stoked about this. Hopefully we'll have a productive few days together, I'd like to get a lot of coding and documentation done. And also see some of the norwegian countryside. Maybe get to see a moose as well, aïe, so much to do !

Work and open source

It's been quite a roller coaster trying to convince our boss to let us open source this project at work. Or maybe a transistor, more like : on, off, yes, no, ... supposedly we get a final answer soon, hopefully the response will be yes. It would be nice to know that the coding I've done in the last 6 months will see the light of day somewhere outside this group of 200 employees.

Realtime CORBA and JACK

I'm getting more intrigued by this "quality of service" concept for distributed applications. Although I'm not terribly familiar with it, JACK seems to have taken a great step forward in the linux world of realtime audio processing. (And hopefully after this weekend we'll have functional JACK elements for quality audio processing with GStreamer.)

But I'm also wondering now if a realtime CORBA element would make sense in GStreamer ; with such powerful interprocess communication it would be relatively easy to write things like a cluster-based audio editing application, or a videoconferencing application. Maybe all these things exist already and I should just stop now. Just thoughts at the moment.

Java venting

I need to vent about Java. Please ignore or read with amusement.

I've been working for the past few days on an IDL parser in Java. The parser includes an arithmetic evaluator for constant value declarations in IDL, like this :

const unsigned long field_value = 88;
const float pi_field_value = field_value * 3.14;
const string name = "foo";

Since constants can be string types or numeric types, the parser has to pass around the constant values as strings, convert the strings to numeric types when it expects to have to evaluate some arithmetic operation (of course throwing an exception when the string doesn't represent a number), then convert the result back to a string. In a language like C or C++ this would be a pain. But, let the angels rejoice, it's also a pain in Java !

Consider this short example program to convert two strings to longs, add them, and convert the result to a string :

public class Dumb {
public static void main(String args[])
long a = Long.parseLong(args[0], 10);
long b = Long.parseLong(args[1], 10);
String result = a + b;
System.out.println(a+" + "+b+" = "+result);

Originally, I wanted to just make two Long objects and add them together. But in Java you can't add two Long objects together* (specifically, the java compiler informs me, "operator + cannot be applied to java.lang.Long,java.lang.Long"). Grr.

Just for comparison I wrote a functionally equivalent Python script :

from sys import argv
a = long(argv[1])
b = long(argv[2])
result = `a + b`
print "%d + %d = %s" % (a, b, result)

The ratio of bytes of source code in the two examples is 112/213 ~ 0.523. So it looks like there are about two characters in my Java code for every useful character in the equivalent Python code. Is the compile-time security of strong typing worth having to input twice the code ? I'm not convinced. Particularly because Java containers like Hashtable can only store Objects (which is an extra pain when you want to store a number in a hash table, see *), Java's type safety is often reduced to the whim of the programmer. I am aware that Java will be coming out with C++-like templates sometime soon, but it just seems like so much extra grunt work.

13 older entries...


lmjohns3 certified others as follows:

  • lmjohns3 certified wingo as Journeyer
  • lmjohns3 certified Uraeus as Journeyer
  • lmjohns3 certified hadess as Journeyer
  • lmjohns3 certified thomasvs as Journeyer
  • lmjohns3 certified jfleck as Journeyer
  • lmjohns3 certified raph as Master
  • lmjohns3 certified lmjohns3 as Apprentice
  • lmjohns3 certified braden as Journeyer
  • lmjohns3 certified dyork as Journeyer
  • lmjohns3 certified dlehn as Journeyer
  • lmjohns3 certified highgeek as Journeyer
  • lmjohns3 certified jdub as Journeyer
  • lmjohns3 certified company as Journeyer
  • lmjohns3 certified ds as Journeyer

Others have certified lmjohns3 as follows:

  • groom certified lmjohns3 as Journeyer
  • wingo certified lmjohns3 as Journeyer
  • Uraeus certified lmjohns3 as Journeyer
  • thomasvs certified lmjohns3 as Journeyer
  • Tofu certified lmjohns3 as Journeyer
  • lmjohns3 certified lmjohns3 as Apprentice
  • company certified lmjohns3 as Apprentice
  • sashako certified lmjohns3 as Journeyer
  • araocktoday46 certified lmjohns3 as Journeyer
  • chakie certified lmjohns3 as Journeyer
  • hiddenpower certified lmjohns3 as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page