Christmas Computer shopping made easy

November 29th, 2007

If you want to save money buy this. With XP. Only choose options you are Certain you need. Hint. MS Office is not one of them. You might consider the CD Burner or speakers.

If you don’t care about money buy this. Choose whatever options seem like fun. Its only money.

things i want.

November 27th, 2007

A Laptop that will power its USB ports even when the laptop is off. Like ACC mode in car.

To be able to donate to candidates but if they don’t do what they say then I get the money back.

A smart phone that doesn’t suck and is open.

To delay getting bifocals as long as possible.

For someone besides Hillary to win the democratic nomination.

Bloglines to have a one-click button that adds to del.icio.us

I want People who think that whether or not we should torture is something worth debating to get out of my country.

To find a way to practice speaking Spanish.

For Google to allow me to adjust the page rank of pages just for me.

To have more songs in my iTunes than my son does.

A setting for my python IDE which doesn’t just make spaces instead of tabs the default but refuses to allow any files with tabs to be included in the project unless they are converted and never forgets this setting. EVER.

A commuter bike with a light and fenders and all that jazz.

To be able to make a blog post from a random list of sentences and fragments.

American Christianity

November 21st, 2007

American is sometimes called the most Christian nation in the developed world. Whatever. I think we have a lot of stuff going on here that gets called Christianity. I’m having more and more trouble deciding what that means. It seems to mostly be people arguing about who Jesus was rather than trying to do what he said. This takes several forms, the two which seem most common are characterized (somewhat unfairly) below:

Conservative American Christianity
We are Bad, Jesus is Good. Jesus was sacrificed to restore us to God. We need to Believe that to go to Heaven. What he said wasn’t all that important. He saved us by his Blood. God wants to reward our faith so we need strong rights and rules about property etc. I must be doing something right in God’s eyes or else why would I have such a nice house and car. Charity is good as long as we take care of our own first and don’t give away the fish when we should be teaching people how to fish. Can I send some money to someone who will teach people to fish in a Biblically-Based way? We need to be converting people to the faith since then they will be saved like us, even it means War. Sometimes the consequence of spiritual warfare is suffering here on earth. Not as bad as how Jesus suffered for us. That was really bad. I saw the movie.

Liberal American Christianity
Jesus was really a social reformer, who spoke out against tyranny and oppression and pretty much agrees with my Modern Liberal Views(tm) on everything. Since I volunteer at the food bank twice a month, I am following his lead. Go Me! Its a shame the government doesn’t give more to these people since its hard for me to find the time to help out more. We shouldn’t focus so much on conversion. We should just be nice to people or find some poor people to help and that will make them want to come to our church and hear our pastor preach about how important it is to be nice to people and not judgmental like those other Christians are. After all we need some more people in church cause gosh we are all so busy and there aren’t enough people to be on the Fellowship committee.

Neither of these views have ever been very satisfying to me. I have spent time with both kinds of people and they both I think miss the mark. Both camps seem to be trying to hard to make their religion agree with where they are right now. There’s talk about conversion experiences and “growing in the sprit” but mostly its about how good it is that we are on right team and isn’t great that Jesus accepts us just like we are?

The Carpenter from Nazareth along with Lao Tze, Buddha and The Gita, etc. in my view took a different approach. They say: “Here is a teaching. It is True. Follow this and you will grow and become better and as you become better so will The Creation. You can free yourself from fear, pain, doubt, suffering. It takes work. You must practice. “For the gate is small and the way is narrow that leads to life, and there are few who find it” The harder I look, the less in the way of intellectual revelation I find to be had. The gate is not hard to find but the path is hard to walk. What we think is less important than what we do. Our time is limited and there is a world to enjoy, a life to live and a Kingdom to build.

He said to him the third time, “Simon, son of John, do you love Me?” Peter was grieved because He said to him the third time, “Do you love Me?” And he said to Him, “Lord, You know all things; You know that I love You.” Jesus said to him, “Tend My sheep.”

Managing Nerds

November 15th, 2007

Its a great thing Micheal Lopp is still blogging after he finished his book. Otherwise we would miss out on great stuff like this.

Your nerd has built an annoyingly efficient relevancy engine in his head. It’s the end of the day and you and your nerd are hanging out on the couch. The TV is off. There isn’t a computer anywhere nearby and you’re giving your nerd the daily debrief. “Spent an hour at the post office trying to ship that package to your mom, and then I went down to that bistro — you know — the one next the flower shop, and it’s closed. Can you believe that?”

And your nerd says, “Cool”.

Cool? What’s cool? The business closing? The package? How is any of it cool? None of it’s cool. Actually, all of it might be cool, but your nerd doesn’t believe any of what you’re saying is relevant. This is what he heard, “Spent an hour at the post office blah blah blah…”

