Blog

The FujiFilm .MPO 3D photo format

A few weeks ago my dad, in his love for electronic gadgetry, purchased a FujiFilm FinePix REAL 3D camera. The concept is pretty simple: it’s basically two cameras in one, with the two sensors spaced as far apart as an average pair of human eyes. The coolest thing about the camera is its LCD display, which achieves autostereoscopy by using a lenticular lens (kind of like those novelty postcards that change from one picture to another when you look at them from different angles), so if it’s held at the right angle and distance from the eyes, the picture on the LCD display actually appears 3-dimensional without special glasses!

Anyway, I immediately started wondering about the file format that the camera uses to record its images (as well as movies, which it also records in 3D). In the case of videos, the camera actually uses the well-known AVI container format, with two synchronized streams of video (one for each eye). In the case of still photos, however, the camera saves files with a .MPO extension, which stands for Multiple Picture Object.

I was expecting a complex new image specification to reverse-engineer, but it turned out to be much simpler than that. A .MPO file is basically two JPG files, one after another, separated only by a few padding zeros (presumably to align the next image on a boundary of 256 bytes?). Technically, if you “open” one of these files in an image editing application, you would actually see the “first” image, because the MPO file looks identical to a regular JPG file at the beginning.

I proceeded to whip up a quick application in C# to view these files (that is, view both of the images in each file). This quick program also has the following features:

  • It has a “stereo” mode where it displays both images side by side. Using this feature you can achieve a 3D effect by looking at both images as either a cross-eyed stereogram (cross your eyes until the two images converge, and combine into one) or a relaxed-eye stereogram. You might have to strain your eyes a bit to focus on the combined image, but the effect truly appears 3-dimensional.
  • In “single” mode, the program allows you to automatically “cycle” between the two images (a wiggle-gram, if you will), which creates a cheap jittery pseudo-3D effect (see screen shots below).
  • Also in “single” mode, the program lets you save each of the frames as an individual JPEG file by right-clicking on the picture.
So, if you want a quick and not-so-dirty way of viewing your MPO files, download the program and let me know what you think! (Or browse the source code on GitHub)
Here’s a screenshot of the program in “stereo” mode:

And a screenshot of the program in “cycle” mode:

If you like, you can download the original .MPO file shown in the screenshots above.

Now for a bit of a more technical discussion…. Clearly it would be a great benefit to add support for the .MPO format to DiskDigger, the best file carving application in town.

However, from the perspective of a file carver, how would one differentiate between a .MPO file and a standard .JPG file, since they both have the same header? As it is now, DiskDigger will be able to recover the first frame of the .MPO file, since it believes that it found a .JPG file.

After the standard JPG header, the MPO file continues with a collection of TIFF/EXIF tags that contain meta-information about the image, but none of these tags seem to give a clue that this is one of two images in a stereoscopic picture (at least not the tags within the first sector’s worth of data in the file, which is what we’re really interested in).

One of the EXIF tags gives the model name of the camera, which identifies it as “FinePix REAL 3D W3.” Perhaps we can use the model name (the fact that it contains “3D”) to assume that this must be a .MPO file, but I’d rather not rely on the model name, for obvious reasons, although the FinePix is currently the only model that actually uses this format (to my knowledge).

The other option would be to change the algorithm for JPG carving, so that every time we find a JPG file, we would seek to the end of the JPG image, and check if there’s another JPG image immediately following this one. But then, what if the second JPG image is actually a separate JPG file, and not part of a MPO collection?

For the time being, DiskDigger will in fact use the model name of the camera to decide if it’s a .MPO file or just a regular .JPG file. The caveats of doing this would be:

  • It won’t identify .MPO files created by different manufacturers.
  • It might give false positive results for .JPG images shot with the camera in 2D mode.

As always, you can download DiskDigger for all your data recovery needs. And if anyone has any better ideas of how to identify .MPO files solely based on TIFF/EXIF tags, I’d love to hear them!

Update: DiskDigger now fully supports recovering .MPO files, based on deep processing of MP tags encoded in the file!

Thumbnail cache in Windows 7 / Vista – a rumination

(Note: read my newer post on this subject!)

