Wednesday, April 9, 2014

Pricing for Piracy

A post on my personal blog about why so many feel okay about downloading pirated content and what we can do about it: Pricing for Piracy.

Wednesday, July 10, 2013

Use-Case Apps

I follow Beta List regularly. It tells you about new start-ups in beta stage. I'm an early adopter and I love to try new things out. Today I saw a post about StoryApp:




[StoryApp] enables you to show your friends' photos on your phone by swiping through them, one-by-one, describing what's happening, like in real life. Turning photos into stories.
A neat little concept. I mean, I'm not trying to belittle this endeavor. Executing an app like this well takes a lot of talent, and I'm rooting for these guys. Still, it's a very simple concept. Like Instagram - dead simple: take a square photo and add a filter to it. If it catches on, you sell to [some huge company] and light up a cigar. The world wasn't changed in any significant way. Nothing new was invented. It's all packaging.

Which brings me to my point. So many of the most popular apps nowadays are not a lot more than feature appification. Taking an existing feature from well established, powerful software applications, and building an app around it. Of course you could create the above voice & photo stories without StoryApp. Heck, you could have done it with Powerpoint 15 years ago. But it wasn't as easy and accessible. It also wasn't as affordable. Powerpoint is expensive. You wouldn't buy it just to send someone a few narrated photos. Photoshop is expensive, and not that easy to use. You wouldn't invest your time and money into Photoshop just so you could apply a filter to a photo you took at the beach. 

If you think about it, feature appification is almost inevitable in a world of $1 smartphone apps. It's just like what's happening with music. Albums are passé. Why should I pay $15 to get that one song I like plus 12 other songs that I probably don't like as much? Well, people don't, any more... They buy singles, or just particular songs off an album, because they finally have the option to do so, ever since the physical medium was taken out of the equation. Few people think twice before splurging on a $1 app. 

People would buy twenty $1 apps before buying one $20 app.

That $20 app might have 20 features, but think of what this means:

  • There are probably many features you're not going to use at all, and you're paying for them.
  • All those unused features crowd the user-interface, making it harder for you to find and use just the feature that you want.
Instagram has one major use-case scenario: Take a picture, add a filter, share it with friends. Instagram is completely optimized for that particular use-case. The user-experience is perfect. The fact that some other photo effects app has the same filters (and more!) doesn't really matter, because it's never going to be as perfect for that use-case as Instagram is.

In fact, calling it feature appification probably doesn't go far enough. These apps take particular use-cases of particular features and turn them into a standalone product. Maybe a better term is use-case apps. 

Use-case apps aren't just an inevitable outcome of a software market that's dominated by $1 transactions. They're also the outcome of a user base that expects nothing less than optimal user-experience. The iPhone has spoiled us rotten. We no longer abide superfluous clicks. Any distraction from what we're trying to achieve means we're switching to another app that specializes in doing what we want.

Taking something big like Photoshop and chiseling away at it until you're left with just one optimized use-case (Instagram) is actually more than just a reductive process. It's not just removing unneeded features; by exposing one particular feature through optimized UI you can also enable completely new use-cases. Take, for example, the number one paid app on the App Store at the moment: iTranslate Voice.
It translates audio on-the-go. Basically speech-to-text coupled with a translation engine. Neither is an easy feature to implement well, but nonetheless there has been software to do both for quite some time. Crucially, though, these features weren't available to you on-the-go. By packaging them together iTranslate Voice is enabling a completely new use-case: real-time conversations with people who don't share a common language. 

Use-case apps are optimizations and specializations. They take something you could have done with existing software - but didn't - and create a way for you to actually do it. Vine is another great example. It's not just about recording short square videos; it also lets you pause and resume recording with your thumb, thereby giving your video the feel of being edited. Sure, there were video editor apps before Vine, and there were video publishing apps before Vine, but none of them let you create a video that looks "edited" in 10 seconds flat. Optimizing existing features for a particular use-case can create a completely new need. People had no idea they wanted a way to share short, edited, square-sized videos. Now they do. Thus, use-case appification can definitely also be a creative process, not just a reductive one.

