Author Archives: Joshua Wohle

Removing friction (for good products)

I came across a very interesting Wired article this week (http://www.wired.com/2015/03/disney-magicband/), which talked about the new “MagicBand” Disney are using in their Orlando theme park. The band itself doesn’t seem to be doing anything particularly innovative, but the article stuck with me all the same.

disneymagicband2_f-1024x682

The bracelet enables children and parents alike to have an even more unforgettable experience at Disney’s theme part, by removing the friction that comes with running a place that welcomes millions of people ever year. In essence, the bracelet has an RFIP chip in it that knows who and where you are in order to customize your experience and pre-empt your every desire. What stuck with me however, was the description of how the entire product worked. Instead of going overboard and piling everything technology could offer into the bracelet, Disney seems to have gotten the balance perfectly right. The bracelet itself is very understated (as in, doesn’t look overly futuristic) and its functionality is limited to exactly those areas it is most useful (providing you with more food, faster and getting you onto more rides in an enjoyable way). It is the first hardware product in a while that I have seen to have such great focus.

Learning from other “unusual” hardware

Another product which presents the same characteristics is one I have been using for a while now: my belt. Now, stay with me on this one as I, like everyone else I imagine, have been using belts for a long time of course. A few months ago however, I randomly bought a new belt online without giving it much though. It looked nice online and initially I didn’t think any more of it.

Free-shipping-high-quality-fashion-mens-beltsMen-font-b-Auto-b-font-font-b-Lock-b

 

When it arrived however, I was really surprised by the lock mechanism (I should have noticed this before, but it was more of an impulse-buy :)). Instead of having to put the pin in the right hole, this belt came with a locking mechanism that was completely different (the only way I can describe it is the same way a rollercoaster works to keep the carts from moving backwards on a hill).

Belt_04

This means that

  1. The belt can be adjusted exactly to the size I want it to
  2. You don’t get the usual “wear and tear” of the holes in the belt
  3. It is a lot easier to close in general

It’s hard to think that a product as old as the belt can be improved upon, but they definitely did it 🙂

It’s not about the tech

On a day-to-day basis I am involved a lot more in digital products (actually, I’m almost exclusively involved with digital products). What i love about the two examples I provided however, is that they illustrate exactly what I consider to be “good product”. Although these products might not be purely digital, they are the result of an innovative, visionary approach that go beyond what most people look at whilst only providing the features they are actually good at. They think about the product from the right perspective: the user. They simply realise the goal of product development is not about producing the coolest and most avant-garde tech, it’s about producing the right tech

If you have any questions or simply want to point me to other examples of products (both digital and physical) you really like, please leave them in the comments below! 😛

If you want ownership, don’t forget strategy (& communication)

Strategy is one of those subjects that most people think they understand when very few actually do (I might be one of the former, but that would make this an awkward article, so I’ll continue on the premise I’m not :)). Depending on the people you ask, it is something that should be top-down, bottom-up or simply all across the organisation. Whatever view you take of it, there are a few issues that are of critical importance and today I would like to focus on an aspect of implementation that is not often linked: “ownership”.

What does ownership have to do with strategy?

…you might ask, and that’s a great question! Strategy and ownership don’t seem to have a clear link until you start switching your viewpoint around (starting from ownership). One of the key areas to drive within a productive product team is ownership. Ownership is what enables individuals within a team to make key decisions without constantly having to refer back to their team leaders, managers or boss (and thus enabling faster actions). This only works, however, if people feel they have

  1. The authorisation of making those decisions on a daily basis
  2. Protection in case they make mistakes
  3. Understand all of the criteria to make the decisions

Points 1 & 2 seem fairly obvious but for some reason, point 3 often seems to be neglected and that’s where strategy comes in. Strategy, done right, provides a direction framework that enables decision making to occur in a clear manner by evaluating the outcomes of a certain decision against the strategic goals of the company. Without a clear strategy, decisions run the chance of being inconsistent and pointing in different directions and people know this.

