Free Like GNU

It's GNU for you!

Tiny computer packs a punch for just a little scratch

Just when I was marveling at all the things an android phone can do and feeling like I was finally living in the future as presented to me in my childhood past, I find this little computer on Hack-A-Day.

“[David Brabens] computer, called Raspberry Pi,  is about the size of your standard USB thumb drive and contains a 700 MHz ARM 11 processor as well as 128 MB of memory. It has an HDMI port which can display 1080p video on any compatible screen, along with a USB port for input peripherals. Mass storage is provided courtesy of an on-board SD card slot, and it looks like the ability to utilize add-on modules will be available as well.” It should also be noted that the device consume only about 1 Watt of power according to the project home page!

According to Geek.com, the device will likely ship with Ubuntu and priced at about $25 and is to be poised to target the education market in a niche currently occupied by the OLPC but looks like it ability to compete with devices like the Gumstix and Beagle Board is quite formidable!  We know that the OLPC brought about a wave of small cheap computers to the masses, and perhaps this little computer will bring pocket-sized general-purpose computing to the front.

Lips Of Suna – FOSS Multiplayer RPG in Development

Much has been happening of late with Lips of Suna, a FOSS role playing game with CC-licensed content that I have been involved with developing lately.  LoS could be described as an anime-themed rougelike + FPS + Minecraft mashup because the doe-eyed player character is thrown into a world of randomly generated dungeons that exist between pre-made town-like areas.  Like an FPS game, there is no “levelling” or gold or any real currency.  Items in the game are either looted from slain monsters, found or crafted.

Right from the start the player must choose from several races, though none yet vary much distinctly aside from slight changes of appearance.  Players can tweak skin hair and eye color as well as physical features on most of their characters.  Skill points can be distributed to a players preference and may even be altered while playing though there is a wait penalty for changes to build to effect.

The world is deformable and grenades are a fun way to make large holes in the terrain.  Minerals can be mined from the terrain and logs can be harvested from trees to provide the raw materials for crafting weapons, armor and tools.   One of the most important of tools is a workbench that allows the raw materials to be crafted into more useful items.   A pick-axe known in the game as a mattock aids in the mining and digging and an axe makes harvesting trees  almost too easy.  Mining is somewhat risky as tiny  golem-like rock imps may be released as ground is broken.  Some of these imps are even explosive! There are a few other monsters sprinkled throughout the game such as bloodworms, rats, lizardmen and even a dragon.  There are also troglodyte cave women with clubs and humanoid enemies that might wield ranged weapons and grenades.

Currently there are some quests to complete but like many elements of the game they are little more than place holders for future development.  The lead (and virtually only) programmer of the game, Ari Mustonen (aka Nekotaku, amuzen) describes his development process as trying to work on as many parts of the game in as equal level of development as possible, that is no one part of the games design is much more developed as any other.  Currently that means that while playable and fun to explore, the depth of a finished game is not present (or advertised).  Despite this the game has may advance technologies behind the scenes, such as deformable and persistent world, physics and multiplayer ability.   The graphics engine is based on OpenGL 3.1 (ATI Radeon HD series or Nvidia Geforce 8 or newer) for special effects like shaders, bloom and HDR color with some limited support of OpenGL 2.x graphics cards in a basic mode.

Development of the game utilizes such tools as C game coding, the Bullet physics engine, Lua scripting for many parts of the game play, content allocation, quests and AI (full list of dependencies here) and 3D content may be exported from Blender 2.6+ to the game with relatively little trouble compared to export workflow for other similar games.  You can track the changes from the git repository summary and compilation of the latest code is automated and rather painless with waf tools in a recent version of Ubuntu with instructions provided on the LoS wiki.  As a stumbling Blender artist, I really appreciate the effort Ari has made in making development on the content side as easy as it is.

There are complied versions released on a loosely monthly basis (at the time of this writing) and they are available for Windows or Ubuntu on the LoS homepage! On the #lipofsuna channel in irc.freenode.net one can usually engage the small but growing community of developers and fans of the game in real time.

LoS Homepage

LoS Wiki

Videos of LoS on YouTube

Sanyo Incognito from Boost Mobile – n800 replacement?

First of all the Incognito is a US$130 no-contract mobile phone that runs java apps rather than a rather expensive, full GNU/Linux, Debian based handheld, can it really replace an n800 (untethered)?

What it has going for it built in, besides unlimited voice, text etc:

CDMA Data ( mobile internets that are not too slow )

Multi-server email client (pop/imap)

2MP Camera

60MB builtin storage for apps and stuff, Micro SDHC Card Slot

Where this device really shines is in the generous 60MB storage for apps if you use an SDHC card for music, pix, and whatever.  Considering that most java apps are about 250KB you can have LOTS of software installed. There are a few caveats…

