Tag: Software Engineering
What bothers you most about this code?
by Jacob on Apr.01, 2008, under Technical
I came across this line of code today, and while I don’t normally hate other people’s coding style, this one has something in it that really bothers me:
i = ((unsigned int)(crcAccum >> 24) ^ *dataBlkPtr++ ) & 0xff;
Death by writing files from the kernel
by Jacob on Mar.21, 2008, under Technical
I’ve written my first semi-major Linux device driver. I won’t say exactly what it does other than write data out to hardware.
Generally, it is well NOT accepted to write to files from the kernel. If you ask how, people will tell you “don’t.” I completely agree with all of the reasons provided, but I decided to do it anyway.
The hardware I’m writing data to isn’t readily available. I wanted to be able to test my code well without having to have the hardware available. So I wrote in some non-release, non-production code that writes data to a file instead of to hardware, but only for testing purposes. When in this simulation mode, the user can interact with the driver and data gets written to the file instead of to hardware, and then the file can be checked for accuracy.
User writes to driver -> kernel driver handles write -> driver writes to file
Easy enough? I thought so until I tried writing to the driver as a regular system user. I chmod’ed the driver so that the user had full privileges to read and write to the file. When root would write to the driver, everything worked, when the regular user would write to the driver, the kernel would crash.
The problem was that the user didn’t have write permissions to the test file that the driver was writing to. I thought the kernel level driver could write to any file it wanted, but apparently, the user’s permissions to the file permeated through the kernel driver. Changing the files permissions fixed things so they didn’t crash any more.
The caps lock and scroll lock lights blink on the keyboard when the kernel crashes. Not quite fireworks, but still kind of cool. Development in a virtual machine is key, so that you really don’t crash your computer, just the virtual machine.
Adobe Error
by Jacob on Feb.25, 2008, under Technical
Today, Adobe announced a new product: Adobe Air. The basic concept of this is that you can compile a web application that you’ve developed to be a run-time on a users system. Adobe accomplishes this through distribution of the WebKit HTML rendering engine. Basically, your apps run like they would in a web browser, except that they look more like they are a standalone desktop application.
Adobe has done a good job at allowing Air applications integrate well with the desktop.
Adobe isn’t the first to use internet delivery technologies for desktop applications. Mozilla’s XULRunner allows developers to create and package multi-platform programs based off the same technology that powers Firefox. However, Adobe has done a good job at making it simple to publish very traditional AJAX apps as desktop apps.
Adobe’s big problem is they only support Windows and Mac. There is no Linux support, at least not yet. One of Adobe Air’s big selling point is that it makes it easy to create cross-platform applications. However, without Linux support, the most Adobe can advertise is dual-platform apps.
For a great demo Air app, look at this complex YUI example.
SCO goes private
by Jacob on Feb.14, 2008, under Business
According to a story on Slashdot today, The SCO Group received $100 million of investment to get themselves out of bankruptcy and back in the forward business direction.
SCO has been in loosing in law suits it brought against Novell and IBM.
I couldn’t think of better news. I mean, from the people perspective, any good engineers still left at SCO might not loose their job. From another people perspective, now SCO has money to pay Novell, so they don’t have to lay off people.
All in all, I think all this means is there is a bigger turkey to roast and cut up.
Harvest the code
by Jacob on May.16, 2007, under Technical
I thought I would throw a few marbles around about my current personal coding project. It is an object oriented content management system written in PHP. In one of my other jobs, I’ve written something very similar, which means there is a good working proof of concept.
A lot of the ideas for features have come through my experiences with Plone, a content management system written on top of Zope in Python. Plone is an excellent CMS, but it is a little complicated, and my CMS should be quite a bit easier to hack on.
I’m calling my project Harvest or Harvest CMS, I haven’t decided which one yet. It goes along with my domain, peargrove.com which I use for various project hosting.
As the project gets underway, I’ll post a link to the project page or project blog or whatever else comes along.