Personally I prefer Geek to Nerd. But the whole thing is pretty good.

YAMSR

October 30th, 2007

I recently switch to using a Mac for my main computer. I decided I didn’t want to move to vista and while I love ubuntu I don’t really want to use an os which still requires me to edit files in /etc to hook to a secure wifi access point. I do have a gutsy box I play around with and enjoy and there are several windows XP machines still in the house but we are definitely moving in the direction of Cupertino here at home.

I got a mac book pro and I have to say its the nicest piece of PC hardware I have ever owned. Its quiet, well built, and has lots of nice little touches that make working on it very satisfying. Most of the differences were expected. Its not like I have never used a mac before but some things suprised me both good and bad.

Unix like os underneath - By far the biggest positive surprise is how much this has helped my productivity. The shell in windows has always sucked and having the option of doing things with a nice gui or nice shell has really made things easy. Having all the linux tools like rsync etc available can be done on the pc via cygwin etc but it always seemed like a kludge whereas this is much nicer

Parallels - This suprised me in some good and some bad ways. First It seems to work very well even in Coherence mode where its liking having a PC and a Mac on the same desktop. I wanted parallels for testing with things like IE which don’t really exist on the mac. I figured I could just run the server for the Web app I’m making on the mac and then use IE/Paralles to talk to it as localhost. I haven’t been able to get that to actually work but it hasn’t really been a problem. Most of the time I just remote desktop (using a MS provided native Mac app) to a pc and do all the work there. I find I use Parallels alot less than I thought I would.

Firefox - sucks really bad on Mac. This one really surprised me. The Windows version of FF running under Parallels totally rules compared to the Mac version running native on the Mac. Camino is maybe a little better and you get shiny buttons but its still slow.

Safari 3.0 (beta)- Is really fast. I like it and if I ever get a mac with 10GB of ram I will like it even more.

Preview.app - starts up so much faster than Acrobat that somedays its enough reason to buy a mac all by itself.

Adium - I figured I would be using iChat on the Mac but some friends turned me onto Adium and I have never looked back. Maybe I’ll check out the leopard version of iChat but Adium is really pretty sweet. I don’t miss trillian at all.

Expose/Dashboard - I use and like these more than I thought I would.

Tethering with a Windows Mobile phone - Works sweet.

Mouse Buttons - While I still think its idiotic that macs ship PRO laptops with 1 button, it hasn’t been as much of a pain as I thought. The two fingers touching the trackpad while you click thing is pretty easy to get used to and works fine. I’m already finding it bugs me when PC laptops don’t work this way.

Control Keys - The placement of Ctrl-Option-Apple etc are pretty different and I’m still in transition here. Overall thought I think I’m pretty used to it. The first week or so was pretty rough. I have never been an expert key user and use the mouse for lots of things that most experts would do with key commands.

I’ll probably try out leopard this weekend but from the little time I spent with it at the store so far I’m underwhelmed. The big selling point for me is the development enviroment changes which proport to include better python support (yay!).

Testing Faith

September 27th, 2007

At 40+ I consider myself an “old” programmer although it feels better to just think of myself as “old-school”. Its an interesting ride because I go back and forth between feeling like I have seen all the things come around 100 times and thinking there is so much new stuff I will never be able to keep up. For example, I have seen people make the mistake of thinking portability has something to do with programming languages instead of realizing its about platforms probably 100 times, but spending too much working on videogames made me miss the whole foundation of web programming and I still feel behind the curve.

One thing that seems to be new in recent years is the religious fervor about testing. Before I say more, I should point out that I think testing is good. More testing is better etc. etc. Testing isn’t new but this view of unit test suites as a panacea for all ills does seem to be new and in my view potentially dangerous.

I first starting thinking about this when I started reading all the discussion about how Unit Testing is better than strong typing. You know how it goes. Strong typing is for small minded cretins who can’t even trust themselves, and besides what matters is having good unit tests. Type checking is nothing more than a pathetically weak test suite. Oh well um whatever. The correct answer about typing is to make it optional. Python is moving this direction. Its a shame that C++ choose to instead inflict templates on us all but none of this has anything to do with unit testing. We need to test programs because people make mistakes even if they are using a language that has closures, lambdas, and currying.

The problem with obsessing about these unit test scripts isn’t that they are bad, its that they are not good enough. No matter how good your suite is there is are things it won’t do for you and you better make sure you realize that or you are never going to write code that is as good as it should be. Testing is not a substitute for some other technique. Its not an alternative to Typing. Its not a new way to do design. It’s not a definition of overall quality. Most of all its not a substitute for THINKING. Its just a way to make sure that none of the things you might have expected to go wrong did. You should make your tests as good as you can, but if you start believing that its good enough, then you are doomed.

