![]()
I put together a quick 12-at-the-top 24h homescreen widget for Android. Check it out on the Android Market!
After discovering SuperGenPass and finding that it solves the uppercase/number and entropy problems that I had with PasswordComposer (at the cost of added complexity), I decided to make a version that I can take with me. With some help from Ari Pollak, I put together an Android version of SuperGenPass that tries to make the experience of using it on an Android phone as integrated as possible. If you're constantly fighting with trying to remember website passwords, check out SuperGenPass!
After a few years of stagnation, I've finally released a new version of my SharedExpenses software. SharedExpenses2 is a complete rewrite of the original, keeping only the concept. For those unfamiliar, it's tool for people who live together and want to share common utility, grocery, and other such bills amongst each other. One could think of it as a complex "IOU" system or as a interest-less public credit system. Either way, if you live with two or more people and are looking for something to make it a little easier to keep track of who owes whom how much, this is for you.
This new version is written in Python with web.py and sports one of the most requested features of the previous version: circular debt removal. See the project page for details.
Go give it a shot and post any bugs you find to the SharedExpenses2 trac server.
In a valiant effort to procrastinate the writing of a presentation, I put together JQS5. This is a very simple jQuery + Javascript Slide Show engine. It can turn the most basic document, such as this one, into a slideshow.
The concept is based on S5 which is a wonderful HTML slideshow engine. S5, however, requires you to add more markup than I care to worry about. JQS5 doesn't require any special markup to your document. Just add in the header and you're set!
As no special markup is required to make it go, I threw together jqs5.xsl which is a simple XSLT stylesheet to add in the appropriate headers to your XHTML document. As my site is all XHTML, I added a site-wide filter that lets me look at any page as a slideshow. See my projects page for an example.
Go check it out!
I wrote a Blosxom plugin that lets you geotag - that is, associate something with a specific geographic (latitude/longitude) coordinate - a post on your weblog using plain-text entry. It uses Google's excellent new maps feature to do the location lookup.
Now that it doesn't require great effort to geotag my posts, I will be doing so more often. You can click on the light-green "M" to get a satellite map of whatever I may be talking about.
Though this post has nothing to do with my current location, I've tagged it with the location of Geekhaus - for show.
I made an RSS 1.1 plugin / flavour for Blosxom. It's got the basic functionality to make a valid RSS 1.1 feed (well, valid at least at the time of writing this). I should be updating it as the spec. gets finalized, though it's not versioned. I'll put a notice on the page regarding update times.
I updated my Rawdog to OPML exporter (ver 1.4) to now support categories. You can add OPML categories to your Rawdog file by using the following syntax:
### kittens
feed 60 http://purr.example.com/index.xml
feed 45 http://kitten.example.com/feed.rdf
### news
feed 60 http://news.example.com/feed
feed 45 http://morenews.example.com/news.xml
Where the ### comment designates the words after it to be the heading. Not complicated, but quite functional. I also removed the dependency on XML::Simple, as I don't really like using that module for XML generation. It should now be able to run on any out-of-the-box Perl installation.
I just dug up an old piece of code and cleaned it up some. It reads a DTD and spits out a pretty-printed (and hyperlinked!) HTML document for easy navigating the file. It uses CSS and spits out HTML 4.01 so it should be decently friendly. It's called dtd2html and is free to use/hack under the GPL. Post any comments here regarding bugs or feature requests (or you can email them to me if you want).
I put together a quick hack for the upcoming geek holiday: a binary countdown clock. It requires Perl, Time::ParseDate, and a VT100-compliant terminal. Run it with no arguments for this holiday.
The holiday is another high-order bit being flipped in the Unix time. Unix time, for those not in-the-know, is the number of seconds since midnight of Jan. 1, 1970. You might think, "wow, that must be a lot of seconds". It is. At precisely 08:37:04 tomorrow (January 10th), it will reach 230 (or 1,073,741,824) seconds - hence the holiday.
So, happy almost-230-seconds-since-the-Unix-epoch!
Update: I put together a Javascript version of the countdown clock. Enjoy :-)
I just put together a Nokia image upload server so that I can upload photos straight to my server from my cell. You can see the photos I've uploaded so far in my gallery. I'm pondering a good way to make an RSS feed out of uploads, while consolidating common events into single posts. I'll see what I can find/write tomorrow, when I'm not in dire need of sleep.
I got myself a vocoder. Well, a vocoder plugin. With it, I can sound like a robot.
You've probably heard a vocoder, but not heard of a vocoder. They're quite popular in electronic music, used heavily by bands like Kraftwerk and Freezepop. It's a audio filter that takes two sources, the carrier and the formant. The formant is the human voice source and the carrier is commonly a simple waveform, say an 80Hz sawtooth wave. Parts of the formant is filtered out and replaced by the carrier, weaving the natural and the generated sound sources into one synthetic-sounding voice that retains most of the voice's pronunciation.
I put together a little network in Galan that had both "analog" and simple wave carriers. I put a cross-fader between the two carriers so they could be changed or combined. I found with an equal balance of an 80Hz sawtooth carrier and a 350Hz "analog" triangle-wave carrier produced a pretty decent robotic voice.
I used the vocoder on my red-robot costume for Halloween. Unfortunately, my laptop speakers weren't loud enough to drown out my voice and so I just sounded incomprehensible with it. I'll have to get some battery-powered speakers and a USB joystick to manually control the carrier frequencies for next time.
After poking away at a network client written in pure malloc'd C, I was remound of the most excellent and geeky song, "Write in C". (there seem to be some revised versions of it out there, mentioning Java instead of ).
In remembering that song, I recalled that I hadn't heard anyone sing it besides myself, acapella. I thought it's bound to exist in a recorded fashion somewhere out there in the vast and glorious Interweb. Well, look no further junior rangers! There's a whole flock of geeky songs in an old album by called Spammer's Paradise. You must check it out. MIDI + [bad] singing + awesome lyrics == geeky like nothing you've heard before.
You know computers are running too much of your life when you accidentally sleep-in and skip class due to a programming error. You also know that you program too much when you can diagnose that error, fix it, check it into CVS, and then can fall back asleep. Finally, you know you're a 'net junkie when you are amused by that chain of events and then blog it, knowing the blog will be syndicated to at least 3 other websites.
Oh, and you can get the updated versions of the code here: classalarm. Other necessities for it can be found here: scripts.
I'm starting to research Jabber for work. Jabber is very cool. It's not only an IM system, but it's also a really good platform for routing XML messages. It can therefore be used for all sorts of nifty things, including RPC and generic message systems. Now the only thing left to do is write some nifty apps for it. I think i'll implement Geekhaüs's information-age instant-message-sending doorbell with it; that'd be super-keen.
# dd if=/dev/hda bs=1 | tee /dev/dsp | hexdump -C&
# dd if=/dev/hdb bs=1 | tee /dev/dsp | hexdump -C&
# tcpdump -w - | tee /dev/dsp | hexdump -C&
$ say bible.txt&
$ say pi.txt&
$ for a in $(find . -name '*.wav'); do play "$a"; done&
always makes for some interesting
visuals and mind-numbing audio.
Tonight, I was not staticfree.
Atom
RSS 1.0
RSS 1.1
RSS 1.0 no comments
Technorati Profile
GeoURL
![]()
All original sound, text and graphics on this site (staticfree.info) are licensed under a
Creative Commons License.