Monday, November 22, 2010

Broadband Connections

Jenni: What do all these numbers and things mean 6 Mbps/512 Kbps Downstream/Upstream? We’re trying to figure out what kind of speed we will need. Mind you we don’t have a home phone, so dial-up may not be the most affordable option.

Narrator: The numbers represent maximum speeds. 1 bit is a 1 or 0. You need 8 bits to send useful information to a computer. 6 Mbps means 6 million bits per second. For those nerds in the audience, it means exactly 6,144,000 bits sent in one second. Divide by 8, and it becomes 768 bytes in one second. So a large MS Word document taking 200 KB (204,800 bytes) would take 267 seconds – or 4 and a half minutes.

There are two directions: data you get from the Internet, and data you send to the Internet. Watching movies, looking at web pages, and reading e-mail gets data from the Internet – at the downstream speed. Upstream matters when you send e-mail to somebody, load a file to a website, or use file sharing. You will use the upstream very little. And stuff like e-mail takes up almost no space (very few bits). In other words, 512 Kbps is perfectly reasonable for home use.

Your options are cable and DSL. Cable, obviously, comes from the cable company. If you have cable TV, call and ask if they have a discounted bundle for TV and Internet. DSL comes through the phone company (like AT&T). DSL is limited by location. It may or may not be available in your area.

Remote Connections

I wrote this explanation for a client. The client had no IT staff. And they relied on the local cable company for their Internet connection. The six hour drive prohibited an on site visit.

Key terms...

IP ADDRESS
The public, numerical name of a computer.

PROTOCOL
The language used when two computers communicate.

PORT
A number identifying the protocol to the computer.

TELNET
A protocol used for real-time interaction with another computer.

ROUTER
Hardware device that connects multiple computers to the Internet.



You already know that the computers use an IP address when connecting. When I connect with your application server, I supply the server's IP address. The Internet recognizes two "types" of IP addresses: public and internal.

I connect through the public IP address. This is the IP address accessible to the entire world. It is assigned to you by your ISP. The public IP address accesses the router installed by the ISP.

Your office has many computers connected to the Internet - personal computers, the application server, etc. These connect to the router. They too have IP addresses. Their IP address begins with 192.168. 192.168 is a special prefix. It signals an internal IP address.

The router does not allow access to a machine with the 192.168 prefix. This prevents someone on the Internet from accessing the company's computers.

Along with the IP address, I also specify the telnet protocol. The protocol instructs the computers how to communicate. telnet provides commands for interacting with a remote computer as if I were sitting in front of it.

Sadly, computers do not understand neat names like telnet. They understand numbers. My computer translates telnet into a port number - 23. And then contacts your IP address saying I want to talk on port 23 (telnet).

Imagine a ship pulling into New York harbor. It docks at a port for unloading. The ship's captain speaks his lingo (protocol) with the harbor master for instructions. But one of those containers actually goes to Chicago. So the container ends up on a truck redirected to Chicago.

Comcast is doing something similar with your router. The router receives my request for port 23. The router redirects it to the internal IP address of the application server. And now I can remotely log into that machine to work.

In short, the ISP will configure the router to redirect port 23 (telnet) to the internal IP address of the application server.

Good, Better, Best

I enjoy reading Rand in Repose. I find his technique of placing people on a continuum very helpful. It describes the analog, complicated way that humans behave. Oddly, a lot of life's decisions fall on a continuum.

We call this weighing the pros and cons. You've probably done this before... Draw a line down the middle of a sheet of paper. On one side goes all of the reasons for the decision. The other side has all of the reasons against. This works well for about two minutes. Invariably, one reason shows up on both sides!

The pro/con list digitally describes the problem. Every thought falls on one side or the other. Problem is, life's analog - not digital. Your problem falls somewhere in between the extremes of all the pros and all the cons. A reason ends up on both sides because the issue lands squarely in the middle of that continuum.

Looking At Technology

So what measures do we look at for technology? The first continuum is usefulness. How well does the technology solve your problem? For example, I don't want to waste 30 minutes driving to and from the bank just to transfer money between accounts. On a scale of 0 to 100, the bank's web application receives a 90 (solves the problem). Pretty easy, isn't it?
0----1----2----3----4----5----6----7----8----9---100
-----> *
Next we look at popularity. Popular technologies have a lot of support. And their support lasts. You don't worry about it becoming obsolete in six months. In our example, the web application falls in the 90's.
0----1----2----3----4----5----6----7----8----9---100
-----> *
Last but not least, we measure freedom. Where does this technology leave me in five years? What happens when the company goes bankrupt? Our banking application plummets into the teens.
0----1----2----3----4----5----6----7----8----9---100
* <-----
What!? The teens! Why? Online bill pay is cool. It saves me time. And if the bank drops it, I'm going to spend a day or two cleaning up the mess. They locked me into their service. Don't worry - no diatribes about free versus closed software. It is what it is.

Pulling It Together