Its worth pointing out of course that the value of testing is greater in some projects than others. If you are working on a library with a pretty clean API then a good suite of unit tests can give you a pretty high level of confidence whether or not your code will produce correct results. As things scale up to larger projects with complex, stateful interfaces, this level of confidence will get more elusive since the test harness can become as complex as the program its testing. I’m not sure how to write a test that verifies that my algorithm to find the shortest path always finds this path. I don’t know how many cases is enough and just having 100% coverage isn’t going to help me.

Another good application for testing is when a software project must under go some major changes. Having a good suite of regression tests is a nice way to make sure you haven’t gone too far off the map but its not a real test of equivalence.

Thinking
Let’s say you just finished making some non-trivial changes in your local copy of the software you are working on. There’s alot of things you could do before committing these changes. You can:

  • Sit and think hard about what you did, trying to imagine in your mind what the impact of your changes will be on the rest of the system
  • Do a little local testing by hand to see if things are going like you thought
  • Look over every line of diffs to make sure the code you think you are going to commit is what you are going to commit
  • Try to think objectively about whether or not this is the best way to do what you are doing
  • Run a unit test suite.

The correct answer is all of the above. If you think that your test suite lets you off the hook from any of the other steps you are wrong. Btw the steps which are just thinking should be done both BEFORE and AFTER you write your code. Even though this process of thinking is imperfect (if we were perfect then we wouldn’t need tests) its still important because it helps you become smarter about the code and helps insure that the code itself doesn’t become too crappy.

TDD
I have tried hard to understand this concept of “write the tests first” as a way to do design. I have followed a few examples on the web of people demonstrating this. All of them suffer from what I call the “factorial effect”. Often when someone is showing off a new programming language they will show the cool way you can write some simple program like computing a factorial in this language. The problem of course is that its dead simple to write factorial in any language so all we have proved is that the new language makes easy things easy. Woot! For a complex system writing the tests seems to me about as hard as writing the system so how about we just do the latter?

I know that most people write these tests as they go and build up the library of tests little by little. My guess is that 90% of the time they are sort of cheating on the idea a bit, maybe even alot as their deadlines approach. But what really worries me is that I’m dead sure there is some large software project being developed right now where a team of programmers is spending months writing tests for a system they haven’t started developing. While such a project would likely end up as a huge mass of Fail, it would however succeed in taking an idea which started as “agile” and turning it into a pathetic kind of Waterfall model. The Test becomes the Spec but any Spec is almost always doomed to become less valuable than the thing its trying to specify. What the program does is reality. What the spec says or what you think the tests validate is a dream.

My other problem with this idea is that coding to the tests seems about as useful as teaching to the test does in the school system. Right now someone is probably putting some ugly if statement in their code “so the damn tests will pass” and that just makes me cry.

Quality
As I said above I don’t think tests are bad its just that they aren’t every going to be a perfect measure of correctness and so we better not make the mistake of thinking they are. However even a Perfect Test Suite (PTS) could not guarantee anything which would be worthy of the word Quality. Even if it would find and report every possible false output it still doesn’t say that much about how good the code is. I don’t mean whether the resulting application is good in the sense that iPhoto is “better” than Picasa or whatever, thats a whole other question. I’m just speaking about software quality. Passing the tests is only step 1 on the way to having good software quality. I’m actually scared there are kids out there picking up some idea that all programs capable of passing PTS are equally good. Um, no.

This would only be true if you work in the sales or marketing dept. since to these people the software is a black box, they only care that it ships on time and it works. That sounds good except that the program is not a black box. If you are programmer its more like an organism. It lives and changes and interacts with a changing environment. If you are the person in charge of maintaining it, its an organism you have to live with, so it better be good and easy to get along with on the inside as well as looking good on the outside.

Overall I just worry that focusing on the test suite is actually setting the bar far too low. Thinking your code is good because it passes the tests is like thinking your life is good because you have HDTV.

The numbers according to Warren

July 5th, 2007

From here.

  Mr Buffett said that he was taxed at 17.7 per cent on the $46 million he made last year, without trying to avoid paying higher taxes, while his secretary, who earned $60,000, was taxed at 30 per cent. Mr Buffett told his audience, which included John Mack, the chairman of Morgan Stanley, and Alan Patricof, the founder of the US branch of Apax Partners, that US government policy had accentuated a disparity of wealth that hurt the economy by stifling opportunity and motivation.

and

Mr Buffett said that a Republican proposal to eliminate elements of inheritance tax, which raises about $30 billion a year from the assets of about 12,000 rich families, would broaden the disparity between rich and poor. He added that the Republicans would seek to recover lost revenue by increasing taxes for the less prosperous.

