ailon's DevBlog: Development related stuff in my life

End-to-End Experiences Do Not Scale Globally

9/29/2011 4:46:39 PM

endtoendservice

I’ve been watching a live blog from Amazon’s new device unveiling yesterday. Jeff Bezos was repeating his “end-to-end service” mantra. I love the end-to-end experience idea … in theory. In practice I’m never able to experience it. Apple and Amazon are the best known end-to-end service providers. They are huge. They have a lot of weight. But even they don’t have enough power over content owners and/or don’t offer attractive services to content providers worldwide.

I own 2 Kindles. I read in English mostly and Kindle provides me with end-to-end experience most of the time. I love it! Except Mark Russinovich’s Zero Day: A Novel wasn’t available in Kindle format internationally for half a year. So I didn’t get any experience at all. But, yeah. Who cares!?

My wife reads in Russian and there are virtually no Russian books on Amazon. But Kindle is an end-to-end service and support for “obscure” formats like ePub isn’t a part of the end-to-end experience. So to read non-Kindle books on a Kindle you have to convert them to MOBI (provided they are not DRMed). It’s pretty easy to do with Calibre but it degrades your experience to a level lower than with non-end-to-end open market readers directly supporting multiple formats.

Our daughter reads in Lithuanian and there are basically no non-DRMed Lithuanian ebooks. So Kindle is just a useless piece of “premium product at non-premium price” for that.

And situation with books is actually much better than what goes on in the music and video area. So even before the Kindle Fire announcement it was obvious that it’s going to be US-only (or US + some Western European countries at best).

End-to-end experiences sound good in US. They are glorified by user experience advocates. But when it comes to worldwide scene, clunky duct taped Android experience dominates. That’s why it’s so huge. There’s no need for Amazon, Apple or Microsoft to strike a distribution license for Moldavian books to be available in Moldova. There’s some local company that would do that, because that’s their main market*. It’s crap and pocket change for the US juggernauts, but it’s the whole market for that little company.

Great end-to-end experiences are only great while you stay on course. One step off that course and you have a subpar experience, if any at all. Maybe someday these global corporations will manage to cover all the bases around the world. And maybe World Peace © will come too. Both are equally likely.

* P.S.:  I know nothing about Moldova and Moldavian books. Just a random country my brain picked.

Tags: ,

Unimportant state in Windows Phone 7.0 apps can bite you on Mango

9/1/2011 5:40:40 PM

We’ve learned to preserve important state on tombstoning in 7.0 Windows Phone apps. But what about state we don’t care to preserve?

Most of the time we don’t care about the state of some variable so we don’t store it on deactivation and don’t restore it on activation. The smartest of us have probably thought about these members too, but I’m not one of them. Some of my code assumed that these fields are reset to their default/initial values, even though I’ve never thought about it explicitly.

Turns out when you recompile your app for Mango this state is actually preserved since your app’s process isn’t killed. When user returns to your app this “unimportant” object still has the same state as it was when the user left, but you may have programmed your app in a way that it assumes the state to be reset.

I was thinking about a good example to illustrate this, since my real situation was too cumbersome and specialized for a general purpose blog post. Suppose you have an app that does some processing. During the processing it shows a busy indicator or a progress bar and when it’s done it fires an EmailComposeTask with Body set to the results of your processing. In 7.0 if a user later returns to your app the process would be restarted and you would restore the important state. Is Visibility of the progress bar an important state you’d like to preserve? Probably not. But you probably expect it to be hidden, since it’s a default and the process is restarted. But are you sure you’ve collapsed it before firing the EmailComposeTask launcher? Chances are you haven’t, because you assumed it’s not an important thing to do, when user leaves your app anyway.

Not the most elegant example, I know. But you probably get the idea. It’s less critical to preserve the state of important objects in Mango, but you need to check your implicit assumptions about unimportant state being reset on return to the app.

Tags:

Local(ized) Developer Resources Are A Waste of Talent

8/31/2011 7:02:12 PM

