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.

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
Design Refresh
May 12, 2010 by Noah
I've made a small "refresh" to the web design on kirsle.net. In short, I've finally brought the design up to speed for the year 2010!

The design looks the same as before, except now, all the see-thru transparent bits in the design, now, are truly see-thru, and now the main background image (with the purplish sun) will stay put while you scroll the page. Also, the blue borders around the navigation and content panels are now rendered by the web browser via CSS instead of being static images.

The reason the design was so "flat"/"fake" before, is because Internet Explorer 6 and older don't support true alpha transparency in PNG images very well, and I was trying to make my web design as accessible as possible to all browsers. But recently I found it's hard for me to read the text on my own site at times, and it's usually only a problem further down on a page where there's nothing but text, and the starry background image. So, now the purple sun will stay put and add some flair to the page no matter where you scroll it to. :)

Internet Explorer 6.0 and older will still be served the old layout with the flat images with fake transparency and a scrolling background; all other browsers will get the new layout with the true transparency and CSS-rendered borders. :)

Next time I completely replace the web design, IE 6 and older won't be getting any love; if that browser chokes on alpha-channel PNG images it's not my problem; that browser is a decade old.

Tags: 0 comments | Permalink
My Problem with Apple
April 15, 2010 by Noah
I've told parts of this story to various people and posted about it in notes on Facebook but here's finally a blog post that sums up all the reasons I don't like Apple.

I didn't care one way or another about Apple until I got an iPhone 3G about a year ago. I got it about a month before the iPhone 3GS model came out; I heard the 3GS was on its way but nobody knew when, but I figured, "a smartphone is a smartphone, who really cares if mine doesn't have a compass built in?" How wrong I was.

I didn't know then what Apple was planning to do in the following month. Basically, they release the 3.0 firmware upgrade for iPhone 3G users. The new firmware gives the 3G customers a taste of some of the new features and would encourage them to buy the upcoming 3GS phone to get the rest. But, one more thing, the 3.0 firmware slows your shit down! So, the customers who were fine with the 3G and didn't plan to upgrade to the 3GS, now, would probably want to buy the 3GS just because they get sick of the 3G being so slow.

If you take an iPhone 3G running the 2.x firmware and compare it side-by-side with the 3GS phone running the 3.0 firmware... the differences in speed and "snappiness" is negligible.

So basically, the 3G was slowed down, on purpose, and then when the Apple fanboys stopped complaining and got used to this new slowness... Apple releases the iPhone 3GS and "ohh my godd, it's SO fast and snappy!"

