Kirsle.net logo Kirsle.net

Welcome to Kirsle.net!

This is the personal homepage of Noah Petherbridge, and it's where I keep my web blog and various creative projects.

I blog about anything I find interesting, and since I have a lot of varied interests, my blog entries are kind of all over the place. You can browse my tags to sort them by topic and see which ones I frequently write about, or the archive has a complete history of my posts, dating back to 2008!

Besides my blog, I have pages for my creative projects, which are linked to on the navigation bar.

I write a lot about Linux and Android, Minecraft, and I like to rant about stuff. Generally anything that makes me curious. Also check out my Bookmarks for all sorts of cool websites about various topics I'm interested in.

For the geeks: this website respects your privacy and doesn't run any third party ads or analytics. This site speaks HTTP and doesn't require any JavaScript to work.

Java RiveScript
October 22, 2010 (updated September 17, 2019) by Noah
A couple weeks ago I started over on my Java RiveScript library and now it's feature-complete enough that I'm releasing a beta version. I've created a Google Code project for it at http://code.google.com/p/rivescript-java/.

It supports all the directives and tags that the Perl version does, including the trickier things like the %previous tag and topic inheritance/includes. The only notable thing it doesn't support yet is object macros, because Java isn't a dynamic language and can't dynamically execute more Java code. So, eventually I'll be adding JavaScript support to it for object macros, and maybe even find a clever way to get Perl macros to work with it too.

With this I eventually plan on creating some RiveScript-enhanced Android apps, like a "personal assistant" chatbot that can talk out loud and listen to you using Android's text/speech converter libraries.


Sept 17 2019: this post is attracting a lot of spam bots posting links to stupid sites about Java. Comments on the post are now disabled.
Tags: 2 comments | Permalink
Android Mini PC
October 12, 2010 by Noah
The device of my dreams: a no strings attached, open Android-powered device, which is like a smartphone (touch screen etc.), but which is not a phone, but can get a data plan from any cell carrier in the same way that laptops can use 3G cards and get internet anywhere from a cell phone carrier.

It would basically be a miniature PC that resembles an Android phone, but which isn't a phone, but which you can just install Skype on if you really need to make a phone call, since it could still get cellular data service.

And, being like a miniature PC, it would be as open to operating systems as a real PC; it would be just as easy to install and reinstall Android firmwares (or any compatible OS) to it as it would reinstalling your operating system on your laptop.

I imagine Dell would be a good manufacturer for such a device; they would market it just like they market netbooks, as being just a mini PC that happens to run Android (preferably the stock vanilla Android as Google intended it, but being open you could flash any version of Android you want).

If such a device existed I would buy it as soon as it came out. I'm quite sick of the way phone carriers abuse the Android OS and wish there could just be a seriously open device.

Tags: 3 comments | Permalink
RiveScript Licensing, Cont.
September 24, 2010 by Noah
One of my friends started taking some classes to learn C++ recently and would ask me for some homework help now and then. I know much of the syntax of C++ pretty well due to the numerous times I've attempted to learn it by following tutorials, but this all inspired me to try diving back into it again.

On my many attempts to learn C++ I never actually made anything useful that wasn't a tutorial-like program (with the exception being a single-threaded CyanChat library I was working on but never completed). So this time I decided to just skip the tutorial b/s and dive right in to making a RiveScript C++ library, and Google things as I run into them.

I knew about C++ strings (who doesn't?) which are a big improvement over what C has, but I newly discovered vectors (dynamic resizable arrays) and maps (associative arrays) and among these three, it covers all the basic data types I'm used to in Perl.

I hit a roadblock though when it came to constructing the large data structure that the Perl RiveScript module makes and which I'm familiar with, but looking into C++'s struct solved that pretty quickly.

All this attention to RiveScript lately, though, made me remember the point about how the Perl RiveScript module (the only feature-complete implementation of RiveScript to date) is released under the GNU General Public License, which would demand that any application that uses it also be released under open source.

I was thinking of re-licensing RiveScript under a more open license to see if it could drive up usage of it for non-GPL projects. I was considering something like the LGPL, Apache or BSD license. But, I think I have a better idea!

At work I was using ExtJS for a while and I saw how their licensing scheme works: they dual-license their code; the GPL licensed version is free to use, but being GPL code it demands that your entire application be made open source. They then have a commercial license that allows you to use their library in a non-open application, for a fee.

I think this may be the better way to go. For the open source folks who use RiveScript today nothing changes, but if somebody wants to create a commercial application with RiveScript they wouldn't be able to use the GPL-licensed version. After watching all the news about SmarterChild and its parent company (Colloquis, now owned by Microsoft) over the past decade, with their chatterbot patent and their commercial SDK, giving out free code that can be used in a commercial closed-source product doesn't seem like a very smart move. ;)