2964140477_67eb9e0a6d_b
Photo by Stuart Caie

Living in a small country forces you to learn English to some extent to be successful in any area and especially in programming. On the other hand, developers in larger countries like Russia, China, Japan, etc. can be successful with no working knowledge of English, because of large internal communities. And even for them, I would argue, being able to at least read in English is a critical skill that should be learned before everything else. That said it’s pretty obvious why large developer platform companies like Microsoft invest into encouraging local talent in these larger markets to blog and speak about their technologies in local languages. It’s an open market and whoever serves it best wins.

But, as I mentioned above, developers in smaller countries comprehend English technical texts as good (if not better) than in their native language. After all not many know all the “artificial” local technical terms. We may suck at writing and speaking (like I do), but we are pretty good at reading. It’s nearly impossible to be hired for a developer position without being able to read in English.

Unfortunately large corporations have a generalized view on local evangelism. Local talent in small countries is encouraged to blog in the native language, creating content that is either already available in English or that 0,0002% of world’s population can read. Usually both. I think it’s a wasteful practice. Instead of creating real value for the worldwide developer community (and for themselves) these talented individuals waste their time on work that shouldn’t be done at all or done by translators.

And market rules that are easily applicable in large markets do not apply here. Because, guess what? No one cares about reading a blog post about solving a general programming problem in Lithuanian. And if I’m looking for a solution to my problem and can only find a blog post about it in Hungarian it’s a waste of someone’s talent. I could’ve solved my problem. I could’ve subscribed to this person’s blog, followed her on Twitter and suggested my local evangelist to invite her to an upcoming conference. But none of this happens because the global policy is to foster original localized content.

I think it’s stupid.

Tags: , ,

Service Work Kills Products

8/23/2011 4:01:43 PM

4678563629_b3d520034a_o
Photo by Nicholas Morant

I really enjoy reading stories about people breaking out of the machine and becoming indie developers. In Windows Phone world a role model indie developer is Elbert Perez. He has developed more than 10 high quality Windows Phone games and was able to quit his day job to pursue independent game development fulltime. He is really open about his professional indie-dev life and regularly posts updates about his experience in his blog at occasionalgamer.com.

In his latest update Elbert writes (emphasis mine):

I have taken extra side projects to help keep the coffers full, which somewhat slowed down the cadence of which I release my games. My strategy for making games has not changed, but I have become more open minded about taking on work for other people as long as it has something to do with WP7 or games.

And he concludes with

I’ve been really busy with other projects, but I am still working on my games…

That really resonates with me.

I’ve always wanted to be a product(s) “company”. I’ve worked on several products over the years, but I never had a runway (as in cash) to support a year of product development without reasonable return. So I supported my “dream” by doing contract work.

Except providing services pays (relatively) instantly and risk-free. And it’s a hard drug. The one that you don’t even enjoy, but have to inject to avoid withdrawal pains. Combining “working for yourself” with working on a product is much harder than working for a man and working on a product in your off-the-clock time. You don’t have any off-the-clock time when you work for yourself.

I’ve had a product which at the time it was launched (2003) was definitely contending for No.1 spot in it’s category. One problem – it didn’t make enough money to fully support me. And I had no extra money to keep me afloat while I was improving, marketing and otherwise working on it. So I fooled myself that I can work on client projects to fund the development.

Fast forward 5 years and my product, which only got attention now and then, was no longer at the top of the list. It is still successfully used in projects and products but I’ve totally missed a perfect chance at establishing it as a market leader. And the money I made working on these side projects is just money paid in exchange for labor. Bitch work. Even if well paid. No longevity.

So I decided to get rid of all the “service” work and concentrate all of my attention on the “product” work. Unless you have a deep rainy day fund you can’t just do this overnight. So I’ve been launching various smaller sites and products here and there and was able to accumulate Ramen-level stream of repeating income to support my endeavors. I did it on my own for a couple of years, but if you want some guidance on how to achieve this, just read The 4-Hour Workweek book.

