Author Archives: sean.mcnealy

C for Programmers

There are programmers who have never used C before! This is a shocking fact to me, as C is where I started programming. And there are many programmers who want to learn to use C, but already know how to program. C for Beginners is easy to find with a Google search. They need an introduction to pointers and a bit of malloc. Hopefully without mentioning things like functions, types, and how to write a conditional which would surely put a ruby, python, or java programmer to sleep.

So here it is. A few code examples with pointers. I mention tools like gcc and some flags and gdb. And there is some assembly code, as really writing C requires some computer architecture understanding.


Or here’s a document with the same goals from Stanford: Stanford CS Education Library: 102

My System 76 laptop, cheap, rattling, smoking, all around pretty good

One year ago I bought a System 76 Gazelle laptop. It’s a pretty good machine. I’d say only for people that can tinker with their laptop though.

Here’s the order specs:

Gazelle Professional ( gazp9 ) Quantity: 1
Ubuntu 14.04 LTS 64 bit
15.6″ 1080p Full High Definition Display with Matte Surface ( 1920 x 1080 )
Intel® High Definition Graphics 4600
4th Generation Intel® Core™ i7-4810MQ Processor ( 2.8 GHz 6MB L3 Cache – 4 Cores plus Hyperthreading )
16 GB Dual Channel DDR3 SDRAM at 1600MHz – 2 X 8 GB
United States Keyboard Layout
500 GB Samsung 840 EVO Solid State Drive
No Secondary Hard Drive
Caddy Case without Hard Drive (Use your own drive in the optical bay)
Intel® Dual Band Wireless-AC 3160 AC Wireless LAN up to 433 Mbps + Bluetooth
1 Yr. Ltd. Warranty and 1 Yr. Technical Support
Rush Assembly Service – Guaranteed shipping within 2 business days of your order ( not including day of order )

All this came to a bit more that $1500, just about the same price as it would be today. That’s a hell of a deal! Go price out a Macbook with a 4810MQ, 16GB RAM, and 500 GB SSD. Or don’t because I know that price. It’s the $2500 one. The Macbook does have a better screen, incredible touchpad, and you can add in a 2GB AMD video module for practically nothing at that level. The Apple has no Ethernet or VGA port.

So for a work laptop that won’t run better with the improved video and will be plugged in to an external keyboard, mouse, and monitor this is a no brainer. I actually prefer Ubuntu because the package management is just so much easier on Linux than anywhere else. Java development is cross platform so I’m not missing out on anything there.

Anyway, so what’s the bad side? Some screws inside were loose from the factory. The keyboard felt weak and weird. Then there was some rattling around when I would move the laptop. Opened it up and a bunch of screws fell out. Tightening them down fixed both problems! Just sad they missed that step when building the machine.

Next happened just outside the 1 year warrenty. Smoke started coming out the rear left near the power port. I took it apart! The power port has 2 tabs on the back, one connected to the port’s housing and the other directly to the plug. The solder joint from there to wire to the motherboard was bad and had broken off the tab it was supposed to connect to. But it was still good on the other tab. Oh no! The ground for all the power routed around the port’s casing, finding resistance and heating up enough to melt the plastic case some. It was pretty easy to remove screws and solder that back together. Points for maintainability. If something is going to be produced poorly enough to do this it had better be fixable.

So all in all, a pretty good laptop. Parts are easy to access and change or upgrade. Ubuntu is great. Etherenet, VGA, HDMI, USB is all there. A good laptop for a developer. It does require at least knowing someone who can operate a soldering iron.

10 Good Books

This week’s viral facebook post asks people to share 10 favorite or influential books with their friends. It’s a bit biased to the small sample of books I’ve actually read. And really, rather than targeted at the original goal, when I finished the list it’s just a list of books that are good and worth reading.

1. People’s History of the United States by Howard Zinn
The history books (and textbooks) I’ve seen before I ran into this one were all about the rulers. The nobility, the clergy, the philosophers, the scientists, the artists were all there. Zinn writes about the struggles of the common man that fought and worked.

2. The Hobbit by JRR Tolkien
Because adventure is FUN.

