Software Portability
Software portability is something that is starting to gain more attention and developers are finally starting to look into with the rise in market share of Mac OS X and Linux/BSD. However there are still many developers choosing to create separate code bases using say, .net for windows, objective c and cocoa for OS X, and gtk for linux/bsd. This strikes me as pointless and a waste of time, especially if you are not releasing source and are going to distribute as a package anyway as you have options like Qt which as of 4.x are totally cross platform and provide a lot of support for various libraries built in.

Today I came across something that just seemed a little pathetic. While the company most likely is not huge and the software they make very useful, however extremely buggy, the "linux version" is simply the windows version that includes a version of wine with it to run.

Wine is a very valuable tool and incredibly useful when companies wont port their applications, but if a company is going to sell software for linux/bsd I think they should at least spend the money and time to create a native port of it. If I'm going to spend money to buy the "linux version", which costs more money, why not just get the windows version and use my own version of wine?
[ Sunday, Jul 13, 2008 ] [ Permalink ]

Naming Consistency
I really don't understand why people can't pick a naming scheme and stick with it, especially when creating content they want others to get. I don't know if it's some OCD thing I have or if it's just that people don't understand the importance of naming consistency, but it is a pain in the ass while trying to grab multiple episodes, volumes, etc. of some type of media where the naming scheme changes with each release. Being a programmer scripting is something fairly common to me, I do it constantly because I am lazy and want to minimize the amount of repetitive and boring tasks that I have to do. Now, the problem occurs when people can't seem to stick to a naming scheme as it makes it much more difficult to script downloads especially when the media is not in an open directory. So please, if you can't stick with a naming scheme, at least provide an easily parsable list of urls to the files or just throw them all in an open directory so that we don't have to go hunt down all the files.
[ Monday, Jul 07, 2008 ] [ Permalink ]

Random Rantings
A couple of weeks ago I got interested in the music sharing that iTunes allows and was determined to see if it was possible to do with amaroK and other non-iTunes media players. Looking briefly I discovered that apple developed and used a protocol called DAAP (Digital Audio Access Protocol) which had some time ago, before apple opened and then reclosed the source, been reverse engined. Upon setting it up and reading I soon discovered however that with the release of iTunes 7.x apple had modified the protocol to include encryption or some for of DRM to stop open implementations from working. So fuck you apple for once again breaking open source implementations because people aren't using your software any more. Maybe instead you should focus on fixing your software so people, besides apple fanboys, will use it. I know that it's a radical idea, but maybe people actually like freedom and will use your software if you don't pile on restrictions not allowing them to do what they want with it. However, the opendaap implementations still work fairly well, assuming you don't care about using iTunes shares, and it's actually really simple to setup if you are interested in sharing your music across your network from say a file or media server. For more information about it check out http://www.fireflymediaserver.org (formerly known as mt-daapd) which is a daap compatible server for sharing music and http://www.opendaap.org for information on adding daap functionality into your favourite media player.

Secondly, Rails is not the same as Ruby and Ruby on Rails is not a programming language. This misunderstanding has been around since before I first learned about rails and don't understand why people still are not clear on this. Ruby is a programming language and Rails is a framework. Get it right or stop writing as you are contributing to the loads of crap found on the internet making is more difficult to find useful information.

Apple once again gets more flack for their recent announcement of their "cocoa-inspired" framework allowing web apps to take on the appearance of cocoa http://www.roughlydrafted.com/2008/06/14/cocoa-for-windows-flash-killer-sproutcore. I'm sure there are a lot of people out there happy to here this, especially those who do web app development, really developing a framework that visually resembled cocoa is nothing new. The real power of cocoa is in the way that you can create native apps and not just eyecandy (which is still remains to see how much they will actually implement). Cocoa which functions in many ways similar to Qt uses serialized xml to create the forms and then connect signals to various actions than connection object to actions. Now some of this can be replicated in javascript, css, and other techniques however the point remains that apple is not porting cocoa to any other operating systems. This shows that most likely apple is using this web framework and simply a marketing strategy. It can be used to hook in users of other operating systems showing some of the cool stuff you can do if you buy a mac or to get users to use the software that apple decides to so graciously share the the rest of the computing world who aren't mac users. It's obvious that they have no interest in open source or supporting other platforms unless it is directly making them money or getting them more users. Looking at the open source projects you see WebKit which most likely was only open due to the fact that it is a fork of KHTML (Konqueror's rendering engine) and CUPS which was created as an open project and if it were re-licensed there would immediately be a fork and nobody would use Apple's version, except for mac users.