I'll leave this as an exercise to the reader: what's the next big use-case app? Take a big, well established piece of software (Microsoft Word?); think of just one use-case for it - something very common (writing a resignation letter?); then quit your job and launch your own use-case app start-up (iResign?).

Tuesday, April 30, 2013

Are Google Hangouts The Perfect Office Environment?

Short answer: no.

This is the perfect office environment:





But since we can't have that one, let's try to approximate.


Working from home can be awesome. It's certainly not for everyone. Lots of people need that shared office environment to be productive. Some actually prefer to work in an open-space. 

You know, one of these:


your typical open space

Those that prefer to work in an open space can stop reading now.

We, reasonable people, we appreciate what a quiet, private work environment means. When you have your own office, with a door and all, you can actually concentrate. You're less easily distracted, and less stressed. You can have a conversation with a colleague without breaking everybody else's concentration. And yea, you can also give your brain the occasional rest by checking up on Facebook for a few minutes, or playing a couple of Angry Birds levels. 


Yes, games at work - big whoop. As long as you're not overdoing it, they can actually increase your productivity.





"Okay, we get it", you say, "what does this have to do with Google Hangouts?"

To answer that, let's imagine the perfect office environment for a programmer (although it's really the same for anyone who has to concentrate at work, while also working in a team setting). The office in the picture above is pretty, but it isn't that practical and it isn't perfect.

In the perfect programmer office:

Who touched the thermostat?!
  • You are by yourself. Just you. When you have two programmers sharing a room, at least one of them will have a seasonal allergy at any point in time, and will be blowing his nose every five minutes.
  • People can see when you're in, and can knock on your door if they need to pop in and ask a question. But you also have a do not disturb sign for those hours that you're really in the zone.
  • Your team members are nearby, so you can ask them a quick question if you need to.
  • You got your fancy Aeron chair, your private AC thermostat, and an en-suite bathroom that nobody else uses. 
Now, with a distributed team, each working from home using a permanent Google hangout you get as close to that as humanly possible. 

Pirate hat effect is optional

It just requires a few tweaks.

Tweak #1

Everybody joins the hangout each morning, and stays on for the duration of the work day but with their microphone muted. This is crucial. Without it you're just listening to other people's typing noises and we're back to the horribleness that is an open space environment. When you want to say something, un-mute your mic and everybody else hears you.

Tweak #2 

Hide the hangout window when you really want to concentrate and don't want to see movement in you peripheral vision. In other words, you don't really have to be staring into each other's faces the entire day. But when you do need to say a word to someone, it takes just one second to switch over to the hangout window to see if they're there.


Tweak #3

Need to blow your nose for a second and don't want it broadcast around the globe? Turn off the camera for a moment. Same if you want to take a short break. Others will still be able to speak up and ask whether you're really there if they have something urgent to discuss. 


It's really as close as you can get to that ideal working environment. No real office environment is this flexible. It's like your teammates having adjacent offices with sound-proof glass walls that turn one-way opaque at the press of a button. You can see everyone, or hide them. You can be seen, and you can have your privacy. You can play music and not have to wear headphones for 9 hours. You don't even have to get up to walk over to your colleague's office when you need to talk.

And Google Hangout has all kinds of other cool features. Being free is one of them. Another one is being able to share a screen and collaborate on documents and chat. I guess other video conferencing solutions have similar features, but not many of them are as well made and still free.

Pro tip: if you can dedicate some old laptop just for hangouts, then do. It can sit beside your main screen and you can easily mute the whole thing with one click, turn it away if you want to... very flexible. It feels more like you're sitting alongside a coworker than actually video conferencing. Give it a shot.

The Downsides

Hangouts aren't perfect. They have a few quirks and missing features, but maybe Google will read this and fix them. Somebody please +1 this.