3. The Sun Also Rises by Ernest Hemingway
It’s an enjoyable read. The characters are interesting and their interactions are great. Though as far as plot is concerned almost nothing happens. That’s great.

4. Confederacy of Dunces
A fun and generally dislikable main character has escapades and interacts with many other interesting characters. Then you can visit the statue of the character in New Orleans.

5. Dune by Frank Herbert
Sci-fi thriller about politics and trade and sand worms. A bit of the coming-of-age challenge story thrown in too. “I must not fear. Fear is the mind-killer” is great to repeat as a narrative choice and in your normal life.

6. Fear and Loathing in Las Vegas by Hunter S Thompson
I saw the movie before reading the book. But hearing the lines delivered I remembered it was a book and knew it was one I wanted to read. It’s like the best parts of the movie, but goes on for page after page.

7. Zen and the Art of Motorcycle Maintenance
What’s a way to make Buddhism palatable to Americans? A metaphor to tuning and gasoline burning and steel of course. An academic with a shadowy antagonist and internal struggle.

8. Grapes of Wrath
A bit fiction a bit history. It’s a story about getting by in America. And not the American Dream, but the uncaring one that’ll crush you if you have no money.

9. Cat’s Cradle by Kurt Vonnegut
I always heard this was a story about Ice-9 that could destroy the planet. It’s not. It’s about Bokononism, which is the coolest religion I’ve heard of. Its holy book begins, “All of the true things that I am about to tell you are shameless lies.” And it only gets better and makes more sense from there.

10. Refactoring by Martin Fowler
I wanted to put one professional oriented book here. Object oriented programming isn’t in fashion as much as a few years ago, but this is the best book on the topic. He doesn’t explain much. The book is pages of actual example after example. Each technique uses object oriented methods to alter one idea into another form. And then another technique alters it back! The idea is that figuring out which is better in your situation is up to you and your analysis of the details.

Raspberry Pi Apple Airplay

At home I have an audio receiver that has trouble with some of the local FM stations. This is important as I frequently prefer NPR to whatever reality show is on the TV airwaves. I’ve looked at buying digital FM device to get the signal, but that technology never really took off and I couldn’t find anything that wasn’t made for a vehicle. And then it hit me that rather than broadcast, all the audio I want (including podcasts and other non-live audio) is available on a unicast network as well. I just need my audio receiver to connect to the internet.

I followed this tutorial. It is an impressive tutorial in that your grandmother could follow the steps and not get lost. If you’ve used linux before you’ll scroll through a lot of introduction to reach the package names to apt-get.

So now I get my audio: NPR -> Internet -> iPhone (app) -> Raspberry Pi -> HDMI -> Receiver -> speakers. The digital signal is much clearer than the FM I was using.

Note that I’m using HDMI. The analog audio out on the Raspberry Pi isn’t recommended. I’ve tried using it before, and it just isn’t that good. They saved on the design by not including a real analog output but simulating one, which is good for alert noises or some other applications, but for music or even news leaves a lot to be desired. Options include either using HDMI so the digital to analog happens on your TV or receiver that has better electronics or a USB audio output can achieve similar results.

Engine Installation


So the recommended way to put this engine in, based on knowledgeable people and GM’s instructions, is to take the car body off. The method is a lot of work, but does makes for a cool photo.

Engine Build Progress 2


It’s really starting to look like an engine


Engine Build Progress

I took some pictures while putting pistons in my engine block today.

engine_standengine_with_crankengine_empty_cylinder    engine_ring engine_rings engine_endcap engine_upper_bearingengine_compressorengine_inserted

W500 and the ATI FireGL V5700 on XP64

There is a way to get the ATI FireGL V5700 drivers onto Windows XP 64 bit on the Lenovo W500. It wasn’t easy…

Lenovo doesn’t package drivers for this chip, as far I could tell. But HP does make XP64 drivers. The problem is that they won’t install, unless you alter some files.

Find the ATI video drivers for HP’s EliteBook 8530w. Try to install them. This won’t work, complaining about system requirements.

Go to c:\SwSetup\SP44851\Driver and edit all the INI files you can find here. Change any occurrence of the string 3604103C to 212717AA (I think including in the XP64A_INF directory). Then run Setup.exe and the driver install takes.

