A Travel Hack

The best way to travel is to travel light. And with the current heightened state of airport security you really don’t want to be caught in the discomforting web of special inspections just because you happen to be carrying gadgets that you might use on your trip.

I am surprised there haven’t been any real credible businesses set up to tackle this issue, yet. It sounds like an easy problem to fix – loan out laptops and digital cameras to people so that they don’t have to carry these with them on an airplane. I figure it would be difficult for corporate users owing to special software requirements and cloud use rules, but a vast majority of the ‘normal’ people should have absolutely no problems using loaner gadgets.

In fact, you could already do it – buy a new laptop whenever you travel, at the destination. Use it as much as you want, making sure you don’t abuse its condition. Depending on the return policy, return it before you leave your vacation destination. This works flawlessly if you use one of the many cloud services. iCloud will even restore your desktop and documents folders on any new laptop. It’s like you never changed your laptop.

This hack is a bit trickier for cameras as local retail establishments might have varying return policies for camera equipment.

 

When a Gadget Freak Gets Old

There is nothing philosophical about getting old – it’s a biological process. You could try to run from it, but you can’t hide from the age monster.

What is philosophical, though, is how your priorities change. Case in point – love for gadgets.

There was a time when I was the first person in my circle of acquaintances to procure the latest and greatest gadget. The first iPhone, the first iPad, the first online radio hardware player, you name it, I bought it.

That drive is now gone. It’s more about making the most of what I have. I have been using a 4 year old laptop. It just works and is only marginally slower than the latest and greatest. My desktop is inching towards its 3rd birthday. New iPads were announced and they don’t excite me.

I have gone from being a gadget freak to a gadget lover. I love my toys for the joy and productivity they bring. The computing gadget are indispesable, but so are the new Snapchat Spectacles, a cheap piece of tech that makes it a much more joyful experience to capture daily videos. Whereas I couldn’t really manage to make videos of my cycling trips with an iPhone, the ones that come out of these googles are nothing short of amazing.

I want new things rather than new things.

Apart from the aging process, I think a driver for this change is the fact that most gadgets now come with a yearly upgrade cycle. The periodic purchases for the same gadget, just shinier and faster, gets old after a few tries. In the interest of the planet and sustainability, tech companies need to start looking at ways to maximize earnings without forcing users to spend on new devices every few months.

Sonos is great at this. The speaker you purchased 4 years ago still works like new and still receives the same software updates as one you purchased just yesterday.

I can’t imagine myself springing for a new car every year once tech companies pivot to transportation. Or, maybe that would be a sign that gadgets are better leased than owned.

Soylent

I haven’t been keeping up with the phenomenon known as ‘Soylent’, except when today I just read the news that they have been able to raise a $50M funding round for expansion into new markets as well as retail.

Why is this news?

Well, Soylent is something that is coveted as a food product by overworked millennials who seldom have time to cook for themselves. As such, it is very popular in the elite circles of Silicon Valley. Not surprising, then, that the investors in this food product are all people known in the Valley for making money off software. The company itself is the brainchild of a software engineer from that area. When someone in the family raises money, and that too, in the millions, it is sure to make some news.

I really like how they describe Soylent as ‘addressing one of the biggest issues we face today: access to complete, affordable nutrition’. How did we manage to come to a point in time where pre-packaged powdered nutrition is somehow more affordable than plants that grow in the dirt?

This reeks of hype through and through.

Soylent isn’t even the first meal-substitute – there are countless others. What it does have going for it, though, is that there is a face behind the product and the face isn’t that of a woman. Slimfast comes to mind. It is a meal substitute (although, you still have to include at least one regular meal in your diet), but it has become synonymous with female weight loss. At this point, if you tell someone that you’re on the ‘Slimfast diet’, they’d think you were a woman trying to lose weight, instead of assuming that you’re just time-starved and trying to access affordable nutrition (it is not affordable, though).

For investors, the popularity of the product means a shot at getting bought by a big name FMCG company. It is also a healthy segue from the technology landscape where almost everyone is building an AI or a VR app, not to mention the quantified shortage of skilled people not working for a major multinational company in the Valley.

Is it healthy?

Of course, not. Processed food never is. None of the investors themselves rely on Soylent for their sustenance. It is something that is ripe for the scalability problem that technology investors love to solve, though.

And, it has a brilliant name.

On iPhone app inputs

This question statement often comes up.

We’re developing an iOS application, and of course, the user would have to input some personal information before he/she can start using the application. What kind of validations should be implement on the device? Which ones on the server?

Most people, especially when starting out on a new project, consider input validation to be a fairly trivial problem statement with fixed states. But, as the application matures, they fairly quickly realize that every input has its own set of error and valid states. The validation problem grows exponentially with the number of user inputs on the device, as every combination needs its own validation, more or less.

