Archive for the ‘misc’ Category

March’07 Status Update & Interesting Lesson

Saturday, March 31st, 2007

As a first interesting point, ViEmu sales are very strong now. At the level of sales I had reached in the second half of 2006, I could live off of ViEmu exclusively, even if a bit tightly. I’ve definitely lived with quite a lot less than that. In February, I released ViEmu for Word & Outlook and updated the web site design to present the three products and to get a more professional look. I was expecting a lot of existing ViEmu/VS customers to buy the Word & Outlook version – I offered a 15% discount as an incentive and to show my appreciation for their support. Quite a few bought the new product, but nowhere near a significant fraction (surprise). Anyway, February sales were about 30% higher than in January. I was also expecting lower sales in March, as the existing-customer-conversion factor would disappear, but nope. March sales have been over 30% higher than in February. Surprise again, this time a happy one.

This means that I can currently work full time in ViEmu and the text editor. Which, by the way, I’m already doing. I still have some ties to my previous day job, helping out now and then with areas which have not been covered by anyone else, but it’s a small part of my time. Hopefully, this will diminish further over the next weeks and months, until my involvement there is virtually non-existent. In any case, this is the moment sales allow fulltime dedication with ample room for slack – about 2 years since I first started, and 1.5 years since the release of ViEmu/VS 1.0. I’m single and have no major financial obligations, and I can live on quite little, so someone with a family and a morgage to pay would probably need more than that, but I hope this can be an interesting data point for others starting up out there – development takes time, marketing and building up awareness takes time, taking the product to a mature stage takes time, reaching the point where hundreds of people will talk about your product and support in such a favorable way that others will easily decide to buy, also takes time. Definitely wall-clock effort time, but calendar time is also necessary.

As a subjective summary, it’s taken longer than I expected, but the sales level achieved by ViEmu is way higher than I ever expected. I never thought it could pay a full-time salary for someone to maintain it. In the future, as the text editor becomes the main source of revenue, ViEmu sales will support having one person full- or part-time maintaining the product.

This month I’ve been less active than usually. Several things have confabulated to result in this. For one, I was planning to move to a new town after I finished the Word & Outlook version, and I have just done so. A lot of time this month has gone into finding an apartment to rent, buying all the necessary stuff, sorting out all the bureaucracy, multiple visits to the closest Ikea, and just generally getting installed in the new place. Now I’m starting to feel at home at the new apartment and able to concentrate in work somewhat again. I’ve kept taking care of support all the time, of course, as it’s the key point to keep customers happy and the business working, but I haven’t been able to do anything major.

But as a second important factor, I started reducing the stress I was submitting myself to – I was working way too many hours a day, and the last part, implementing ViEmu for Word and Outlook, had been as close to a nightmare as possible. I will give you some stats on lines-of-code counts which will show it, but the main point is that dealing with Word has been a huge effort. Difficult to do, so much that at certain points I had doubts that I’d be able to pull it off, and with that kind of difficulty that erodes you as you fight and overcome it: poorly thought interfaces, undocumented behavior, tests that require three days to implement only to find out that it’s not workable and you have to find another way around… If I was tired for two years of excessive work, this was the cherry on top. Once I got to release it and fix the most important flaws, I needed to take some rest. And my body has decided that I need an intense rest to compensate. For the past few days, I’ve been almost without energy, sleeping a lot, and not able to put a lot of effort or concentration into anything. It was probably something to expect. Anyway, I’m going to take everything in a more relaxed way for the next few weeks and see how I feel. “One task a day”, or something similar, should be doable and I will certainly enjoy the much needed recovery. This morning I implemented support for the “Orcas” version of Visual Studio (which is available as a preview), and this afternoon I’m writing this blog post, enough for a Saturday. I will also start exercising regularly, which should help in feeling better – and losing the 10kg (20 pounds) or so I’ve gained courtesy of ViEmu.

Even amidst all of this, I have been able to start slowly pounding away at the text editor. I’ve already forgone the possibility of releasing 1.0 by the summer, as that would require a level of work I cannot put in right now, but I will be working in it during the next few weeks and months, and hopefully having something working soon enough. I’m still agonizing over the name, fortunately I have some time before I have to make a final decision.

I was talking about lines of code. This is a breakdown of my current codebase (all in C++):

Core library (including regular expression engine): 15,500 lines
Vi/vim emulator: 15,000 lines
Visual Studio and SQL Server integration: 21,450 lines
Word & Outlook integration: 21,300 lines
Text editor: 38,150 lines

The last chunk (the text editor) is, as of yet, unreleased code, and still contains quite a few known problems. All the rest is released and quite solid, production quality code.