Today I was thinking about the security implications of thumbnail caching systems on most PCs out there today. What I mean by that is this: whenever you use Windows Explorer to browse a directory that contains photos or other images, and you enable the “thumbnail view” feature, you would see a thumbnail of each of the images. By default, Windows caches these thumbnails, so that it doesn’t have to regenerate the thumbnails the next time you browse the same folder.

This has several implications in terms of privacy and security, since it means that a copy of each image is made elsewhere on the computer (albeit lower resolution), basically without the user’s knowledge. This is good news from a forensic examiner’s point of view, since the thumbnail cache can contain thumbnails of images that have long been deleted. However, from the user’s point of view, it can present a privacy/security issue, especially if the images in question are confidential or sensitive.

Windows XP caches thumbnails in the same folder as the original images. It creates a hidden file called “Thumbs.db” and stores all the thumbnails for the current folder in that file. So, even if the original images were deleted from the folder, the Thumbs.db file will still contain thumbnails that can be viewed at a later time.

However, in Windows 7 and Windows Vista, this is no longer the case. The thumbnails are now stored in a single centralized cache under the user’s profile directory: C:\Users\[username]\AppData\Local\Microsoft\Windows\Explorer\thumbcache*.db

The above directory contains multiple thumbnail cache files, each of which corresponds to a certain resolution of thumbnails: thumbcache_32.db, thumbcache_96.db, thumbcache_256.db, and thumbcache_1024.db.

So then, wouldn’t you like to find out what thumbnails your computer has cached in these files? Well, now you can! I’ve whipped up a small utility for the sole purpose of viewing the contents of these thumbnail caches:

This is probably not the first utility that does this, but it’s definitely the simplest. It automatically detects the thumbnail caches present on your computer, and lets you view all the thumbnail images in each cache.

If you want to disable the thumbnail cache in Windows 7 or Vista, you can find instructions here.

Accommodation vs. confrontation

Last week I had the pleasure of speaking at a roundtable debate hosted by the Cleveland Freethinkers. The theme of the debate revolved around how atheists should present themselves in public discourse: should atheists be “accommodating” of their religious colleagues and acquaintances, or should they actively confront such acquaintances and directly challenge their beliefs at any reasonable opportunity? I was on the “confrontationalist” side, and the following is an approximate dump of some of my statements during the debate.

A case against accommodation

The biggest problem with religion seems to be that, no matter how moderately religious a society is, it inevitably creates a slippery slope towards extremism for those few adherents who take it a bit too literally; and there will always be those few. The reason for this is that religious moderates are basically the same as religious extremists, except that the moderates have (thankfully) allowed themselves to be tempered by the secular social norms of our time. By default, religious moderates are tolerant of extremists, because after all, the extremists actually believe what they say they believe, unlike the moderates who water down their religion to make it more palatable in the modern world.

And it seems to me that, from the atheist perspective, being an “accommodationist” would only help perpetuate that same kind of slippery slope that’s already made abundant by the religious moderate majority.

My rhetorical question to the accommodationists would be, “To what end?” Surely there must be some extreme forms of religion that you’re not willing to accommodate? If you’re willing to accommodate some forms of moderate Christianity, or moderate Islam, but not the more extreme forms of the two, then that would be just as hypocritical as the moderate Christians who cherry-pick which verses of the Bible to take literally, and which ones to take metaphorically. Religion should be an all-or-nothing deal. When it’s not all-or-nothing, there’s always some hypocrisy to be found.

Speaking of hypocrisy, it feels like we have a certain amount of intellectual integrity at stake here. We atheists are, to a reasonable extent, certain about the truth of our convictions. I don’t mean to speak for everybody, but that’s generally the case; we arrive at certain conclusions with some amount of certainty, and we consider these conclusions “true,” or at least tentatively true, insofar as the scientific method allows us to define truth. We don’t “believe” in things in the same sense that religious people believe in things, because our conclusions are backed up by evidence and observations, which makes the truth of our beliefs that much more meaningful and convincing.

So, taking all of that into consideration, why on earth should we be accommodating toward beliefs that are clearly false, or beliefs that are clearly lies, or beliefs that are demonstrably harmful to the well-being of their adherents? What does it say about our intellectual integrity when we allow falsehoods to be perpetuated, no matter how much false hope or false happiness they might bring to the people who believe them? I would think that we should be doing our best to expose such beliefs for what they are, and uproot them from the consciousness of our society using tools like education, debate, and scrutiny.

