You have reached the blog of Keith Elder. Thank you for visiting! Feel free to click the twitter icon to the right and follow me on twitter.

Deep Fried Bytes Episode #17: Discussions about Gnome, Linux and Software Development with Luis Villa – Part 2

Posted by Keith Elder | Posted in Linux, Open Source, Podcast | Posted on 07-11-2008


 Listen To This Episode 



This is part two of a conversation we had with Luis Villa.  In the second part of this conversation we talk to Luis about all sorts of things including open source licenses, Google, Apple, Microsoft, Office and more.  We even have a war stories segment in this episode.  This is a continuation of part one, but honestly, we think it is the best part.  Enjoy.

Ways To Listen To The Show

There are several ways to listen to Deep Fried Bytes.

1. Directly From The Web Site (or click the link above)

When you visit the site look for this:

Clicking the triangle will launch the Yahoo! media player and automatically start playing the show for you. As long as you leave the browser window open the player will stay open. Clicking off the page WILL stop the player!

2. Subscribe via iTunes and Zune

If you have iTunes or Zune installed on your computer you can subscribe to our show. In iTunes open the Music Store and search for “Deep Fried Bytes”. In the Zune software, go to the MarketPlace select Podcast and search for “Deep Fried Bytes” to subscribe to the show. You can also click either of the two icons below to automatically subscribe to the show if you have iTunes or Zune installed.

Subscribe via iTunes Store Subcribe via Zune Market Place

3. Subscribe to RSS Feed

To stay current and up to date with the show, subscribe to the site’s RSS Feed. If you don’t know about RSS feeds you can read more here: http://en.wikipedia.org/wiki/RSS_(file_format)

If you already have an RSS reader installed and setup, click the feed icon below to grab our news feed.

Subscribe to our podcast!

Installing Ubuntu Linux – Is It As Perfect As They Say?

Posted by Keith Elder | Posted in Linux | Posted on 08-07-2008


It has probably been four years since I last installed Linux from scratch.  It isn’t that I haven’t touched a Linux command prompt or system in four years, it just that all of my installs are on my servers which just get updates applied.  I decided to install Ubuntu Linux the other morning on an older Dell laptop I have replacing Windows.  All this laptop is used for is surfing the web around the house.  It lives next to my man chair (recliner) in the living room.  The purpose of this exercise was twofold.  From a usability point of view I wanted to see how easy the install of Linux had gotten and document my experience.  And two I know there are a lot of people that have never even attempted to install Linux and I hope this helps those people at least play around.  I will probably also use this install as a basis for some future topics as well as learning some new languages.  Thus, you’ll probably see some new material coming out down the road. 

The version of Ubuntu I downloaded was 8.04.1.  After installing Ubuntu on my Dell I wanted to capture the install experience so I created a virtual machine using VMware Workstation and did another install.  After getting presented with the initial boot screen I started capturing screen shots.  Here is a walk through of installing Ubuntu along with some, man, that was cool, or wow that was stupid moments.

Installing Ubuntu

Step 0

The very first screen a user is presented with when installing Ubuntu is the language screen.  I’ll point out this screen doesn’t tell a user anything to do.  I guess we are all suppose to know to press enter. 


After selecting a language you are brought to this screen.  Again it is missing that finer touch of UI polish by not telling the user what to do.  The text in red is what I put in using Snagit so don’t think that was already there.  I put it in to point out what was missing.  I wanted to do an install so I pressed the down arrow on the keyboard (again not mentioned in the screen) and pressed enter.

Am I being picky?  Not really.  I can tell you right now any average computer user would question what to do next at this point.


The next screen, while aesthetically pleasing, doesn’t tell me anything that is going on.  What is my computer doing right now?  Is it formatting my hard drive or what?  This screen needs something to indicate to the user what the program is doing. I’m guessing it is loading the kernel in the background.  This is much more pleasing to view than the kernel spit message after message but it still needs some type of interaction with the user.