Over 100k lines of code, a single person over a period of two years, initially while holding a full-time day job – you can understand while I need some rest now. You can see how the integration in the environment can be pretty hefty, quite a lot larger than the actual vi/vim emulation core. I don’t repeat myself too much, as much as possible is reused by isolating as common templates or libraries (the whole vi/vim emulator is a bunch of templates that can hook into any of the supported environments).

The good thing of this? It’s some pretty solid technology that can’t be replicated easily. And there are some things there that I can and plan to use in additional products.

I promised an interesting lesson – where has the sales increase come from? On one hand, the number of orders has increased: increased popularity, better and more products, a more professional-looking web site, a more professional image given by the wider line-up of available products… I guess all of them are meaningful factors. But there is an additional factor: market segmentation, in an unusual way. Some time ago, I considered the idea of having “standard” and “professional” versions, at different price points. This allows you to charge a bit higher to those that can afford it like companies or professionals – or to charge less to those who can pay less, however you want to see it. But I ended up thinking that it didn’t make sense for a vi emulator. The goal for an emulator is clear, the features are already defined by the emulated product, and when the goal has been so clearly set for so many years, and one can’t make a meaningful standard/professional feature distinction, it would just look lame to arbitrarily cut functionality. So I put the idea aside.

But when I released the Word & Outlook version, I also added very interesting discounts for packs of the different ViEmu products. If you buy two ViEmu versions, you get about 35% off in the second one. And if you buy the three of them, you get the three for the price of two. Since the target market, although not exactly the same, is very similar for the products, this indeed acts as a segmentation tool. Those who can’t spend too much buy just one of them, but those for whom $100 or $150 isn’t too much (that is, companies and professionals) often buy a two-pack or the full three-pack. And this makes the average order quite a bit higher than it used to be. Together with increased number of orders, this makes for a nice increase in dollar-sales.

Give it some thought, as it’s another segmentation strategy that can work for your own products!

PS: Post written using vi emulation in Word 🙂

Digg, reddit, vi/vim for Word and Outlook, and Happy New Year!

Tuesday, January 9th, 2007

Happy New Year everyone!

Here is my bandwidth graph for 2007 so far:

bandwidth graph

Yes, I got dugg and reddit-ed during the weekend. The first hump is reddit, the large spike afterwards is digg. The URL was from this blog, back in June’05:

The story of why I got started with vi/vim editing

I submitted it after seeing a post about “Bill Joy’s greatest gift to mankind: the vi editor” on the front page of programming.reddit.com. I didn’t expect so much popularity, but it seemed to resonate with the audience.

The comments both in reddit and in digg were very numerous and fun to read:

http://programming.reddit.com/info/x6zg/comments

http://digg.com/programming/Why_learning_vi_vim_still_makes_sense_in_2007

Having had about 20,000 people visit my blog during the weekend is always nice. It almost, but not quite, prevented me from concentrating on my current work:

ViEmu for Word screenshot

Yes, ViEmu for Word is already working. Yes, you can use Japanese text in ex commands and move around with a block cursor in proportional text and everything else… I expect to have a first alpha version for interested users ready during this week, hopefully becoming beta next week (feature-complete). After that, I’ll release as soon as possible. Getting this to work has been a *huge* pain, but hopefully it will be interesting to some users.

Ah, and it also works great in Outlook message windows! I’ll post another screenshot in a few days.

PS: Andrey released his latest product, BlackberrySpamFilter. Guess what it does? I think this will be a very successful product, and I wish him the best luck!

Trick and treat

Wednesday, November 1st, 2006

Because it’s both fake, and a gift for your soul and mind:

A beautiful CG video recreation of the processes inside a cell

I usually don’t like to go off-topic in the blog (heck, I don’t usually even go on-topic). But this is the most amazing thing I’ve seen in a long, long time. I discovered it a few days ago, and I must have watched it 10 times. Biology is one of my other loves, certainly due to the fact that I die for structural beauty, and the thought that this is what we are made of gives it another dimension.

I was desperate to share it, so I posted it to reddit, but it didn’t get picked up :-/. I can’t really understand why, maybe people are more interested in the newest voting-machine rigging techniques (I follow programming.reddit.com more than the main page nowadays). If you like it and would like other people to enjoy it, please vote for it in reddit:

http://reddit.com/info/od2m/comments

I certainly love people watching it. The soundtrack is an awesome piano piece, to, so that’s two loves of mine in the same video.

I’m just a biology-aficionado, so I can recognize some of the processes and structures: a ribosome synthesizing a protein by decoding an mRNA strand, etc… but not many other ones. I’d love to read a detailed description of everything process and molecule depicted there…

Happy Halloween!

My first PR6!

Monday, July 31st, 2006