No PTT - Push To Talk. You know, like a Walkie-Talkie. Muting and un-muting can get tedious. Occasionally someone will forget to mute his mic and has to be asked to. Occasionally you'll forget you're muted and find yourself talking to the air for a few seconds. It's not a huge deal, but it would be great to have.

Google Hangouts time out after a while. I guess they weren't really designed to be used for hours and hours. After an hour or so a popup asks you whether you're really still hanging out or not, and if you don't answer it it'll close the hangout. Annoying. 

Setting up and shutting down the hangout is cumbersome. It's just too many clicks. You can't "save" a hangout and get back to it with one click. You have to invite people manually each time. What Google Hangout really needs is the concept of rooms, like chat systems have. Rooms could have well known links so anybody can join them without being invited. You could also be in more than one room, talking to a different group of people each time. You could have one-on-one rooms. Hangouts should copy IRC. IRC is awesome.

In Summary

If you're a distributed team, staying in touch can be challenging. Chat isn't enough. Calling people up on Skype isn't quite it, either. You can have a lot of the good things a real office environment gives you, without many of the annoyances. That's how we work at Gigantt, which, by the way, is perfect for distributed teams that collaborate on the same projects. 

Hey, what do you know, I managed to plug our product in our blog...


HubSpot, give me my marketing grade points now please!


Tuesday, April 23, 2013

Gigantt is Not Psychic

Gigantt's task scheduling is fully automatic. It requires just one thing: that you estimate your tasks.
When tasks are left without estimates, Gigantt tries to nudge you to properly estimate them by showing a little icon beside them (and beside each task that contains them):


Until today, tasks left without estimates were treated by Gigantt's scheduler as one hour long. One hour seemed like roughly the most common task size, so that's what we went with.

Starting today, you can control the default estimate yourself by going to Options -> This Plan and changing the setting:



Also starting today, all new plans will have a one-minute default estimate. Your existing plans will still have the one-hour default, unless you change it yourself.

Why did we change the default estimate to be one-minute?

Well, we noticed a lot of users wanted to be able to plan ahead very quickly, and only give estimates to their tasks when they're done. The freedom to use Gigantt this way is important, because if you're brainstorming and furiously writing down task after task, we don't want to slow you down by demanding that you stop and estimate each task that you create. The problem with the previous default of one hour was that if you quickly created, say, 20 tasks without estimates, you basically added a 20-hour delay into your plan. This can be very disruptive, especially when you have lots of people collaborating on the same plan. One guy adds a bunch of tasks and suddenly the entire plan is delayed unintentionally.

With the 1-minute default, you can do more than just separate planning from estimating. You can also use Gigantt to manage check-lists. When you create a check-list of tiny one-minute tasks, then you're hardly affecting the overall schedule.

We hope this change won't be disruptive to our existing users. If you would like to give us feedback, please visit our feedback site and let us know what you think.

Above all, remember to estimate those tasks. Gigantt isn't psychic, yet. You need to tell it how long tasks are going to take. It takes just a few seconds to do so, and in return you get fully automatic scheduling and resource leveling. That's a good deal.

Sunday, March 17, 2013

Scheduled Procrastination

Unscheduled meetings can be more productive than scheduled ones.

This might seem counter intuitive so let me explain.

Some jobs involve doing lots of things at once. Or at least in very rapid succession. For example, a secretary really needs to know how to multitask. Other jobs are more "single threaded", like software development. They usually require a lot concentration, which means it takes a while to get into "the zone" and become truly productive. No programmer says "great, I have about 4 minutes free until my next meeting, let's use the time to do some programming". There's a ramp-up process, and it's really hard to enter this process when you know you're going to interrupt it very soon.

Enough theory, let's take an example. It's 9:30 AM and you have a team status meeting at 10:00. Are you going to start working on debugging that tricky crash, or are you going to pass the time with emails and make yourself coffee? You know it's going to take about 10 minutes just to warm up that cache that you keep in your skull, and there's nothing worse that having to stop in the middle of productive work. So you're not going to bother. You will procrastinate instead. StackOverflow. Facebook. Reddit.