The chatterbot patent now owned by Microsoft is groundless anyway, because the Net::AIM module on CPAN released in 1999 ships with an example script for an AIM chatterbot which pre-dates ActiveBuddy's inception in 2000. ActiveBuddy's claim that they invented the AIM chatterbot falls in the face of prior art.

Tags: 0 comments | Permalink
RSS Feed
August 21, 2010 by Noah
I've finally put together an RSS feed for this particular incarnation of my web blog.

It's available at http://www.kirsle.net/rss.cgi.

Tags: 0 comments | Permalink
Don't Hotlink Your Font Files
August 5, 2010 by Noah
Everybody who hotlinks their EOT font files from my ttf2eot tool will see the Sabrina font instead of the one they wanted.

My ttf2eot tool is a converter tool only; it does not host your EOT font files. Do not hotlink directly to the files on my server. The files only remain for up to 24 hours and then are deleted. If you hotlink to a deleted font, you will get the Sabrina font instead, which most likely isn't what you want.

Tags: 2 comments | Permalink
"By the way: If you like this game, buy it or die."
July 27, 2010 by Noah
I discovered I hold a small chunk of Internet fame even though nobody knows it.

In Pokémon FireRed and LeafGreen, there's an anti-piracy measure that I triggered late one night while using a MysticTicket and AuroraTicket to start my quest of capturing Lugia, Ho-oh and Deoxys. The ticket checker at Vermilion City told me to buy this game or die.

By the way: If you like this game, buy it or die.

I created a You're The Man Now, Dog page using this animated GIF image (because at the time--near the end of high school--YTMND was cool). From there apparently the GIF found a home in the Bulbagarden forums.

Months (years?) after making the GIF I decided to google this and see if anyone else has seen it. Apparently it's been verified by various ROM dumpers to be legitimately in the game's code, so my ROM wasn't just a hacked copy. And that's when I discovered the familiar-looking animated GIF; verifying its MD5 hash proved it was indeed the result of my 5 minutes spent taking screenshots and animating them that these people were all linking to.

Interestingly, it seems that the GIF is the only screenshot (animated or otherwise) that exists on the topic. IIRC all I did was enter some cheats to get me a MysticTicket and AuroraTicket (either by cheating and making my monsters carry them when captured and subsequently take them away, or else by buying them at a Pokemart) and then attempting to catch a boat with them in hand.

Tags: 21 comments | Permalink
noah.is
July 22, 2010 by Noah
Yay, I've finally gotten a domain name of just my first name! noah.is. There's nothing there just yet, though.