A couple of weeks ago, Google updated it’s public page rank – that is, the page rank that the Google toolbar shows you on a given page. Back in March 29, I released the graphical cheat sheet and tutorial, which was and has been pretty popular, with hundreds of links around the web and many tens of thousands of visitors (and still the most important traffic driver to my site). The graphical cheat sheet page and tutorial had been showing PR0 since then, meaning not-yet-assigned. The main www.viemu.com page itself had only been showing a meager PR2, as I had linked to it some time before. I was pretty eager to see Google show its love, not only by showing the page among the top 5 results for “vim tutorial” and several other searches, but also with its PR.

Finally, a couple weeks ago, I was glad to find out that Google had assigned it a page rank of 6, which is a pretty respectable number. It seems the rank is kind-of logarithmic, so a single page rank point may reflect a 10x variation of popularity.

My previous highlights were PR5 for this blog and for some ngedit.com pages, both of which have dozens of links around the web. It seems you need hundreds of links, possibly with at least several of them from reputable pages, to get into PR6. I don’t know whether del.icio.us user/link pages are spidered and accounted for by Google, that would get it in the thousands.

Anyway, the update in the page rank as reported by the toolbar hasn’t had any effect in the traffic Google directs to my page, or the results ranking. This is expected, as it seems the page rank reported by the toolbar is just a more-or-less quarterly snapshot of the internal pagerank that Google actually uses.

As a side effect, there is another SEO trick I think I’ve found. Google has assigned a very modest PR of 3 to the main www.viemu.com page. There are some links around the web to this page, but nowhere near the amount and significance of the links to the cheat sheet itself. But I’ve been pretty surprised to find that the vi tips page in the site has gotten a wonderful PR5! What is my interpretation? The vi tips page is the only one that links to the cheat sheet & tutorial page directly. Nobody has linked to the tips page directly, so I’m pretty sure all of those points are assigned by Google thanks to the fact it is the only parent of the PR6-popular page. Good to know?

I will try to set some time aside to restructure the site so that the home page itself, which is the best landing page for potential customers, links directly to the graphical cheat sheet & tutorial page. You might be interested in applying this knowledge to future design decisions about your site, as well.

On other issues, sales in July have been slower than usual, but still good – given I’ve just ended the special introductory price, and that I had cannibalized most natural-July-sales by announcing the price increase prominently during all of June. I’m expecting ViEmu will continue to sell well at the new price after the slow period of the year, and I’m looking towards some increase with the release of 2.0 later during summer. Hopefully, even higher afterwards, thanks to some extra tricks I’m preparing. I wanted to finish 2.0 by early August, but this, of course, has turned out to be a very optimistic timeframe – late August or early September is much more likely. I’m also feeling I need some time away from hands-on development to “recharge” my motivational batteries, so I will be taking a quiet, calm August, and advance slowly towards the next steps. All is fine and I’m looking forward to a very exciting second half of 2006.

Enjoy the summer everyone!

First anniversary

Monday, June 19th, 2006

Today is the 1st anniversary of the conception of ViEmu. That is, this very day last year, I came up with the idea of developing a vi/vim emulator for Visual Studio. I had been working for months in the kodumi text editor (back then it was just ngedit), and the last stretch had involved developing a scripting language compiler and VM, and implementing a vi/vim emulation module in this language.

It would only take me about one month and a half to actually release version 1.0. It was a really hectic month, though. Actually, the short time-to-release was largely thanks to the fact that I already had the basic vi/vim emulation code – even if I had to port it from ngedit’s scripting language into C++.

ViEmu is nowadays a very solid product, having gone far beyond what I expected both in functionality and in sales performance. I’m now concentrating in preparing ViEmu 2.0, which will finally integrate the codebase back with kodumi, and provide some pretty advanced features to existing customers. I will also be ending the introductory pricing at the end of this month. I initially planned to introduce the new price at the same time as ViEmu 2.0, even if 2.0 is a free upgrade to existing customers, but the new version will be taking a bit more than that, and I really think ViEmu is a very good value for its full price. Actually, it seems a bit absurd that ViEmu 1.0, which was a much, much more basic product, cost the same as today’s ViEmu.

Working on two projects is a challenging dynamic for me. I am a “depth-over-breadth” type of guy, and I have trouble switching focus. I’ve worked both in kodumi and in ViEmu for the past few months, and I expect to keep doing so for a long time to come. It’s even more challenging because of the different nature and status of both products: one is for a very niche audience, with no competition, while the other is for a large public, with plenty of competition. One is already a selling product, while the other is still in pure development towards 1.0. One has a limited potential, while for the other one I see the sky as the only limit. One needs development work, while the other needs marketing work. One of them already earns me both a long user request list and a large amount of flattering user feedback, while the other is still something that only I have used. One already helps pays the bills, while the other one only helps reduce my social life. I always have some trouble in setting the priorities, but I think I’m striking some kind balance in both improving ViEmu and advancing towards kodumi 1.0.

