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!

Incredible start-ups, impossible goals and inspiration

Today I thought I’d write about a nice phenomenon we’re starting to see around the world concerning successful entrepreneurs, specifically in the tech area. As technology enthusiasts and future-focused people, successful tech entrepreneurs have a healthy disregard for the impossible. That, coupled with the fact that a lot of technological innovation is accomplished through (initially) abstract thinking makes for a special type of entrepreneur that simply doesn’t see the limit. What is new, however, is that after these entrepreneurs have had their first big tech success they go straight for the next, biggest possible challenge they can find and simply decide to tackle it. Following are a couple of examples which came to be recently and clearly show the trend.

Calico (Google) and defying aging

Calico is a Google venture, spun off into a separate company to have full autonomy. It’s goal: not making people immortal per se, but increase the lifespan of people born 20 years ago by as much as 100 years…

When you stop for a minute and think about that, it is HUGE. This is one of the biggest companies in the world, committing to making people live 100 years longer… and that’s definitely something I could get excited about (please, please, please Google include 25-year-olds, I’m only 5 years off! Smile with tongue out).

Gates foundation and eradicating Malaria

Everyone knows the enormously successful and richest-man-alive (for many years) Bill Gates. He made his fortunes through founding and guiding Microsoft to where it is today: dominating enterprise IT. A few years ago he decided he had had enough and, instead of taking it slow and deciding to sip off some of that 50 BILLION $, he thought of something else. He decided to change the world, AGAIN, but in a more fundamental way this time, by eradicating Malaria. His fortune and contacts at his side, he simply decided it was enough and that big challenges should be face head-on. He has publicly stated this is now his life goal and I must say, it puts a whole new light onto what many would consider the emblem of a capitalist system Smile.

Elon Musk, SpaceX and a Mars Settlement

Elon Musk is the CEO & CTO of SpaceX and CEO & CPA of Tesla Motors. He made his fortune through previously co-founding PayPal. After PayPal, he decided that electronic cars were a cool and necessary idea for the future and due to the market dynamics, current car manufacturers did not have enough incentive to do it themselves. For this reason he founded Tesla Motors which is aiming (and very close to succeeding) to become the first fully electric car made for the general consumer (under $30,000). Although that is a completely honourable goal (and many would say an enormous challenge on it’s own), it doesn’t seem to be enough for Elon Musk, as he decided to found another, even more ambitious project: SpaceX.

SpaceX develops and manufactures space launch vehicles with focus on advancing the state of rocket technology. It was awarded a $1.6 Billion NASA contract on December 2008 (for 12 flights to of their Falcon 9 rocket and Dragon spacecraft to the International Space Station) and in seven years, it has designed the family of Falcon launch vehicles and Dragon multi-purpose space crafts from the ground up. The goal of the company: Expand life beyond the green and blue ball we call earth (in more recent interviews, this was more precisely defined as creating a human settlement on Mars)… Now that is a pretty exciting goal!

Impossible goals and inspiration

As a tech entrepreneur, there are 2 things I really love about these examples:

  1. It promises an enormously bright future ahead, with too many interesting things to count and adventures to take. It has been a while since we have had these big challenges taken-on by people who actually might make it.
  2. It sets a clear example to follow, milestone to reach and moon-shot to better. It’s as-if we’re starting a challenge of “who can make the biggest impact, with the most amazingly impossible project and succeed”… and I love the idea of it!

Personally, I am really optimistic and feel inspired by the examples these people put in place. They’re showing the way to a “culture” where people simply try the impossible and that can only be a good thing Smile

Online storage solutions for start-ups (& why dropbox or box aren’t the only players on the market worth considering)

Recently I had been tasked to find an alternative to our company network drive that was running out of storage (don’t ask, this was before my time Smile). Initially I thought of Box and Dropbox of course, as everyone knows about them, they are solid, have mobile clients and present most bells & whistles you would want. However, in my case I didn’t think this would suit the need of the business very well for a one main reason: The documents still physically stay on your machine, meaning your disk space continues to fill-up instead of “moving” it to the cloud (personally, my disk starts to fill up quickly). For this reason, I started my search and was really surprised to find out it was pretty hard to find anything that perfectly suited my needs.

