Wednesday, August 5, 2009

I like Balsamiq Mockups

There are few tools more flexible than a pencil and pad of paper. Great boot time, decent UI. When I'm having to sketch a diagram of any sort, the diagram almost always starts out as a sketch on paper, and then transposed to whatever media it needs to be delivered in. It's a pain to transpose a pencil mockup to something like Visio, but I've done it.

I'm skeptical of things that purport to allow me to toss the pencil/paper step. The demo pitch goes something like "just click, click, drag, presto, you're done." I wish it were that easy.

My boss sent me a link to Balsamiq Mockups (www.balsamiq.com), a UI design and mockup tool. Sure enough, their demo video goes something like "click, click, drag, presto" while they draw a mockup of an existing application that you probably know very well. I rolled my eyes and thought "here we go again," but I played with the online version for a few minutes, and it seemed straightforward enough.

I'm working on a particular project and need to start sketching some ideas for it, and I instinctively reach for my pencil. I decide that to be fair to the product, I should at least try it (without using the pencil/paper), and we have an eval version of Mockups wired into Confluence. So I click the "Add UI Mockup" link on the wiki page, which takes me to the mockup editor. I want a dialog box. So I drag one off the bar on the top, on to my workspace. Now I want a list. How a button here. No that's not right; there that's better. Click, click, drag, presto, and I had something I liked. They even let me export it to PNG if I want (although embedding directly into the Wiki page was much quicker).

I like the Sticky Notes, and all the icons. I like how the properties boxes are handled. I like that it's extensible. I like how easy it is to add data to UI elements like list boxes. In short, I like Balsamiq Mockups.

Tuesday, July 21, 2009

Children's Ministry

"Let the little children come to me and do not hinder them, for to such belongs the kingdom of heaven." Matthew 19:14 (ESV)

The Lord Jesus Christ loves children. In this passage we see Christ rebuking the disciples for trying to keep the kids away. "Let them come... do not hinder them..."

It's easy to hinder children. We do it all the time. For example, when in church you hear that the children's ministries programs could use help, what do you ordinarily think to yourself?

I can't do that: I've never done it before.
I can't do that: the "Sunday school people" take care of them.
I can't do that: I don't relate to kids.
I can't do that: kids annoy me.
I can't do that: I'm involved in more important things.

I love Psalm 1: "Blessed is the man who walks not in the counsel of the wicked...He is like a tree..." So how do trees get there? Someone planted seeds.

Go find the children's leader at your church, and ask him how you can help. You'll be glad you did. I promise.

Friday, May 15, 2009

Get Yourself A Fraud Alert

Several months ago, a very rude person called our house and spoke with my wife. He represented a collection agency, looking for Brian Smith. Knowing that we have no debt, my wife told him that I was not the particular Brian Smith he was looking for. He demanded that my wife tell him my social security number, and when she refused, he threatened to "turn it over to the attorney." My wife, upset about all this, calls me at the office, and I told her I'd call the moron and fix it. So I called the guy, who was as rude to me as he was to her, demanding my social, etc. I told him I'm not going to give that to him, I'm not the Brian he's looking for, etc., and he accuses me of "wanting to play games." So I ask him to whom should I send the cease and desist letter, and proceed to do that.