Lastly, I'm somewhat torn about this last one but I'm still pretty pissed off. Since the purchase of ATI, AMD had claimed to be working with creating better and more open linux drivers for their video cards. After the purchase, thousands of pages of specification and documentation were released on the chipsets to aid open source developers in creating drivers. As someone who doesn't mind binary drivers, assuming they work well and I can trust the company, releasing the documentation is great and all, but I want a working driver too! AMD has had a decent track record so far with fixing big issues and having working drivers out but the recent release of Fedora 9 shipping with a beta version of Xorg server. ABI changes were made and both nvidia and ATI drivers no longer worked. Despite the fact that the server isn't released yet, and the fact that it's been delayed a few times, building compatibility for these changes is still something that should have been worked on prior. Yes Fedora is shipping beta software but nvidia had no problem getting at least a working driver out within a matter of a couple weeks of the release. AMD has release two drivers since the release, neither with support for the beta Xorg server. Then they make their press release announcing their open source driver for a new chipset they are using. It's great that they are doing this, however there are hundreds of thousands if not millions of unsupported cards out there which I think the owners care about a little more than a new chipset that none of us have. If I need to buy a new card to get some decent support now, I may as well buy an nvidia card which is a company I like more, usually produces better cards, and has a much better track record with linux drivers.
[ Thursday, Jun 26, 2008 ] [ Permalink ]

May Roothack Wrapup
Well the game is over an unfortunately our box was taken. However this has been one of the better games I've played despite losing the box, I learned a lot and really that's what it's about. For a full writeup and account of the game check out our whitepaper here.
[ Wednesday, May 28, 2008 ] [ Permalink ]

NetworkManager
I remember hearing about all kinds of problems with NetworkManager when distros started shipping it and chose to stay far far away from it continuing to mostly use the terminal to handle most of my network connection needs. Although after giving it a try with Fedora 9 I have to say that I am totally impressed. Aside from the fact that the KDE dock app doesn't work and I have to use the gnome one, it makes wireless connections incredibly easy. No more having to deal with wpa_supplicant or picking out the best connection when there are multiple access points with the same name. In short, use it, it's awesome.
[ Saturday, May 17, 2008 ] [ Permalink ]