There’s a theory of why religious people get so offended when their faith is questioned. And the theory is that religious people are actually embarrassed by the things they believe, but they just don’t consciously realize it, which is why they get so defensive when their beliefs are put under the microscope. It’s embarrassing to believe the Earth is 6000 years old; it’s embarrassing to believe that a woman can give birth to a child without a man’s contribution to the zygote.

If I put myself in the mindset of a religious person, I can see how it would be embarrassing when science explains yet another thing that used to be attributed to God, and having my God demoted again and again, to the point where the very definition of “God” becomes so nebulous that it loses all meaning. And all I’m left with is profundities like “god is the universe,” or “god is beyond human logic,” or “god exists outside of space and time” — that’s my favorite.

The thing is, for truly religious people, that kind of embarrassment is buried deep down in their unconscious mind. Instinctively they’re perfectly aware that it’s all nonsense. But those instincts have been repressed by their conscious religious training, or indoctrination, or whatever. So when those beliefs are questioned, the conscious mind has no answer, so it turns to the unconscious mind, which says that it’s all nonsense, which directly butts heads with the conscious indoctrination, and that’s where the defensiveness and the anger comes from.

That’s only a theory, anyway. But my whole point here is that our goal as responsible atheists should be to bring that unconscious embarrassment to the foreground of consciousness. Not just the consciousness of religious individuals, but the foreground of our social consciousness. It should become outwardly embarrassing to keep believing in an all-powerful creator god. It should become embarrassing to keep believing in prayer, or believing in hell or heaven.

Believing in a god is on the same theoretical footing as believing any other figment of imagination for which you would otherwise be called crazy. It just so happened that this particular god was the one that got ingrained into the fabric of our society. But aside from that, there’s absolutely no reason that we shouldn’t attach the same kind of negative stigma to people who believe in the Abrahamic god, or the literal truth of ancient folk tales.

I’m not saying that people shouldn’t be allowed to believe whatever they like; of course they should. What I am saying is, we should work towards creating a society where the moment someone considers taking religion literally, it should be readily apparent to that person how embarrassing, counterproductive, and unwise that would be. So, in that kind of society, no one would have a reason anymore to turn to religion for any purpose, so therefore no one would have a reason to go down the slippery slope toward extremism.

That’s the kind of state we should be striving for; a state where it’s just as embarrassing to believe in the god of Abraham as it is to believe in Zeus or Poseidon or Xenu; because they are all on the same footing of pre-scientific wishful thinking. And I don’t see how accommodation will help us get there. Theism in general belongs in the Bronze Age, because it’s based on Bronze-age thinking, and because the Bronze Age is already the resting place for all other gods ever invented by men. There’s just one more to go!

When people who promote the merits of religion run out of arguments, they usually retreat to the last-resort argument, which is something like, “Well, at least religion gives people comfort, or hope, or a sense of purpose…” Well, that might be true; but the problem is that all those good things are for the wrong reasons, and all those things only happen when religion is at its very best. That’s more like an idealization of religion; that’s the infomercial promise of religion. The reality is quite different. In reality, when religion is not at its best, the same religion that brings the hope and the comfort will also bring fear, shame, intolerance, and guilt. And we know all too well what happens when religion is at its worst… it makes otherwise decent people commit unspeakably evil acts, for those very same reasons!

The other problem with that argument is that it’s rather condescending towards religious people. It assumes that religious people are too weak-minded to cope with the real world without religion, and I don’t think that’s true at all. I’m fully confident that even the most devoutly religious people will be able to find their moral bearings without a god telling them what’s right and wrong. I think people might be afraid to let go of religion, because religion has been pretty much the only option for thousands of years. But the solution to all of that, as with anything else, is education; not just education, but actively combating ignorance.

A proper education should start at the very beginning. Religion’s biggest offense is the indoctrination of young children. Nobody should have any kind of opinion or dogma forced onto them from birth, and yet this happens every day, in many millions of households, in the form of religious upbringing. I wish more of us would recoil when we hear parents label their young children as “Protestant” or “Jewish” or anything else, before the children are capable of objectively evaluating the implications of such a label.

That’s why I’m not advocating forcing atheism onto anyone. What I’m talking about is subtracting the forcing of religion (which is pretty much the definition of atheism anyway)! Atheism isn’t a viewpoint that can be forced onto someone. Atheism is a natural, “clean slate” state of mind, and children should be raised with a “clean slate” until they’re ready (and educated enough) to decide which ancient Babylonian deity to worship.