Is this bank's web application a good technology? Wrong question. I really need to know, is the web application better than the alternatives?
0----1----2----3----4----5----6----7----8----9---100
-----> *
0----1----2----3----4----5----6----7----8----9---100
-----> *
0----1----2----3----4----5----6----7----8----9---100
* <-----
In an ideal world, I would use a technology that scores high on all three scales. In the real world, the web application comes out fairly well. It certainly comes out higher than the alternative - driving to the bank.

I can accept the low freedom score because of the chance of it biting me is low. Good thing banks don't fail (dripping sarcasm intended).

Saturday, November 20, 2010

Control and Flexibility

The scene opens with a woman crossing the street. This car comes out of nowhere and POW! She rolls off the hood, flung into the middle of the street. CUT!

Our mystery woman stands up and walks over to the director. She's a stuntwoman. Cool! She begins talking about the uncertaintity of stunt work - what's the next job, when will it appear, what risks does it involve. A sense of control matters a lot in her life. She finds that sense of control over her finances using the Chase Slate credit card.

It sounds perfect. Setup individual payment plans for different types of expenses. Pay smaller purchases right away to save on interest. I tell you, the emotion just wells up inside of me.

Narrator: CHEETAH!!!!! Cheetah, cheetah, cheetah! I warned you that the emotion wells up inside - the emotion to scream in terror. Think you have control of your finances? Miss just one payment. Then come back and tell how much control you have.

Guess what? Paying cash also saves on interest - without any risk of missing a due date.

And don't get me started on the tag line - debit card control, credit card flexibility.

Credit Card Flexibility

Okay, what exactly does the Slate Card offer that a debit card doesn't? Debit cards run through the same computer network as credit cards (i.e. you can use them in the same stores). Debit cards have the same fraud protections as credit cards (when used as credit in the store). The only difference is who supplies the money up front: you or Visa.

So credit cards are more flexible - for borrowing money! See how it always comes down to one question: will you save or borrow? There's no math involved. No comparison of pros or cons. Nothing but that one choice: save or borrow. Which one will you choose?

Monday, November 8, 2010

GStreamer in Perl

Scott: Is there any way to get a nicer looking recording program? What you wrote works okay. A GUI might be nice. The ability to edit the sermon title would be fantastic.

Narrator: Hmmmm, it may be time for the next version of our church's digital recording software. Okay, this time let's use a graphical interface instead of the console. Easy enough with Glade and Perl. Now how does Perl record from the microphone?

Google and CPAN turned up one module. It worked okay - not great, just okay. Thing was, Ubuntu does not provide a package for that module. I really wanted something that updated with the rest of the system. That led me into the world of GStreamer.

GStreamer's documentation uses C instead of Perl. Their examples involve too much complexity. Perl makes so many things easy - why not this? Turns out that GStreamer works much simpler than it appears.

Start by installing the gstreamer-tools package. The gst-inspect command produces a list of available sources.
#gst-inspect | grep src
dvdread: dvdreadsrc: DVD Source
sndfile: sfsrc: Sndfile source
rfbsrc: rfbsrc: Rfb source
dccp: dccpserversrc: DCCP server source
...
pulseaudio: pulsesrc: PulseAudio Audio Source
video4linux: v4lsrc: Video (video4linux/raw) Source
rtsp: rtspsrc: RTSP packet receiver
alsa: alsasrc: Audio source (ALSA)


The gst-launch manual page then provides examples for testing my own recording pipeline.
#gst-launch alsasrc ! lame ! filesink location="test.mp3"

Talk into the microphone. Hit Ctrl-C after a bit. Presto! You have an MP3 recording of whatever you said. We now know that GStreamer can record from the microphone into a file. How does it work in Perl?
#!/usr/bin/perl
use GStreamer -init;
my $loop = Glib::MainLoop->new( );
my $play = GStreamer::parse_launch( qq(alsasrc ! lame ! filesink location="test.mp3") );
$play->set_state( 'playing' );
$loop->run( );


Really, that's it. This little script does the same thing as gst-launch above. Pretty simple, huh?

One Exit Per Function

Today's conversation begins with this article about multiple code exit points.

Narrator: What makes you think that spaghetti code is the problem? And if it's not, then why would a rule of one exit point per function help?

Think about it this way - when maintaining or debugging, you're looking how to reach a certain block of code. Early exits reverse that logic. Your brain has to stop and change direction. So that's an interruption.

On the other hand, nesting if's can get hairy. But your mind stays focused on what it takes to reach a block of code. No interruptions. It feels better looking at that code.

I use multiple exits when appropriate - usually a block of if/elseif returning a value.

Exception handling is great. Exceptions don't break the flow of the source code. Again, ignore execution efficiency. Focus on how the source reads to a human being.

Tuesday, November 2, 2010

Get Cash Back with Every Purchase!

Dan: I've heard about what Ramsey teaches (in Financial Peace University). I see one problem with cutting up the credit cards.

Narrator: Interesting, what's that?