So now I’m fully invested in my current product and, even it fails, it won’t be because I neglected it to get some shrimp into my ramen. And that’s how I know it will succeed.

I guess the moral is – if you have a good and promising thing going you shouldn’t waste your time chasing some extra cash. A few extra dollars won’t affect your well-being in the future, but a successful product will. There’s a Lithuanian proverb “Nemesk kelio dėl takelio”. This could be literally translated as “don’t get off the road for a trail”. I bet there’s some English equivalent, but you get the point.

Tags: ,

Modest Windows 8 Wish: System-wide Spellchecker

8/18/2011 4:12:10 PM

image

The BUILD conference is coming and lots of cool new revolutionary things about Windows 8 will be unveiled. I, on the other hand, want to ask for a simple mundane change from Windows 7 and earlier versions – move the damn spellchecker from Office [team] to core Windows [team]!

I write in 3 languages on a daily basis – English, Lithuanian and Russian. I have spellchecking for all 3 of them in Office apps.

I only have an English spellchecker in Windows Live Writer. That’s why there are a lot of stylistic mistakes in my blog posts, but not many spelling mistakes ;). But if I blog (say) in Russian, I don’t have a luxury of my PC looking out for me. So I have to either not suck at spelling (impossible when the last time I had to spell correctly in Russian was 18 years ago) or simply subject my readers to crappy texts riddled with spelling mistakes.

What’s worse is that in Internet Explorer 9 there’s no spellchecking at all. I know that there are 3rd party spellchecking add-ons, but they made the browser unstable in some circumstances. I honestly tried to use IE9 as my primary browser for a month or two but eventually gave up. There are other reasons why I use Chrome and not IE9, but absence of spellchecker is definitely my number 1 issue with IE.

The fact that all of the above mentioned products are made by Microsoft and that I have spellcheckers for all 3 languages installed on my machine is ridiculous. There’s no excuse for this except for some organizational issues inside Microsoft and I shouldn’t be exposed to them as a user.

I’m totally looking forward to all the cool things in Windows 8, but, please Microsoft, end this idiocy with spellchecking. There’s no excuse for not having a system-wide spellchecking engine with an API for 3rd party apps in 2012.

Tags: ,

The Age of Designer’s Revenge

8/16/2011 6:33:25 PM

2928704557_b53935faae_b
Photo by Dan DeLuca

Back in 2004, when Transvaal Aquapark collapsed in Moscow, I remember reading a very long rant by some structural engineer about what she thought was a global root of the problem. I couldn’t find that post right now, but I remember the point of it vividly.

In USSR no one really cared how buildings looked. It was important that they don’t collapse and primitively serve their purpose. Structural engineering was way above than architecture in the ranks. Architects were sort of oppressed by engineers.

Sounds familiar?

Then Soviet Union collapsed and suddenly everyone wanted their buildings to be pretty. The balance between architects and structural engineers switched. And architects held a grudge from being abused and disregarded for all these years. So they started oppressing and disregarding engineers. The point of that lady was that it got to the point where engineers had no say in what makes sense and what doesn’t, which eventually led to tragedy.

If we take a look at software engineering, it’s difficult not to see the parallels with soviet structure engineering. Programmers “oppressed” designers for decades. In engineering driven companies like Google or Microsoft this is probably still the case. Listen to this episode of “This Developer’s Life” where Microsoft’s designer Michael Bach complains about this still being the case and mentions the Douglas Bowman’s post (linked above) about Google. But look at Windows Phone and you will see that the situation is changing.

This post was inspired by this tweet by Aral Balkan.

image

Aral is a well known user experience designer and speaker from UK. His talks are really inspirational and very well presented (even if a true geeky developer could argue that he is selling common sense ;).

Immediately after seeing this tweet I’ve remembered that architecture/engineering rant from 7 years ago. If you’ve never lived in USSR you’ve probably never seen this transformation. But worst type of tyrant is someone who was oppressed before and is holding a grudge. Or is this the only possible type?