To put it plainly, we simply cannot afford to accommodate irrational beliefs anymore. It would be great to accommodate them, in theory, if only people’s irrational beliefs didn’t influence their actions, and if only people with irrational beliefs didn’t get elected to public offices, and didn’t allow their irrational beliefs to influence their policies. If that were the kind of world we lived in, then, by all means, accommodation would be very fitting and reasonable.

But we live in a country where half of the population refuses to accept basic facts about biology, and half of the population can’t tell you how long it takes for the Earth to make an orbit around the Sun. And we live in a world where we have an explosive growth of a religion that has a doctrine of military conquest literally built into it, and a growing minority of that religion that’s plotting our destruction as we speak.

We cannot afford to accommodate religions that are inherently anti-human, which all three of the world’s “great monotheisms” absolutely are. The moment when a religion places more value on things that are supposed to happen after we die, rather than focusing on doing good deeds in this life for its own sake, is a warning sign that such a religion needs to be eradicated, and fast.

Our battle is nearly vertically uphill, and the last thing we should be doing is pretending that there’s any good to be found in letting people cling on to their irrational beliefs just a bit longer. Religion’s function has been to divide people, divide communities, and stifle scientific and intellectual achievement. We should be doing our best to phase it out, instead of accommodating it. To put it as charitably as I can, religion has been the training wheels of our morality. And at some point, training wheels become more of a hindrance than a benefit. Our civilization is long overdue to take the training wheels off, and throw them away.

A few nitpicks of Star Trek (2009)

Let me state for the record that I loved the new Star Trek movie. Given the last several Star Trek TNG films of the last decade, the franchise was clearly in desperate need of a reboot, and J. J. Abrams did an outstanding job of that. I thought the idea of branching off into an entirely new timeline was genius, and gives a new meaning to the very word “reboot.”

However, the new film certainly had no shortage of plot holes and scientific inaccuracies. It’s taken a while for me to crystallize my thoughts on it, but after watching it last week again on Blu-ray, I couldn’t help but jot down a few nitpicks that really stuck out in my mind. Forgive my inner nerd for really showing in this post, and please feel free to contribute your own nitpicks in the comments, or criticize mine as you see fit! And, off we go.

A supernova that threatens the galaxy?

During his mind-meld with James Kirk, the elder Spock recounts the story that led to their current predicament.

According to Spock, a supernova explosion occurs in his time that threatens the survival of the galaxy. That’s curious… what kind of supernova is this? Granted, supernova explosions are very luminous, but a single supernova would certainly not threaten an entire galaxy, and it certainly wouldn’t carry the kind of planet-destroying force as shown in the film, at least not outside of a single star system.

Using our primitive Hubble Telescope, we have observed plenty of supernova remnants within our own galaxy that pose no threat to us whatsoever. The supernova remnants can grow to several light years in size, but that kind of distance is still minuscule on a galactic scale.

As it is depicted in the movie, Romulus is literally torn apart by the force of the supernova explosion. This means that it must have been the actual Romulan Sun that exploded. No stellar explosion can maintain that kind of force if it originated from a different star system.

It seems unlikely that Romulan scientists didn’t anticipate their own sun going supernova many years in advance of the explosion. Stellar evolution, although not yet completely understood, is nevertheless fairly predictable. It should be relatively easy, especially for a warp-capable species, to tell if a planet’s parent star is on the verge of exploding. Romulus could have been safely evacuated well before its star reached the end of its life.

Appalling Vulcan irresponsibility

I’m not sure I understand why the Vulcans felt it was their duty to contain the supernova. The Romulan star system is nowhere near Vulcan, so why was it up to the Vulcans to stop the explosion? OK, let’s assume for a moment that Vulcans are the only species that has “red matter” technology, so they’re the only ones who can stop the supernova by creating a black hole.

But wait… it’s well-known that the Romulans use singularities (black holes) on a routine basis as a power source for their Warbirds, so the Romulans must be perfectly capable of creating black holes themselves! Couldn’t they simply fling an abandoned Warbird into the supernova, and let the supernova be consumed by the black hole that powers the ship’s warp core?

OK, let’s assume that it was absolutely necessary for the Vulcans to handle this threat. In that case, it seems like the Vulcans handled it extremely irresponsibly, and completely contrary to logic.