I firmly believe that validation should never be done on the client, unless that’s the only place you need to do it. If there’s even a single server side validation component in the project, the team is better off delegating it entirely to the servers. This makes life much more easier for the front end developers and also makes testing easier. If your application depends on a web service (as most iOS apps do), chances are that the web service would in the near future completely rewrite its required inputs specs and then you will find yourself in a situation where instead of adding new features to your iOS app, you are spending valuable time in trying to get all the client side validations in place. This, until the next time this repeats itself.

That said, there is also a need to think about whether that input is really required. Let’s not forget that iOS devices are mostly mobile gadgets where the users are generally in a hurry to complete a particular task. Even if it’s their first time using the application, forcing them to input personal data which is only partially required is detrimental to the entire user experience. It adds unnecessary validation.

Conversely, if you have an input component in your app, then you necessarily HAVE to validate it. If you’re not validating it, it’s not important, and hence, must be disposed off.

Lessons: Abide by the Apple Human Interface Guidelines, always. Don’t force your users to input more information than is logically necessary for the application to do its job. If you have to perform input validations, do them all at one place, and that place is the server where you have the necessary processing cycles.

Should you use Interface Builder?

Ever since I started out with iPhone development, I have seen a lot of debate online about the pros and cons of using the Interface Builder tool that comes as a part of the developer toolkit for Mac and iPhone development. For a lot of people, the tool comes across as basic, limited in scope, and sometimes entirely useless. For the developers at the other extreme, IB is an invincible tool without which there is no app development.

This Wednesday, I got the chance to debate just this with the CTO of an iPhone startup here in Washington, DC. While I am short on the person’s technical background, he did mention that his previous programming experience was doing website development using Flash and Dreamweaver.

(more…)

It’s been a while…

…and how times have changed. The last time I blogged, I was on a train, commuting to DC on a daily basis for a federal project that everyone was in just to rake in utilization hours (bonuses) and bide time. I was single. I had a roommate. And, I was careless.

Now for the exciting part. I am married, drive a hybrid, don’t have roommates, and no longer commute 2.5 hours to and from the client site to work on some of the most technologically backward and ill-designed projects ever. I am now a more serious iPhone and Mac developer, thanks to the commute time saved, and have actually gained enough experience to put out apps (albeit small ones for now) on the App store.

I have gained more understanding of how small business in America works. I have seen the economy take one of the worst nosedives in my lifetime, and seen desperate efforts to bring it back on track. I have seen people responsible for the mess make it big, and I have seen people suffer. I have been humbled. I have come out stronger.

For those wondering what I am up to now, I am still the good old me, although with the wisdom of two. I am still diffident, so much so that I sometimes sell myself short, but it doesn’t matter. The people who are smart enough to realize my strengths are the ones that mean something. I am now, however, spending a lot of time pursuing my passion – learning to become a diligent software engineer, working on mobile services, next generation entertainment and communication software, and of course ECM. You can teach a violinist how to use their long fingers to type fast, but you can’t teach them how to compose poetry with their keyboards. Being able to do just that is something I am proud of. Thank you, school!

I am back, and hope to make this blog mine once again. Thanks for being a reader.

Age and Competition

It’s not uncommon to run into a blog belonging to a very young software whizz these days and just not being amazed at how kids these days are able to get up to speed with what took us ages. Of course, this sort of generational gap is always going to exist. As we advance our knowledge of science and technology, the baseline for mere awareness is only going to keep rising. For example, a few decades ago, calculus was an advanced topic, but now it is a staple ingredient in the Mathematics curriculum of an average middle school student.

The point of this post is to mull over how age and experience really play a role in how you look at these things. For example, I saw this site today. It belongs to a passionate 18 year old open source software developer who is most probably a college student. From a technical standpoint, he is definitely more than qualified to do the jobs of some very experienced people I have met. He is on the cutting edge of his technical spectrum, so to speak. When I was growing up and in college, I was like that, too. I used to work on websites as a hobby, write interesting C programs in my summers, and just generally mess around with a lot of software code. With the rise of the Internet, though, it has become all too easy, and sometimes expected of you, to showcase your passion and talent for the rest of the world. This is an example of the raised threshold/baseline I mentioned earlier. So, is the kid exceptional? In comparison to some other peers in college, sure, but being on the cutting edge and passionate is expected from you. When you are grown up, this is how you look at it.

When you’re 18 years old, you just want to do things because they’re fun, and not because you realize that being passionate is ultimately going to help your overall perception of your future career. Youngsters these days have this wonderful opportunity to be taken seriously, to be able to start open source projects that have the potential to be used by a lot of people, to be able to contribute in the same vein as other more experienced people, thanks to the Internet. So, for someone like me, while it was considered exceptional to just be passionate about programming languages or writing hobby programs, I think the bar has been raised quite a bit in the last two decades.

So, do you compete with these youngsters? Feel threatened? No.

These are just signs that the technology landscape is changing so quickly, and that is very good. What we could do, though, is align our passion with theirs and create synergies that would ultimately advance future technologies.