Lost and Confused Signpost

It might come as a weird thought (not really, I hope), but people don’t like to be completely wrong. Although you can tell them over and over again that they should be and have all the freedom to make decisions, good people will only do so if they feel confident they are going to be good at it and that’s where strategy comes in.

Communicate & watch

Putting the last two points together, it’s easy to see that a badly communicated strategy will result in a team that is unwilling to make decisions, however many times you tell them they can.  Once people fully understand the framework against which they are to evaluate different options, they will be able to finally make the decisions everyone (them being the first) wanted to be made in the first place.

crossroads

 

If you have any questions & or feedback, don’t hesitate — leave them in the comments! 🙂

 

Developing & debugging an HTML5 (phonegap) app – part 1 DEVELOPING

Over the past week, I spent my mornings developing an HTML5 mobile app. The main idea behind the project was that I wanted to learn a couple of new tools and technologies out there, as well as figure out how far you could push HTML5 apps in general (“are they close to native at all, or can you possibly get them there?” kind of thing). I set out to use the following new tools to develop the app:

Following is a summary of the things that surprised me most, hopefully providing some people with a shortcut to the right tools and techniques that I had to look pretty hard for 🙂

This post is made up of 2 parts, make sure to check them both out if you think they could be helpful! 🙂

  1. DEVELOPING – this one
  2. DEBUGGING

Developing…

The Cloud9 IDE

First of all, as I pointed out, I have been using the Cloud9IDE to develop my app and I have been more than happy with that. I love the live css preview, the code-completion and the general feel of the IDE itself. What was most interesting for me, however, was that I could test my code, live on an Android and / or iOS device through the use of SauceLabs (integrated with the Cloud9IDE). I did a separate post on Cloud9 here, so I won’t go into more detail in this post.

Adobe phonegap BUILD

Available at build.phonegap.com, this service enables you to upload your html5 code (or github repository) and it spits back a fully functional native (hybrid) app using PhoneGap. Using this service has MANY advantages ranging from auto-updating plugins (you specify your phonegap plugins in config.xml, but the BUILD service makes sure you always use the latest available version when compiling) to updating your app over the air (a service called Hydration) which I’ll get into a bit later. As I was really embracing the development in the cloud, all of this meant I could continue to get away with not installing ANYTHING and never leaving the browser 🙂

Hydration service

Whilst using the BUILD service, you have an option to enable “Hydration” under the “settings” tab of your app.

basic settings adobe built

 

This will adds a little snippet of code to your app which will enable you to update it over the air the next time you upload / update the source code of your app (and ask BUILD to rebuild it). The way it goes is simple:

You update your app source code -> commit to git -> ask BUILD to “pull latest source code” -> builds a new app -> open up your app on your phone and it will ask you to update it -> DONE

Documentation

It doesn’t happen a lot, so when it does it’s worth to point it out: the documentation on PhoneGap BUILD is very good. You can find it at http://docs.build.phonegap.com/ and it really does cover anything you need to get up-and-running.

Google Drive Forms as survey in-app!

This is my first jab at developing an HTML5 mobile app and I wanted to get a little feedback on it from people, mainly to figure out how their experience was in relation to the performance of the app. I was very happy to realize that all I had to do was to create a Google Drive Form, get the embed iframe and insert it in the app. That was it and I was ready to go.

the Ionic Framework

For my first html5 mobile app, I decided to use the Ionic framework. This was partly based on some research on popular mobile frameworks I had done before and partly because they used Angular JS, which I also really wanted to get in to (and thus, this gave me a good excuse to do so).

Set-up

Again, in combination with Cloud9IDE, getting set up to develop with the ionic framework was extremely easy. I ran a single command in the console and I was up-and-running.

Learning curve

Ionic itself is really nicely documented and is easy to pick up. If you are unfamiliar with Angular JS however, you probably have a little bit of a learning curve ahead of you (as did I, and I’m still learning :)).