Fortunately, most of the codebase of both products will shortly be shared, and that will help with at least the part that is common. Also fortunately, the current customers of ViEmu are potentially also interested in kodumi, so I see the effort in improving and supporting ViEmu as an investment in establishing a good relationship with customers that can result in a business benefit.

As a summary of the ViEmu marketing week I last posted about, which of course ended lasting about 10 days, I must say I’m happy that ViEmu sales are breaking new records during June. I cant be sure whether this is due to the announcement of the new pricing policy, to the redesigned web page, to the latest maintenance release, to the richer trial period user experience (no nags, just better notices and a welcome screen that provides the most relevant information), or to a certain maturity of the product. But I’m sure all of them help. I’m looking forward to seeing how sales figures evolve in July, just after the effective pricing changes. I’ll let you know during the next few months what the general trend is, both after the pricing change and after 2.0 is released.

Finally, as soon as ViEmu 2.0 is ready, I will be focusing more in kodumi. Actually, part of the work for ViEmu 2.0 will indeed revert in kodumi. Even if I announced that I may release another derived product before kodumi 1.0, the core technology in that product is needed for kodumi, and I’m pretty much an expert now in building Visual Studio extensions, so it shouldn’t take as long to prepare as ViEmu has taken. On the other hand, I’m really excited to start working in this part of the code, as I will finally be working in an innovative area (a vi/vim emulator as a Visual Studio add-in is an interesting product, but it can hardly be called innovative). If everything goes well, I will be posting about it on the blog as I start working on it, so it will also bring some interesting technical content to the blog. Well, I will hopefully have the energy to post about it at the same time I’m developing it.

Thanks everyone for your continued support during this year.

Fact sheet May’06

Thursday, May 25th, 2006

Fact #1: I haven’t posted on the blog for well over a month. With all the pending things I have (ViEmu 2.0, the text editor, my day job obligations, support, etc…), I can hardly find time to do so. Promises not kept: the “Friggin’ Darn Tough/Functional Dynamic Template-based C++” series, an article on ViEmu I promised to Keith Casey from CodeSnipers, an article with cool graphical charts on the digg effect as seen from viemu.com (more on this below), etc… Hopefully everything will come along. Until I build the business to the point where it will sustain me, I really just can’t afford do put my available energy in anything other than improving & supporting ViEmu, and preparing the next product.

Fact #2: The final name for the NGEDIT text editor will be kodumi. I wanted a name that sounded good, and which wouldn’t be limiting for the future evolution of the product. It means “hacking” in Esperanto, although Esperanto is not, like, so widespread that the meaning is the important part. I like how it sounds and I can identify with it. It still works when the product becomes more than a text editor. If the product is really good, which I’m hoping it will, this should ensure the name sticks. I’m open to feedback and criticism. I’m pretty stubborn and it’s unlikely I’ll change it, though.

Fact #3: The next product I release probably won’t be the kodumi text editor. There is quite some work yet to be done with kodumi before 1.0, and I’ll probably release another product based in another functional part of the editing core, as a VS add-in. Hopefully with a much larger appeal than a vi emulator. It will actually be based in one of the innovative features I’m planning for kodumi 1.0. It’s nice to have a product that has several offspring before being born.

On the other hand, given that I will probably be releasing this product, it may make sense to have a single site for all VS add-ins instead of a separate one for each product (such as viemu.com). Oh well… this right after moving to viemu.com… so much for my strategy forecast skills.

Fact #4: The amount of traffic you get from a reddit / del.icio.us / digg front page is amazing. I’ve also got thousands of visitors from StumbleUpon.

Here are some graphics that show it, as the graphical vi/vim cheat sheet I released made it (twice!) to those front pages. I apologize for not being able to write a full article on this, it would be worth an entire study.

In order to understand these properly, take into account that originally ViEmu was hosted at ngedit.com, and I moved it to its own domain viemu.com together with the release of the cheat sheet. The traffic graphs include both domains, as they’re served from the same account, but the Alexa graphs below show both domains with separate lines.

I released the cheat sheet on March 28. Here is the traffic for that day (click for a full sized image):

You can clearly see the moment it picks up to 100kbps sustained. The climb was caused by it getting to reddit’s homepage, which happened about half an hour after I submitted it (people liked it, so they voted for it, making it reach the front page – it’s not against their guidelines to submit your own stuff).

The traffic before the climb used to be typically low – very nichey product, a few blog readers, etc… enough to result in some sales, but nothing big.

I went to bed as soon as I saw it at the bottom of reddit’s front page. The next day would be crazier.

As a side effect, people started bookmarking it to their del.icio.us account for later reference. This is understandable given the “reference” nature of the cheat sheet. As soon as a fair number of people did this, it also appeared in del.icio.us’ popular page, thus getting more traffic from there.

This is the traffic on the 29th:

I apologize for not presenting a higher-resolution sampling, I forgot to save it from my hosting provider, and I can’t generate it again.