Dan: I have this gas card. It gives back 5 cents a gallon. Wouldn't it be irresponsible to not save money?

Narrator: That sounds perfectly logical. Proverbs clearly warns us away from debt. The Bible warns the wise away from these enticements. What are we missing?

Let's talk this out from start to finish. Figure about 15 gallons of gas every two weeks. You save 75 cents on every fill-up. Four weeks in a month, and you see $1.50 savings every month. With two cars, that's $3.00 a month savings. 12 months times $3 a month equals $36 a year.

Over the last year, gas ran between $2.00 and $3.00 a gallon in our area. You spent between $1,440 and $3,600 on gas last year. You saved a measly 1% to 2.5% with that gas card. That's less than the margin of error in a household budget.

For that 2.5% in savings, you sold your freedom. You became indebted to someone else - the credit card company. Can you beat these card companies? Sure - if you manage the account properly. That means you know the payment due date. You keep immaculate records of exactly what you owe. You reconcile the statement with your records immediately. And you're never late because you can mail the entire payment without ever receiving a bill from them.

Boy, that's a lot of work for a rounding error. It's a lot of worry over a paltry amount. Is it really worth it?

Proverbs 5 says...
For the lips of an adulteress drip honey, and her speech is smoother than oil; but in the end she is bitter as gall, sharp as a double-edged sword.
You don't really object on logical grounds. You're quite intelligent. And logically, the costs outweigh the benefits. The problem isn't logic - it's the heart. You have emotional attachment with the credit card. No, not quite right. You haves an emotional attachment with being right - pride.

I remember cutting up my credit card in FPU. Honestly, I didn't care for the card or the company behind it. They certainly didn't care for me. It was just business. But giving up the credit meant admitting I had been wrong. My way hadn't worked. God was right, I was wrong. And that hurt. It hurt my pride.

Dan: But,but, but...

Narrator: No but's. Be honest with yourself. Look past the rationalizations. The logic doesn't hold water. You know it. I know it. This was never about logic. Check out the book Leadership and Self Deception - Getting Out of the Box. The book explains that we make decisions then we establish the logic. We choose with our heart, not the mind.

Dave Ramsey points out that personal finance is 80% behavior. God frees our heart. If $36 over one year makes that much difference, then you're truly slave to your money. I failed at budgets because my heart worried about lacking money. When God freed me from that, when He turned my heart towards Himself, then the budget worked. When I let go of my pride and accepted His instruction, then the budget worked.
My son, do not forget my teaching, but keep my commands in your heart, for they will prolong your life many years and bring you prosperity. -- Proverbs 3:1-2

Sunday, October 31, 2010

Finding Financial Peace

What is financial peace? I used to equate it with more money. Boy was I wrong!

We were paying off everything but the house when Vania came into the world. Vania's first formula came from samples the hospital provided. They were those little 1 or 2 ounce pre-mixed bottles of formula. Vania drank the bottle down, and two minutes later spit all of it right back up. So we decided to try another brand.

A new brand gave us the same result. On to soy based formula then. That worked for about a week. Vania still spit up as much as she drank down. My wife moved to a hypo-allergenic formula. That worked well. As a test, we moved Vania back to soy - maybe the dairy had a lingering effect. Nope, less than a week and she spit up the soy too. Hypo-allergenic it was.

Vania was born October 29. It was mid-December by the time we had this sorted out. January's budget was the first accounting for the new feeding regimen. Most parents know that you can buy five pound cans of formula for around $15. One or two cans a month only hits your budget for $30 - not a big dent to the groceries.

The hypo-allergenic formula comes in 1 pound cans. Those cost $27 a can. At eight to ten pounds a month, we were looking at $270. One-fifth of our family (the baby) took one-third of the grocery budget. That's a significant dent.

So I sat down, preparing my emotions for the worst. Down through each category - $270 for the baby's food, gas, electricity, our food, etc. Dropped the remaining debts to minimum, and it balanced! The three debts we paid off that year came to $270 a month. In that moment, I felt like we were winning with money.

Financial peace didn't come from having an insane over abundance of cash. It came from taking control of the cash God did provide. And seeing that when we obey Him, God meets every need. Vania has been a great blessing in our lives. God ensures that we do enjoy her, without financial stress taking anything away. That is financial peace.

We paid off those debts following the Baby Steps taught in Dave Ramsey's Financial Peace University. Proverbs 15:4a says...
The tongue that brings healing is a tree of life.
In our case, this was literal.

Do Compuhters Think?

Chuck: Uhmm, you spelled compuhters wrong.
Narrator: Oh, hey, you're right. That was on purpose? Yeah, that's it, on purpose. It's ironic - talking about stupid machines by misspelling a word.

Okay, I don't buy it either. Truth is, I spelled the word wrong entirely by accident. A fortuitous accident, though. Computers are dumb as a box of rocks. Silicon makes up a quarter of the earth's crust. That qualifies as a rock. Making your computer a box of rocks.