So we’ve oppressed designers for decades. Some of them are definitely holding a grudge. And it seems that now is their turn to rule. Hopefully it won’t result in any global tragedies, but we, developers, should prepare to be abused. Or, you know … switch to user experience design.

Tags: ,

Don’t Automate Technical Administrivia in a Startup

8/12/2011 2:22:50 PM

1092350955_0b7f3c91ed_b
Photo by Chris Stickley

Yesterday I’ve spent 6 hours semi-automating a technical administrivia task on AdDuplex.

Up until now I did log archiving and truncating manually, along with some other things. I did it once in 2 weeks at first, then once a week and lately 2 times a week. Each time it took about 10 minutes of attention (netto). It actually takes about half an hour but most of that time I can do other things while different processes are in progress.

Whenever I told that I did this manually to a corporate alpha-geek developer or admin they frowned. As a self-respecting developer you are supposed to automate these things. I always responded like “it’s on my to-do list but with a relatively low priority”, but I always felt like I’m hiding my laziness under this “low priority” mask.

Some time ago I’ve read a book by Rob Walling titled “Start Small, Stay Small: A Developer's Guide to Launching a Startup”. Here is a brilliant quote from it:

Every hour spent writing code is wasted time if that code could be replaced by a human being doing the same task until your product proves itself

This brings perfect sense to what I’ve been masquerading as “low priority” task. And I disregarded this advice yesterday.

I’ve spent 6 hours working on something that took me 20 minutes a week to do manually. This means that my “investment” will only payoff in 4+ months and there’s no guarantee that in 2-3 months I won’t rewrite some parts of the system in a way that will render this automation code obsolete.

I’ve effectively borrowed time from my own business and didn’t add any value to users in the process. I could’ve worked on something that is useful, but I behaved like a disgusted “self-respecting” developer, not like a businessman. And now I’m writing this down, so I don’t behave the same way again.

Tags: , ,

Fundable Startup

8/9/2011 6:00:43 PM

image

I've recently visited AngelList and saw a list of startups with their tagline next to the name. Approximately half of these startups had a tagline in the form of "[Insert hot startup here] for [insert some niche here]".

It was amusing at first, but then I remembered something I've read or heard somewhere. The idea was that good Venture Capitalists do extensive research on the companies and markets they are going to invest in. And lazy VCs just assume that good VCs did their research on this concept so it's safe(r) to invest in these "copycats" than in something completely new and unproven.

So, I created a tool that helps you find an idea for your next great and — most importantly — fundable startup by randomly combining other hot startup names with some industries and niches.

Unfortunately I was unable to come up with something fitting this formula for my own startup. Let me know in the comments bellow or @ailon on twitter, if you have an idea. Or you can just follow AdDuplex on AngelList.

Tags: , ,

Ideaot

7/29/2011 1:51:17 PM

320223818_f5bf3d5f36_b 
Photo by Adam Hally

Not so long ago I’ve read a book by James Altucher titled “How To Be The Luckiest Person Alive”. It’s a great read and I highly recommend it. One of the concepts described in that book caught my eye the most. I’m not sure if it’s original James’s idea or maybe it’s a well known concept. I’m totally ignorant in that space.

Anyway, the idea is that you have an “idea muscle” and it atrophies if you don’t properly exercise it. I didn’t remember the exact exercise described in the book and now that I’ve reread it on the blog I see that I did it “wrong”, but I don’t think details actually matter.

What I do for the past couple of weeks is sit down for 10 minutes every morning before I start working and try to generate as many ideas about anything as I can. Most of the time these are some business ideas, mobile app ideas, web site or service ideas and things like that. Some ideas are utter crap. Some I may implement one day. Some sound pretty interesting to me, but are definitely out of scope of my expertise and/or interests, so I’m pretty sure I have no practical use for them.

The thought of throwing these ideas away saddens me. So I decided to start a blog where I'll post them in some detail. So, please welcome my new idea blog I called Ideaot.

The first 2 ideas posted there are:

  1. Physical Case for Capacitive Buttons
  2. Consumer Level Tea Bag Packaging Machine