Fedora 9
Still hesitant about installing Fedora 9 due to the few issues I have known about (the kernel and X don't work with the proprietary amd or nvidia drivers) I thought I'd give it a shot on my laptop now that the semester was over and I didn't require it on a daily basis. After installing and configuring I'd have to say that this is in my opinion the best release since Fedora Core 5. Since 5 I've had countless issues in Anaconda and the new installs ranging from the incorrect kernel being installed to Anaconda crashing because it doesn't properly handle certain inputs (such as the space bar during package selection).

During a relatively painless install only encountering one issue which appears to be something left over from the Fedora Core days, I was greeted by the new gdm screen which I will say previous versions looked much better. However considering that I don't use gdm and boot into init 3 this really isn't an issue for me.

After logging in I was greeted with a nice view of KDE 4. Unfortunately KDE 4.0.4 had not been released early enough to make it into Fedora 9 however it is available in testing and should be pushed into the main repo fairly soon.

Since there is no support for the proprietary drivers I am forced to use radeon or radeonhd for the X1400 in my laptop. The radeonhd drivers are a little weird sometimes when you shut the lid or kill X. This is easily fixed however simply by changing the console and then going back. The only real issues I've come across in KDE so far are two empty spaces in the dock where there should applications but there is just a black space. I don't know if this is a bug or if the icon is just missing. The second issue is that gtk themes are not being used by default. I've never personally had this issue before though I do know a few people who have and I need to figure out how to set the default theme for gtk apps so it doesn't just appear as the ugly flat one.

Despite the few small annoyances, I'd say that this is probably one of the best releases of Fedora so far and I am a bit upset to see articles such as this, which claim that Anaconda is too hard to use and it should be simpler like Ubuntu. The fact is that Anaconda is fairly simple and the few things that are mentioned in the article are user error (or issues that could have been resolved easily like the partitioning if he just setup a new partition) and useful configuration options such as dhcp, dns, etc. Developers should not be expected to cater to users who do not want to learn and users should not be restricted because there is a user base who refuses to learn. There are many problems with Ubuntu as well as the developers though that is for another time. But catering to a user base who needs the installer dumbed down even more seems pointless as these are going to be users who will not contribute to the project and will be the ones in IRC asking the stupid questions refusing to look for information themselves. Yes it would be nice for Linux to gain marketshare, but if it means removing the customizations or forcing these defaults on people who don't want them to do so then it isn't worth it. One of the main points of Linux is the ability for choice, and turning Fedora into Ubuntu is taking a lot of that choice away by forcing the developer's choices on the users.
[ Thursday, May 15, 2008 ] [ Permalink ]

I'm still alive...I swear
Ya, it's been a long time since an update, partially because I haven't had a lot of cool stuff to talk about, but mainly because of my lack of free time and sleep deprivation.

Now that I'm actually starting to catch up on my sleep and not spending all my time in school, working, or working on fraternity stuff I have a chance to share some stuff I've found and post an update again.

First off I'll finally be moving off Dreamhost which is going to be awesome. I'm so sick of all the downtime and email server issues I've had. Like I said before things had gotten better for a few months but now it's worse than ever. I'm having constant downtime, horribly slow connections and I can't deal with that happening. I've recently picked up a vps from http://www.panix.com which so far I'm reasonably happy with. So far it seems to be pretty stable and reasonably priced, my only complaint so far is the connection speed. I know that a vps uses a shared connection, but it's just not as fast, up or down, as I would have hoped. Though my site and email should all be moved over to it by next month which hopefully will all go smoothly with no downtime.

Next, after not having used 1-800-free-411 for a while I found out about some really really nice features they've added. Now aside from just getting free 411 access you can have the number and address texted to you so you don't have to have something to write it down.

Lastly I just wanted to say that Dell access points, or at least the one I have, are horribly insecure. Luckily the httpd they use doesn't allow seem to allow binary files to be downloaded, but there are so many flaws it is crazy. I will hopefully have some more information to publish shortly on my work in reverse engineering it, I'm just trying to find a way to actually pull the files off which I may have found though haven't had time to test. Unfortunately I haven't been really working on anything really cool lately but I'm really overdue for a nice coding binge which I hope will happen soon. It's been a long time since the last one.
[ Saturday, Apr 19, 2008 ] [ Permalink ]

Stupid Ruby Devs
As most people probably know I really really like Ruby. I think it's a really nice language with a lot of nice features however it's really missing the community support of other languages. But I've come across something that I really just can't understand why someone thought this would be a good idea.

The class Ruby comes with for handling HTTP takes care of a lot of what you might need. Some of it is a little strange and personally I think there are a few too many aliases in it or methods that are very similar but really it works fairly well, except for when it comes to properly handling cookies.

A normal HTTP header looks like this:

HTTP/1.1 200 OK
Date: Thu, 20 Mar 2008 05:58:36 GMT
Server: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: third=3; expires=Thu, 20-Mar-2008 05:59:11 GMT; path=/~livinded/; domain=1
Set-Cookie: forth=4; expires=Thu, 20-Mar-2008 05:59:11 GMT; path=/~livinded/; domain=1
Content-Length: 5
Connection: close
Content-Type: text/html

Notice the fact that there are multiple Set-Cookie fields shown here as there is more than one cookie to be set. Now, take a look at what I get when iterating through the header that the class has parsed and put into a hash:

content-type: text/html
x-powered-by: PHP/5.2.5
date: Thu, 20 Mar 2008 06:03:35 GMT
server: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5
content-length: 5
set-cookie: third=3; expires=Thu, 20-Mar-2008 06:04:05 GMT; path=/~livinded/; domain=1, forth=4; expires=Thu, 20-Mar-2008 06:04:05 GMT; path=/~livinded/; domain=1

Notice anything different? Someone thought it was a good idea to combine all the Set-Cookie lines into one value for the "Set-Cookie" key in the hash and then delimit them with a comma. Now on the surface this may not seem like such a big deal however looking over the field closely you'll see that there is another comma in there, separating the day of the week from the date. The problem here is that this optional field makes it much more complicated that it should be to iterate through and parse the cookies that are returned by a page. Why would you combine them into one line, using a character that could be in the string, rather than having the value of the key be another hash or array or at least use a delimiter that would not be in the string?

Note: After about 45 minutes of greping and manually searching I found that they actually created a method to handle parsing their mangled cookies. It's located in webrick/cookie.rb. There are two methods there and I'd probably suggest always going with the second as it will always give you all the cookies where the first will only return one. The method is WEBrick::Cookie.parse_set_cookies and will return a WEBrick::Cookie object which there is info in ri on.
[ Wednesday, Mar 19, 2008 ] [ Permalink ]

More Vulnerabilities
I am really starting to think that the developers responsible for the site at the school I go to don't understand the concept of development and production environments. Every weekend major parts of the site seem to go down as they work on fixing problems, adding features, updating, etc. I don't know if they are just having a hard time deploying changes, but for some reason main parts of the site simply show a screen explaining to call the helpdesk during the open hours (they aren't open on the weekends) and that the site will be working again on Monday.

The fact that they continue to break the site exposes interesting vulnerabilities in the system they use to track student activities on the network. In order to even get an IP address from the dhcp server the mac address of the device must be registered on a students account. Now honestly it really isn't that difficult to steal someone else's mac and spoof yours, or maybe log in to someone else's account and register your mac on theirs but that isn't even required to become anonymous.

After the account management system had been down for approximately two weeks I decided to just go down to the helpdesk office and get my n810 registered in person so that I could actually use it at school. After asking the tech on staff about the system used and getting a response to the extent of, "what is a radius server" I simply asked him to add the mac address of my device into the system. He proceeded to give me a clipboard with a sheet of paper on it which had two columns, one for the address and the other for the student ID. Requiring no proof that I actually am a student I was given student information as well as allowed to register the mac address to a bogus student ID.

Honestly, what the hell are these guys being paid for? Are security and good development skills not in the job description of someone who works in the IT department?
[ Sunday, Mar 02, 2008 ] [ Permalink ]

Nokia n810
I just picked up a Nokia n810 yesterday and so far I've been pretty happy with it. My only real complaint so far is that fact that it's a little difficult to locate flash images for the upgrades and figure out what is where. There are about three main sites that have different version of some of the software and I've been trying to figure out which one to go to and where to pick up the different versions.

http://www.maemo.org is the official site for the distro which the device runs. It seems to be a modified and slimmed down version of the arm build of debian though which version of debian I'm not sure.

Then there is the actual Nokia site which provides some information as well as the windows tool to handle updates and link to the information about updating on linux (which leads back to the maemo wiki). The information there is slightly outdated providing a link to the images which does not have the last two or three versions. If you want the newest version, you need to head over to http://tablets-dev.nokia.com/nokia_N800.php where Nokia requires you to enter the mac address of the wifi card to ensure that you actually own a device. I haven't checked yet to see how they check, but you may be able to enter any valid mac address that has the first three octets assigned to Nokia.

The last site is another one hosted by nokia called tableteer which has a lot of Nokia and 3rd party software available for download. So far I've had pretty good luck with it, though the package for pidgin wasn't compiled with bonjour support. I'm not sure if avahi is installed yet, but it would be interesting to see if I could get bonjour working on here.

So far the battery has held up pretty well although I'm not sure how to tell when it is fully charged. I left it plugged in for a few hours yesterday and the icon never switched from "Charging" to "Charged" or provided any other indication that the process was finished.

Last night on the way home I gave the gps a try which I was fairly satisfied with. It seemed to lag a little bit though I have nothing to judge it against and it took a while to actually get in sync with the satellites. Apparently there is a nonfree version of the maps they provide which I may look into purchasing to play around with but I haven't done really any investigation into it yet.

All in all I'm pretty happy with it and just need to pick up a screen protector so I can take off the one it comes with (which annoying has some stickers on it and a tab to remove it) and a miniSDHC card for some real storage space. Stand by for some real technical information in the future, I haven't really had much time to hack on it so far.
[ Sunday, Feb 24, 2008 ] [ Permalink ]

Next

Links
Mozor IRC Network
Binary Revolution
HackerMedia
Digital Dawg Pound