MY FIRST QUEST

The built in MP3 player is basic at best.  You can point it to a folder of songs and it will play them in order of filename or tag.  **No shuffle**  There is a nice EQ and it supports a bluetooth stereo headset quite nicely with AVCRP controls like volume and track navigation.   I had to replace this because having a shuffling mode makes a large collection of MP3s is more enjoyable for me. This is where my troubles began…

THE JAR AND THE JAD

I searched google for “j2me mp3″ and many results came up, and I was really excited because I thought I could load all of these programs on my phone and find something suitable.  Some download links pointed to a “.jar” file.  the Incognito will not install these and you will have to find a “.jad” type file download link. “.jad” is really just a description of the “.jar” file and is just a plain-text file that you can look through.  The “.jad” has some important information that can keep you from installing a new program or cause a headache.  The only player I found to work well on the Incognito was KDPlayer by Knyzhov Dmitry version 0.5.6. The problem was that the links on the website contain no “.jad”  and I really did not know how to generate one.   With a little more searching I found another site that had the file with an accompanying “.jad” but there was another problem I receive an error message about an “Invalid Descriptor”.  I downloaded the .jad and .jar files and opened the .jad in a text editor.   There was a bad url in the .jad  file.  The “MIDlet-Jar-URL:” line should point to the file without any http://website.com/address/ stuff.  I made the line read

MIDlet-Jar-URL: KDPlayer.jar

and put the  KDPlayer.jar and KDPlayer.jad files in my own little webserver and pointed my phones browser to the .jad and got the app installed. When you first run it, it should ask for permissions to access Multimedia.

KDPlayer is an ok shuffle player but getting it to shuffle requires a Fn-U key-combo to make the number “7″.  Also don’t bother making a playlist of over 100 files or the program will take a long time to load it when you start.  Instead go into the “Settings”, turn off  “read tags” (optionally turn on autostart) and Save those settings.  Select “Folders for Scanning” and use the menu button to “Add” a folder. Accessing the SDHC card is tricky as you  may only see the internal storage folders listed.  Hit the Menu button and select “Back” until you get to the root of the device where you will finally see the “MemoryCard” and select the folder you have your music in. Playing mp3’s with a bluetooth stereo headset on a modern phone is a snap and I dont have the frequent skipping or crash issues I had on my n800.

Unfortunately the version of KDPlayer I ran will not let me advance songs with my bluetooth headset, perhaps a more recent version will have this feature?  Otherwise it has become my main squeezebox.  The other players I tried were LyricShow, but that player quits when I close the clamshell, but it could be fun for impromptu karaoke duets,  and Evan MP3 player crashes on this phone.

SNAPPY MAPPING APP

Mobile GMaps works great on this phone. Use the “unsigned .jad” link on http://wap.mgmaps.com/ from your browser.  The signed jad files will often give you a 909 error with something to do with a licence to access certain features of the phone.  With the unsigned jad you can allow access to most of the phones features once you run the program.  The text in the maps is very easy to read and exploring a map is very smooth.  You can use the great open street maps or yahoo maps.  Somet things that I learned about Open Street Maps project are that the maps are continuously edited by a very dedicated community of contributors.  They can update the maps very quickly and were able to respond during the Hurricane Katrina disaster by describing blocked routes quickly to aid relief workers.  Another important point is that commercial maps often contain errors on purpose as a primitive and annoying means of proving copyright.  Open Street Maps seeks rather to provide the most useful and accurate maps without such nonsense!  Check out their wiki.

The built-in web browser is a bit lacking and only displays mobile formatted pages.  I found OperaMini to be much more like browsing on a computer.  OperMini cheats in a way by sending web page requests to a server that does the actual request and reformats the page to render on the phone through OperaMini. There is no flash support for web applications but youtube videos run well as OperaMini utilizes the phone’s media player to render video.

Free-to-move around, free as in beer but not really freedom.

The biggest problem with many of the applications for a phone like this are that it is mostly proprietary software that may be free-as-in-free-beer, but the code is not accessible to the community.  Many of them are infrequently maintained or abandoned by their developers.  On the Nokia 800, it was great to have great Debian-style repositories filled with lots of useful little free apps, but mobile devices such as the n800, n900, and (even jailbroken) iPhone have very locked-down hardware which means that even GPL licensed software binary gets put in a “Debian-style” repository but without access to the source that can be compiled to actually work on that device!  Cydia on the jailbroken iPhone is an example where apps like MAME somehow become Adware!  Look and see if you can find a link to the developer who ported the software to the device and try to access the modified source!

But there is hope! May the source be with you, always!