A computer does exactly what you tell it. Nothing more, and nothing less. It makes no judgment. Never considers alternatives. And could care less that you spent 6 weeks writing this term paper. The computer will happily delete it without a second thought.

See - even I anthropomorphise the box of rocks. And I know better. The computer is not out to get you. You won't make it angry. It doesn't get revenge. The computer is a thing - like a hammer or saw. It has no intelligence.

Now, programmers can tell your computer how to do amazing things. Hundreds of millions of instructions go into the word processor so you can write a letter to Aunt Polly. So how does the machine know to put a red squiggly under spelling mistakes? Because some programmer accounted for that. A human being saw the problem, devised instructions for solving that problem, and gave those instructions to your computer.

Fear is the Path to the Dark Side

All of this to say - don't be afraid. There's nothing magical about a computer. Sure, bad things can happen when you get careless. That's why my 7 year old daughter can't use my power saw. She might lose some fingers. When she's 16 though, I can teach her the dangers.

Learn the dangers. Study what you shouldn't do. Then you're free to do everything else. Once you understand the danger, you can use this tool without fear.

The Blind Spot

Our conversation begins with this article by Mark Whitehorn. I've been there. How about you?

My first real life project - fresh out of college - converted data from a 9-track tape into the company's database program. Each record contained 1,200 fields. And every tape had all of the previously loaded data. You read that correctly. The tapes were cumulative.

I finished the project and learned a lot about file processing. Called our client, asked about delivery. He was not sure either. He said to call the data processing center. The center had no idea who my company was or how we could deliver our software. My supervisor was just as perplexed as I.

As we walked down the hall, I happened to glance at the installation schedule white board. There was my client's name - a month out. They did not even have our product yet! No wonder those poor people were confused by my questions.

Assumptions

We make assumptions about the world around us every day. You assume that gravity works. You assume that the hamburger the waitress brought for lunch is really hamburger. This is a normal and healthy part of our lives.

Remember the first rule of programming: Theory and reality never match. And its corollary: My theory's right, reality needs to be fixed. At least, that's how we behave.

Coding Standards: Do It My Way or Else

The time has come, once again, for the dreaded coding standards committee. I don't imagine this conversation - I lived it. Every other year or so someone resurrects this tradition. And then utterly fails to accomplish anything useful. Why?

Coding standards solve the wrong problem. All of those discussions about placement of braces, number of spaces to indent, and routine comments mask the underlying issue - your application is complicated! These minutiae are merely fire and motion discussions. You spend so much time focusing on the bullets whizzing overhead that you never shoot back at the enemy.

Don't believe me? Then why does some form of the standards committee meet every other year? And they discuss the very same issues again and again?

The problem is understanding. Your company drops you into another module/package/program with no training. And you spend a lot of time just learning those little intricacies that build up over the years. How do we cut the learning curve?

Coding standards won't improve understanding. How about comments? Every programmer in the world knows to comment their code. And we get beautiful gems like this:

if x then
#if condition is true
[do something]
end if

Writing good comments is very difficult. Now I'm really going off the deep end. Comments are difficult because we write schizophrenic code. In code review, the two biggest non-technical issues are readability and performance. We balance writing code for the computer versus writing code for the human maintainer. Two audiences: human and machine.

Humans and machines understand differently. Go figure, who knew. People read code differently than the computer does. Actually, people have noticed. Coding standards and comments all try to fix one common defect: a person and the computer have to understand the same thing.

Think about that for just a second. People and machines process the code in opposite ways. Yet we're trying to write code where both have optimal understanding. So we move in opposite directions, hoping to reach the farthest distance in both directions. Compromises don't work that way.

Literate programming addresses this problem by organizing code both ways. It provides a framework for writing human oriented code. Then re-arranging it for the computer. You write the program for people. And then instruct the compiler in the most efficient arrangement.

Imagine yourself writing functional specifications and then adding the code right there. Link the code directly with the specification. Seems like the best comments money can buy.

Wednesday, October 27, 2010

One Time Software

Scott: I'm having trouble with a programmer. As a programmer, he does really well. As a salesman, well, not so much.

Narrator: What do you have him selling?

Scott: He sells his time - his programming services. We consult with small and medium size businesses. My programmer sells his skills for their IT projects.

Narrator: And how do you bid these jobs?

Scott: Well, the programmer talks with the client. Then he estimates the project size. And we quote them a price.

Narrator: I see your problem. It has many causes. And one good solution: iterative programming.

When you quote an entire job, start to finish, you just pit the programmer against the client and sales people. Every project becomes a battle. The customer you so desperately want to help is your enemy. Or it feels like it, anyway.

Iterative programming gives the client control over spiraling costs. At any time, they can say enough. Because every iteration provides working software, you reach a stopping point at regular intervals. The programmer doesn't hide in a cave, running up your bill, until they have a Mona Lisa.

The programmer, on the other hand, has a definite agreement on what the client expects. You see, the client, the programmer, and everyone else involved decided what pieces work by the end of the iteration. The programmer can tweak those pieces to his heart's content. The plan focuses his effort.

