Category Archives: development

My Experience With The Apple Watch

I have had the opportunity to try out an Apple Watch (Sport model) for the last couple months, and I wanted to share my thoughts. This isn’t a comprehensive review with all the specifications and options — you can find those type of reviews everywhere — just my personal opinions and feelings about the product. I will also discus three different watch bands which I have tried out in another blog post (sport band, leather loop and milanese loop).

The Apple Watch is very nice. It’s a great piece of technology. It feels good and looks good, like you would expect from an Apple product. In a nutshell, it is something you can live without, but after a while you don’t want to be without. It’s a luxury and a convenience, but not a necessity. Conversely, I feel like my phone is a necessity. Want vs Need.

There are lots of times when your phone is stashed away somewhere, like your pocket or purse, and you get a message. With the watch, you can just glance at your watch and see who sent the message and what it is about. It’s easy to tap and send a one-word reply like “OK”, “yes” or “thanks”. Very convenient. With a little more effort, you can speak your response and it will be transcribed very accurately, or you can just send the audio. I do this many times each day without pulling out my phone.

Every push notification that comes to your phone will come to your watch automatically, with no set up. If the notification or message requires more attention, then you can pull out your phone (or iPad or computer) and deal with it that way.

When I am at home, I like to stash my phone somewhere and forget about it. My watch will let me know if something important requires my attention. I happen to play alot of softball and I stash my phone in my bag. While I am in the dugout, my watch will let me know if someone is trying to contact me. I’ve even responded to a text message while playing first base, as we had the first base dugout. When I exercise outdoors, I keep my phone stashed in a waist band and use my watch to monitor my progress (heart rate, pace, mileage, speed, whatever). When I exercise at the gym, my phone stays in a locker and my watch lets me know if something important comes up. (As long as your phone and watch are connected to the same wifi network, or are within bluetooth range, this works great)

You will be surprised how many times it’s just not that convenient to pull out your phone, or it’s not nearby. The watch is a great “notifier”.

I’m a geek, so I use the completely non artistic “modular” watch face. Yes, it’s fun to change your watch face to Mickey Mouse when you go out or something, but I rarely change it. I’ve customized the watch face to show me the date, the current temperature outside, the moon phase, my battery level (which has never gone below 50% so I dono’t need this anymore), and the next item on my calendar. Oh yeah, it tells the time too. In particular, I find myself checking the temperature all the time now that it is so convenient.

And there are lots of apps that run on the phone. It’s a bit awkward to find the tiny little “dot” icon and tap on it, then wait for the app to load as data is transferred over from the phone. (In watch OS 2.0, this will be much more speedy as then native apps will be possible that don’t need to transfer data to/from the phone all the time) Usually when I need more than just a quick glance of information, I’d rather pull out my phone with the larger screen than try to do the same thing on a tiny little watch screen. Once in a while though, if I can’t readily get to my phone, I’ll use an app. By the way, it’s ridiculous what some developers try to cram on to a watch app. Do you really want to watch videos or browse photos on a 42 mm screen?!?

OK, I hit the highlights of what I use my watch for. Back in the “olden times” when watches just told time, I didn’t find it worthwhile to burden my wrist. Now that I can do so much more, I gladly wear one. And by the way, the watch bands are just as revolutionary and cool as the watch itself, so it really feels good to wear. More on the bands soon…

Advertisements

Computer Programming is an Art

Programming is an art, not a science. Sure, you can say it is both, but the real value and the real separator between a good programmer and a bad programmer is not about the science. A good computer programmer is an artist, and takes pride in their work because it is well crafted code, not because it is clever or technically advanced or complex.

So what are the characteristics of good code? Well, being bug-free is ideal but is rarely achieved. Reducing bugs is not the main goal of your code, but it is really a side effect of good programming habits. You don’t write code with the express purpose of not introducing bugs, you write code with a goal of solving a problem. After all, what good is a 100% bug-free program that does nothing useful?

If you write code properly, it will be easy to find those pesky bugs. Don’t use the most esoteric and advanced language features, don’t condense your code into as few lines as possible, do use long and meaningful names, and do start with the simple approach. Readability is key here. Nicely crafted code should be easy to read with enough whitespace and comments that even a junior level programmer can follow it. Simple code equates to fewer bugs, and readable code makes bugs easier to find.

If you successfully wrote good code and solved a useful problem, then guess what happens next? You will want to change that code! Yes, the biggest compliment you can receive about an app is “I like that, but I wish it could do this…”. Some people get offended when they receive constructive criticism but that means people are interested enough to care. When you get the polite “that’s nice” comment, that is the kiss of death — that person is not interested, or thinks you are so far away from where you need to be, it’s hopeless.

OK, so you should plan for success, right? Success means changing your code to add new features or improve the app in some way. Now someone will have to read through your code and figure out the best way to make those changes. That someone may very well be yourself, several months into the future, when you may have forgotten the finer details. You will thank yourself for writing clear, readable code, and you will thank yourself for those comments!

