-
Thinking Time
Being an indie software developer, developing products and running the business, takes lots of time. I work during normal working hours and then often have a “second shift”, when the family, or at least the kids, fall asleep. Still, I have enough planned stuff to do, when I’m near my Mac, to fill months of work. And most of this better be done sooner than later.
I’m pretty sure that if you’re an indie software developer, a designer, a businessman or almost anything where you have some control over your time and work, you know what I’m talking about.
In this state, we may become so reactive to the tasks that need to get done that we just don’t stop, take a step back and reflect on the whole situation. We may just forget to think deeply, strategically about the business and even about the work tasks themselves.
Enter “Thinking Time”
When I was at the uniquely great NSConference 2011 this March, I had the opportunity to discuss some of this with Matt Gemmell during a dinner there. Matt is a well-known Cocoa developer, conference speaker and, should I say, thinker. He appears to think deeply about stuff and publishes many of his thoughts in the articles on his blog.
So I asked him how he approached the thinking about software design, and his answer included something like “I take a walk, in nature, by the river, and only take my Moleskine and a pen with me.” It’s not a quote but the gist of his reply.
And I thought to myself, “Why, that’s a good idea. Step back from the monitor, the distractions, and devote time to just thinking for some time, writing thoughts down with analogue pen and paper”.
So, on my way back home I grabbed a couple of notebooks at the airport (they just happened to be Moleskine, of course), one for me and one for my partner, Kosta, and decided on having “Thinking Time”.
I put it in my calendar, weekly, as the first thing to do each week. It’s a good way to start a new work-week. While most of the population rushes to the jobs thinking “It’s @#$%@#$ Monday again”, I start the week slower, walking the streets or sitting on a park bench or under a tree to write things down, breathing real air. If the weather doesn’t allow being outside, I’ll sometimes go to a cafe, instead of skipping it completely.
During such couple of hours, I can make good progress planning software architecture, sketching application design, preparing a conference talk, or thinking about strategic business stuff.
Then, by noon, I come back to my home-office, feeling refreshed, satisfied that I already did something important today, and overall feeling inspired for the rest of the week.
Try it yourself
If you don’t yet have such “Thinking Time” on your schedule, I suggest you try it. The beginning of the week works the best for me. But maybe you’ll feel that the middle is actually better because it splits your work week and you get some kind of a break from your regular tasks.
In this age of Internet and social networks with all the fun distractions that they provide, it becomes more important to go away from it all at least for a couple of hours each week, sit down with a pen and a paper (or even an iPad running some notepad-type application), and just think it all through.
Update: take a look at my other article related to this: Think it later
-
Decision aid app idea
As it often happens, I get a new idea for an application, get excited about it and start to “massage” the idea in my mind to see where it leads me.
One such idea that has been in my mind for a long time is an application for helping making decisions. A decision aid tool, as they’re called. I know there are different applications for the same goal but I wanted to play with my own idea.
Being busy with our other projects, which require much attention, I can’t afford just go and develop it to see where it takes me. I’m also not sure if other people will find the application interesting, if there is a market for this at all. So I’d like to have your input to this idea.
I wanted the application to be visual, looking similar to a flowchart. iPad looks like the best platform for this. Working with a tablet on this also helps because of the focused mode you’re often in while working with them. At the same time the iPad often allows one to work more comfortably, in a state where creative ideas and big-thinking flow easily into the mind. Such a combination of laid-back one-task state can be very productive for system thinking.
So, back to the app. There will be the goal, such as a Yes/No decision. There will also be a number of inputs. The inputs are very important, obviously, and their values will not be simple constants. Instead, they’ll be based on some distribution of possible values, either discreet values with their chances or a range of values based on some distribution, such as a bell curve, which are common in real-life.
These inputs will go through a series of flow-chart like actions, mathematical or logical, which can be connected like a graph, affecting each other, if needed. In the end, they’ll all converge to some decision point. A vision that I had in mind is that it’ll be somewhat similar to a neural network where input thresholds can affect the output of the “neuron” and thus affect other areas in the graph, leading to a different decision.
After the user defined all the input distributions and the graph, the simulation will run over the distributions and see how they all affect the goal result.
In end, you’ll be able to see such results as:
- What are the chances of success?
- Which combinations of inputs values bring to the desired outcome?
- Risk analysis
- Sensitivity of goal to specific inputs
Such analysis, in my opinion, can help the decision maker on different levels - once when he designs the system, because it forces him to think how the different aspects of the system and its conditions affect each other, and second, when the system actually calculates the chances of success or even gives its suggested decision, supported by calculations.
To be meta-cool, I prepared a simple diagram that demonstrates what I mean - a “flowchart” of decision if to develop this application or not. No input values are entered and the look of it is not exactly how the end result may look like but I believe that it shows well how a visual approach can help and I’m sure you’ll be able to understand what I mean here.
The inputs are yellow hexagons, the triangles are multipliers (amplifiers in the eletronics schematics). The totals add their inputs. This may not be exact or complete diagram, just a visualization of what I had in mind. I also expect the really useful cases to be more complex.
The diagram, by the way, was done on iPad, using the really amazing TouchDraw app - kudos to Jon of ElevenWorks for developing such a great product.
I’d like to know your opinion on this idea. Does it look something that you will use? If not you, maybe other people? Can something like this be useful at all? I never stop thinking that I either miss something trivial or over-simplify this.
By the way, I have no patent on this and I’m not a patent troll either, so if you think it’s a cool idea and have the resources to develop it, go ahead. I’ll be glad to know about it, though, maybe I’ll be able help you with my ideas, too.
Click on the image to get the PDF of the diagram since it’s too large for this blog.
-
Standing desk experience and thoughts
A rising trend
There’s been a lot of positive press lately about the benefits of working with computers at a standing desk, rather than sitting, like most of us do. This includes articles from major news outlets, such as CNN and Wall Street Journal.
This trend, in part, is based on medical research that shows that sitting for many hours has long-term negative effect on one’s health, which can’t be balanced by going to a gym or other physical activity after work. The negative effects include such “simple” ones as higher weight, to such drastic conclusions as shorter life span of people who work sitting for many hours a day.
Podcasters that I listen to and people that I follow also started to mention that they switched to standing desks, at least to try. As I’ve been working in a sitting position for many years now and felt some bad effects on the neck ans back, I decided to give it a try. I started around the beginning of June this year, about 3.5 months ago.
My initial experience
Luckily, I had a fitting furniture in my room which I could use as a sibstitude for a real desk, albeit a small one. I only had place on top for the display and my small speakers. The MacBook Pro itself and external drives were on the regular desk. I fitted the keyboard to be at a comfortable height with a collection of books below it.
Although I never worked on my feet for long periods of time, I didn’t have any fear about it. I believed that I will easily overcome the initial adjustment period, basing my belied on my Qigong Yiquan training that I’ve been doing for almost 5 years now, which include lengthy standing meditations as part of the routine. Qigong also teaches to feel the body and the posture and to reduce tension in upper-body muscles while standing, supporting the body weight on the leg muscles instead.
Still, the first several days I had to take sitting breaks often and I felt expected tiredness in my legs. After about a week I seemed to have adjusted and was starting to feel some of the benefits.
The most profound change that I could feel was the elimination of the occasional sleepiness in the afternoon. You can’t just doze off while standing. You’re not an elephant, after all. But it’s not just that, the overall feeling throughout the day was more energetic.
On the famous Zen Habits blog there was a guest post by Corbett Barr describing personal experience of working while standing. When I read it, I thought that this was an article I could write myself. Almost all of the points raised in it were relevant to me as well, both positive and the slightly negative.
Fast forward
My only negative experience working like that was this nagging pain in my calves that didn’t go away. It really started to get on my nerves. I also wasn’t sure that it was muscle fatigue. It felt differently and I was afraid it might be a sign of something more serious than tired muscles.
Then this article, summarizing the conclusions in Cornell University on the subject, caught my attention in the Twitter feed. And their conclusion is that standing all day is also not benefitial for one’s health. It has its health risks as well. Their final advice was to work sitting but get up every 20-30 minutes and take a walk for a couple of minutes to get blood circulating.
I decided to heed this advice and several days ago moved everything back on the desk, installed BreakTime from the Mac App Store and put it into 25m work/2m break schedule.
Now I’m adjusting back to sitting. I’m starting to feel the neck and back again. That Cornell University’s ergonomics site is actually rather large and has a tips section for correct working posture etc.
Now if only the wired Apple keyboard that I use wasn’t so wide. The Magic Trackpad is too far to the right.
Some final thoughts
I’m still not sure what works better for me. I liked the benefits of standing but perhaps I needed to make more “sitting breaks”, not unlike this sitting work schedule advice from Cornell. Maybe if I sat more during these 3 months, I wouldn’t have built this pain in my calves.
There are also these switching height desk, which could be used as well to alternate between sitting and standing. But they’re expensive and I don’t hurry to change my room’s furniture so soon. What I have considered though, is buying a kind of a bar stool. They are high and don’t take lots of space. Perhaps they could be used near the standing desk. I could sit on one when I was feeling too tired to stand, while continuing to work. Or it could be used for these timed breaks, i.e. sit every 20 minutes for 2 minutes and then stand up again.
Considering all my “trials and tribulations”, I believe a time will come when I’ll post an update to this post.
If you have your own experience with ergonimics, especially as related to sitting and standing, please share in the comments.
-
How Apple badly messed up with in-app purchases on Lion and didn't tell anyone
Background
Since OS X 10.7 (Lion) Apple allows in-app purchase (IAP) of features or content in Mac Apps, similar to how it works on iOS but without some of the advanced features of iOS, like subscriptions.
We converted one of our applications, Cashculator Free to use in-app purchase to unlock full feature set, similar to the regular Cashculator we have in the store and on our own website. I believe it was one of the first applications to use in-app purchases in the store, we put it on sale less than a week after Lion shipped.
The issue
We started to receive support requests from customers that purchased the “unlock” feature but the application was still acting as “locked”. All they saw was a message that the transaction failed, with a very descriptive “Unknown Error” message, and nothing more. The really appalling aspect of this was that they were charged for the purchase ($20 to $30 in our case) but the transaction was marked as failed, the reason being “unknown error”.
Needless to say, such behavior doesn’t make the customers happy about using your app, not at all. Some of them originally thought that they failed to purchase. Imagine how surprised they were to receive a receipt from Apple a day or two later for their “purchase” which didn’t work.
Now what?
The first thing I did was to validate that the transaction was returned in a failed status from Apple’s servers. I had some logging left in this part of the code and a user sent me his console log, which confirmed this. So I started to suspect that it’s an issue on Apple’s side.
I started a thread (Mac developer account required) on Apple’s developer’s forums, in the Mac App Store section. I posted it on Aug 12 and specifically asked if any Apple folks can help with this. Only 3 days (and many support incidents) later another developer wrote that he also had similar issue with his app. I filed a bug report with Apple.
To get more attention of Apple to this, I sent the thread to an Apple evangelist and he replied that he forwarded it further. I hoped for a quick resolution now. Unfortunately, many days have passed and I have seen to reply, not on the bug report nor from the evangelist (whom I emailed several days later, asking for an update).
So far I only knew that the failure happened for many customers but not for all, which even more signified to me that the problem lied within Apple.
Only on September 11 more developers joined the thread and expressed similar frustration with angry customers and 1-star reviews on the Mac App Store for their apps.
One of them filed a DTS incident with Apple for his application and they replied that his code is OK and that the iTunes Connect team was onto this. Some confirmation, finally. Customers were still leaving bad reviews, asking for refunds etc.
I tried to put more pressure on Apple and contacted editors at Macworld magazine, hoping that media will be able to push on Apple more than a thread in the developers forum. It’s been more than a month now that Lion shipped. I told my story but even after several days Macworld didn’t publish anything and didn’t follow up with me further.
The resolution
Finally, on September 16, developers in that thread started to report that suddenly things appeared to be working. And even previous customers who received the errors got their application unlocked.
Apple never really ackowledged that there was an issue with this, didn’t close my bug report, didn’t delete all the 1-star reviews that angry customers left and didn’t compensate the affected developers for their financial loss. Nothing.
I’m glad that Apple finally fixed this, as we have just converted and put our second application with in-app purchase, ImageFramer on the Mac App Store. But I’m really not happy with the opaque way in which Apple handled this. Apple is usually opaque in its processes and we accept it, but taking people’s money and not delivering the product (instead referring them to the developer for support) is way not cool. Having this issue for more than a month and keeping it secret, while developers and customers suffer the consequences is plain wrong.
-
From Paid to Freemium on Mac App Store, how?
The what
Starting with Lion’s release Apple allows Mac apps on the Mac App Store to utilize In-App Purchases (IAP from now on). This means that an application can sell additional functionality or “stuff” to existing customers. This has been allowed for quite some time now on the iOS App Store but it’s new on the Mac.
One of the important aspects of IAP, from marketing point of view, is that they allow the developers to put an application for free and then sell additional functionality. Obviously, this is very popular with games. You can’t create time-limited or otherwise blatant trials with this, as Apple’s rules don’t allow trial version on App Stores, but you can create something similar, if you find a balance between the free and paid features.
This is all great if you write a new application, but things start to get complicated if you already have a non-free application in the store.
The now
Here’s the situation: we have an application that you can buy either on the Mac App Store or on our site. On our site we have a free trial, and 2 levels of licenses: Standard and Pro. So a person will download a free trial and then buy one of the licenses. Moreover, one can upgrade from Standard to Pro by paying the price difference. All this is pretty standard stuff in software licensing.
We were on the Mac App Store from day one, so we couldn’t create such a Free/Standard/Pro version, since IAPs were not available. Instead, we opted only to put the Standard version on sale, without calling it Standard.
The goal
Now we want to provide all this Free -> Standard -> Pro upgrade path with IAPs instead of the current paid version. Ideally, we want to replace current ImageFramer listing (which is paid only at this time) to the IAP-enabled one. Of course, all the people who already bought the application previously should get the Standard functionality, for which they already paid for.
The WTF
And here we hit it. There’s no way, which I’m aware of, to determine in the next, free, update of the app that the user already paid for the previous version. I’ll elaborate.
Joe, a happy customer of current version paid the full price for the software. The next update brings the Free+IAP model. The customer updates the app and he gets only the functionality of the Free version. This happens because he has not purchased the full-version functionality as an IAP. But Joe doesn’t care about that. He leaves a raging 1-star review on the App Store. If Joe’s a geek, you’ll also see his rage on the first page of Hacker News. Obviously this is not the kind of publicity that a developer would want. I don’t subscribe to the notion that every publicity is good publicity.
The why
The major problem lies in the StoreKit and the receipt, which Apple sends with the purchased application. The receipt does not contain information about the purchase. It doesn’t contain which version of the application was purchased originally. It also doesn’t contain the Apple ID (which you could use with your server to register purchases, for example). Using computer’s ID is not a good identification since Apple ID allows installs on several Macs.
Checking values that could identify full functionality in the application’s preferences doesn’t help. Even if I can check that the current installation was already using full functionality, I can only enable and remember it for this specific installation. If the the customer deletes the preferences, or simply chooses to install the application on his another Mac or he reinstalled the OS, this information is lost, can’t be restored, and we’re back to square one, with a trial-like version for which the customer had already paid. That’s not acceptable.
We also don’t want to create a separate, new, application in the Mac App Store, call it “ImageFramer Free” and use it in parallel with the regular ImageFramer entry. It’s one more release to maintain, it’s split ratings, duplicate management in iTunes Connect and it’s confusing to customers.
The solution?
Well, I haven’t yet found a solution that will satisfy all the requirements. There’s nothing far fetching in what we’re trying to accomplish here. I read about similar issues in the iOS world and nobody found a solution for that either.
Unless there’s something that I missed, the ball is on Apple’s side, which is rarely a good sign for developers. The easiest solution as I see it: Apple should add to the receipt which version of the application was originally purchased by the customer. We’ll simply see if this was a version before IAP or after, and act accordingly. Alternatively, I don’t mind having a StoreKit method that will retrieve the same information.
If anyone has a solution that will solve this in the existing situation, please share.
-
Great minds discuss ideas, average minds discuss events, small minds discuss people.
Anonymous (oft attributed to Admiral Rickover) -
Usability is not just a matter of whether the users can find and press the button, it’s whether they hate you afterward or not.
subscribe via RSS