This problem boils down to communication. I finally made the connection between my monthly budget and how I write software. Time is money. We follow a written plan with our money. It starts with a perfect month. In the ideal life, how would our money divide out each month?

Then we ignore it. Each month gets a budget based on what we'll actually spend. See, life never happens according to plan. Rather than force life into our shape, we plan for change. Iterative development does the same thing.

You start with an ideal plan. That plan does not reflect what actually happens. It only shows what can happen. The ideal keeps everyone grounded in reality. With a budget, it demonstrates that you live within your means. With scheduling, it means you can deliver what you promised.

Then each month - or iteration - you plan what actually happens next. This step is the key. The communication matters. You can agree on anything - as long as everyone agrees. Regardless of their role, everyone involved is a person.

Tuesday, October 26, 2010

What's in a Name

Why the whacky name - Imaginary Conversations? Well, simply, I have a vivid imagination. Topics that tickle my fancy turn over and over in my mind. An audience (of one) forms. He/she takes on a life of their own, offering counter points. Rabbit trails materialize, are followed, and come back around. This eventually morphs into a discussion of the pros and cons with my make believe foe. It's pretty sad when I lose.

Right now, I can see you sitting there, a quizzical look on your face, thinking that this guy is plain nuts. Well, yes, just a little. We just had a conversation. See - it's pretty simple.

Topics cover all kinds of diverse, unrelated fields: finances, programming, leadership, freedom, etc. You may notice some common threads underneath. Let me know what they are.

Browse, enjoy, and join the conversation...

Monday, August 30, 2010

WE'RE DEBT FREE

Baby Step 2 took our family 3 years to pay off $34,000 in debt. $75,000 if you count the house that sold when we moved. My wife, Renee, counts it.

The hardest part - when I lost my job. It delayed Baby Step 2 around 9 months. We were pretty impatient by that point.

The best part - I describe it as "our snowball hit a tree". My youngest daughter, Vania was born with digestive problems. She threw up everything she ate. 4 ounces in became 4 ounces out. Vania did not grow for her first six months.

The specialist prescribed a baby formula that absorbs faster than Vania threw up. This formula cost $580 a month. Ouch!

I did the budget with some trepidation. We had just paid off our second largest debt the month before. With that extra bit, the debt snowball reached $580 a month! Our debt snowball disappeared in one fell swoop - and it was worth every penny.

Proverbs 15:4 says the tongue that brings healing is a tree of life, but a deceitful tongue crushes the spirit. When we unwrapped the chains we had put around God's money, we found a tree of life - literally. That was the moment I realized we were winning with money.

Today, Vania is a healthy toddler running around the house, getting into everything. I smile when I remember that lesson in God's faithfulness, and how special Vania really is.

Wednesday, August 25, 2010

The Value of Grace

I recently read Atlas Shrugged by Ayne Rand. A very good book. I highly recommend it. Without giving any of the story away, the book discusses the nature of wealth. It very much favors a free market and excoriates the redistribution of wealth. That rang true.

The Bible explicitly talks about redistribution of wealth...
You shall not steal - Exodus 20:15
You shall not covet your neighbor's house. - Exodus 20:17a
"Stolen water is sweet; food eaten in secret is delicious!" But little do they know that the dead are there, that her guests are in the depths of the grave. - Proverbs 9:17-18
The words of the wicked lie in wait for blood, but the speech of the upright rescues them. - Proverbs 12:6
Okay, so the world works correctly when we trade value for value. How does salvation (grace) fit into that? Isn't the point of grace that we can't ever repay it - that we are not worthy - we have no value to trade? If giving something for nothing hurts the recipient, and God's grace does not hurt us, how can we receive it for nothing?

I first thought that maybe our obedience is payment. God expects obedience, and forgives our failures as part of His grace. A friend rightly pointed out that this would lead to the heresy of works based salvation. We definitely do NOT want to go down that road. Salvation is wholly God's work (solo gratia).

Maybe I approached the question incorrectly? I assumed that receiving something for nothing is harmful. What if the harm isn't the act? My friend explained that our obedience stems from gratitude. We obey because God gave us something of great value. The love and justice we mirror (created in His image) beget a response of gratitude. And God has made clear in His word that He wants our obedience as an expression of that gratitude.

What if someone were to remain ungrateful for God's gift? Is that even possible? Well, no. The act of salvation renews our spirit. The process of sanctification - which begins then - makes our heart more like Christ's. Jesus and the Father are one - the same. We respond with justice and love because those are attributes of God. You must respond in gratitude because of who you are - a living reflection of God's image.

Proverbs 12:10 says that "a righteous man cares for the needs of his animal, but the kindest acts of the wicked are cruel." An act is a physical thing. You do something, and everyone can see what you do. The nature of the giver and recipient are spiritual - you can't see or measure it. Their nature determines the effectiveness of a gift. A person with a wicked nature can perform kind acts that still result in harm. The spiritual result comes from the spiritual source - the nature of the giver.