Knowing Linux the way I do I am sure this screen is loading necessary services Linux needs to load.  Again, there is nothing to tell the user what is going on.  Think about this for a minute.  What if  a user had to call into a support line and tell someone on the other end their computer locked up installing Linux?  There are two screens that look very similar in nature.  How would that be diagnosed?


Pretty.  I dig the background of a penguin that looked like it got shot with a 12 gauge repeatedly.  Seriously I like it.  At this point we are in XWindows and we are going to start using the mouse to configure and setup the system.  Linux has been moving to GUI based installers for years and it is nice to see some extra polish at this point, even if it is just the background.


Step 1

Thus far I have had to press enter to select a language and then enter to kick off the installer.  If you recall, the first thing it asked me for was to select my language.  Well guess what?  It is going to ask AGAIN!  Why, I have no idea since I had already selected it earlier during step 0.  It looks like this would have already been done for me.  There is also something on this screen that bugged me.  I’m not really sure why but the word “Forward” in the bottom right is the name of the button to move through the setup process.  This just hit me as absolutely weird.  It is like the developers are trying to be so different as to not put the word “Next->” there that it looses the meaning.  Sorry guys I just don’t get that.  When you tell me I am in step 1 of 7, I immediately don’t think of the word “Forward” to go to the forward step, I mean next step.  See, it doesn’t even make sense when trying to explain it.  This is yet another example of developers not calling a kettle a kettle ( see past forrest gump article).  


Step 2

This is the worst screen to deal with in the entire setup.  This screen has been around for awhile and I didn’t like it then and I don’t like it now.  Why?  The whole select a city is absolutely horrible.  Why the standard time zones aren’t printed here I have no idea.  I can’t begin to describe how frustrating it is to find a city with the proper time zone.  Not to mention there are literally hundreds of options in the menu. It is not easy to navigate.  I just looked at the time zone selector on Windows and there are 1/20th of the options available comparatively speaking when one just displays standard time zones.

There is an option of clicking the little itty bitty tiny very small ever so miniscule yellow dots with the hopes and prayers you select the right one too.


Step 3

This screen is easy.  The nice thing that was done is the ability to select an option and see if it still works.  Let’s go forward, I mean next.


Step 4

If you are setting up a machine and having Linux take up the entire drive this is pretty simple but still not very gump.  With some minor UI work this could be simplified.  I’m not really sure why the word “Guided” is even there.  Why not just say “Use the entire disk” ?  There is nothing guided about it since we are at step 4 and as we see the next step asks us for information.


Step 5

This is pretty simple.  Fill out the form and move on.  Easy and simple.


Step 7

Somehow step 6 doesn’t exist.  I don’t know where it went.  Maybe it was a step that didn’t have a user interface, who knows.  We went from 5 to 7 get over it and let’s move on.  It is driving me crazy too!

Step 7 is basically a review screen, not really enough to warrant a step.  I think it could be eliminated.


Step 7.1

I couldn’t resist to see what was behind the curtain of the “Advanced…” button.  Turns out it was just asking if we wanted to change the boot loader option.  I think this should have been asked back in step 4.  It seems out of place having it here.


After pressing install the installation goes really quickly.  On my Dell I think it was installed in like 5 maybe 10 minutes.





First Boot Up

After the system boots for the first time you are presented with a login screen that is really nice.


After logging in you are brought to the initial desktop for Ubuntu 8.04.1.  At the top are the Gnome menus and the bottom is used as a task tray to switch between open applications.



A few minutes after being booted the first time Ubuntu went into action and prompted me about new updates for the operating system. 


When pressing “Install Updates” the administrator or root password is needed.  This is the password created for the account account back in Step 5.  For users who don’t know about how Linux uses permissions this may not be that obvious.  It would be nice to see this explained the first time a user is asked.





Installing Additional Software in Ubuntu

Ubuntu is based on Debian Linux and uses the same packaging system called apt.  If this is your first Linux install you will want to open a terminal or use the Synaptic package manager application to install additional software.  For example if you want to install the Eclipse IDE open a Terminal window and type the following:

sudo apt-get install eclipse