That said, I have to mention some really great, truly Free Software does exist for our phones.  jmIrc is a well written app that lets you chat on iRC.  Setup was easy and it runs fine in the background.  If you use Bitlbee you can pipe all of your chat networks (aim, msn, gtalk, jabber, .mac) into an iRC session too! If you just want a dedicated ICQ client, give Jimm a try.  Want to access a remote computer via SSH or telnet shell?! midpSSH does a great job and there is something quite empowering about a remote shell to ones favourite server from a $50 no-contract phone!  A nice car-racing game was recently made free by GPLv3 license called Opposite Lock! The “Nokia 6630, Sony Ericsson K750″ version works fine on the Sanyo Incognito too.  It features 8 player bluetooth mode, but I have not had a chance to try that yet.  There are lots of Free Software projects being developed for our little phones.  Search the web for “GPL j2me” and let me know what useful apps you find!

A 909 state and unsigning an application.

If you run into an app that you really want to try and you get a “909 Authentication” error you can still install the app if you can get both the .jar and .jad files.  Simply remove the sections of the .jad that contain the key information:

MIDlet-Jar-RSA-SHA1: <lots of scrambled text>
MIDlet-Certificate-1-1: <lots of scrambled text>
MIDlet-Certificate-1-2: <lots of scrambled text>

put the .jar and the modified .jad in a web-accessible server and point your phones web-browser to it!

See this page for more info about all this ruckus.

CONCLUSIONS

with a no-contract little phone with a qwerty keyboard, I can now do a lot on the run.  I had no (cheap) way to access the internet on my n800 when not near wifi, but now I have the interwebs all the time and music too.

Projector Personalities

For reasons know only to the maker, some projectors are made with male serial ports and some are made with female serial ports. The most important points on which they must agree with other equipment are 2,3, and 5 (defining the ground) no matter the topic of communication. Some projectors are quite talkative (with their temperatures, fan speeds and current input resolutions) and some are more reserved providing only simple acknowledgement.

Freelikegnu.org back online

Finally got around to restoring the backup image following the exploited server re-imaging.

The budget geek in search of a cheap fix

Some folks can plop down many hundreds of dollars on iPhones, the latest console game machines (and their pricey games) and Uber desktops. Once in a great while I get to spend a little money to geek out on some kind of technology too, though I have to be a bit more frugal. Usually it’s something old that is cheap on eBay. I’ll look for something that will run Linux and has some novel quirk. One of these was an old Itronix 250 military laptop. The device was waterproof, drop-onto-concrete-proof and weighed more that my 2 other laptop machines combined. I upgraded the processor, hacked in a wifi card and antenna, installed a few various versions of Ubuntu and tried with success to get all the features like touchscreen and graphics drivers working nice. Even though it wasn’t the latest gadget, it was cheap for thrills and exercising the Linux skills. When I sold it (for a bit less than all the time and money I put in) I felt I’d had a good deal of fun with it, like working on an old VW bug. One thing I wish I had tried on it was TinyCore Linux founded by one of the lead developers of the famous DSL project, Robert Shingledecker.  TinyCore takes the idea of a compact yet extensible graphical Linux desktop to the extreme at 10MB!  I think it would also work on an Alix3d3 machine I’m experimenting with.  Currently Voyage is running on the  Alix and humming along quite nicely as a “bulletproof” looping video display device running mplayer with a DVD iso file.  The Alix now looks a bit dated in the graphics compared to the new Ion based tiny PCs out there, but it is still more flexible in some ways and durable.  These little machines are cheap and fun to hack not unlike various wireless routers such as the venerable Linksys wrt54g of old (2.2 and earlier) and the Asus wl500w.  The latter I bought because it had a minipci slot instead of the radio being part of the main board and its usb ports to support the TB drive shared on my little network.  It was a great candidate for the OpenWRT firmware and I found others who had made it work well.  All these things are cheap and distracting, some have proven quite useful.  One thing that really makes it fun is the community.  Because others have written blogs, posted in forums, mailing lists or chatted in IRC, I never feel alone in the dark.   I think this is where the real entertainment value is, especially when we contribute to these conversations with our own experiences, questions, reviews, how-to’s etc.

Epic Fail

When one of the oldest and largest telco providers in the world cannot figure out how to run a pair of copper wires to an apartment in Chicago.  When it places a long-time customer on hold for most of the duration of a call to check on the status of his order only to transfer to someone who can only tell him to check back later.  When this company never calls or emails with a reason the customers order for service being delayed.  When the online status check tool tells him the account number sent to him is invalid.

2.6.28.8 Kernel for Alix 3d3 with joystick module

I wanted to add a kernel module for my Alix 3d3 but I figured I would just build a more current kernel for the Voyage Linux 6 installation instead.  Because I am a total weenie, I got excited about a cool program called KernelCheck.  It’s basically a GUI for building configuring and packaging (yes Debian packaging!) the latest greatest kernel from kernel.org.  I built the kernel from my Ubuntu machine using the latest config file from the Voyage kernel, enabled the joystick module and installed the resultant .deb in Voyage.  w00t!
linux-image-2.6.28.8-ultimate_2.6.28.8-ultimate-10.00.Custom_i386.deb