So are the senators and congressmen calling for more government benefits righteous or wicked? Wise or foolish? Because their nature determines the results. Even the kindest acts of the wicked are cruel. It doesn't matter if your representative agrees with your political stance. Their nature - their character - weighs far more heavily.

Back on topic... God changes our nature. We were dead in sin. He makes us alive. He begins the process of turning our hearts more like Christ. His nature and our nature make the gift effective. God does not willy nilly throw His gift into the sea of humanity. He picks and chooses. And in so doing, makes us valuable. Let me be clear - our value comes entirely from God. He makes us valuable, and then gives us a gift because of our value to Him. Wow.

Monday, July 19, 2010

The Value of Copyright

In Atlas Shrugged, the fictional composer Richard Halley talks about not giving away his music to people who feel entitled to his efforts. Halley's comment sounded like most pro-copyright arguments. Atlas Shrugged champions personal freedom and responsibility. Yet the current copyright laws create slaves. Contradictions cannot exist. So what was I missing?

Slavery

Okay, I guess we first need to explore that slavery bit. Software, music, and movie producers "license" their "content". Read one of those licenses. Tell me, do I have any of the rights of an owner? Nope.

Effectively, you "borrow" the content from the creator. And their rights last longer than you'll live. Proverbs 99:99 says "the borrower is slave to the lender". The DMCA, lifetime copyrights, and licensing agreements all work towards one end - making you the "borrower" (aka "slave"). These "content producers" know this. It is intentional. After all, they are entitled to your money.

That is what bothers me so much. It's no longer about a fair trade of equal value. These people feel entitled to my dollars. And the current law/license model feeds that feeling.

Depreciating Assets

So what is the true value of digital content?

Until quite recently, copying creative works cost a lot. Recording equipment, printing presses that can run 1,000's of pages, and even getting the finished product into a buyer's hands require capital and expertise. This naturally limited copying to a very small percentage of the population. And the ability to make copies in itself held value. The limited supply increased the value of each copy.

Digital copies change the rules. Once you digitize music, the supply nears infinity. Making copies costs almost nothing. The Internet brings distribution cost to almost nothing. From a purely cost point of view, I can make millions of copies without any additional cash outlay. Multiply this by the thousands who can do the same thing. The supply explodes almost instantly after release.

The digital supply far outstrips the demand. That makes each individual copy worth less. Actually, the copies approach your cost for distribution - zero. The value of your asset depreciates. Even cars don't lose value this fast.

Enter copyright law. The law limits supply by threatening punishment for copies. Copyright law stands against the asset's natural depreciation. It is an attempt to legislate value. Now the question becomes, can it be done successfully?

The Other Side of the Coin

Honestly, there is value in the process of creation. So what happened before copyright law? Artists - content producers - found people who valued their work and could afford it. We called these buyers "patrons".

The original copyright laws in the United States mimiced the patronage system. The patrons - citizens of the United State - gave the creator something of value in return for this creative work. The creator received an exclusive ability to control distribution of their work for a limited time.

In the 1970's, Congress greatly extended the time period for copyrights. Businessmen trade. You give something of value and receive an equal value in return. The patrons - we the citizens of the United State - gave an increased value to the creators with the longer time. So what did we receive in return?

The Solution?

I don't have one. I am not arguing for or against copyright. I am trying to learn how value works in an environment of near infinite supply. What do you think?

Friday, June 25, 2010

Taking Apart an EEE PC

My wife's EEE PC 1000HD died last night. The battery drained and would not recharge. Turns out power never reached the battery. Something went wrong with the power supply.

It didn't take long to find the problem. Unfortunately, Google turned up no hits for dis-assembling the machine. So here's some help!

How To Take Apart an EEE PC 1000HD


  1. Unplug the computer. Don't get lazy - you'll regret it.

  2. Remove the battery. See your manual for instructions.

  3. Remove the 6 screws from bottom.

  4. Remove the 3 short screws that were under the battery.

  5. Remove the cover on the bottom of the machine.

  6. Unscrew the hard drive.

  7. Pull out the hard drive using the tab.

  8. Turn the EEE PC right side up.

  9. Along the top of the keyboard are 4 tabs. Push them back using a small flat head screw driver.

  10. Gently pry up the keyboard. It's taped down, so pry it a little.

  11. Slide the keyboard up towards the screen slightly. It has tabs on the bottom too.

  12. Disconnect keyboard ribbon. I used a pair of needle nose pliers.

  13. Remove the keyboard and set it aside.

  14. Remove the 6 screws from under the keyboard.

  15. Disconnect the two ribbons with tabs. I don't what they do.

  16. The top of the EEE PC comes off with a little effort.

  17. Remove the screws from the motherboard. Leave in the four screws that hold the fan.

  18. Remove The screws that connect the LCD to the motherboard.

  19. Pry the edge out slightly where it's over the VGA port.