The word “sudo” is used to execute commands with evaluated privileges in Unix if it has been configured.  Unix systems refer to this as “root” whereby Windows refers to it as “Administrator”.   The rest of the command “apt-get install eclipse” will go out and download and install Eclipse.  If you want to see what additional plugins Ubuntu supports then search the package management system using apt-cache.  Here’s is how.

apt-cache search eclipse

This command will print all of the packages that have the word eclipse in them as shown here.


Those are the basic commands you need to know to install and find software to play with.  Read and learn apt, it is your friend.

Thanks Ubuntu For Just Working

One of the really nice things Ubuntu did after being installed was do something I never got to work on Linux back in the day and that was wireless networking.  I almost cried when I clicked in the upper right of the screen and saw my home wireless network.   I selected it and I was online wirelessly!  I remember spending countless hours trying to compile a wireless driver for another Dell I had before surrendering to defeat.  Needless to say I was shocked at just being able to select a wireless location and it work.  I’m still shocked.

Another thing Ubuntu did after being installed on my Dell was to tell me my battery may have been recalled and there was a non-free video driver that I could use. I downloaded the driver and restarted.  I immediately saw a difference in speed.

For my Dell that sits in my living room Ubuntu is an easy choice.  It comes with Firefox 3, Evolution for email as well as Open Office.  That’s about all I really need for leisure browsing after work.  I’ve already been playing around with Mono, Python and a few other things that I wanted to catch up on and it is a great feeling to be back at a real command prompt.

Open Source to .Net Transition – Mac or PC?

Posted by Keith Elder | Posted in .Net, Linux, Open Source, PHP | Posted on 23-10-2007


It seems that an article I wrote a while back is making its way around the Internet once again.  It never fails that once a year or every 6 months it pokes it’s head up from the ashes, dusts itself off and finds new readers.  The article I’m talking about is this one:

How an Open Source Developer Transitioned to .Net

It is an interesting read and if you haven’t read it, check it out.

I started getting lots of emails from readers last night and this morning as the article was passed around.  One person emailed me a question that was particular interesting after reading it:

Thanks for sharing your story on your transition from .php to .net. My main question is; did you also change from working on Macs to the inferior PC’s?

Obviously by the reference of “inferior PC’s” in the question we know where this reader stands.  It is sort of like one of those interview questions you get that is completely loaded.  For example, “So Mr. Person Wanting a Job…. things around here are really busy.  A lot of the times you have to switch tasks very quickly.  How would it make you feel if you were working on a project and then your manager asked you to stop it and move onto something else?”  Obviously the question has already been answered.  Or rather loaded up for you to respond in the way the person asking the question wants to hear.  By the way, if you ask these type of interview questions, stop.  They get you no where.  I digress though. 

I don’t know if this question is the same loaded type of question but my first reaction was, wait, aren’t Macs made up of the same parts that are in PCs?  It is a hard drive, processor, video card and memory.  Apple looks at various vendors and plugs in the best deal / bang for the buck just like any other PC manufacturer.  Are PCs really inferior just because Apple has a better looking plastic cover than most PCs?  I don’t think so since they are essentially made up of the same parts.  Case in point I recently upgraded the wife from an aging iBook to a HP notebook.  I think she got a far superior product for a whole lot less money compared to a Mac.  That’s another post that I’m working on though. 

Maybe he was talking about the PC operating system being inferior?  What if I am running FreeBSD on my PC, does that make it more superior to the Mac since OS X is really just FreeBSD under-the-hood?  Or what if I’m running an Intel version of BEOS?  Maybe it was a OS X vs Windows comment?  The reader didn’t say so I am totally speculating on what he’s “really” trying to ask and also infer.

Here is the bottom line folks.  When you chose a technology you ultimately chose a platform.  We all do it and to say we don’t is just wrong.  When I was writing PHP/MySQL I used Linux for years since I thought it was important to develop applications on the same OS the application was going to run on the server.  I knew the Linux platform inside and out.  Even enough to teach it at the college level.  Today I write .Net code and I write that on Windows for Windows.  Again, I think it is important to write software on the same platform it is going to run on.  The difference is when you chose .Net you are married to the Windows platform, at least today.