Other than the Angular JS aspect, the framework is really nice and easy to use and very powerful once you get into it. It’s also accompanied by a pretty active community, which was useful to me mainly because it meant most of the questions I had, had already been answered previously (and thus google picked them up :)).

Conclusion

This is my first try and proper html5 mobile development, so there are probably many tools I should be mentioning here, but I might add them as I find out about them :). I hope this post will help some people get set-up a little more quickly and effectively than I did (as I had to look around for these tools) and of course, all comments welcome!

Developing & debugging an HTML5 (phonegap) app – part 2 DEBUGGING

Over the past week, I spent my mornings developing an HTML5 mobile app. The main idea behind the project was that I wanted to learn a couple of new tools and technologies out there, as well as figure out how far you could push HTML5 apps in general (“are they close to native at all, or can you possibly get them there?” kind of thing). I set out to use the following new tools to develop the app:

Following is a summary of the things that surprised me most, hopefully providing some people with a shortcut to the right tools and techniques that I had to look pretty hard for 🙂

This post is made up of 2 parts, make sure to check them both out if you think they could be helpful! 🙂

  1. DEVELOPING
  2. DEBUGGING – this one

Debugging…

My main pain whilst starting the development of my HTML5 app was debugging and more importantly figuring out: how to debug the app once it was packaged as a PhoneGap app?…

I searched google for many tools and came up with results such as

but none of them could show me my JS console events such as errors, warnings, etc. (WEINRE came closest, but it could only EXECUTE statements in the console, not read events). UNTIL!

Chrome developer tools

This seems pretty obvious now, but no blog or other site I was reading mentioned it: Chrome inspector can debug your HTML5 Android apps like it can debug any normal website! The rule is: as long as it contains a webview, you can debug it using chrome! You can launch this through your usual Chrome Developer Tools menu: Tools > Inspect devices

chrome inspect devices screenshot

screenshot & more info from this site: http://www.letzwrite.com/how-to/remote-debug-mobile-website-android-chrome-firefox/

And if you have your phone connected to your PC (with USB debugging enabled) + a phonegap app running on it, you should see something like this:

inspect devices chrome

Those tools have definitely been a lifesaver and as soon as I got to see the console, it took me about 2 minutes to identify the problem my phonegap app was having (which was related to a different way of resolving urls than what the chrome browser does).

SauceLabs emulators

As I used the Cloud9 IDE, sauce labs emulators came fully integrated and enabled me to test my code straight on live ios / android devices. This was also pretty neat and definitely helped me out a LOT 🙂

Long time no write – Cloud9IDE

It’s been quite a while I didn’t write anything, mostly due to the fact I simply didn’t take the time to do so. I will try and get back into the habit of making this at least a weekly thing, but we’ll see if that’s realistic 🙂

Cloud9IDE

cloud9ide logo

 

For the past couple of weeks, I have been trying out Cloud9 IDE over the weekends and am really happy I did. I made the switch to a full cloud work environment about 6 months ago, but hadn’t tried actually developing that way (my current job doesn’t require me to do a lot of actual coding) so I thought it a good idea to give it a go with a small project and see how it would work.

Starter: Sign-up to new project

The initial sign-up is very smooth and quick. Not many details to fill-in and, most importantly: they do not force you to give a credit card (A REAL TRIAL! :)). You can then go on and create 1 private (as in, without anyone else being able to look at your source code) project with the free account and that is where the real fun starts.

When you create a new project, this is called a “Workspace” in Cloud9. You can choose from a variety of starter packs (that pre-configure your workspace for the types of technology you’re going to use) or simply go for something “custom”. The first interesting thing I saw whilst creating this workspace was “clone from url”. This option enabled me to specify a github url and create a workspace directly linked to it (pulling the code and letting me commit without a problem). That was a really nice surprise to start off with, as I was anxious as to how I would solve problems with getting stuff into the cloud during my development process.

First steps