Do these in reverse to re-assemble your EEE PC.

Friday, June 11, 2010

Watch the Road

My Dad showed me how to drive. He took me out on our back, country road and said go. I was all over the road. Eye hand coordination is not my strength. Then he taught me the single most valuable driving lesson: keep the front corner on the middle line, because the car goes where you're looking.

Sometimes, and I know this is hard to believe, I get really annoyed with my wife. She does things that she thinks will keep me from getting mad. It drives me crazy. So she tries harder - doing the same thing that started the cycle. Why? Because she's looking at anger. We go where we look.

Poor and rich represent states of mind not measures of wealth. Where you look is where you go. Rich people look at other people. They help, give, and genuinely look outward. Poor people look inward. They expect gratification, appeasement, and their own little world.

Where do you look? What do you see in your budget? Car payments for the rest of your life? The little guy can't get ahead? Everyone has a credit card? Student loans are inevitable?

Guess what - all of that will come true. You go where you look. Do you look for new ideas that help you help others? Or do you see 100 reasons why it won't work? Do you see money going where you tell it? Or do you see stuff that you need? Where are you looking? That's where you're going.

Wednesday, June 2, 2010

A Word of Encouragement

Today started on a down note. We are so close to finishing our debt snowball. A period of unemployment pushed this from last December into June of this year. My wife calculated how we could squeeze the last few hundred dollars out of what we have. And the car stalled last night.

It's the fourth time the car stalled in the last month. The first three times, it started right back up after a few minutes. Last night, the car stayed dead. It will run us a couple of hundred dollars. Thankfully, the emergency fund can cover it no problem. No worries there.

We'll just need to replenish the emergency fund. Another delay to financial freedom. It bummed me out.

God times these things so perfectly. I read a chapter of Proverbs every day. The car broke on June 1. And today brings up Proverbs 2.
For the LORD gives wisdom,
and from his mouth come knowledge and understanding.

He holds victory in store for the upright,
he is a shield to those whose walk is blameless,

for he guards the course of the just
and protects the way of his faithful ones.

-- Proverbs 2:6-8

God never promised victory on my terms. He did promise victory. He asks me to remain faithful, follow in His steps, and believe. Delay or not, we will continue living like no one else, so that soon enough, we can live like no one else.

Thursday, May 13, 2010

Injustice Sweeps It Away

Here is a brief passage from Proverbs 13...
20 He who walks with the wise grows wise,
but a companion of fools suffers harm.

21 Misfortune pursues the sinner,
but prosperity is the reward of the righteous.

22 A good man leaves an inheritance for his children's children,
but a sinner's wealth is stored up for the righteous.

23 A poor man's field may produce abundant food,
but injustice sweeps it away.

24 He who spares the rod hates his son,
but he who loves him is careful to discipline him.

25 The righteous eat to their hearts' content,
but the stomach of the wicked goes hungry.
Verse 23 looks out of place. The surrounding text compares the righteous and sinner, fool and wise. They talk about discipline. Why would verse 23 jump into a brand new topic - the oppression of the poor?

Several years ago, I believed that a better paying job would alleviate our tight finances. I even asked God to open some doors. He did - just not the door I expected. Instead, God taught us that He already provided more than enough. I had mismanaged His resources.

The injustice did not come from oppression. I walked right into it. I signed up for that ride! How stupid can you be! Dumb, dumb, dumb. All of that money swept away in interest. I wasn't poor because I had no money. I had no money because I was poor.

Huh? That makes no sense. Well, actually, it does. I had it backwards. Poor describes character. Broke describes financial state. Rich describes character. Wealthy describes state.

Character is the single most influential factor in your financial state. Proverbs repeats this theme over and over again. The wicked are destroyed. The wicked will not stand. The sluggard has nothing. The righteous will never be driven out. Character, character, character.

What if verse 23 isn't talking about soldiers stealing your food? What if it's talking about all of that money going to the credit card company? Or the car loan company? Or the appliance store for our new, big screen TV? Or the cell phone company? Or this or that... What if verse 23 talks about the injustice I walk into?

What if I get out from under those unjust things? The verse promises that I have enough. Stop throwing it away.

Sunday, May 9, 2010

Everything to Everyone

Ian Bogost posted a good article on Apple's third party development policy. The comments focus a lot on cross platform development. Why?

Many years ago, some very smart people at Bell Laboratories saw a problem. When the company upgraded computers, they had to re-write the software. They realized that this could not work over a long period of time. And so they created an abstraction layer.

This abstraction layer separated the application software from the computer hardware. New machines meant adapting the abstraction layer only. Applications ported from one platform to another. Sound familiar?

The idea of cross platform development has existed for decades. All of the programming languages, frameworks, and web applications fail to solve the problem.

Learn From the Past

The abstraction layer from Bell Labs started the modern operating systems with unix. In theory, their operating system worked wonders. In practice, it fractured back into proprietary little domains. HP's unix ran on HP's computers. IBM's ran on IBM machines. And once again, the dream of cross platform withered.