I found that after a restart Windows reset the driver to Microsoft’s default VGA. Go to the device manager and do a rollback to the ATI driver and it sticks.

Used Videogames And Why Publishers Make Money

I posted this response on Slashdot to argue against the following reader comment:

…I understand that publishers don’t make any money off used games sales…I get that.

Publishers do make money off used game sales. Not directly, but easy to see if you analyze the system.

Person A buys a game new (ex. $50), plays it, sells it to a used game broker, let’s say GameStop (ex. $20).
Person B buys the used game from GameStop (ex. $40), part of this purchase goes to the broker for facilitating the transaction, part goes to subsidize the original purchase price (the $20 Person A received when selling the game comes from this purchase).

So Person A effectively purchased the game for less money. The lower price for Person A either allows him to purchase the game in the first place (was his perceived utility of the game between $30 and $50?), or leaves leftover money for the purchase of another game (this is his hobby, so more money may end up with game publishers).

So through the secondary market, Persons A and B share the cost. If, as the your hypothetical publisher who doesn’t “make any money off used game sales” argues, Persons A and B would both have bought the game for $50 each, giving them earnings of $100, then the game could have been priced closer to that $100 knowing the secondary market would allow for the cost sharing (let’s say MSRP of $80, giving the broker a $20 piece of the $100 pie). If it wouldn’t have sold for $80 to $100, then both A and B weren’t interested enough to each pay $50, were they?

To put cost sharing another way, my brothers and I would buy a bunch of video games when we were young. The money came from allowance and mowing lawns. To get a $50 game we’d all throw in money and we’d all play the game. If we all had to pay $50 we’d have bought a lot less games, because there wasn’t enough allowance and lawns to mow to get that kind of cash and some games just weren’t worth that much. So is the game studio and publisher losing money? Or are they making even more money? Does it just change the way the industry must operate and market their product?

Here’s the fun question: If cost sharing and a used market didn’t exist, what would the MSRP of a game be? I’d wager less than it is today.

MythTV Install and Export to iPhone

My MythTV backend is now working the way I’d like it to.  I bought a HDHomerun off newegg for the 2 tuners that both handle ATSC and QAM and I like that it’s on the network.  I have an Ubuntu machine running Karmic that I wanted to put the Myth backend on.

The most awesome thing is that there is a MythTV package in apt.  So the install was simple.  Since I couldn’t remember the mysql root password (because how often do you add databases/tables?) I had to override password and set it to something I knew and clear and reinstall the MythTV database package.  With that done, setup was pretty straight forward:  finding the tuners, scanning channels, adding a account ($20 per year for listings since zap2it won’t do that for free anymore).

The next part was exporting commercialless recordings into iPhone format.  There is a package (again through apt) called mythexport that claims to do this.  It handles jobs started from the Myth frontend pretty well, but required a lot of tweaking.  Using a web browser, go to localhost/mythexport and set up some initial settings for what you’re trying to do.  Any jobs created probably fail now and you’ll have to make some changes.  First add the medibuntu repository to apt and update the codecs to regain AAC audio if you’re running Karmic (apparently not a problem before).  The command to reencode the video is in /etc/mythtv/mythexport/mythexport_settings.cfg.  It’s the long line, you can’t miss it.  So change the mp3 library to libfaac.  Try exporting something, /var/log/mythtv/mythexport.log will not show you the exact errors, but will give you the command to run to try again if it did fail (it’s the command starting with “nice”).  Copy it out and try running it yourself with different arguments until it works.

My settings are currently (the  “-ac 2 -ar 48000” was important and I had to add it):

ffmpegArgs=-y -acodec libfaac -ab 128kb -vcodec mpeg4 -b 600kb -mbd 2
-flags +4mv+aic -trellis 2 -cmp 2 -subcmp 2 -s 480x320 -aspect 16:9
-ac 2 -ar 48000

And now it works!

Also note that mythexport adds an Apache2 directory to your configuration.  I had the Apache I got from apt configured as a public facing webserver so I had to lock down those directories with .htaccess files (iTunes will ask for the password when downloading videos in the podcast/rss feed so it’s really not too limiting to do BasicAuth).