Why was it the job of a geriatric diplomat (Spock) to deliver the red matter to the site of the supernova explosion? Was he going to negotiate a peace treaty with it? Couldn’t they have sent someone more appropriate, such as a team of special-forces commandos, or at least someone in better health, or even an unmanned missile that simply plunges into the supernova along with the payload of red matter, much like Dr. Soran did with trilithium in Star Trek Generations?

Why is there so much red matter aboard Spock’s ship? Seriously, if it only takes one droplet of red matter to create a black hole, why was there a comically gigantic ball of it aboard Spock’s ship? That’s enough to create a million black holes! Where else were they planning to use this much red matter?

The Vulcans should have anticipated that red matter could be used as a weapon of genocide. They should have recognized the staggering security risk of allowing red matter to come anywhere close to hostile territory. So why did they place their entire supply of red matter, capable of destroying a million planets, onto a virtually unarmed scout ship, and proceed to send the scout ship into Romulan space?! What did they think would happen?

All of this seems very irresponsible on the part of the Vulcans. Because of their short-sightedness, they’ve indirectly caused the destruction of their own homeworld, and altered the timeline for everybody else.

Black holes and time travel

In the movie, both Nero and Spock travel backwards in time by entering a black hole (facepalm!). This is basically on the same theoretical footing as traveling back in time by performing a slingshot around a star, which made complete sense in Star Trek IV: The Voyage Home.

This isn’t the first time that black holes were portrayed as portals through time in popular media. Black holes are certainly very interesting objects to theorize about, but they’re not quite as exotic as they’re made out to be.

Objects that fall past the event horizon of a black hole do not travel backwards in time. They simply fall closer and closer to the center of the black hole, until finally they’re compressed to a single point of infinite density at the very center, adding to the mass that was already at the central point.

Of course, we don’t yet have the physics to describe the nature of the infinite-density point at the center of the black hole, which is why it’s called a singularity. But we do know that any mass that enters the black hole will remain in the black hole. It doesn’t go backwards in time, nor does it go to another dimension, or another universe. All of the mass will remain in the central singularity for the remaining lifetime of the black hole.

Necessity of drilling

Why was it necessary for Nero to drill to the planet’s core in order to drop the red matter? If the red matter really creates a black hole, it would suffice to drop the red matter anywhere on the planet’s surface, and let the black hole consume the planet from the surface inward. Speaking of red matter…

Red matter?

Theoretically, any amount of matter can be turned into a black hole if it’s compressed into a small enough volume (its Schwarzschild radius). For example, the Earth’s Schwarzschild radius is about 9 millimeters. That is, for the Earth to become a black hole, it would need to be compressed into a volume with a radius of 9 millimeters (about the size of a grape).

Presumably, “red matter” is an exotic form of matter that automatically collapses beyond its own Schwarzschild radius when it’s taken out of its containment field. Fair enough, but there are several major problems with this.

The most serious problem has to do with the size of the black hole that can be created with that amount of red matter. We can see from the movie that red matter is not particularly massive — we see Spock and a Romulan handling containers with samples of red matter without exerting themselves at all. Since it took only a droplet of red matter to create a black hole, let’s assume that the droplet’s mass is 1 gram. The Schwarzschild radius for any massive object is given by the following formula: $$r_\mathrm{s} = \frac{2Gm}{c^2}$$
So, for a mass of 1 gram, the Schwarzschild radius would be about 1.5 \times 10^{-19} meters, which is several orders of magnitude smaller than an atomic nucleus. A black hole of this size would pose no threat whatsoever, and this is for two reasons.

According to modern physics, black holes emit radiation with an intensity that is inversely proportional to their size. This is known as Hawking radiation, named after Stephen Hawking, who postulated its existence. If the black hole emits radiation, that must mean that it’s losing energy, which means that it’s losing mass, which means that it’s getting smaller! And the smaller the black hole gets, the more intense (the higher temperature) its Hawking radiation becomes. This continues until the black hole completely evaporates in a blaze of glory consisting of ultra-energetic gamma rays.

The point is, if Nero used a tiny amount of red matter to create a black hole of the same mass, the black hole would evaporate with a flash of radiation almost instantaneously. The black hole would not go on to swell up and consume the planet.