Anyway, please take into account that the lowest bar in the graph is as high as the 100kbps high in the previous one. It was pretty amazing. I first watched it for hours no end in reddit’s and del.icio.us’ homepage, and a lot of traffic coming. But then I submitted it to digg, and watched it play the voting game in digg’s “sub leagues” (the system is very different from reddit). And then the big spike came: it made it to digg’s front page. All hell broke loose, bandwidth requirements grew to 2Mbps sustained, and the number of visitors was amazing. It made reddit and del.icio.us look like a joke.

My hosting provider handled it without a hiccup. On the other hand, that very afternoon after submitting to digg, (1) there was a power outage at my building, (2) when it came back, my DSL service was down and unfixable according to my ISP, (3) I got a flat tire when driving to a friends’ in order to watch the digg effect, and mainly to be on the watch in case bandwidth went beyond the monthly limit, which happened, so (4) I had to upgrade my web hosting account. You can say I had all the hiccups web servers usually have in these cases.

Here you can see the traffic for the next two days:



You can see the long tail of the digg effect. Also, the cheat sheet got linked from many places around the web, and StumbleUpon started to pick it up as well.

Here you can see a graph of all of March’s traffic, a nice picture of the reddit, del.icio.us & digg effects:

And here is a glorious graph of all of 2006’s traffic:

I promise that I had traffic before March 29, even if here it’s squashed into oblivion!

Finally, I’ll bring you some captures of what alexa thinks of my domains (it doesn’t know they are related somehow).

First, here is the Alexa’s “Daily Reach” measure, for the last 12 months, 6 months and 3 months (just for your static zooming enjoyment):





I can almost tell you where each spike comes from: the first one, in May last year, comes from Eric Sink’s kind mention of my blog & NGEDIT. The second one comes after the release of ViEmu. The largish one before the digg effect comes from a mention in Bungie’s web newsletter (which, expectedly, led to thousands of hardcore gamers, only one of whom was courageous enough to actually download ViEmu), etc…

I chose to show the daily reach above just because it is the Alexa measurement which best shows the evolution of my web presence. Their best known stat is the “rank”, which ranks the site globally among all websites. They only plot it for the top 100,000 sites, but they give you the number in any case. Here are the graphs of the rank, for the last 12 and 3 months:



Actually, the second large spike you can see earlier this month was due to the cheat sheet making it once again to digg and del.icio.us’ front pages, this time as a direct link to the cheat sheet’s GIF file.

Amidst all of this traffic madness, there is another important source of visitors which is often overlooked. I know I did. The name is StumbleUpon. This is not a social links site, but a plugin that you install to your browser, and with which you both (a)vote sites up or down, and (b)discover sites other stumblers’ liked. The effect is much slower, but the amount of visitors it can bring during a few weeks competes with the likes of reddit and digg.

In order to show this better, I will show some visitor numbers by referrer (only for viemu.com). I’ve decided not to totalize them by domain, as the distribution of source pages also provides some interesting info. I haven’t included many other sources, generated from bloggers, news sites and site owners discovering it and linking to them.

March
Total unique visitors: 22,901

http://www.digg.com 3910
http://digg.com 3210
http://digg.com/programming/vi_vim_Graphical_Cheat_Sheet_Tutoria… 2665
http://www.digg.com/index/page2 543
http://www.digg.com/index/page3 631
http://www.digg.com/index/page4 238
http://www.digg.com/index/page5 95
http://digg.com/index/page2 398
http://digg.com/index/page3 500
http://digg.com/index/page4 184
http://digg.com/programming 141
http://www.digg.com/programming 141
http://reddit.com 1814
http://del.icio.us/popular/ 1116
http://del.icio.us 112
http://www.stumbleupon.com/refer.html 120
http://popurls.com 392
http://diggdot.us 154

April
Total unique visitors: 20,429

http://www.stumbleupon.com/refer.html 7858
http://digg.com/programming 127
http://www.digg.com/programming 121
http://digg.com/programming/page2 69
http://digg.com/programming/vi_vim_Graphical_Cheat_Sheet_Tutoria… 376
http://www.digg.com/search 68
http://del.icio.us 104
http://del.icio.us/search/ 70
http://hedera.linuxnews.pl/_news/2006/04/03/_long/3795.html 1883
http://www.linuxnews.pl 556
http://linuxnews.pl 536
http://www.wykop.pl 216

May
Total unique visitors: 6,208 (this doesn’t count those coming through the GIF link as that is not considered a “page” by awstats)

http://www.stumbleupon.com/refer.html 805
http://digg.com/programming/vi_vim_Graphical_Cheat_Sheet_Tutoria… 133
http://www.digg.com/programming/vi_vim_Graphical_Cheat_Sheet_Tut… 53
http://digg.com/search 36
http://digg.com/search/page2/ 19
http://del.icio.us/search/ 45

