This Site & Me
I'm a technologist, mobile specialist, experienced software developer, author, public speaker & an SAP employee. My thoughts, ideas, rants, comments & most of the code you'll find here are my own. Feel free to use any of this, but be sure to identify the source.
Topics You'll Find Here
This site contains content on a bunch of different topics including Mobile, Mobile Development, IBM Lotus Domino and other topics that strike my fancy. I've written a couple of mobile development books, so mobile and mobile development tend to dominate.
- Category: Miscellaneous
- Published on Saturday, 15 March 2014 21:18
My dad was a tool geek, I’m a gadget geek. All my life I’ve been drawn toward technology. When I was a kid, I was constantly biking to Radio Shack to pick up one of their assemble-it-yourself electronics kits. I build radios, sound generators and anything I could get my hands on. I wanted to be an Electrical Engineer, but my grades weren’t good enough, so I went into Physics and Computers – go figure.
Anyway, my son’s a gadget geek as well. He’s 10, so all he knows is smartphones and tablets – every time I get a new device, he goes crazy for it and tries to show me how it works. Doesn’t he understand that I’m in the smartphone business and will always know more than him for at least a few more years?
Anyway, I’ve been playing around a bit with the Raspberry Pi (I’ve posted several articles here about my experiences) and I’ve always wanted to play with some programmable microcontrollers. My neighbor got me to take a look at some microcontrollers from Texas Instruments, but I’ve not done anything with them yet. I’m most interested in the Arduino, but again haven’t had time to play much with it...until now.
My son and I were discussing possible geek projects to work on and we decided to trick out a…well, it’s a secret, but I’ll write about it as soon as I can. We decided we needed a very small package for this project and I knew the Arduino was going to be too big. So I started looking around at smaller versions of the Arduino to use. The first one I found was the Teensy (https://www.pjrc.com/teensy/), its super small, and I think this is the one we’ll ultimately use for our ‘project.’
I wanted to breadboard this out first, so I picked up an Arduino Micro (http://arduino.cc/en/Main/arduinoBoardMicro) from Adafruit (https://www.adafruit.com/products/1086) – very nice, very small (although bigger than the super small Teensy). This one comes with headers (the Teensy doesn’t) and fits nicely into a breadboard as you can see from the following figure.
For this particular project, the Arduino needs to know how it’s oriented in space, so I picked up a Arduino Accelerometer module from Adafruit (https://www.adafruit.com/products/163). The 3g one seemed good enough, but since I bought that one the Adafruit team came up with a 16g so I picked up one of those as well. I imagine the 16g model will make it into our ‘project.’
I planned on working on our project this weekend, but of course forgot to pick up a breadboard. My son and I headed off to Radio Shack (oh, the memories from when I was a kid), picked up a breadboard, battery holder and a battery and got to work.
I first installed the Arduino IDE then connected the board to the computer and tested it worked by running the blink sample application. Next I wired up a single LED and got that working. After that, I wired in 5 LEDs, showing my son how to use the breadboard and make the circuit. With 5 LEDs working, I started playing around with the application code to see if we could come up with some cool blink patterns. I did them the hard way, turning each light on and off as needed individually, so I could show my son how the code worked. He quickly got bored, so when he went off to play with his friends, I refactored the code, added arrays and loops and created some pretty tight code. Tomorrow I’m adding a cylon pattern, it will be fun.
Next I added the headers to the accelerometer module; I wish it came with headers pre-installed because I quickly mucked up that task. Anyway, with the accelerometer wired in, the project can tell its orientation in space. Tomorrow my son and I will start programming different behavior depending on the project’s orientation in space. Like I said, I’ll write all about it once I get it all done.
- Category: Miscellaneous
- Published on Tuesday, 11 February 2014 08:39
In my previous post, I wrote about one of my biggest software pet peeves – registration forms that have specific password requirements that are not communicated to the user until AFTER a password has been entered. This morning I found one that was even worse than the Google Coder one I showed earlier.
I was playing around with the Intel XDK development tools for web applications. After I got it installed, it prompted me to create an account. I filled in all of the fields and went looking for any indicator that the form had password requirements. None found, so I clicked the Submit button only to find out that for some unknown reason, Intel requires a special character in the password as shown at the very bottom, in small print, in the following figure:
So, I dutifully added a special character (I’m not telling you which one) and clicked Submit again only to find out that they had yet another requirement. Apparently you also have to have a number in your password, but Intel made no effort to inform me of any of this.
At this point, I’ve failed twice and I still don’t know if my password with a special character AND a number will actually fulfill the requirements. I crossed my fingers and clicked Submit for the third time only to find out that I had actually, unbeknownst to me, complied with the password requirements. Woohoo!
Developers, when you have an input form that has specific input requirements – TELL ME WHAT THEY ARE. I shouldn’t have to guess what your password requirements are; you know what they are, so tell me BEFORE I start typing in my password. I know you have limited screen real estate for listing out the requirements, but there’s no reason you can’t give me a button or a link to click on to view the requirements.
I’m assuming you like your users and actually want us to use your development tools – so don’t make it so hard for us to actually use them.
- Category: Miscellaneous
- Published on Tuesday, 04 February 2014 09:00
I recently learned about a cool web development server for the Raspberry Pi. I want to teach my son about computer programming and this seemed like an interesting way to do it. The server is called Google Coder and it’s delivered as a Raspbian image for the Pi. Pretty cool; I’m hoping to learn more about it and write a bit about my findings here.
As I set it up and started playing with it, I was hit by one of my pet peeves. First you fire up the server then connect to it via your desktop browser (right, it’s not something you use on your Pi, but instead something you host on your Pi and connect to it from your desktop PC). When you connect to the server, you’re prompted to provide a password in order to access the system as shown in the following figure.
Honestly I’m really not sure why I need a secure connection to my Pi (notice the HTTPS in the browser’s address field) and I’m also not sure why I need a password, but I’ll dig into that at some later time.
Anyway, so it wants me to use a password so I went ahead and typed on in. After clicking the ‘Save My Password’ button shown in the figure, what I see next is the following:
There it is – one of my biggest developer pet peeves. If you know that you’re going to want me to include upper case, lower case and numbers in my password, why not tell me BEFORE I tell you the password I want to use?
I see this all the time and it makes absolutely no sense to me. You’re asking me for input and you know exactly how you want that input formatted, why don’t you share that information with me so I can save a little time here? After all, it’s not like you have a hidden camera and you can get some pleasure from watching me type in a password only to later learn it doesn’t meet your requirements.
Developers, if you have any input, password or any other requirements you’re obligated to tell me what they are BEFORE I provide you with the input. There’s no other way. You took the time to type in the requirements into the error message shown in the second figure, why not copy and paste the exact same information into the original input form?
I know why it was done this way, some designer designed the password form and it had to look cool and clean. The error warning was an afterthought or was implemented by someone AFTER the design of the password form had been completed. Rather than think through the process and your requirements for the system, they left the input form clean and muddied it up later ONLY if the user didn’t accidentally type in a password that met the requirements.
Do your users a favor and think through the whole process before doing the coding. Give the designer all of the requirements so they can be taken into account from the very beginning. That way you’ll make happier users.
- Category: BlackBerry
- Published on Monday, 03 February 2014 22:26
If you’ve been reading around here you should know that I love BlackBerry, but BlackBerry 10 is really starting to annoy me. For all of BlackBerry’s focus on quality and design, I’m find BlackBerry 10 to be really, really hard to use on a day to day basis. So many of the things I loved about BlackBerry just aren’t in BlackBerry 10 and I’m finding the UX to be…klunky.
I went out of town this weekend to hang out with some friends. I have a BlackBerry Z30 device, and it has a HUGE battery, so I expected to get a whole day’s use out of it, but no go. Around 7 PM, after starting the day with a full charge, the battery was on its last legs.
Fortunately for me, the folks at Adobe gave me a free USB battery at PhoneGap Day 2013, so I pulled it out in order to give myself a boost. I only got a few minutes out of the battery, but that’s not what I’m here to talk to you about.
As the battery started to lose its charge, the warning shown in the figure below started to appear. Not a big deal, I like being notified that I’m running low on juice. The problem is that I couldn’t get the darn thing to go away.
Here’s what happened, I was trying to charge the device, but my USB battery was out of juice itself. So, the BlackBerry knew it was connected to a power source of some kind, but since it wasn’t getting any juice itself, it threw up that warning. It would display for a while, go away for a few seconds then immediately come back – over and over again. The problem is that it’s really hard to use the device with this message constantly popping up and going away. The touch screen is essentially unusable as long as this behavior continues.
I was trying to meet some friends and my battery dying and this stupid continuous warning was really annoying. I finally figured out that when I unplugged the USB battery, the message would go away and I could again use the device. Ugh.
- Category: Miscellaneous
- Published on Sunday, 02 February 2014 18:00
I spent the weekend in Buffalo snowmobiling with some very old friends. As I flew on several Southwest airlines flights I was reminded of a little piece of airplane etiquette that most people don’t think/know of.
Imagine you get on the plane and sit towards the front of the plane, but get on later in the process and the front overhead compartments are full. You move back to an open overhead compartment further and store your stuff then head up to your seat for the ride to wherever you are going.
When the plane lands, you need your stuff, right? So you politely push back toward the back of the plane and the location for your stuff. One you’ve retrieved your stuff, do you stay where you are, or are the people you’ve pushed past responsible for letting you make it back to your seat?
I say you stay where you are. What do you think?
I thought about this on one of my flights to Buffalo and on the way back I encountered it. I was in the third row and someone needed past me to get her stuff from further back in the plane. When I felt her trying to make her way back, I asked her ‘Going back for your stuff?’ and she responded, I can’t remember exactly what she said, indicating that she was going back but somehow expected to go back to the front rows when she was done.
Think about it – all sorts of people moved out of the way so she could make her way back. As they let her past, they compressed forward and took up the space she previously filled at the front of the plane. There isn’t the room nor the need to let her back up to her original position.
Anyway, because I’m a stinker, I noticed this and waited for her to begin her move back up to the front of the plane. I felt a tap on my shoulder and her request for me to let her by. I (politely of course) told her that I was trying to get out of her way (by leaving the plane) and she persisted by saying that she needed to get her purse.
She completely missed the point that everyone in front of her now were in the process of leaving the plane and that if she stayed in her position, she would quickly be able to collect the remainder of her stuff. Why did she immediately assume that all of us should get out of her way so that she could leave the plane sooner than us? Why was she so important that she had to leave earlier?
Anyway, she finally got the point and stayed where she was and was able to collect all of her belongings and get off the plane without treating us like she was more important than us.
If it’s me, I politely ask for help getting me back to where my stuff is then WAIT with everyone else to leave the plane from the position where I ended up. That seems to me to be the only fair way to do it.
What do you think?
- Category: Miscellaneous
- Published on Monday, 20 January 2014 19:30
Linus Torvalds created a distributed revision control and source code management system called git: http://en.wikipedia.org/wiki/Git_(software). Git is pronounced like ‘get’, substituting an ‘i’ for the ‘e’ in get. The open source world has embraced it in a big way and it’s how you install most anything related to Apache Cordova.
Git is also an English slang word for ‘a silly, incompetent, stupid, annoying, senile elderly or childish person’: http://en.wikipedia.org/wiki/Git_(slang). I’m a huge Monty Python fan and learned about git from the (my favorite) Argument Clinic sketch (http://www.youtube.com/watch?v=kQFKtI6gn9Y).
I never quite made the connection between the two until recently.
I’ve started using git (the source code management system, not the slang word) more and more at work lately as well. I was on the phone the other day with a colleague in London and, during the conversation, he referred to the system as ‘jit.’ Recognizing that he was from the UK and probably knew about git (the stupid person thing) I had to point out that he was pronouncing it wrong.
He replied by telling me that Linus’ selection of that word for his software caused a bit of trouble for people in the UK. No surprise there. Apparently, people from the UK will say jit when referring to the software system git to avoid the perception that they were referring to the other application of git. Too funny, people being forced to mispronounce a word in order not to offend.
In my conversation with him, I said something like “you know it’s git, right, as in Stupid Git?” As I said that I quickly realized I’d made a mistake – and said “wait a minute, isn’t Stupid Git redundant?” It sure is. I had to laugh outloud.