Whether you want it to be or not, there is a huge platform investment made as a developer to understand the full potential of our applications.  I have a buddy at work that has been doing Windows IT infrastructure related stuff for years.  He understands a lot of things under the hood of Windows that I don’t even understand.  For me he is a resource I use often to pick his brain to solve a problem.  More times than not, he has an easier way to solve a problem than I was thinking just because he knows the platform.   For .Net development it means that those of us doing .Net development are married to the platform of Windows.  That is not a bad thing though since from a business standpoint the platform as a whole provides a lot of value.  

Yes, I use PCs today as opposed to Macs.  I’d be completely non-productive and probably lacking brain cells to development enterprise applications on a Mac and boot Visual Studio in a virtual machine.  I’d also be completely non-productive trying to write .Net code using Mono with VI.   I’ve seen lots of Macs at conferences and even friends of mine that are fellow MVPs have purchased Macs and run Visual Studio in a VM or just run Windows on the Mac 100% of the time because they like the Apple notebook better.   For those running Windows on an Apple, if you want to pay the Apple tax and spend a lot more money for your shiny toy fine, at least you understand that you are ultimately writing .Net on Windows.   For those that boot virtual machines and do .Net development God bless you, you must have the patience of Job.  I’ve done it and ultimately I came to the conclusion of:  Damn this slow and non-productive.  BTW, if you are a client of a consultant and he/she walks in with a Mac and is doing .Net development for you.  Run!  They just doubled your billable hours haha!  I poke fun in jest obviously but hey, it is something to think about if you are footing the bill no?

The thing is I still like OS X.  Notice I didn’t say Apple, because I don’t like the Apple hardware tax having built computers for years.  The operating system I like, nay, completely admire still to this day.  I’ve spent many hours looking at XCode on Mac OS X wishing it could be my development platform of choice.  Wishfully thinking that I could get a job as an Enterprise OS X developer at one time.  I wrote a few programs for Mac OS X and found it to be 5-10 steps and way more complicated than it needed to be just to do something simple like put a button on a form using Cocoa.  Compared to Visual Studio dragging and dropping a button onto a form and double clicking to wire up an event is apples and oranges (pun intended).  I’m sorry, but Apple spends all their time on making their OS shiny and adding features for end users but doesn’t do a damn thing to help developers embrace their platform at all.  At least that is how I see it.  If you don’t agree, then feel free to shine some light on my short sightedness, I’m all ears.

So yes, I use PCs today, not a Mac, and I don’t feel when I wake up in the morning and sit down at my computer I’m using an inferior product.  As a matter of fact I feel I have more options using the Windows Platform than I do using a Mac, especially since there isn’t an Apple store within 300 miles from me.  Not only that but professionally I have all sorts of nice haves that run and are supported with the Windows platform such as integrated authentication for applications, SQL Server, Biztalk, Windows Presentation Foundation, Winforms, Asp.Net, Windows Communication Foundation, Workflow Foundation, Silverlight, Visual Studio, Ado.Net, Windows Mobile, Office (Word, Powerpoint, Excel, Infopath, Publisher), Sharepoint, built-in analysis and data mining features, OLAP, Report Services and much more.  Based on all of that reader, which platform seems inferior now?


Word Press, Apache, and Linux Contribute to Majority of Internet Blogger Spam

Posted by Keith Elder | Posted in Internet, Linux | Posted on 07-09-2007


If you have a blog as do I, one of the things you enjoy looking at is your PingBacks or TrackBacks.  PingBacks and TrackBacks were created as a nice way for bloggers to who know when other community members linked back to their articles.  Essentially they work like this.  Let’s say I write an article on my blog.  Another blogger reads it and links to it in one of their blog articles.  When a viewer on their blog clicks on my article link, a comment gets added to my blog article linking back to their site.  This is called a TrackBack.