The IDE looks pretty neat from the first try. Here is an example of both the first page you see (upon project creation — node.js here) and some syntax highlighting

cloud9 new project screenCloud 9 screen with syntax highlights

The editor is really smooth and definitely works as nicely as any text-editor I have used natively (granted, I haven’t tried a 3000 line file yet, but still). It is very easy to create files, write code and most importantly… run it…

Running your code

It is in running, testing and debugging my code that I see the enormous benefit of using cloud9. A couple of things quickly jump to mind:

  1. Live-preview in the same browser tab. It simply updates as you save your files
  2. SauceLabs integration enables you to test in ANY browser you want – MOBILE INCLUDED. Yup, you heard that right: it takes 10 seconds to save your file and have it run on both an emulated android and an ios device…

cloud9 mobile testing with saucelabs

  1. Live link. If the “live preview” is not good enough for you and you want to test your code outside of the cloud9IDE preview, you can simply take the link and open it up in another tab, to test it the old fashioned way.

Wonderful easter-eggs

Whilst getting to grips with Cloud9, I was trying to learn a little on html5 mobile app development at the same time, so I wanted to use phonegap and, more specifically, ionic (a framework based around phonegap for html5 mobile development). That is when the power of the terminal became really apparent. I thought I would have to go through all the trouble to get node.js installed and then make it work with phonegap, but no. Node.js was already fully running and the only command I had to put into the terminal was “npm install -g cordova ionic”. That was it… and I’m not even kidding… No errors, no hassle, everything simply installed and my whole workspace was set-up to start developing apps for mobile…

Another useful thing was that at some point I wanted a public URL for my app. As it was HTML5 I also wanted to support normal browsers so I decided to get a heroku app and push it there. Again, I thought I would have to set up the heroku toolbelt and some other things to get this working, but no… IT WAS ALREADY THERE. This meant that the whole process of pushing my code live on a new heroku app took under a minute (setting up the new heroku app INCLUDED).

Conclusion

After 3 days (over the space of 3 weeks) with Cloud9IDE, I am completely sold. I think it is one of the better applications I have tried out over the last years and definitely feels like a major leap forward in the development landscape in general.

I haven’t tried out very heavy set-ups yet, so I’m not saying this is for everyone and every project, but I am definitely recommending this for small to medium-scale web development and any html5 mobile development.

Hope this overview was useful, but let me know if you have any thoughts / comments!

 

 

Windows speech recognition

This week, starting my MBA, I was reminded of windows speech recognition for the use of writing and commenting on documents.  As I have never really got into it,  and people were telling me that it could save me a lot of time using it, I thought I would try it out and provide a small summary of my experience here.

 

Setting up speech recognition systems was very easy.  It took me about 30 seconds to find the right configurations and switch it on.  The next thing to do was to run through the system tutorial, which took me a lot longer (about 30 minutes).  The tutorial itself runs through many different actions that you can accomplish through speech recognition on windows.  Many of these are very intuitive and whilst going through them the system starts learning how to interpret your voice.  I was pretty confident after having finished the tutorial, but have now been stuck for a over 10 minutes on this post, as I was trying to post it using speech recognition alone.  Admittedly I have only been using voice recognition for about 45 minutes and things are getting better as I progress in this post, but it is still not where I would have wanted it to be.  I will give it a fair trial in writing long documents, but I am really not convinced yet.

 

I am keeping this post short, as I would not want to lie when I say that I wrote this post fully using speech recognition.  I just hope that my experience will not stay as bad as it was for the past hour, as I do not think I will be able to hold my calm for much longer.

Different experiences of management

Following is an account of various experiences of management I have had over the years. It is the first in a series of many essays and texts I will write over the course of my OU MBA, which I will be publishing on my blog at the same time.

Being managed in a work-based situation