(After reading up on the Fair Debt Collection Practices Act, my opinion is that he committed at least two violations: his phrases "relaying it to the attorney," and "wanting to play games" can both be interpreted as threats. Incidentally, the FDCPA makes for some interesting reading, and it's good to know what collectors are allowed and not allowed to do.)

We pulled a credit report on ourselves, and nothing untoward showed on them. Knowing that "Brian Smith" is a pretty regular name, we decide to place a Fraud Alert on our reports. It is fall-off-the-log easy:
  1. Call a toll-free number of one of the credit reporting agencies (Transunion, Experian, or Equifax).
  2. Using your touch-tone phone, follow the prompts which will ask you your SSN, house number, and a few other things.
  3. If you're married, call them again, and put an alert on your spouse's report as well.
  4. For continuing protection, set your favorite reminding mechanism to prompt you to renew the alerts in three months.

This takes less than five minutes.

You only have to call one of the credit reporting agencies; they will notify the other two, and you will receive in the mail an acknowledgement that you have a fraud alert placed on yourself. A fraud alert does not prevent you from continuing to use open credit accounts. A fraud alert does not prevent you from opening new credit accounts. What it will do, if you are going to open a new account, is force the creditor to take several extra steps to verify that it really is you who is trying to open the account. (We got to see this in action, and it was very cool; perhaps I'll describe that in a future post.) A fraud alert lasts for 90 days, after which you're free to place the alert again.

The FTC estimates that 9 million people have their identities stolen each year. It's a huge pain for victims, who spend tremendous effort to clean up the mess the criminals cause. So get yourself a fraud alert. It's quick, easy, and free.

Thursday, April 23, 2009

One Way To Uninstall Software

I write code. I use Microsoft Visual Studio 2005 for a large part of my work. I've been wrestling with a problem lately, and one recommendation I received was to look at some sample code which comes with Microsoft's Platform Builder. So I downloaded and installed that product, but then VS2005 started misbehaving: giving me errors like this when I would try to go back to my project: "The following error has occurred... Error message: Catastrophic failure"

Catastrophic Failure?! Yikes. So I tried to repair my installation. Boy did I try. I uninstalled Platform Builder, hoping it would set my VS2005 back to rights. No such luck. I tried uninstalling VS2005. I tried a particular tool which offers to remove any vestiges of a previous install. After way too much time, I continue geting messages asking me to "Please repair Visual Studio." You have no idea how much I want to repair.

I found the following advice at http://support.microsoft.com/kb/904732 , titled "How to troubleshoot the installation of Visual Studio 2005"
"The computer where you install Visual Studio 2005 should never have had any beta or release candidate Visual Studio product installed. If any one or more of these products were installed, you should rebuild the computer to verify that these products have been removed. To rebuild the computer, reformat the hard disk, and then install the operating system again."
That's one way to uninstall software. They should have simply recommended that to uninstall the software, shut the machine off, back slowly away, and go buy a new computer.

Tuesday, April 14, 2009

No Tea For Me

Tomorrow is April 15. Tax day. The day you turn your paperwork in to the IRS to prove that you have paid enough income taxes for the year and either request a refund, or pony up what you still owe. Various gatherings are planned for the day: groups protesting taxes, the growth of government, wasteful government spending, etc. Many of these protests are being called 'tea parties," a name inspired by Rick Santelli's wildly famous rant on CNBC a few months ago.

There was a tea party in my neck of the woods about two months ago. It was put together by the Upstate Young Republicans. There is a tea party planned at our State Capitol tomorrow, and at other cities across our state.

I have a very hard time getting worked up about these tea parties. "We'll teach 'em a lesson! We'll buy them a TEA BAG!" Don't hurt yourself making that bold statement, guys. The issue is that these people think that if only their party were in power right now, then "none of this would be happening." And they are precisely wrong. There is only one difference between today's Republican and today's Democrat parties, and that is a difference of degree. If the Democrat party says "the Government is great and we want to quadruple its size," the GOP says "the Government is great and we want to triple its size" and they think that this position, being the lesser of two evils, makes them deserving of the conservative vote. Of course, the GOP won't actually say this. Especially when they are in the minority.

Venting a frustration with a bunch of friends might be fun way to spend an hour or two, but it doesn't actually accomplish anything. So no tea for me, thank you very much.

Saturday, March 28, 2009

The most fun I've had on a project.

I love technology. I love solving problems. I love learning new things.

One of the most enjoyable projects I've ever done involved all three of these things.

We had a customer who was using handheld barcode equipment in their remote locations, and they needed to upgrade that equipment; we were providing the new equipment and were tasked with writing code to essentially port their current functionality to the new devices. The existing devices used acoustic couplers to transmit data back to the home office. The particular setup at the home office was absolutely critical to their operations, and the customer was insistent that our work could not in any way affect their home office systems. The central office had a bank of modems to answer the data calls from the acoustic couplers deployed in the field. So we had to build a system, on new handheld barcode equipment running in their locations, which was "plug compatible" with their back office systems.

We found a hardware manufacturer who manufactured acoustic couplers for devices similar to the devices we were using, and we expected that the manufacturer would be able to write drivers and such so that we could use their couplers on the new hardware. In the meantime, I continued working on porting their application to the new platform.

We had continuous problems with the couplers. The manufacturer kept giving us new code to try, shipping us new devices, etc. Sometimes the couplers would make some noise when activated, sometimes the driver would fail. We were getting nowhere, and it was becoming more and more difficult to get status information from them. I started thinking "uh oh."

The customer used one-way acoustic couplers in their remote locations to transmit data to their central office. The acoustic coupler was essentially a speaker. I started thinking, "this thing is just making noise." Then it dawned on me that their new devices (they were Pocket-PC based) had built-in speakers, and could play WAV files, etc. I started wondering whether I could make noise with these things too. I figured the most straightforward way to do this was to write my own WAV file. So I learned about the format of the WAV file, and learned to write code to generate WAV files that would play tones of various frequencies. As a "proof of concept," I wrote code which would even generate DTMF tones, so I could put the device up to a phone's receiver and the device could dial the phone.

The challenge then was to take a file, break it into its component 0's and 1's, and then generate tones corresponding to each bit. I learned about Nyquist's Theorem, which describes how I need to build a sample to encode waves of particular frequencies. Very fun stuff. Took a while, but I figured it out. I could generate a WAV file which "sounded" like a real acoustic coupler, but my transmission wouldn't work with their host systems. It took me several days to realize that in C++, I needed to use the pow() function to raise a number to a power; I had inadvertently been using the ^ operator, I guess mixing that up from another language. When I figured this out, my transmission went through! Their system would give confirmation numbers on successful transmissions. My first confirmation number was "50." I wrote it BIG in my notebook that day.

For me, this is one of the most fun projects I've been involved in. An awful lot of fun. Very satisfying. Made the customer very pleased (they didn't need to buy hardware acoustic couplers). A great puzzle to solve.

Tuesday, March 17, 2009

The Escape Route

1 Corinthians 10:13 (English Standard Version) reads as follows:

No temptation has overtaken you that is not common to man. God is faithful, and he will not let you be tempted beyond your ability, but with the temptation he will also provide the way of escape, that you may be able to endure it.
Christians often look at this passage and think that "the way of escape" is some sort of magic door that appears to "show the way out." If we find ourselves in a particular sin, we think it's God's fault for not showing us the door. If I worry about financial problems, if God drops a Lotto ticket in my lap, then I won't have to worry any more. That would be convenient. Make my life easier.

So why is this way of escape so hard to find? After all, God promises that we'll not be tempted beyond our ability. Go grab your Bible. Read Matthew chapter 4.

Satan tempts Christ three times. The first time, he tempts Christ by challenging him to turn stones into bread. He answers with Scripture. The second time, he tempts Christ by challenging whether he is who he says he is. He answers with Scripture. The third time, he tempts Christ by challenging him to worship Satan instead of Christ. He answers with Scripture.

He answers with Scripture.

If you're holding your Bible, you're holding your way of escape.

We've got to know God's word. It's the way of escape.