For the original author this provides a way to keep track of who is commenting off line or linking to his/her information.  This has worked really well until the porn and drug industry figured out they could post unwilling information to thousands upon thousands of blog sites for free.  Spammers and hackers have literally taken this feature away from bloggers like myself by automating TrackBacks of web cams, sex toys, and so on.  Surprisingly the mortgage industry has yet to catch on. 🙂 

There are some spam systems out there that fight this which plug into several blog packages.  For example Akismet API is one the blog software I use (SubText) comes with.  Akismet is actually powered by Word Press (another popular blog software package written in PHP) and does a fair, not great job, of stopping TrackBack spam.  I say fair because I wind up still having to clean this junk from my comment logs.  To make matters worse if a blogger doesn’t clean this stuff out then it will count against him or her in the long run on search engine rankings.  A lot of bloggers have given up and turned TrackBacks off all together.  This is a shame because the feature is really useful.  This brings us to our question.  Where is this stuff coming from then?

The results may astonish you.  The same blog engine that is suppose to help you fight TrackBack spam is the very one that is creating the spam!  One Hundred  percent of what comes through to my site that is considered spam TrackBacks comes from one of three things:  Compromised Word Press blogs, an Apache Server, or a server running Linux.  Notice I said 100%, not 99% or 95%.  I can attribute each spam TrackBack to one or the other.  Don’t believe me?  Then let’s look at some examples.  Here is a screen shot to show you what I mean.  Below are the last four spam TrackBacks I received that were not filtered by Akismet.

Let’s look at what Netcraft says these domains are running below.





University of Alaska Fairbanks is obviously a distance learning community site and it has public_html folders enabled for user accounts.  In this example the user account idesign has been compromised since we see several hidden directories, “.psy” and “.xml”.   For those not in the know, if you EVER see a URL like /.something/ don’t click on it (ever wonder where http://www.slashdot.org gets it name? now you know).  This is a hidden folder on Unix servers.   The reason it is hidden is because when you type “ls” to get a directory listing the command doesn’t show you hidden folders that start with a dot.  It is a way hackers hide information on Unix systems from users.  This is one thing all the TrackBacks have in common.  The first URL is cut off but trust me, there is a folder start with a dot in the URL. 

The other interesting thing to note is three of the four URLs are generated from Word Press.  The “/wp-content/” folder gives this away since all word press folders typically start with the letters wp.  Out of the four URLs listed, three of them are Word Press and they all are running the Apache web server and two of the three unique domains are reportedly running Linux. 

Obviously the most ironic thing about this is the same blog software that is trying to help stop TrackBack spam is the same software that is creating the majority of it.  Thank you Word Press.

Raid MySQL Tables

Posted by Keith Elder | Posted in Linux, Open Source, PC Software, Programming | Posted on 15-05-2004


The following was taken from Linux Magazine from an article written by Jeremy Zawodny. It talks about a litlte known feature of the MyISAM tables in MySQL which allows you to create raid tables. The snippet of the article is publised below.

RAID Tables The final variety of MyISAM tables isn’t widely known, but can be useful in some circumstances. RAID tables are simply MyISAM tables whose data (.MYD) files have been broken into multiple files. CREATE TABLE mytable … TYPE=MyISAM RAID_TYPE=STRIPED RAID_CHUNKS=4 RAID_CHUNKSIZE=8 Running that SQL command breaks the MyISAM table into 4 separate files (chunks) that are written to in a round-robin fashion in 8 KB stripes. Why do that? If you’re using a filesystem that places a limit on how large a file can be (2 GB or 4 GB), RAID tables work around that limitation. (However, file size limits are becoming more and more rare, as recent Linux kernels don’t have size limits anywhere near that low.) Performance is another reason for RAID tables. By putting each chunk on a separate physical disk, you can spread the I/O work out more evenly. In most MySQL installations, the main bottleneck is disk I/O, so this isn’t very far fetched. However, if you have the option of using hardware RAID or even software RAID at the OS level, you’re probably better off doing so.

Reference: LAMP Post, by Jeremy Zawodny