He said: “You could take that $30 billion and give $1,000 to 30 million poor families. Or should you favour the 12,000 estates and make 30 million families pay an extra $1,000?

Managing Humans

June 29th, 2007

Micheal Lopp’s book is probably the best book written on software management. Buy a copy for your boss today!

Day(s) of the Dolphin(s)

June 26th, 2007

I haven’t posted in a while mostly because I have been busy working and also because the only things I feel like saying lately are things which would probably get me a visit from Homeland Security. Maybe I’ll spend some time and write up my thoughts about “The God Delusion” by Dawkins but the more I think about that book the less I seem to have to say about so I had better hurry.

Instead I’m going to try something different. For the last few years we have been going on some pretty fun trips as a family and another one will begin in a few days. I have never really done a good job of keeping a travel journal but maybe Its time to start. So for practice, I’m going to write a story about a recent trip.

A few months ago was our first trip to Hawaii. Having never been before, I expected a tropical paradise pockmarked with tourism and I was not disappointed. I wonder if people stay in a Big Hotel in Kona so they won’t miss the traffic and noise from home. Our normal site selection process works like this: Choose the nicest place you can find but where you think most people won’t go or at least they won’t stay long. In this instance, it worked perfectly. We ended up in Kealakekua Bay renting a house down by the water. The place is hardly unknown and is listed in all the guidebooks for snorkeling, dolphin sightings, and kayaking, as well as the spot where Admiral James Cook met an untimely end, but there are no large hotels and its a steep curvy ride in and out of the bay by car.

I suffer from travel insomnia, which is to say I rarely sleep much when I’m not at home. In a practical sense this means each vacation I take with the family ends up being in two parts. There is my solo vacation which takes places for a few hours every morning and then the family vacation begins again as people start to wake up. This pattern works well for me and for the rest of the crew as I like to scout out things and explore and they like to sleep.

For all of the wonders that Hawaii has to offer, for me it came down to one simple one. The water. An infinity of clear blue warmth that wrapped the island and called you out to play. With some fins you could easily swim out a few hundred yards without getting tired. We kayaked or snorkled or both on most days and I never got enough. If I go back it will be for the water, not the beach, or the sun, or the green, just the water.

I decided one morning at sunrise to bike down to the nearest beach, actually a somewhat treacherous pile of bolders, for a swim and to see if I could see dolphins. When none appeared, I swam out to the little reef to see what fish were awake this early. After I got into the water, I noticed some splashes in the water maybe 50 yards aways and starting swimming towards them but I never seemed to get any closer.

After a few minutes, I noticed another swimmer in the water who was calling out to me. When I got closer to him he explained the obvious absurdity of my actions. The only way I was going to get closer to the dolphins was if it was thier idea. He gave me a quick course in dolphin etiquette along with the requiste New Age Philosophy and we just sat there hanging in the water waiting to see if the “energy” was right. We watched the school of them circle around the bay eventually coming over to say hello.

You only see maybe 5 or 6 at a time on the surface so its hard to get a good idea of how many there are until they are right upon you and then they are everywhere. I would guess it was 80-100. They were in groups and in layers and they moved with confident grace.

We dropped an offering of large leaves into the water. The colored morning sun lit up the leaves making them into little lanterns floating beneath us. The dolphins would swim by catching the leaves on thier fins as they passed. They seemed to trade these toys with each other and with us.

The clicky whistling sounds they make leave you with a feeling which is similar to being at a dinner party where you don’t speak the language. You can’t help but wonder what they are saying. In this case though its like a dinner party of aliens from another planet. At the same time you feel welcome and completely out of place.

The human numbers were increasing. A few more of the local new agers showed up although a few were more ager than new. I normally have trouble talking with people who say things like “we need to radiate the right kind of energy” in order to keep the dolphins nearby, but it came pretty easy that morning. Still, I’m not quite ready to get a grouping of star tattoos on my face.

There was something about the dolphins though. Something that affected time such that when you watched them you realized they were there before the WalMart, before Admiral Cook, and before the Natives. All of that time somehow existed right there in that moment while they glided and we dove under the water to see more deeply.

The next day I went back with my wife to show her but there were no dolphins to be found. A large research ship had pulled into the bay and possibly disrupted the energy or maybe they simply found the people at the next beach down more accepting that day. We had a good swim anyway and headed back to the house before the kids woke up.

A few days later we tried again and were not disappointed. After the school made a pass by us at one point a lone straggler stayed back with us. It made probably 5-6 slow circles around the two of us just a few feet away. We watched it watching us and wondered what might it be thinking or trying to say.

I have no real opinion on how intelligent dolphins are but I will say that you can’t escape the feeling that they know the answers to some questions which you aren’t even sure how to ask.

Actually, I think I’ll pass…

June 25th, 2007
Pregnant Woman Murdered - Watch Now