A second group saw this happen. They developed a set of standards for any company calling their operating system unix. This standard is known as POSIX. Software written against POSIX work fairly well across platforms. Or I should say across platforms that support the standard.

You see, it happened again - Microsoft went in their own direction - straying from the POSIX and unix standards. The cycle begins again: proprietary split, abstraction layer, split, abstraction, etc. We're trapped in a circle because we didn't solve the problem.

Me, Myself, and I

Technology can never solve the problem. It's not a technical problem. This is a moral problem. Stop using these silly, cross platform non-solutions.

"But someone else is just going to use them, and I'll be left behind!" Thank you for proving my point. You just made a moral judgment. You cannot change anyone else's morals. You can only change your own. And you are responsible only for your own. Don't change the world, change yourself.

We are not choosing a technical solution. We are choosing a moral value system. Choose wisely.

Saturday, March 6, 2010

Money, Money, Money

Our men's Bible study read a 1995 article title Idols of the Heart and "Vanity Fair" by David Powlison. The author writes:
The deep question of motivation is not "What is motivating me?" The final question is, "Who is the master of this pattern of thought, feeling, or behavior?"


I talk a lot about budgets, finances, credit cards, and the like on this blog. You've heard me say finances are 20% knowledge, 80% behavior, and 0% money. It doesn't matter how much (or little) you have. It doesn't even matter what you do with the money. It matters who you serve with it.

Do you really believe that credit card is wise stewardship? Or is it fear of the unknown - the card is for emergencies? Am I following a budget so I can have more money, or because it glorifies God? Even doing the right thing breeds idolatry when the focus falls on ourselves. All too often I find myself worried about how much money I have. And I am completely missing the point.

The budget should take my mind off of money and focus it on God. Who is the master? Did I think it was a good idea? Or did God send me down this road?

This is the fundamental question in every decision. Is God the master behind the credit card company? Is He the master behind Financial Peace University? Is He the one pushing for a larger sanctuary? The what or why don't matter. It all comes down to who.

Now for the really, really, really good news. We have access to the who behind it all. Those questions in the last paragraph, I can't answer them. And you shouldn't listen to my answer even if I did. Ask God directly. Let Him be the master of this pattern of thought, feeling, or behavior.

Staunching the Flood

The question recently came up on Stackoverflow about dealing with the flood of new technologies. I ignore a lot. What makes one thing worth a look over another?

We measure any technology based on our personal priorities. What do you care about? What matters to you? I look for freedom/independence, integrity, flexibility, and stability. I values these traits in my own life. And I project those onto the technology that I use.

Know Thyself

Sounds nice and fluffy, doesn't it? I simply begged the question - how do I find my priorities? You see, everyone has priorities. Verbalizing them is another matter entirely.

As a teenager, I would read the Prince Valiant comic strip in the newspaper. One weekend found the cast on an island. The island had some magic that showed you the consequences of every decision. An old man sat in the path, knowing that if he moved a young boy would die. Prince Valiant decides to leave. Immediately he sees that decision leads to a great war - and many deaths. He stops, intending to avoid an awful future.

Another member of the party then asks the question what happens if we stay? Guess what? Great books are never written. Tyrants come to power. Society collapses. The cast then leave. And old man who lives on the island wonders why no one ever thought of that before.

The cast leaves the island because they prioritized. The very fact that you live life means you have priorities. Without priorities, we would sit absolutely still - paralyzed by an infinite number of choices.

Needle in a Haystack

How does one go about learning their own priorities? I can only share some of what has worked for me. These will not work for everyone, because not everyone is like me (thankfully).

  • Take a broad, quick look at many different technologies.

  • Find people like yourself, and ask them what they like.

  • Quantify your reaction as love, hate, or neutral.


Quick, Broad Look

Like any good research project, start with the big picture. You don't need proficiency. A basic understanding will suffice. As a bonus, you will also find that this step gets easier the more exposure you have.

People Like Me

Do you know someone whose personality is like yours? Do you share several things in common with them? Find out what they value. What technology do they like? It's a great starting point.

Love, Hate and Neutral

Finally, make a decision. I am an intuitive thinker. My subconscious naturally applies all of my priorities to each technology. The first inkling of a technology's value arrives emotionally. Technologies in line with my values garner excitement. I can read about something new and walk away thinking yeah, they're on to something.

The opposite response also happens - this is stupid. Bad technologies usually have a downside. They go against my priorities.

Neutral technologies work like the name implies. They don't really bring anything new. Yet I see no reason to avoid them.

Full Circle

Now comes the really complicated part. These are not three steps. This is a cycle that repeats itself over and over. Each iteration feeds into the next.

I see a lot of career advice about looking for your passion. And almost none on how. Start looking at the love/hate decisions. What do these technologies have in common? Your passion (if I need to say it) involves the things you love. As you begin seeing those, it filters out huge chunks of the technology world. And you end with a more manageable slice.