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.
Design RefreshThe 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.
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.
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.
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>
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.
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.
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:

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. :)
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
The new icon in 962, 482, 322, and 162 sizes:
![]()
(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
Here's a screenshot from the homepage:

Spiky blue-haired hero...

Spiky red-haired villain! And the debug-mode actor selector window.
I made some new character sprites (the ones pictured are temporary. I created a template spriteset and then hurriedly threw these guys together so I wouldn't have to show naked sprites in the screenshots).
The engine supports multiple heroes now (the blue and red haired guys are the singleton heroes), and multiple maps (each of the singleton heroes are on different maps), and it keeps track of what's happening on each map at all times.
Next on the to-do list: teleporting between maps (and when a singleton is the last one to leave a map, the map gets purged from memory and non-singletons left on it are forgotten about and reset if the map gets reloaded in the future), and animations.
After that: on-screen text and dialogs. Then shortly thereafter there will be a public alpha release of it that you can mess around with.
See other blog posts about my game engine: KAGE.
The laptop has an ATI Radeon Xpress 1100 (a.k.a. Xpress 200M), and it seems that just months after I bought this laptop a couple years ago, ATI obsoleted that card. So, I've been using just Windows XP on the laptop since converting it to a media center PC, because getting the S-video to work in Linux with the obsolete/unsupported drivers was a nightmare.
Windows, however, annoys me. I'm using the VLC Player for my DVD-playing needs, because it's pretty much the only program I can get to actually play DVD's. But it's annoying, and half the time when I start up Windows and tell VLC to play my DVD, VLC starts crashing the whole system really hard and forcing a reboot. I'd much rather have Linux around for situations like this.
Today I installed Ubuntu 9.10 on the laptop. I would've installed Fedora 12, but I don't have any LiveCD's handy at the moment. I installed it in a dual-boot way so that Windows XP is still there if things blow up.
So far, I'm pretty sure I'm using the default drivers Ubuntu picked for my video card, unless me installing "atitvout" accidentally pulled in the fglrx drivers or something. So it's either radeon or fglrx right now; I dunno which.
Anyway, the S-video port doesn't detect the TV at all without some manual fscking around with it. I eventually found a collection of xrandr commands I can run to force it to detect the S-video port and add an 800x600 mode to it and a couple other things.
I wound up writing this small shell script, so after I log on to the desktop I run this in the terminal and pray that the TV will get a signal from the laptop, and display a second desktop on it without it being all scrambled:
#!/bin/bash xrandr xrandr --output S-video --set load_detection 1 xrandr --output S-video --set tv_standard ntsc xrandr --addmode S-video 800x600 xrandr --output S-video --right-of LVDS --mode 800x600Here, LVDS is the built-in LCD screen on the laptop. Line 2 forces xrandr to detect S-video, line 3 sets it to use NTSC standards (PAL for outside the US), line 4 adds an 800x600 mode to it (which is pretty much standard for dinosaur TV's like the one I have), and line 5... might actually activate the second monitor and extend my desktop to it.
The last line there is hit-or-miss. It seems to have an 80% chance of showing a scrambled output on my TV, a 10% chance of sending no signal at all (TV goes to a black screen), and finally a 10% chance of doing what I want it to do: actually show my extended desktop clearly.
So, I copied that very last line into a separate shell script called "tv-retry.sh", so after running "tv-out.sh" (the first script) I run this second one for however many times it takes for my TV to show a clear picture.
Here's my terminal output from the last time I got the TV to work:
kirsle@ubuntu:~$ sh tv-out.sh Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 800 VGA-0 disconnected (normal left inverted right x axis y axis) LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 304mm x 190mm 1280x800 59.9*+ 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 640x480 59.4 S-video disconnected (normal left inverted right x axis y axis) xrandr: cannot find mode 800x600 kirsle@ubuntu:~$ sh tv-out.sh Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 800 VGA-0 disconnected (normal left inverted right x axis y axis) LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 304mm x 190mm 1280x800 59.9*+ 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 640x480 59.4 S-video disconnected (normal left inverted right x axis y axis) kirsle@ubuntu:~$ kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh xrandr: cannot find mode 800x600 kirsle@ubuntu:~$ sh tv-retry.sh xrandr: cannot find mode 800x600 kirsle@ubuntu:~$ sh tv-retry.sh xrandr: cannot find mode 800x600 kirsle@ubuntu:~$ sh tv-out.sh Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 800 VGA-0 disconnected (normal left inverted right x axis y axis) LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 304mm x 190mm 1280x800 59.9*+ 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 640x480 59.4 S-video disconnected (normal left inverted right x axis y axis) kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-out.sh Screen 0: minimum 320 x 200, current 2080 x 800, maximum 2560 x 800 VGA-0 disconnected (normal left inverted right x axis y axis) LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 304mm x 190mm 1280x800 59.9*+ 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 640x480 59.4 S-video connected 800x600+1280+0 (normal left inverted right x axis y axis) 0mm x 0mm 800x600 59.9*+ 59.9* kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.sh kirsle@ubuntu:~$ sh tv-retry.shIt would've been much easier if this video card wasn't made obsolete right after I bought this laptop. Stupid ATI! This is why I like Nvidia more, just in case you were wondering; Nvidia works better in Linux, and they at least support their old unsupported cards (or somebody does, at least).
0.0016s.