What I wanted

In my case, the perfect solution would include the following:

  • Backup of files on all our computers
    • Partly common disk that everyone could access
    • Enable for private folders that are also backed-up
  • Enough storage to not have to think about it
  • Opt-in to sync instead of opt-out (in essence, unless you decide to sync a folder, it is only in the cloud) – saving space on disk
  • Share files easily with third-parties
  • Manage all users from a single interface (not have to create separate accounts for each user, without a management console)

Initially, I thought this would be a pretty straight-forward set of requirements, but for some reason the “Opt-in to sync instead of opt-out“ was really hard to come by.

What I found

After quite a bit of searching, I ended up at RackSpace, whose costomer support directed me to JungleDisk (a subsidiary) and LiveDrive.

RackSpace & JungleDisk (www.jungledisk.com)

JungleDisk has two editions: WorkGroup or Server. The workgroup edition allows you to share your files, sync and back them up for teams between 2 and 100. It sells itself as “Shared Online Drive”. The server edition allows for secure, robust automatic backups, specifically designed for servers. It was clear that I was looking for option number 1.

After a bit more research on the workgroup edition, I found it managed to fulfil all of my requirements so I decided to give it a go.

Credit card details for trial

This is where everything went wrong and I hope someone will read this one day: credit card requirements for a FREE trial don’t make it a FREE trial and put people off… I went through the first screen asking my details and was all ready to try out the solution before I got to screen number 2 asking for my credit card details: FAIL. I turned around and never looked back, going with a competitor instead. That’s how much it annoys me…

LiveDrive (www.livedrive.com) — UPDATE: DO NOT TRY (End of article for details)

LiveDrive promised to be part of what I was looking for : Cloud storage as a shared network drive. Although because that was my main concern, I opted to give them a try and after reading some more and fiddling around a bit, I found out they do much more than a cloud network drive. They also include backups, sync, file sharing and all the other features you have come to expect from Box.com or Dropbox.com. The reviews were mixed, going from 5 to 1 star, but my personal tests were very favourable. On top of that, their pricing is a lot lower than their competitors and they provide a whole range of features that are “nice to have”, which come with it for no extra charge.

Conclusion

I’ll be trying out LiveDrive for a little while longer, but am pretty confident of it’s feature proposition. The only thing to find out now is just how reliable it will be and if it’s good enough to rely on for the entire business. Please let me know if anyone has tried other services that suit these needs and if you liked them / disliked them !

UPDATE: LiveDrive has proven amazingly unstable, to the point it has CRASHED MY PC multiple times over a couple of days… I guess I’m still on the lookout for a good solution!

Trello (& Agile) review

At my current company, I inherited the use of « Trello » (www.trello.com). Initially I wasn’t too psyched with it, probably due to my own habits and the fact this meant changing, but I have grown really fond of it!

Trello is an online task management tool that “gets back to the basics”. In essence, it somewhat replicates the good-old whiteboard with post-its, but makes it digital, multi-user, cross-platform, mobile & simply amazing Smile. It consists of a very simple column system, with each column containing several tickets. Each ticket can contain text, images, due dates, labels, etc. and be assigned to users. You can create as many columns as you want, suiting different needs. This creates for a very flexible workflow that can be tailored within minutes to do what you want it to do.

Agile use case

In our case, we started out a bit messy, simply keeping a backlog of tickets in “To Do”, moving to “Doing” when worked on, “Done” when finished and “Deployed” when deployed (duh… Smile). However, switching over to a scrum-like model is as simple as adding a column “Current Sprint” and applying the needed logic of daily scrums, grooming, etc.

Conclusion

All-in-all I am really pleased with Trello and will definitely be using it for the foreseeable future. As flexible as it is, it seems to enable me to cater specific boards to specific scenarios of project management. I Would recommend everyone who’s looking for an effective project management suite to give it a go and let me know how it went !

Heroku, AWS and SSL

I haven’t posted on my blog for a while, but as always after a period of holidays, you have good intentions and posting on this blog is one of mine, so I thought I’d start today and make it more regular.

Over the past couple of months I have been using Heroku for a couple of websites with both PHP & Python / Django. It’s been a very good experience, although there are some real hiccups and I thought I’d put some of them up here for whoever might be interested in using it:

download

Pros

In terms of simplicity, I don’t think you could make it any simpler: you push from git to Heroku and the rest is automatic. For quick iterations and continuous deployment this is pretty much the dream, and it’s all done for you.

On top of this first step being very easy and automated, there are a bunch of modules that you can add to it through a simple click. This makes for very fast integrations of mail servers, logging, etc. that would take you a lot longer to set-up otherwise.

Other than making it easier to set-up, I think the biggest point for Heroku is that it enables you to focus on the application you present to your users.

Cons

It’s expensive. Heroku uses AWS and adds a bunch of automated stuff on top. As AWS is not the most inexpensive cloud provider, you can imagine Heroku can become costly pretty quickly.

Also, SSL is badly integrated. You can only use a single certificate, which means you generally have to buy a wildcard and that becomes expensive. It is an even bigger problem if you host multiple domains on the same heroku instance: it is impossible to use an SSL certificate on heroku in this case.

A last, but very important point is that you lose control over your infrastructure. You are reliant not only on Heroku, but also AWS (as Heroku uses AWS). Over the past 3 months, we have had several hours of downtime and another 12h+ where the Heroku API was inaccessible (effectively cutting access to deploy anything). This is of course to be expected, as no service can be perfect, but something to take into account when you make the choice to move to Heroku.

Conclusion

As of today, I am still undecided. We will continue using it for a bit and try to find possible fail-safes that would enable us to fall back on other services if we need to. As we are still a start-up, iterating fast is more important than scaling costs, but that is only the case until the costs become too high to bear.

Setting up a VirtualBox development instance with NAT port forwarding

I just spent another couple of hours figuring out how to effectively re-install my development instance (Ubuntu Server running in VirtualBox on my Windows host) and thought I’d write it down for personal reference and in case someone needs it :) .

  1. Install VirtualBox (of course)
  2. Install Ubuntu Server
  3. Enable port forwarding from 127.0.0.1 to 10.0.2.15 on port 80
  4. Install guest additions
    1. sudo apt-get install dkms build-essentials
    2. mount guest additions
    3. sudo mount /dev/cdrom /media/cdrom
    4. cd media cdrom
    5. sudo ./VBoxLinuxAdditions.run
  5. Reboot
  6. You’re done ! You should now be able to access your linux guest by going to localhost on your host :)

Now you might want to set up folder sharing and map your local www folder to /var/www, but that is easy from here I guess :) .

Note: do not forget to sudo adduser “youruser” vboxsf to enabled permissions on your shared folder!

Sony Xperia Z

A week ago, Vodafone convinced me to switch back to their contract (from Orange) and gave me a nice deal on the Sony Xperia Z. I have been with the phone for a couple of days now and am very happy with it. Here are the main points for me :

  • The screen is simply amazing. It blows any other screen I have seen out of the water (yes, that includes the iPhone 5). The clearness, colors & sharpness are simply beautiful.
  • The built quality is very good. It feels solid in the hand and is made of glass both front & back.
  • At first, I thought the 5-inch size was going to put me off, but after 2 days with it I was completely used to it and actually prefer it to my Galaxy Nexus.
  • The battery life is very good. It lasts even longer than my Galaxy Nexus, which is a lot to say.

The one thing I am really disappointed with is that they removed “Timescape” in favour of an applicatino called “Socialife”. Socialife is simply not ready for production. I have never seen an app with more bugs than this one and it should not have been allowed to ship with the Xperia. Other than that, I would recommend the phone to anyone that is on the lookout !

Development of an Android Application for Moodle – Pre-development (1)

As I am approaching the end of my time at King’s College London, I have to write a BSc project. In my case, I decided to write an Android application that interfaces with Moodle and a timetabling solution, to give students a nice client when they forgot to download their slides, take notes and interact with fellow students. As my work might someday be useful to someone, I thought I’d just start writing about it as it goes along. Most of the parts of what will be written here are parts of my report, so please do excuse me if they seem a bit formal. This post is the first of two that outline my considerations before I started developing.

Building on top of an existing project