I've been telling everyone my prediction for the last year but now I'm writing it for my blog: my prediction is that this upcoming summer 2010, Apple will release the 4.0 iPhone OS firmware upgrade, which will slow down all the 3GS phones (Apple's currently latest model of iPhone), and then this will be followed a week or two later by Apple unveiling the iPhone 4, which will be OH-SO-FAST now compared to the crippled, slowed-down 3GS phones.

Let's just wait and see if I'm right.

For this reason, my iPhone 3G is the first, and last, Apple product I ever intend to own. Well, the only closed device, anyway; I do like the Mac OS X operating system, and with a Macbook you can always reinstall the operating system from the CD that came with your computer. But with locked-down devices, once you make the mistake of upgrading, you can't go back; modern iTunes versions make sure of this: when you try to restore your devices in iTunes now, iTunes insists on getting the very latest firmware from Apple and doesn't let you browse and choose an older firmware image.

Because of the way Apple abuses their iPhone and iPod Touch customers, you'd better believe they'll pull the same shit with iPad customers too. I hope all you iPad early adopters love your iPad now, but just wait and, approximately a year from now there will inevitably be a new model, and Apple will really want to slow your shit down to force you to either deal with the artificial slowness, or pay another $500+ to upgrade to the latest model.

So I'm not a fan of Apple's closed devices. But I'm also not a fan of Apple's policies in terms of their app store approvals and rejections.

It was all over the blogosphere when Apple banned the Google Voice application from the app store, and even started an FCC investigation about whether Apple had any legal right to do so. Why did Apple ban Google Voice? Because it competed with Apple's very own phone application.

Similarly, there have been other apps Apple has killed because Apple is anti-competitive, including an e-mail app that was better than Apple's built-in e-mail app. Apple likes to maintain a complete monopoly--nay, a dictatorship--over its app store, and it would rather completely exterminate any hint of competition than to actually, you know, compete back. If somebody made an e-mail app that kicks the ass of Apple's e-mail app, Apple should make their e-mail app better than the competition; it shouldn't just throw a bitchfit and say "BAWWWWW this app isn't approved for the app store!"

Apple, in this regard, comes off to me as being like an immature little child, who would rather throw the chess board on the floor and scatter all the pieces than to even think about dealing with any form of competition whatsoever.

In the "App Store Competition" boat also sits Adobe Flash. It's highly speculated that the real reason Apple has a vendetta against Flash is because Flash applications can be just as feature-rich, interactive and animated as native iPhone applications. If Mobile Safari had a Flash player, nothing would stop people from creating web applications, that consist of a Flash object, that users could bookmark as Home Screen icons, that would be just as full-featured as native iPhone applications.

Similarly, Apple's latest developer agreement says you must originally write your app in C, C++ or Objective-C. Why did Apple decide to add this clause just now? Because Adobe's latest Flash beta includes the capability to export your Flash application into Objective-C code, which would enable one to basically use Adobe Flash to create iPhone applications.

Apple hates Flash for one reason: it directly competes with the app store and the native iPhone applications. If you could use Flash to create Objective-C code to author iPhone applications, Apple may lose some market share since Mac OS X is no longer required to create iPhone apps, among other things.

Anyway, this is where I stand on my views about Apple. Frankly, Apple is evil, in the sense of the term as it is used in Google's company slogan, "Don't be evil." Apple is this kind of evil.

So, I have no plans to ever own another closed Apple device, and would never consider developing an iPhone application. Nothing could be worse than spending weeks or months developing an application, only to have Apple dictate at the last minute that your app won't be allowed on the app store.

When I get an Android, I'll do Android app development. It has a plus of being Java-based. This means if I decided to make, say, a game, I could program the game once and then very trivially make many different ports of it: a desktop application, "full version" of the game; a Java applet, "try online before you download" light version of the game; and an Android application, "mobile version" of the game.

I know Apple fanboys like to google for anyone talking shit about Apple and I welcome the comments. I just know however from speaking with Apple fanboys I know in real life that they all were fully aware that Apple slows down their old devices (a co-worker fanboy has an iPhone 3G and agreed that it was slowed down with the 3.0 firmware). But, as expected of Apple fanboys, they try to justify it and defend Apple even though Apple is blatantly screwing them over and extorting them for as much money as possible. But by all means, post your comments anyway; entertain me with your blind dedication to Apple and how you believe they could do no wrong.

Because from where I stand, holding my iPhone 3G that takes 40 seconds to load the SMS app from a sleep state (and you 3G users know exactly what I'm talking about), Apple is doing nothing good here.

Tags: 4 comments | Permalink
Unified Linux Distribution
April 13, 2010 by Noah
I saw a somewhat interesting article on Digg today titled "The trouble with Linux: it's just not sexy." Apart from making some rather ridiculous claims, one interesting idea the article mentioned was that Linux would have to be unified, standardized, in order to succeed.

The article compared Linux to Firefox: with Firefox, if you make any changes to its source code and redistribute it, you're no longer allowed to call it Firefox, but only "Firefox-based." This article mentioned the idea of one distribution of Linux being able to call itself the Linux; all other distributions have to call themselves "Linux-based."

This wouldn't really work out though, largely because there would be too much politics involved in such a thing. If somebody did want to create "THE" Linux distribution, what desktop environment should be chosen as its default? GNOME, KDE, something else? Or, what package management system should it use? Aptitude/DEB, or Yum/RPM?

Debian, being one of the oldest Linux distributions, would naturally prefer that Debian be the package manager of "THE" Linux. And you could add the whole entire Ubuntu fanboy population on that side of the debate; Ubuntu noobs would all support Debian format, just because these noobs were handed Ubuntu and with that, Debian packages were grandfathered to them because Ubuntu is based on Debian. On the other hand though, large corporations like Red Hat would prefer that RPM be used as a package manager.

Because of politics like this there will probably never be an "official" Linux distribution; only a popular one, like Ubuntu currently is.

Here's what I would suggest though to market Linux as a real competitor to Windows and OS X: first, create a completely new desktop environment, not GNOME or KDE or any existing environments. Make something unique about it. Windows has the task bar and start menu, and OS X has the dock and global top menu bar. What does GNOME or KDE have? Bits and pieces from both.

A new desktop environment developed by a large company would help a lot because the entire desktop experience could be controlled and made high quality. Distributions that just build on top of GNOME or KDE only make the problems even worse by adding custom control panel software and further fragment these two desktop environments. A new desktop environment could be better controlled and marketed from a central point.

And, this desktop environment could license itself like Firefox: if you change it, you have to rename it. Linux itself is already too big to change the way its name can be used like this without starting an epic flame war all over the Internet, but a new GUI desktop environment could pull this off.

Tags: 2 comments | Permalink
Rant: Arrogant Developers
March 30, 2010 by Noah
The more I use open source software, the more I start to dislike the developers of open source software. They tend to change things and remove features in newer releases of their projects, taking away functionality that used to be there just because they feel like it.

One example of functionality that was removed at the whim of a developer that was actually kind of an important feature: in the GNOME desktop environment, you used to be able to set what mount options you wanted used when GNOME auto-mounted a flash drive or external hard drive when you plug it in.

The default mount options include, among other things, the shortname=lower option for FAT32 volumes. What this means is that, if you have a file on the FAT32 hard drive that fits within the 8.3 filename format of DOS, and the file name is all uppercase, it is displayed in Linux as all lowercase.

I used to (used to!) back up all my websites to a FAT32 hard drive, and I have a folder titled "PCCC" -- all uppercase, and shorter than 8.3 characters. The default mount options would have Linux display this to me as "pccc" -- all lowercase. When restoring from a backup, then, my site would give 404 errors all over my Perl CyanChat Client page, because Linux is case-sensitive and "pccc" is not the same as "PCCC."

It used to be as simple as editing the GNOME gconf key and changing this mount option. But as of Fedora 11 or so, changing the mount options in gconf has no effect. After researching, it turns out that Fedora 11 decided to switch from HAL to DeviceKit to manage the automatic mounting of flash drives. And, DeviceKit doesn't pay any attention to your gconf options.

And, to make it much worse, DeviceKit has the mount options for FAT32 and other filesystems hard coded into the binary itself. So for me to set the shortname=mixed mount option I want for FAT32 drives, I have to download the source code for DeviceKit, find where the mount options were hard-coded into the source, change them there, and compile my own custom version of DeviceKit. This is ridiculous.

Googling as to why in the world this is, I found comments from developers very similar to the one on this bug ticket that goes like this (emphasis mine):

The other part of this bug a discussion of whether exposing mount options to
end users is an useful thing to do. My view is that it is not. So the
replacement for gnome-mount/HAL, namely gvfs/DeviceKit-disks, will not support
that.
Excuse me? I'm sure I cannot be the only person in the world who finds it useful to be able to change the mount options.

As a result of this, I have to edit /etc/fstab and add entries for my permanent external hard drives (FAT32) to get them to use the mount options I need. What is this, 1999 again? We shouldn't have to touch fstab nowadays.

Another example: GNOME 3.0 and GNOME Shell. I have ranted about this several different times now. I'm not against innovation, but I am for backwards compatibility. Intentionally developing a desktop environment that is supposed to replace one as ubiquitous as GNOME 2.x and having it require very powerful graphics hardware, with no fallback for less capable systems, is not a good idea.

One more example (kinda nitpicky, really): in the 4.4 release of the XFCE desktop environment, the window list panel applet used to support automatically grouping all windows of the same application into a single button, and an option to display only the icon of the application and not the window's title. See where I'm heading with this? Long before Windows 7 was even out, XFCE's panel could emulate the behavior of Windows 7's new taskbar. The feature is completely missing from XFCE 4.6 however, probably because the one developer who manages the panel applet decided by himself that nobody, anywhere, uses that feature and he removed it.

This arrogancy by open source developers makes me worry about other projects. In the XFWM4 window manager used by XFCE, you can currently double-click on the menu icon in the title bar and that will close the window, similar to the behavior of Windows as far back as Windows 3.0 (at least). I haven't seen any other X11 window manager that supports double-click-to-close like this (Metacity and Emerald for sure don't support this).

I rather like the double-click-to-close feature, but I'm afraid it will just up and disappear one day because this feature is very poorly documented and the developer may one day decide that nobody uses that feature and delete it from the code. I use that feature! Don't delete it!

Because of things like this, I find myself more and more thinking of just creating my own desktop environment. Yes, a whole entire desktop environment: panels, window managers, everything. I've seen a few Perl-powered desktop environment features that I bookmarked so I can dissect them later. Like, I'm a big fan of the XFWM4 window manager, but I'm not a C or C++ programmer and wouldn't know where to begin if I wanted to fork XFWM4 as my own project. Thus I would write my own window manager in Perl, program in the features that I really like, and maintain it on my own, so that I won't ever lose a feature suddenly just because some arrogant programmer somewhere decided without consultation that the feature is useless.

Ah well... you get what you pay for, I guess.</rant>

Tags: 4 comments | Permalink
Perl-Powered Desktop Environment
March 16, 2010 by Noah
A few interesting links I found recently:

perlwm - An X11 Window Manager Written in Perl

http://perlwm.sf.net/

This is an allegedly fully standards-compliant X11 window manager. It appears to be very minimalistic however, but is pretty interesting nonetheless. The window manager, if you don't know, is the software that draws title bars and window borders around all of your windows.

perlpanel - A GTK+ Desktop Panel

http://savannah.nongnu.org/projects/perlpanel

This is a desktop panel written in Perl, using the GTK+ toolkit (same as GNOME, Xfce and Lxde). While meant to be used in conjunction with minimalist window managers such as Blackbox that don't tend to come with panels of their own, it could easily replace gnome-panel or xfce4-panel in their respective desktop environments.

I played with it for a few minutes by doing a `killall xfce4-panel` to nuke my panels and then started this one in their place. It comes with 36 panel applets, some of which require additional perl-Gtk modules to be installed for them to really function properly.

perlbox-desktop - A Perl/Tk Desktop Environment for X11

http://rpm.kirsle.net/tarball/perlbox-desktop.0.1.8.tar.gz

Nowadays, Perlbox is all about voice control software for Linux. But apparently a long time ago, Perlbox was an X11 desktop environment written entirely in Perl/Tk, which is the GUI toolkit I used in my Perl CyanChat Client, and you can see how ugly it is if you look at the Linux screenshots for that program.

I played around with this one. It creates a "panel" of sorts that it sticks on the bottom of your screen. Besides being ugly as sin, this panel doesn't even hook into your window manager to show a taskbar list of your running applications. It's really clunky and not very fun to use, and did I mention how ugly it is?

I logged in with the Blackbox window manager to test it and I forgot to grab a screenshot of it, but there's a (scaled down) screenshot on an old freshmeat project page for it. Also, it's here:

Perlbox Desktop

These projects are interesting and I'm definitely gonna save a copy of their source codes for reference material in case the day comes where I get the utterly insane idea to ditch all the existing Linux desktop environments and create my own, from scratch, that does what I want (the only complaint on my list so far with all the desktops I've tried is: when a panel auto-hides, they like to destroy all their panel applets, so that when the panel is unhidden you see the contents jump around as all the applets load back up. Why!? Just move the panel off the screen, don't destroy all its applets.)

Just one complaint isn't enough (yet!) for me to roll my own desktop environment though. :)

Tags: 2 comments | Permalink
PulseAudio with rdesktop
March 16, 2010 by Noah
rdesktop, the command-line-driven Windows remote desktop client for Linux, is a kinda old program that uses OSS (Open Sound System) for its audio, so it tries to open /dev/dsp as your audio device.

In modern Linux distros this device doesn't exist because now we have PulseAudio. So how do you get rdesktop to play sounds from the remote server on your local machine? Using padsp from the PulseAudio pulseaudio-utils package in Fedora (and probably a similarly-named package for Ubuntu).

padsp "starts the specified program and redirects its access to OSS compatible audio devices (/dev/dsp and auxiliary devices) to a PulseAudio sound server."

Then just put padsp in front of your rdesktop command:

$ padsp rdesktop -u Kirsle -f -r sound:local 10.10.1.100
Tags: 4 comments | Permalink
New Favicon
March 14, 2010 by Noah
After moving this website from cuvou.com to kirsle.net, I never got around to making a new favicon.ico for it (the icon for cuvou.com can be seen as the emblem on my tutorials page).

The new icon in 962, 482, 322, and 162 sizes:

96x96 48x48 32x32 16x16
(These are PNG images with alpha channels, if you're using a lame browser like IE 6 that can't show them correctly, then... I pity you. Catch up with the rest of us in 2010 and use a real browser.)

It's an emblem I made up at least 7 years ago, it's a composite of the letters "CjK", as in my Internet alias, "Casey James Kirsle."

Speaking of favicons, I created the icon using a command-line tool in Linux called icotool. In Fedora it was provided by the icoutils package from the fedora yum repository.

# create (-c) favicon.ico (-o) from source PNGs cjk-16.png and cjk-32.png
$ icotool -c -o favicon.ico cjk-16.png cjk-32.png
Tags: 0 comments | Permalink
Charter Breeze
March 13, 2010 by Noah
I've recently put together a web design for a friend's business, Charter Breeze - it's a transportation company based in Los Angeles. It's the first web design I made for somebody else that actually went on to become a full website. And it's running the same content management code I wrote for Kirsle.net. :)

Here's a screenshot from the homepage:

Charter Breeze - Los Angeles Bus Rental

Tags: 0 comments | Permalink