Just for fun, I have included the links from several sites in Poland during April. For some reason it was very popular there during that month. Maybe vi/vim is better suited to heavily accented languages like Polish?

Fact #5: I’d need to sell about 1.5x to 2x as much as I’m selling now to live off of the income from ViEmu. Not a big success 10 months after release. It’s ok, as I’ve learned a lot from the experience, and I needed to do most of it for kodumi anyway, which is the main goal. At least for the kodumi I want to develop and release.

Fact #6: vi/vim emulation for VS is not for the masses. I have gotten over 50k visitors to the site in the past two months. This is about more than 20x as much as I was getting beforehand. I guess a product with a more general appeal would have noticed an enormous spike in sales. I’ve only seen a smallish upwards trend. Even VS users are a minority among vi/vim fans! I’ve sworn not to switch over to a Dvorak keyboard layout until the business really takes off, I could end up targeting an even smaller market!

Fact #7: I don’t understand Google results. I’m on page number one for “vim tutorial”, but nowhere to be seen for “vi tutorial”. I was extra careful to write “vi/vim graphical cheat sheet and tutorial” everywhere, so that I would be found by any of the likely keywords, and the result is so bad it’s sick. Searching for “vi emulation visual studio” gets the old page, even if there are links to www.viemu.com all over the place. If there’s a sandbox, I don’t understand why it affects some keywords and not others. Is “vi” too short? Then how did my SEO work before with the ngedit.com address? I’m starting to experiment with creative redirections to the new site, but I’m going to do it the slow way in order to cut the losses in case Google doesn’t like my playing around.

Fact #8: it was cool to have the vi/vim cheat sheet translated into simplified Chinese by Donglu Feng, a nice guy who sent it over to me. It makes regular vi/vim seem a piece of cake:

vi/vim Graphical Cheat Sheet & Tutorial

Wednesday, March 29th, 2006

Last Thursday, while waiting for a friend at the airport, I was having a look at an ad for a Blackberry. I watched the beautiful two-chars-per-key keyboard and the tiny screen (magnified by the magic of marketing to something much taller than myself).

Then it struck me: a keyboard map for vi/vim would be really cool to see! And it shouldn’t be too much work! I certainly would have loved to have it when I was learning vi/vim, not that long ago.

The result is here: vi/vim Graphical Cheat Sheet & Tutorial. I sure think it’s one of the best ways out there to get started with vi/vim.

It’s currently on the front page of reddit & del.icio.us, so welcome to all visitors from there!

As for some context, I only started using vim a bit over a year ago. The reason? I was fed up with the arrow/home/end/pageup/… keys on my laptop being a pain to use. So, I took up learning vim. Turns out it was love at first sight. Read the details here. I now use it anywhere I can, desktop, laptop, whatever. Ok, not anything, I think Blackberries don’t support it, and I don’t own one to begin with, but a vi/vim interface to the Blackberry would probably be very cool.

After this, I had to add vi/vim emulation to the text editor I’m developing – I wouldn’t have been able to test it without that. And once done, I thought it might work as a commercial add-in for Visual Studio, released last July. And it is working a bit: it seems there are more souls claimed by vi/vim out there.

A friend helped me do all the work, and we used the open source application InkScape to actually draw it.

It seems many people are visiting the cheat sheet & tutorial page – hopefully it will help them learn vi/vim, and it will also provide some nice exposure to ViEmu.

Although I don’t practice much proselitism in this aspect, let me state that one should look at vi/vim’s unique input model not as a relic from old times, but as a different UI model. Optimized for reducing keystrokes & maximizing editing power, both at the expense of the initial learning curve & operating simplicity. It doesn’t matter Bill Joy invented it in the 70s, if he hadn’t thought it up back then, someone would have to invent it today. Admittedly not for mainstream consumption, but I’d buy it as happily.

Codename: NGEDIT

Friday, February 10th, 2006

Well, yesterday I finally managed to release ViEmu 1.4.3. Together with it, I announced the new ViEmu support forums over at the main web site. I had wanted to set up a forum area for some time, and Gavin Bowman’s tip on PunBB was the tipping point. Pretty painless to set up. After learning so much about mail spam and blog comment spam, I guess I gonna learn about forum spam now.

Apart from a support area, it will also be a place to request comments from customers on design issues for forthcoming versions, etc. As well, I like to give detailed explanations to customers on technical details, reasons for shortcomings, etc… I will feel better doing it now that it will benefit more customers.