I've been wanting a domain like this for a while (especially after I saw my former boss, Samy's (my hero) domain name, samy.pl), and then I found a domain checking service online that would look up a domain under every possible TLD and I found a few that were still available, .is being the most attractive of them all (come on, http://noah.is/awesome?).

It took a good number of hours wrestling with ISNIC about the DNS settings, though. They have retardedly strict requirements for DNS servers; the servers themselves have to be configured in the most strict way possible (matching forward and reverse DNS records for each of the name server hostnames for example), and furthermore they want all their DNS servers to be "registered" with ISNIC, and they want the person who manages the name servers to be the one who registers them.

Thus, using the ol' ns1.kirsle.net, ns2.kirsle.net was out of the picture, as my server has only one IP and I don't control the reverse DNS on that IP regardless. Luckily my web hosting company provides DNS forwarding services, and their servers are configured in the strict way ISNIC requires. I just had to register them with ISNIC ($karma--, I registered them with my own ISNIC name instead of bothering my web hosting company to do it; should be fine though, if they have any issues I'll forward the e-mails they send to the web host to deal with then).

ISNIC charges me 39 euros a year for the domain and they are the sole dictators of .is so I can't transfer to another registrar... but, again, http://noah.is/wicked.cool? Seriously.

Tags: 1 comment | Permalink
Standing on the Shoulders of Android
July 20, 2010 by Noah
I saw on Digg today that Google discontinued sales of their Nexus One phone, following "disappointing sales."

What it really means from what I've read is that Google is just not selling the phone themselves directly but it can still be obtained via other means (developers can still buy them and they're still being sold in other countries), but that Google still intends to support the phone for the foreseeable future -- it will still be the first in line to get Android updates, for example.

I have a Nexus One and I like it and this news is a bit worrisome to me, but not in the way you might expect. Rather, because the Nexus One is one of the few Android phones that is truly open.

Apparently, the very first Android phone (the G1), the first Droid, and the Nexus One are pretty much the only Android phones that ship with the stock, vanilla, Android firmware. All the other HTC phones out there for example run the "HTC Sense" UI on top of Android, and the Motorola phones run the "Motoblur" UI; some people don't like these add-ons on top of Android and would rather run Android the way Google intended, using the stock vanilla release of the ROM. Or, some people just like to hack their phones and have root access on them.

The Nexus One phone made it really easy to unlock your bootloader and install custom/unsigned Android ROMs onto the phone if you wanted to (it would even provide a nice screen warning you that you're about to void your warranty). The Nexus One allows you to install whatever you want on it, and both Google and the phone itself fully supports this. But, other phones, notably the Motorola phones that come with an eFuse that will practically "brick" your phone if you try to modify its firmware, aren't so open.

There seems to be a trend in Android phones in which companies are trying to play Apple; Apple's iPhone devices are super locked down, and Apple tries to patch all the security holes to stop people from jailbreaking their devices - with each firmware release Apple tries to make it harder and harder to hack the iPhones. In Apple's ideal world, their hardware would be completely 100% impenetrable from hackers and nobody could modify their devices. It seems Android vendors want to copy this business model, which I for one do not like.

It seems Android vendors are "standing on the shoulders of giants," they look at Android and all they see is a free open source Linux-based mobile operating system, and they wanna just take all that hard work, add a few things to make their devices a major pain in the ass to hack (in their ideal world, absolutely impossible to hack) and then jerk their customers around in exactly the same way that Apple does. Is this really what Android was supposed to be all about? Just giving greedy megacorporations the cheap tools they need to strongarm part of the cell phone monopoly in their favor?

Hopefully the Nexus One won't be the last developer phone that can be bought by non-developers. I got mine specifically because it ran the stock unmodified Android firmware and because it was completely open to customization. As I ranted about before, I don't like how Apple is able to just slow down your old phones and force you to upgrade; at least I have the comfort of knowing I can easily flash any Android ROM onto my Nexus One and nobody can force me to upgrade by slowing my phone down or doing anything else malicious to it.

God help us if this is the future and we're stuck with many Apple-like companies all forcing us to use their locked-down devices that we're not allowed to touch at all for fear of permanently bricking our devices.

Tags: 1 comment | Permalink
Relicensing RiveScript
July 8, 2010 by Noah
It occurred to me today, after having read a lot about other software projects and their licensing schemes, that I should change the license used for my RiveScript library to something less restrictive.

The Android OS project, for example, opted to release the core Android components under the Apache license, rather than the GNU General Public License (GPL) which is usually popular with open source GNU/Linux software.

Using the Apache license was a strategic move for Google, because the Apache license is less restrictive than the GPL; with the GPL, any software you write that incorporates GPL code must also be released, in its entirety, under the GPL license. Just by using GPL code in your application, your whole application must be made open source under the same terms as the GPL'd code you borrowed for it.

To put this in perspective, let's imaging a hypothetical story in which Adobe decides to add a new image format into Photoshop, and they use some code for this image format which is released under the GPL license. Because Photoshop is using GPL'd code--even though they're using only a tiny bit in comparison to the rest of Photoshop's code--Adobe would be forced to release Photoshop in its entirety under the GPL license; they would have to provide all of its source code to its users, and you could therefore just download it and compile your own Photoshop from source code.

Proprietary software companies like Adobe of course wouldn't like this, so they don't generally like to use GPL-licensed code in their products; the GPL is considered viral because it "infects" the entire application and forces it all to become open source just because it is. The GPL is a "copyleft" license.

Android's code is released under the Apache license instead because, that way, individual vendors can make their own modifications and additions to the base Android code, and add proprietary features to keep an edge over their competition. If their contributions to the Android core was forced to be made open source, as the GPL would require, they would be less inclined to spend time and money developing their new features in the first place, because their competitors could easily just take their code for themselves in their own Android devices.

So what does this all mean for RiveScript?

RiveScript has always been released under the GNU General Public License, which would be great if RiveScript was, itself, a complete software application. It isn't. RiveScript is just a library, a Perl module, and it doesn't do anything until you write an actual Perl application that loads the module.

So if somebody wanted to create and sell a closed source "desktop assistant" type application, with a pretty GUI and an animated face and it could speak to you out loud and understand you when you speak to it out loud, and it simply wanted to use my RiveScript module for the artificial intelligence part... they wouldn't be able to release it as a closed source product. The GPL license governing the RiveScript library would force their entire application to be made open source.

This obviously isn't ideal; and so, usually, libraries are released under the GNU Lesser General Public License, which is an ideal license to be used for software libraries.

Under the LGPL, an application would be allowed to use my RiveScript library and still be, overall, a closed source application. The only restriction would be if they wanted to modify RiveScript itself, to add new features to it or extend its functionality in any way; if they touch my RiveScript module itself, their changes would have to be released to the public as open source. But, it wouldn't touch the rest of their product at all; they could still keep their overall product closed source and sell it if they wanted to.

So, I'm thinking I should relicense RiveScript and maybe see if that will help drive more developers to use it in their projects. The LGPL though isn't particularly ideal for a Perl module though since the license deals a lot with terminology like "linking" which only applies to C/C++ code. But maybe the old tried-and-true Artistic License that Perl itself is released under would do just as well.

I'll work out the details later but expect RiveScript 1.22 to be licensed more openly; or, at the very least, dual-licensed to be used in both open and closed source projects.

Tags: 2 comments | Permalink
OpenSolaris
June 15, 2010 by Noah
At the office, after preupgrade failed to upgrade Fedora 12 to 13, I figured I could either just install Fedora 13 from scratch, or use the opportunity to give OpenSolaris a try.

OpenSolaris is a Unix operating system (not Linux); I'd played with it in VirtualBox on a few occasions but haven't really gotten into it very deeply so I decided to try installing it on real hardware and try to use it on a day-to-day basis and see how I like it.

OpenSolaris was the creation of Sun Microsystems as a free/open source version of their Solaris operating system. The last stable release was version 2009.06 -- released in June 2009. That version was a bit buggy when run inside VirtualBox; for instance, the audio system didn't work with the virtual audio card provided by VirtualBox, and one would need to manually install the Open Sound System and do a bunch of hacking to fix it. The 2010 release of OpenSolaris was supposed to fix that, but the 2010 release is still missing in action...

After Oracle bought out Sun it seems that OpenSolaris is being neglected. It was supposed to have a release in February as version 2010.02... but that got pushed to March (2010.03), but March came and went and there hasn't been any news from Oracle about it. I hope OpenSolaris isn't going to die though, because it's pretty interesting to me. It and Mac OS X are the only two Unix-based operating systems I've found (so far) that are as user-friendly as Linux. I've tried FreeBSD, for example, and it installs a text mode system and getting a graphical desktop requires a bit of work; it seems to be for the hardcore Unix fans and not the user base of Linux users.

Anyway, I installed the latest development build that was slated to become 2010.*, and, to my surprise all the hardware on my PC at the office worked perfectly with OpenSolaris out of the box; even the proprietary nVidia drivers came pre-installed so I could set up the dual monitors immediately. It's surprising because OpenSolaris in general, along with most other Unix operating systems, doesn't have nearly as wide a range of hardware support as does Linux.

So... dying or not, I'll keep trying OpenSolaris out until I break it or get sick of it, whichever comes first. So far it's been providing a nice new challenge for me though; its software repository isn't as wide as most Linux distributions, so some of the software I'm used to using in Linux that's usually just a yum install away is a bit trickier to get for OpenSolaris. I can live without most of them though for work-related purposes; all I need is VirtualBox, Firefox and some terminal windows to do my job. But I did have to compile the latest version of Wine from source to run my company's chat application because the 1.0.1 version with OpenSolaris doesn't quite cut it.

Once you know one Linux distro you can find your way around any of them; Unix is where the diversity is at. :)

Tags: 2 comments | Permalink