Incidentally, the theory of Hawking radiation is one response to people’s concerns regarding the possibility of creating a black hole at the Large Hadron Collider. Even if we create a tiny black hole at the LHC, it would instantly evaporate in a flash of radiation, and pose no further threat.

Also, even if black holes do not evaporate due to Hawking radiation, a black hole that’s smaller than an atomic nucleus would have a hard time finding other matter to swallow up. It would take a long time indeed for such a black hole to have a noticeable effect on an entire planet.

Where’s the Time Police?

This next nitpick doesn’t really have to do with the movie itself, but with a different Star Trek story that inadvertently shot the entire franchise in the foot.

In the Star Trek: Voyager episode “Future’s End,” it’s revealed that, in the 29th century, the Federation develops timeships that routinely patrol the timeline and attempt to eliminate any anomalies.

With this story, the writers basically negated any further possibility of having time-travel stories in Star Trek. If a starship travels back in time without “authorization,” we should expect a visit from a temporal patrol ship from the 29th century. The patrol ship would then do whatever is necessary to correct the timeline, and all would be back in order.

In the Voyager episode, the timeship Aeon travels back in time to prevent the destruction of the Solar system. One would think that the destruction of Vulcan is an equally worthy cause for a timeship to investigate, and attempt to prevent. But, of course, we see no hint of this in the movie.

Sound in space

Having sound in space seems to be a sci-fi cliché that the writers and producers just can’t unlearn, so it’s not even a nitpick anymore. And, in all honesty, a little sound adds to the excitement of the space battle scenes, so it’s not that big a deal.

However, in this movie, they actually made an attempt to get it right! I’m referring to the space-jump scene with Kirk, Sulu, and the unimportant guy who dies. When they jump off the shuttle and fall towards the planet, no sound can be heard. As they begin to enter Vulcan’s atmosphere, more and more noise is heard around them. This is absolutely correct!

So why couldn’t the movie take this excellent example and run with it, meaning get rid of all sound in the scenes where the shot takes place in outer space? All of the battle scenes and space explosions still have the usual sounds associated with them, without any regard for the fact that there’s no medium for the sounds to travel through. But I digress.

Epilogue

Well, that’s it for now, and thanks for indulging me. As I mentioned, this movie is a worthy successor to all the previous Star Trek films, as well as simply an excellent movie in its own right. I’m looking forward to the sequel(s).

In the meantime, all of the current sci-fi franchises, including Star Trek, would do well to hire some better scientific consultants. Maybe they can hire me?

Discovering the 3D Mandelbulb

There is some exciting news this week in the world of fractals. Daniel White, on his website, describes what is apparently a completely new type of fractal, and the closest analog so far to a true 3-dimensional Mandelbrot set!

Although White mentions that this is probably not the “true” 3D Mandelbrot, the new fractal is undoubtedly a sight to behold, especially considering the renderings he showcases on his webpage.

Unable to contain my enthusiasm, I quickly wrote up a small program that uses OpenGL to actually display this shape in 3D, in real time, to get a feel for what this beast looks like from all angles. Don’t get too excited; the program does not render the shape in real time, it just displays the points rendered so far in real time. The actual rendering process can take a minute or so.

Download the program using the link below, and read further for instructions and screen shots.

download

The program basically renders the 3D shape by constructing a “point cloud” that approximates the edge of the fractal.

Everything in the program should be relatively self-explanatory, but here’s a brief overview of the features so far:

  • The program lets you click-and drag the rendered shape to rotate it in trackball fashion (left mouse button), as well as zooming in and out (right mouse button).
  • The program lets you select the “power” of the Mandelbulb formula, as well as the number of iterations to perform.
  • The program lets you select the resolution of the point cloud.
  • It gives you a “selection cube” with which you can select a subset of the shape to zoom in on (with the “zoom to cube” button).
  • It has a number of other minor features like fog and anti-aliasing.
  • It uses multiple threads to render the shape, so it will take advantage of multiple cores/processors.

Here are some additional screen shots:

Manipulating the selection cube:

After zooming in on the cube:

Zooming in further:

Looking inside:

Colorized points:

The program was written in C# with WinForms, using the Open Toolkit Library (OpenTK) which provides an excellent OpenGL wrapper.

Of course, this program is very much in its early stages, so don’t expect it to be perfect. As always, suggestions are welcome!