The title of this post is because I’ve almost made up my mind about the new name for the editor. There are some checks I still want to do, but I’m mostly done. I wanted to use this space for a small call for help. It turns out the name I’m thinking about has a certain ‘Japanese’ sound to it (although it doesn’t come from Japanese). I would like to check with someone knowledgeable whether it means anything in Japanese, and whether it has some negative connotation. A few Japanese people already registered ViEmu, and several websites talk about the product (not that I know what they’re saying), and I wanted to take this point into account for NGEDIT. I’ve tried checking Japanese dicitionaries myself, but frankly, I don’t feel confident at all. I don’t even know what I’m looking at when I find the results. If you think you can help, please drop me a line.

The name also means something in Latvian, with a safe meaning, and it actually comes from Esperanto. Y’know, the international language. I studied Esperanto for one or two years. That was many, many years ago – it was a lot of fun. But anyway, the main point is the sound of it (not that many people would understand a word in Esperanto).

Apart from that, ViEmu sales keep climbing steadily. Sales during the second half of January didn’t keep up with the outstanding first week, but they were fine nonetheless. January was a new record (we’re not talking large figures here, but it’s fine). I was looking forward to February to tell whether this was a ‘trend’ or just a ‘spike’. I’d already heard that January is usually the best month for sales of development tools. Well, so far it seems February is keeping up with January and even a bit better. So I’m happy on that front. A vi emulator probably can’t become a really big business, but the income stream is nice, and it gives me good confidence on the outlook for NGEDIT.

This is the year!

Saturday, January 7th, 2006

Happy new year everyone!

I thought I’d write this post before the end of the first week, or else wishing a happy new year would sound completely stupid.

It is indeed not very nice that I haven’t blogged for most of December. For one, a couple of “real-life” events have helped in not being able to do so: I’ve moved to a new, much nicer, apartment, and I’ve had a quite intense family-and-friends Christmas week.

No, the moving to a new apartment doesn’t have anything to do with the income from ViEmu. The moving was planned before I even had the idea of developing ViEmu. And sales are picking up, but they’re not that strong!

Apart from those errands, I’ve been working tough for all this month. I think that it’s more important to advance in the development of my products than to blog more often – the blog is nice in several aspects: raising awareness, making interesting contacts, sharing the experiences… but as long as the product is not there, there is no business to be made!

Even during the family-and-friends week, back at my hometown, I’ve done quite a lot of work on NGEDIT and ViEmu. Mainly on NGEDIT, even if I’ve managed to release a maintenance release of ViEmu last week. NGEDIT is the main project, and the one which (I hope) will be able to generate a nice revenue stream. Anyway, there is a fair amount of synergy between the two products, and both will benefit from my current work. I’m ‘crossporting’ the vi/vim emulation core from ViEmu to NGEDIT – I say crossporting, because it’s actually a heavy reengineering of that core so that it is compatible with both a hostile environment like Visual Studio, and NGEDIT, which is hopefully better designed, and for sure better-behaved. The new shape of the emulation engine will allow improvements in ViEmu’s interaction with VS, and it will also power killer vi/vim emulation for NGEDIT.

Why am I doing this right now? vi/vim emulation for NGEDIT is surely nice, but vi/vim emulation could well be missing from NGEDIT 1.0 without significantly affecting sales – most of the potential customers of a new text editor are not vi/vim freaks.

The reason is that I need to develop NGEDIT as the best text editor for me first, and then that can be a good product. And given that I can’t use anything but vi/vim editing now, I need to have good emulation myself.

I’m currently using NGEDIT every day – not for programming, I do that in VS with ViEmu, but definitely for editing text files, keeping my work log, etc. It’s quite basic yet, but usable. And the part I was missing the most was better vi/vim emulation. It does have vi/vim emulation, written in NGEDIT’s own scripting language (actually, the module on which I built ViEmu), but ViEmu’s emulation is much, much more complete.

The new core is written using the same concepts as the C++ string class that doesn’t suck, that is, as very loosely-coupled template-based code. Of course, using those string classes themselves. And this, together with a powerful and flexible interaction design, allows it to be used both in VS an in NGEDIT.

Incidentally, I realized that, as soon as I finish the “crossporting”, I will have a fully portable vi/vim emulation core that I can use to produce a vi/vim emulator for any other environment quite quickly. I don’t think it can be a very profitable business, but it’s nice to have that possibility.

On the sales front, December was so-so, lagging a bit behind October and November, which were the strongest months. Actually, the web stats from the last two weeks of December were pitiful. I guess most developers around the world had better things to do 🙂

But January, so far, is being excellent. Sales during the first week so far almost equal those of the complete December! I had heard that the market for developer tools in January is strong, but I didn’t expect this much. It probably won’t, but if all of January stays at the same pace, it will be incredible.

And regarding the plans for NGEDIT itself, there are a couple of things to note.