headers if you need ‘em :

linux-headers-2.6.28.8-ultimate_2.6.28.8-ultimate-10.00.Custom_i386.deb

enjoy!

More one-liners!

I just noticed this one tonight, check out Command-line Fu for lots of great shell-j00ky!
Thanks again to NixCraft for the link!

How I love AWK, let me delimit the ways…

tonight I came up with a super handy one-liner to handle a massive number of split files that were in groups:

ls -1 -Q *.001 | awk -F'.' '{print $1"."$2"\"""\ "$1"."$2".\?\?\?\""}' | xargs -l1 par2repair

see, I had a folder whose contents look like this:

file1 space [123456a].ogg.001
file1 space [123456a].ogg.002
file1 space [123456a].ogg.003
file1 space [123456a].ogg.004
file1 space [123456a].ogg.005
...
file1 space [123456a].ogg.par2
file1 space [5321fff].ogg.vol00+01.PAR2
file1 space [5321fff].ogg.vol00+02.PAR2
...
file2 space [5321fff].ogg.001
file2 space [5321fff].ogg.002
file2 space [5321fff].ogg.003
file2 space [5321fff].ogg.004
file2 space [5321fff].ogg.005
file2 space [5321fff].ogg.006
....
file2 space [5321fff].ogg.par2
file2 space [5321fffa].ogg.vol00+01.PAR2
file2 space [5321fff].ogg.vol00+02.PAR2...
file3...
and so on...

WHAT A MESS! If it looks familiar, you must be some kind of otaku!

At first I would manually join all the files in one group that end with a period and three numbers with a cat command

cat file1\ space\ [123456a].ogg.??? > file1\ space\ [123456a].ogg

but even with tab completion, it was tedious, and I would still have to check them with par2repair (usually with the help of pypar2) to make sure they were in good shape!

THERE HAS TO BE A BETTER WAY!!!

after some searching for scripts to join files and coming up with nothing that could handle multiple GROUPS of files, I noticed a blog post that mentioned par2repairs ability to join the split files into the missing file and verify in one step! Just give it a list of files to search from for pieces:

par2repair file1\ space\ [123456a].ogg file1\ space\ [123456a].ogg.???

that simplified the process enough for my feeble mind to formulate a line, but first I needed to rip the extensions off the filenames. Some folks seem to like the “basename” command, but I could not wrap my head around it. AWK could do it if I could use a period as the delimiter. Of course it can!

First lets list the first file of each group, wrap it in (-Q)uotes, and make sure there is one name per line:
ls -Q -1 *.001
which gave me:
"file1 space [123456a].ogg.001"
"file2 space [5321fff].ogg.001"
"file3 space [af23498].ogg.001"
...

now I want to pass that on to AWK, delimit vars by “.” and spit out just the first two vars(with the period added back in between!):
ls -1 -Q *.001 | awk -F'.' '{print $1"."$2}'
but it also truncated the end quote, DOH!
"file1 space [123456a].ogg
"file2 space [5321fff].ogg
"file3 space [af23498].ogg

Thats OK, I can have AWK add the quotes (spaces, wildcards, etc. all escaped) back in as well as the rest of the arguments I want to pass on to par2repair!
ls -1 -Q *.001 | awk -F'.' '{print $1"."$2"\"""\ "$1"."$2".\?\?\?\""}'

that looks like a mess but it’s just because of the escape sequences:
“/ ” is an escaped space character (like the %20 you might see in a URL)
“/?” is an escaped question mark (the wild card for a single character)
“/”" is an escaped double quote

so the above command gives an output of:
"file1 space [123456a].ogg" "file1 space [123456a].ogg.???"
"file2 space [5321fff].ogg" "file2 space [5321fff].ogg.???"
"file3 space [af23498].ogg" "file3 space [af23498].ogg.???"

which is perfectly formatted so that I can pipe each line of that (with the help of xargs -l1) to a separate par2repair command!
BAM!

ls -1 -Q *.001 | awk -F'.' '{print $1"."$2"\"""\ "$1"."$2".\?\?\?\""}' | xargs -l1 par2repair

now if you want to add a bit to delete the processed files, you are on your own!

Credits:
I got help for the AWK delimiting on NixCraft:
http://www.cyberciti.biz/tips/processing-the-delimited-files-using-cut-and-awk.html
A post on the Ubuntu forum that inspired me to come up with a better way..
http://ubuntuforums.org/showthread.php?t=321142
I’ll post the one-liner there now… :-)