If it weren't for that 10:00 meeting, you would have dived into work without hesitation. Regardless of how productive you think meetings are in general, all other things considered equal, you'd get more work done if instead of scheduling the meeting at 10:00 somebody would have just popped into your office and said "hey, got a sec to talk?". Scheduled meetings are a major source of procrastination.

Now granted, not all meeting can be impromptu. Some, maybe most, actually require preparation and coordination, so there's not much we can do about those. But some recurring meetings are just a way to catch up. Daily status meetings, morning Scrum stand-up meetings, etc. 

The cure is simple. Don't schedule daily recurring meetings. Just let them happen. Let's say you're doing Scrum and this involves a stand-up meeting for 10 minutes every morning. If you schedule it for a fixed time-slot every time you're basically scheduling procrastination for the 20 minutes preceding it. So don't. Just wait until everybody's in and then announce "stand-up meeting in 5 minutes". That gives everybody just enough time to finish off what they're doing, but on the other hand there's no longer this meeting looming on your calendar each morning, making you avoid getting into any meaningful effort before it.

Don't schedule procrastination into your routine. 

Monday, March 11, 2013

Scrum with Gigantt

If your company is practicing Scrum as a project management methodology, or if you're interested in getting started with Scrum, we've created a very useful Scrum recipe that you can copy into your own plan in Gigantt.

Scrum is a pretty well defined process which basically looks like this:



We created a 4-minute video tutorial that dives into the anatomy of a Scrum sprint and explains the basics of the Scrum methodology. If you want to learn about Scrum and can only spare four minutes, this video is for you. :)


(hd, audio)

You can find more recipes and demo videos in our Gigantt Examples page. We'll be adding more and more of these recipes to help our users get a head start planning their projects in Gigantt.






Thursday, January 24, 2013

Recipes, Greenhouses and Copying Between Plans

There are all kinds of repeated work that you find yourself doing: scrum sprints, version release procedures or even following some setup guide. These are all examples of things you should only be planning once and then executing a few times. In Gigantt, this is trivial to do. You just copy and paste some existing work and repeat it.

Let's see an example. Something close to home. When we, in Gigantt, are about to release a new version, we first release it to our QA environment for thorough testing. This is like a dress rehearsal for the product before it goes live, so there are quite a few steps that must be followed along the way.





This is basically a check list, and we repeat it every time we release a new version to the QA team. But unlike a traditional check-list, all the tasks here are already estimated, their order and dependencies are well known in advance, and each task is assigned to the relevant person.

It's all contained in one big task called "QA Release Procedure":
Whenever we plan a new release cycle for Gigantt, all we have to do is just copy and paste this task into the appropriate place in the plan. In this case, we plop it inside "Release to QA":




Pretty simple, but powerful stuff. It's powerful because it lets you keep all these "recipes" in Gigantt for stuff that you do repeatedly, so you have your documentation right there in your work plan. If you decide to add another step to your recipe, you add it to that template task and be sure it will never be skipped in the future. 

So what's new? Copying and pasting tasks is a feature we've had from day one. But now you can also copy and paste tasks between plans. This means you can create separate "repository" plans just to keep track of recipes or experimental plans. You don't need to "pollute" your project's work-plan with recipe tasks that don't really belong there. For example, you wouldn't want these recipes to actually get scheduled by our automatic task scheduler - you want them to just sit there so you could copy them every now and then. 

You can also use "greenhouse" plans as a place for very early project planning. Meaning, you can create a work-plan for a new project in its own plan, and not worry about messing up everyone's schedule until you've properly planned and estimated all those new tasks. When it's done, you copy it into the "real" plan in one step.

Copying tasks between plans is the same as regular copying. Ctrl+C puts tasks into your visual clipboard; then you open the target plan (e.g. in a new tab) and paste there.