One of the Christmas days, after having been coding for some hours, I was feeling tired. Programming is an activity that gets me really tired, so I often tend to stop doing it and find other activities. I actually have to press myself to get coding. Anyway, I stopped coding and started preparing a “mock-up” of how NGEDIT is going to look. It was some kind of procrastination, so I wasn’t feeling very happy about spending my time in such an activity. But the activity got me completely absorbed, and after some time I had a very, very nice image of how NGEDIT is going to look. I’m not posting it, as I want to keep the details for now, but it gave me the final idea of exactly what I want version 1.0 to be. And it also helped motivate myself. I had done a very rough mock-up when I started with the project, back at the beginning of ’05, but it was too basic, and didn’t do a good job of representing my plans. This one, though, is perfect in many aspects: it’s a source of inspiration, and it also helps clarify the development/release strategy.

All in all, I’m glad I procrastinated that day 🙂

And the second note regarding NGEDIT is that I’m seriously thinking about renaming it. The plans are for it to grow to be much more than a text editor, so the name is a bit limiting. And on the other hand, I plainly don’t like it so much now.

I’d be losing the pagerank, links, etc… to the current ngedit.com, but I think this is the moment I will be losing less with a full name/domain change.

Funny, because I decided to host ViEmu in ngedit.com instead of viemu.com in order to build-up some popularity for the site in preparation of NGEDIT, and now I will be losing that, for both products. Anyway, ngedit.com will keep pointing to the other domains in the future, and in any case viemu.com will become the main site for ViEmu once I release NGEDIT.

Regarding the new name, I have several candidates, and I already have a preferred one (which I stumbled upon today). I’ll wait until tomorrow, and if it sticks, I will register the name. I’ve already registered so many domains in the past few months, that I think I should restrain from doing so just a couple hours after thinking them up.

Anyway, I hope you all had some nice days for the end of the year, and I wish you an interesting 2006. It’s definitely going to be the year for me, I hope it is for you as well!

Focusing my development effort

Thursday, November 24th, 2005

Long time readers of my blog already know about my tendency to get carried away with stuff. I’ve got carried away with something in the past, just to have to retract the following day. The second post mostly deals with this tendency to get carried away. To sum up: I don’t think the lesson I need to learn is “refrain more”, as that takes away a lot of the energy as well – “learn to acknowledge my mistakes happily and as early as possible” seems a much more valuable lesson for me. And that applies in many other fields.

I’ve also talked about my inability to write short blog posts, and failed miserably to do so almost systematically in the past.

Anyway, to get to the point, this (of course) also applies in my dedication to development. I tend to drift off too easily, especially when the goal involves developing a complex piece of software like NGEDIT. Although I’ve posted in the past about my strategy in the development of NGEDIT, I find that I have to revisit that topic really often – mostly in the messy and hyperactive context of my thoughts, but I thought I’d post about it as it may also apply to other fellow developer-entrepreneurs.

I recently posted about how I had found out the best way to focus my development efforts on NGEDIT. To sum up: try to use it, and implement the features as their need is evident (I’m fortunate enough that I am 100% a future user of my own product). As the first point coming out from that, I found myself working into getting NGEDIT to open a file from the command line. That’s weeks ago, and I have only almost implemented it. How come? It should be simple enough to implement! (At least, given that opening the file through the file-open dialog was already functional).

Well, the thing is that my tendency to drift off, my ambition, and my yearning for beautiful code kicked in. Instead of a simple solution, I found myself implementing the “ultimate” command line (of course). It’s already pretty much fully architected, and about half-working (although opening files from the command line ended up being just a small part of the available functionality). As I did this, I also started refactoring the part of the code that handles file loading into using my C++ string class that doesn’t suck, which is great, but it’s quite an effort by itself. Meanwhile, I found myself whining that I didn’t want to have all that code written using the non-portable Windows API (as a shortcut I took before summer, NGEDIT code is uglily using the Windows API directly in way too many places), so I started implementing an OS-independence layer (I know, I know, these things are better done from day 1, but you sometimes have to take shortcuts and that was one of many cases). Of course, with the OS-independence layer using said generic string class for the interface. And establishing a super-flexible application framework for NGEDIT, which was a bit cluttered to my taste. And sure, I started trying to establish the ultimate error-handling policy, which took me to posting about and researching C++ exceptions and some other fundamental problems of computing…

If that’s not getting carried away, then I don’t know what is!

Today’s conclusion, after going out for a coffee and a walk to the cool air of the winter, is that I should refrain from tackling fundamental problems of computing if I am to have an NGEDIT beta in a few months’ time. The code of NGEDIT 1.0 is bound to have some ugliness to it, and I need to learn to live happily with that. Even if I will have to rewrite some code afterwards, business-wise it doesn’t make sense to have the greatest framework, the most beautiful code, and no product to offer!

In any case, I hope I have improved my ShortPostRank score, even if definitely not among world-class short-post bloggers, and you can see I’ve had some fun with self-linking. Something nice to do after starting beta testing for ViEmu 1.4, which will probably be out later this week.