Stay tuned for more and subscribe to the RSS feed to be notified about updates.

Tags: , ,

Popular Business Books for Developers

7/28/2011 6:25:29 PM

deventrepreneur

I haven’t been working for a “man” since 2001. I never seriously looked back. I was making just enough money not to think about looking for a “real job”, but it always felt like it’s going nowhere. A certain someone always encouraged me to read these motivational, pseudo-business books, but titles like “Become a gazillinaire without lifting a finger while sitting on the couch” were so vomit inducing that I couldn’t even think about it.

In October 2010 I finally gave in, and, even though I’ve read my share of fiction and technical books in-between, I became kind of addicted to these popular business books (as I like to call them collectively). I don’t know if these books are in any way responsible for helping me start what I consider to be IT, but it was undoubtedly started in that period. So, I guess these books deserve some credit for sure.

  • The 4-Hour Workweek. Timothy Ferris. This was the book I chose as my first book of a kind. The title immediately appealed to me. It wasn’t some crazy title promising me millions in a month. That’s what I wanted – make enough money to chill on the beach, or work a little more and make even more money while still chilling on the beach. And put it on auto-pilot. Little did I know that the title was carefully constructed/selected using AdWords and landing sites to attract jerks like me. This book immediately challenged my moral compass, but it was really helpful and inspiring. At the very least I’ve derived my “email of happiness” concept from there and am happily using it since. Highly recommended.
  • ReWork. Jason Fried and David Heinemeier Hansson. This book is from people I definitely respect and I totally like the business concept behind 37 signals. That said I don’t remember a thing from this book :) All I remember that I enjoyed reading it and that it was really really short. So maybe I should just ReRead it.
  • Do More Faster: TechStars Lessons to Accelerate Your Startup. David Cohen and Brad Feld. This one is from the founders of TechStars startup accelerator program and includes lots of chapters from new and seasoned entrepreneurs. If launching something big and ambitious is your thing, then this is a definite must read. Highly recommended.
  • Start Small, Stay Small: A Developer's Guide to Launching a Startup. Rob Walling. This one is quite the opposite of “Do More Faster”. It preaches freedom and quality of life over striking it really big. Lots of useful advice inside. If you want to go big – read “Do More Faster”. If you want to create small profitable businesses and enjoy life – read this one. Want to get confused? Read both. Highly recommended.
  • How To Be The Luckiest Person Alive! James Altucher. I’ve discovered James’s blog recently and this book through it. That not as much a business book as a fun read with lots of life and business hacking advice in it. I’m a fan. Highly recommended.
  • Startups Open Source. Jared Tame. This one came recommended by a friend but I found it pretty boring. There are quite a lot of interesting bits in it. Author interviews lots of startup founders. But a couple of things annoyed me a lot. First of all the set of interview questions is 90% identical for all the founders. Reading the same questions over and over is pretty boring. The fact that most of the answers are quite identical too, didn’t help much. The other issue is that vast majority of the startups interviewed in this book (as Jared’s own) went through Y Combinator and unsurprisingly have very similar stories to tell. And unlike “Do More Faster” book that kind of made me want to apply to TechStars, this one left me with pretty negative, yet inexplicable, aftertaste for Y Combinator. Another thing – the magnitude of the founders/startups fluctuates dramatically – from people who started Reddit or Foursquare to someone who launched some random websites, slapped AdSense on them and made enough money to do something that’s is not even a business yet (nothing personal). I guess it’s fine if you want to just read interviews with people you are interested in selectively. But reading it cover to cover was something I shouldn’t have done.

That’s it for now. I’m off to read Venture Deals: Be Smarter Than Your Lawyer and Venture Capitalist. I guess this is going to be the least “popular” read of the bunch, requiring a substantial amount of my brain power. But I’m pretty sure it’s going to be worth it.

Feel free to recommend books in the comments below.

Tags: ,

Copyright © 2003 - 2013 Alan Mendelevich
Powered by BlogEngine.NET 2.5.0.6