In today’s globalised and internet-enabled world, people are starting and abandoning projects all the time. By nature, developers are builders and our first instinct is to start from scratch no matter what we do. However, this leads to massive time-wasting, creating the same software over and over again without even taking the time to see what is already out there. Re-inventing the wheel is not productive and should be avoided as much as possible.

As the open-source movement has exploded in the past couple of years, there are many projects available whose authors are more than happy for you to hack around with their existing source code, as long as they are attributed the credit where appropriate. For this reason, I owed it to the credibility of the project to find out if there was an existing basis that I could build my application on top of and my search was fruitful.

As my background research pointed out, at the start of my project there were two Android applications available that properly integrated with Moodle. One of them turned out to be fully open-sourced and its main developer more than happy to help out.

Moodle-for-Android (initial project)

Moodle-for-Android[1] is a project that was started by a group of Monash IT students in collaboration with Yew Cheung International School Puxi Campus and presents very similar features to my initial project specifications

Features

The application is working, although a little buggy and currently integrates the following functionality

Authenticating a user through Moodle

The application provides a way for the user to authenticate to the correct Moodle instance, obtains a token and uses it to authenticate its requests for information at later stages. This authentication method is also referred to as oAuth[2].

Obtaining and displaying the user’s subscribed courses

Once the user is authenticated, he / she has access to a list of courses they are enrolled in through Moodle.

Obtaining the documents related to the user’s courses

The user has access to all of the documents that are uploaded on Moodle, related to the courses they are enrolled in.

Offline storage of documents

The user can decide to download his / her course documents and store them for offline reference. We will be performing a full offline synchronization, meaning that the application checks for updates of documents on the server and re-downloads them when appropriate.

Automatic downloading of documents

The user has a possibility to specify that the application should (or should not) download all of the course documents accessible to it, automatically, for offline usage.

Showing course assignment details and deadlines

The user has access to all of the course assignments that are present on Moodle, related to the courses they are enrolled in. We will only be handling showing the course assignments, meaning the user cannot use any real interaction (like uploading a document).

Providing web-access to forums

Direct access to the web-forums from within the application is not available. However, a list of the existing forums (available to the user on the Moodle platform) is provided, but with web links to them. This enables the user to access these forums on the browser of his / her mobile device (it does mean the user has to re-authenticate him / herself to Moodle within the browser).


[1] https://github.com/M0nk3yofdoom/Moodle-for-Android

[2] http://oauth.net/

A developer / entrepreneurial Windows setup (Part 2)

This is the second post where I detail my current setup under Windows, as a comparison to my previous Ubuntu Linux one.

Visio

It’s been a while that I was looking for some good modelling software to draw pretty pictures both for my software development & for my business process mapping. Visio is expensive for sure, but with a student license it is free! Smile. Now I realise that means it’s not for everyone, but depending on the kind of job I will be doing, it might be worth the occasional couple of hundred £. It just makes UML modelling fun again, which goes a long way towards making my day a lot better.

DestroyTwitter

I always loved the Gwibber client under Ubuntu and never managed to find anything similar under Windows, until DestroyTwitter. It’s exactly the same as Gwibber, with the difference of being purely based around Twitter (which is still a little bit of a pain, but better than nothing). I use it every day now and because it’s so lightweight, it’s a really good client to always have running.

Evernote Application & Plugins

I am getting so used to Evernote that I put more and more stuff in there. It has become my second brain and it’s really useful they have an official Windows client. On top of that, they have all sorts of plugins to easily store notes on any of my web browsing, which is enormously useful for future reference.

KeePassX

Under Ubuntu, I was using Revelation Password Manager and I needed an equivalent under Windows. Luckily there is a very good one (a better one than Revelation even) which is called “KeePassX”. It’s free to download and really does the job.

Microsoft Office & Outlook

One of the reasons of my switch was simply because I realised more and more of my time was spent with Open Office. Now I like Open Office a lot and I think it does a great job of providing a MS Office alternative. However, I still think MS Office is quite far ahead. As I am a student, I got a rebate on the price and am happy I went for it in the end. Put on top of that the way Outlook handles e-mail (compared to Thunderbird) and I must say I’m a lot more comfortable.

 

That was it for me. If you have any questions on how I made this switch, please feel free to ask !