Sports Wrapup

Every year we have a sports pick ‘em challenge at the office.  This challenge requires the players to use their knowledge of everything from horse racing to football.  Last year was the first year that yours truly did not win, but rather came in a distant fourth.  But hey, you’ve got to let someone else win on occasion or they’ll stop playing.  Last year’s champ was Tammy, followed by Brett and Jacob.

The first challenge this year was Daytona.  Brett dominated this event last year and everyone wondered if he could repeat this year.  For an entire week leading up to the event Brett would proclaim “Rubbin is racing” and then attempt to put someone into the wall as he walked past.  This odd behavior seemed to work out well as Brett came in second place, just edged out by Kelly.  Steve apparently selected the drivers in the 1970 Ford Pintos as he was far and away the worst picker in this event.

The next challenge was the NCAA basketball tournament.  This year was all about taking the chalk.  Thus the least creative and most conservative people ran away with this one while those of us that are risk takers and think outside the box did not fare as well.  The top three were Tammy, Brett and Steve.  Need I say more?  Last place was Colbey who though way outside the box, taking the Lakers to win it all.  That takes guts my friend to make a pick like that.

The third challenge we had was selecting golfers in the Masters tournament.  We randomly selected a draft order.  Unfortunately I was out of the office when the order was selected and I somehow ended up with the last draft pick.  Shenanigans have been called.  The first round pickers Jeremy and Heath (I won’t play unless I get Tiger Woods) were #1 and #2, so obviously they took Woods.  Woods was not your winner, but with Jeremy’s other two picks he managed to put together the winning team.  Meanwhile Jason, who picked fifth, managed to select a crew that would have struggled through a miniature golf course thus causing him to finish dead last.  It is a four day tournament, but Jason managed to lock up last by the end of day Friday…atta boy!

Next is the Kentucky Derby.  The early money is I Want Revenge, but he is the favorite to win, so that is no surprise.  Kempton won this last year, so we’ll see what happens this year.

Fungineering No Comments »

People Centric Software Design - Development Philosophy Part 1

I believe it is important to have a philosophy when approaching problems in all areas of life. In fact, whether it is clearly stated or not, we all approach life’s different problems with some philosophy. Over the years I’ve spent a good deal of time defining, ripping up and then redefining my philosophy of software development. In next few articles I’ll share with you the Phase 2 approach and why we’ve had such success as a result.

Software development, especially custom business software is at once exciting and extremely difficult. Two companies are never the same and so their software needs are never the same. The technology stack I would implement for two separate companies, even in the same industry could be entirely different. This makes creating a solution difficult, though probably not in the way you would think. The software part of software development is, really, fairly easy. Although, I am spoiled by being surrounded by a group of some of the smartest and most talented people I’ve met, writing code to solve a well-defined problem may take a bit of time, but it’s straightforward. The biggest challenge with software development is you and I.

Designing something that is easy for a human to use is difficult.  As a general rule, a device or piece of software that’s easy to use is the result of the design team having remarkable clarity in their understanding of their audience and of putting in a tremendous amount of hours.  In his book The Design of Everyday Things, Donald A. Norman describes design as a process of communication.  Well developed software is a process of creating something that effectively communicates with humans, how we think, and how we work.

My approach to software is that it’s simply a tool to empower humans, like a very sophisticated hammer humans use to do increasingly sophisticated things. Like a hammer, software should enhance the way people work. If your standard hammer didn’t have a handle it wouldn’t be useful. Software must not only be useful it must always be empowering, it should help us work, think, learn, communicate faster, smarter, better. It must be people centric.

When I say people centric, the first thing many think is that the software should have a good user interface, meaning it should be easy to use.  That’s right, but it’s much more than that. Taking our hammer example, a handless hammer has a rather poor user interface, and does little to empower us.  Go a bit further and we start talking about user experience. A hammer could have a brilliantly designed handle but weigh 100lbs. It’s going provide a rather poor user experience when you have a thousand nails to drive.

A brilliant user interface and intuitive user experience is still not enough.  To get elegant and meaningful people centric software design we have to start at a more fundamental level. People centric software design has to start by helping people achieve their goals and solve their problems. If I’m building a fence with screws, a perfectly designed hammer is still worthless for the task at hand.  The critical first step to successful software is developing a deep working knowledge of the wants, needs, goals and problems of the people involved. This is the heart of people centric software design. Good software enhances humans; it must solve human issues and improve human activities.

The Phase 2 mission is to improve our client’s business through software solutions; the only way to do that is by empowering the people in an organization with people centric software solutions. This is the key to success in the face of all the challenges of software development, the required first step in P2’s development process and the foundation of my philosophy on software development.

Philosophy, Software, Technology No Comments »

Resistance

Resistance is nice and all, it’s easy to know what you’re dealing with when you have control of everything. Things like initial voltage, and expected voltage and an idea of the resistance you’re looking for. But when you’re given a device, and you’re told “I want this value, find out how to get it” you have to do a little searching with a lot of unknowns.

Of course I am talking about electronics, and more specifically, micro-controllers. A project I am working on needs to take a COTS (Commercial Off The Shelf) item and do special things with it. What am I working with? It’s a temperature controller. Sure, you can see the temperature on the unit itself, but I want to see that in a database. That database is going to reside on a web server somewhere. And the only access I will have to that web server and database is on the computer on the other side of the room.

The answer? You got me. Just kidding, it’s micro-controllers. I am going to use an arduino (or a clone) and then use and xbee radio (on the zigbee protocol) and communicate the data to a similar setup that connects directly to the computer. Ahh, now you get it, resistance comes in the form of adversity and complications in moving the data. Nope, the resistance comes in the form of a set current being passed to the already installed temperature probe. That probe is placed wherever we need temperature, in this case a vat of beer, and the voltage returned from the probe is a value derived through the resistance. So I pass 5 volts in and depending on the temperature, I will get somewhere around 1.335 volts back with something like .0049 volt increments per degree.

That’s just an estimate. How did I find all this? Well, first you take the COTS temperature controller and google it. That gives you its good max and min ranges. But then you have to google the temperature probe as well because it can (and in this case does) have different ranges. Next you hook up a DMM (Digital Multi-Meter) and see what those voltages are because the white papers do not specifically list them. In our case its 0 – 5 volts which is excellent because that’s the exact range our micro-controller runs on.

In the googled white papers I got a list of the resistance, in ohms, returned by the probe for each degree from -40 to 100C but I don’t need the ohm, I need the voltage because I can’t measure resistance on the micro-controller. So now I have to either formulate the voltage based on known max and min values, or just set up a hash table. The first way sounds better and also more precise. The second way, well to me just seems like a cop out.

Currently I am working on making that first way happen. I have most of it ready to go but need to test with multiple temperature units, since we will be watching more than one vat of beer. So hopefully soon we can check out the current temps for our favorite beer at the local brewery and we can do it through a web interface from anywhere in the world!

Community, Fungineering, Hardware & Robotics, Technology 1 Comment »