For about 6 years, I worked as an IT-Consultant for a big firm. Initially, I started-out as employee, but then spun-off to do more interesting things (which, at the time, was the only way of doing so for me). I worked in a small team of 8 people in a pretty independent way for a long time, developing an IT system for various departments of the business. It took off slowly but surely and it was the first major project I was given part-ownership off (alongside a domain-expert helping me guide the application). As soon as the project became successful, however, people (my managers at the time) suddenly started to want to manage it more directly. Instead of letting me do my job I was suddenly getting stuck in politics, management and rules of all I could or could not do. This went on for about 3 years, with the project slowly losing momentum and appeal to most of the business. In the end, half of it was cut because another system came along that did the same thing, but better (3 years passed without a significant update on the application, so it became out-dated). I would not blame the people involved in my direct management, as I understand the need of oversight in as big an organization as the one I was working in (especially as I was 20 years old and new to this size of project at the start), but I do hold an important lesson from it for my own style of management: I firmly believe that sometimes you just have to let people do what they do best, especially if they are not yet constrained by the rules and status quo of the business, even though it can be a bit scary not knowing exactly what happens in the back and how it will all turn out.

Managing in a work-based situation

When I was 18 years-old I founded a software consultancy. It was a completely bootstrapped business mostly composed of a network of students that were working from home for a various number of hours each week. It grew to be pretty successful, with a significant turnover and projects worth over £50k (which was huge for me at the time). In the business I employed better and worse employees and as is the case in IT, the best developers will completely outshine the medium ones (both in talking-time and in profitability). I made the mistake of not having solid back-up plans for what could happen if my star developers would leave and it hit me hard. In an effort to keep these people happy, they were given more freedom to do as they like than others. The problem was that that meant nothing was standardized and in the middle of one of my biggest projects, the star developer decided to leave the business, without any notice and / or handover. Having spent most of what the client had paid us already, I was in big trouble having to finish the application myself. This is where I learned 2 important lessons: 1) Always have a solid back-up plan, 2) When you are managing the project (especially if you sold it to a client), the buck stops with you…

Being managed in a non-work situation

The best, although probably pretty weird to most, situation I can think of in my life is my period as an officer in an online game. Officers were to my guild as managers are to a business: organizing people and getting tasks done but still responding to the guild leader, who gives general directives and makes the bigger decisions when they need to be made.

I played with the same group (around 80) of people for about 3 years, multiple hours each day (and thus, it became a very big part of my life). The role in this guild gave me my first experience of being managed outside a “kid” context (as in, your parents tell you what to do J) whilst being present in a game (which makes it all more interesting, as a game traditionally lets you escape these contexts!).

As a player, I was one of the younger officers in the guild, but that didn’t seem to matter a lot. As I played a lot and knew what I was doing, I was considered as much part of the managing team as anyone else (even more to those that simply didn’t know my age). I did however, run in to some situations where people felt it necessary to remind me of my “duties” and responsibilities as a leader in the guild. What I learned most from this situation was to be bold and not be held back by the status quo of how things are supposed to be, especially when hierarchal decision making is concerned.

Managing in a non-work situation

A little over a year ago I got married and we decided to have the wedding in Scotland (far away from any of our friends and / or relatives). We invited about 80 people from across Europe (and one from the US!) and organized a 3-day getaway for everyone, fully hosted and organized (with the wedding at the second day).

My biggest surprise was the day everyone arrived, as we (me and my wife) suddenly realised we were the only ones who knew exactly who was supposed to be housed where (some people stayed in the castle, others in accommodation 5 minutes walking, etc.). We should probably have sent this information around before-hand but didn’t, which meant we were running around trying to find the rooms for each person as they came in.

The next day went nicely, up until the point where we got a noise complaint before 9PM in the evening… I thought I’d have a chat with the person responsible for the complaint, but the moment he opened the door he seemed extremely aggressive (and I didn’t want any trouble on my wedding day J), so I walked away completely failing the goal of what I came there to do (talk to the guy). We then turned-up the volume a bit and simply hoped for the best (which ended up being all good Smile). My big takeaway from this situation: not all situations are to be managed!