What is the main enemy of well written code? You might say ignorance, that some people don’t care about readability, and that is certainly true. However, most of us know deep down inside what we should be doing. The main enemy is time. Deadlines. Being rushed. When we have limited time, readability (comments, for sure) can go out the window. We just try to get the darn thing working and move on to the next rushed project. I have been guilty of this many times, we probably all have once we get to the front lines of shipping products to customers. Customers and managers want everything done yesterday, right?

Do your best to balance the need to finish on time with the need to write clean, readable code. An extra hour today will probably save you three hours in the future. If the definition of success means you will change that code in the future, then try to do it right the first time and make your code readable. Sometimes, if you know there will be a version 1.1 update, you can get 1.0 out the door quickly and then spend part of the 1.1 schedule cleaning up the 1.0 code. There is usually a little more padding in the schedule after the first release. (That’s when the people who were demanding you work overtime to get them the product will tell you “Thanks. Oh by the way, I won’t get a chance to look at that until I get back from my European vacation in three weeks” : )

When you stop trying to be clever with your code, and stop worrying about bytes and milliseconds until you actually have to, that’s when you have turned the corner and are well on your way to becoming a computer programming artist.

Update: After I wrote this post, I read another blog post which says much of what I am saying here about not trying to be too clever. I think it is spot on.

Working At Home

I’ve been fortunate to be able to work at home a good portion of my career. Fortunate is probably not the right word, as it took a series of tactical moves, planning, and willingness to take risks to get to this point. Even though working at home sounds pretty awesome, it’s not for everyone. You need a lot of discipline and you must set up the proper work environment to avoid going stir crazy or getting nothing done.

I thought I would share some of my “rules to work by” that I use to stay productive while working at home:

  • Treat this as a “real” job, and stick to a schedule. Whether you are working for yourself, or working for someone else, just because you are sitting at home doesn’t mean you can sleep late, have a long breakfast, take a break every 30 minutes, have a long lunch, go to the gym for an hour (or whatever), play with the kids all day, etc. For most of us, working Monday through Friday  with the goal of getting 40 hours of work done in that period is a good standard schedule, so do that or pick a different schedule, and stick to it. Try to get 4 hours of work done before lunch, limit your lunch break to no more than an hour, and get 4 hours of work done after lunch. If you want to go to the gym, fine, do it during your one hour lunch break and eat lunch at your desk after.
  • Prepare a good work space. You probably need a desk, your computer, a comfortable chair, and some room to work in an area that is designated as your “office”. It should feel like an office and you should do everything you can to make it productive for you, with no distractions. Don’t try sitting on the couch with your laptop on your lap, at least not often. There are too many distractions in that environment.
  • Have a remote workspace option. The neighborhood coffee shop is a good place to go to escape the distractions of home or family, but there are many distractions. Many towns have great options for shared office space you can rent by the hour or for a small fee each month.
  • Tell your family when you are working. Perhaps you have kids at home, or a spouse. Let them know the times that you will be working and that you should not be disturbed then. Close your office door and block out the distractions. Plan for a specific break time when you will come out of your office and socialize with them.
  • Maintain normal work habits. I don’t like to set an alarm unless I have to, but I give myself 30 minutes from the time I wake up to be working. I take a shower, shave, brush teeth, put on clothes (maybe not pants right away : ) just like I would if I was about to drive to an office. Breakfast is something quick that I might eat while working at my computer. Maintain the same routine every day.
  • No TV! You can’t watch TV at a regular office, can you? Then don’t do it at your home office. I have a rule that the TV doesn’t come on until after my work day is done. There is no such thing as a quick TV break — it will end up much longer than planned.
  • Cabin Fever. If you don’t talk to anyone all day long, I tend to get a little cabin fever and crave a little human interaction. Going out to lunch helps, as does using a remote work space. Meetups are another great way to socialize and learn at the same time.
  • Schedule in some research and learning time. If you are working for someone else, you need to get your assigned work done, but you will be a better employee if you keep up with the latest industry news and trends, so it’s OK so spend a few minutes each day surfing the internet in a productive way. Likewise, if working for yourself, you don’t want to fall behind the latest state of the art techniques in your field.
  • Be your own CEO. Hold yourself accountable. Look at what you accomplish each day and imagine reporting your daily or weekly status to a boss. Would he or she be pleased with your work? You can even use a spouse or friend as a stand-in for the “boss”.

Basic Development Tips

If you’ve been programming for a while, you will have learned these things through the school of hard knocks. If you are just getting started, then learn ’em, know ’em, and live ’em!

http://henrikwarne.com/2015/04/16/lessons-learned-in-software-development/?utm_campaign=iOS_Dev_Weekly_Issue_195&utm_medium=email&utm_source=iOS%2BDev%2BWeekly

Shiny New Blog

OK, I have so much to say, I figured I would start writing stuff down. This blog will cover a few main topics: software development, emergency response technology, and some parenting tips I’ve learned while being a father of three.