Archive for February, 2009

February ’09 Status Update

Monday, February 16th, 2009

So, as promised, here’s a short summary the current status of my projects & where they’re heading.

Just to have them conveniently listed, my current projects are: ViEmu, Codekana, J1CK, and NGEDIT/Kodumi. ViEmu and Codekana are already working products, which I have been selling for almost 4 and almost 2 years, respectively. You can see each one’s website for more details. J1CK (previously known as “Kimua“) is a project with its focus around cell-phone web browsing, which we’ve been working on for a year now, and which is now starting to become a working prototype. Finally, NGEDIT is the original project I started with, the text-editor-to-rule-them-all, and which gives name to this blog and my company.

ViEmu and Codekana

First to ViEmu and Codekana: the short version is that the financial crisis seems to be hitting hard, and sales are lower than they used to be in early to mid 2008. I say the financial crisis, and the general bad state of the economy, because this is the only explanation I have for the slow sales.

Since this is my main source of income, I do have to take measures to reverse this trend somehow, or supplement these sales with other revenue. So that you will have an idea of the current sales profile, I’ll tell you that ViEmu sells much more than Codekana, and that among the ViEmus, the Visual Studio version is the main seller by a long shot.

I don’t expect sales of the other ViEmus to grow much in the future. On the other hand, when I find the resources to implement many new features, I do expect Codekana will grow a lot, and that it will outgrow ViEmu. The potential audience is much larger — it’s just a less mature product.


The J1CK project is shaping up greatly. The whole system is already working, and we already have several demos. You can get a sneak peek of one of its early (still in beta) applications at, where an animation shows our specialized Wikipedia browser.

For a change, I’m not doing this project alone. I’m doing it with a great team of other people, and I’m not coding anything at all myself, I’m doing product design & business tasks. We’ve had a lot of interest from several presentations, and we’ll be doing a pilot installation shortly with a local carrier. Also, in order to pursue all open leads, we are planning to get some external investment soon.

This project is hugely promising, it’s advancing well, and we do expect to start getting great advances and some sales during 2009.


NGEDIT, the text editor, is still in a long research and development process — it’s not frozen, though. I didn’t want to do “yet another text editor”, so it is involving a major research effort. I’m designing a new programming language, or more than that, a new programming paradigm. The base is not imperative, object-oriented, or functional. I’m not totally sure yet, but I think that it’s not even Turing-complete.

Basic research as a discipline is very difficult. It requires inspiration, and you can’t force advances just by putting in more hours. This is always on the back of my mind though (and sometimes in the front), and I achieve small advances every so often. It will still take a long time. It will exist, anyway, unless I get run over by a beer truck – I’m close enough to the goal that I can see that. The idea is that the tech that results will make its first appearance in Codekana, and then in Kodumi, the actual planned name for the text editor.

The bad news is that, for those that have been waiting, there is still a long way to go. The good news is that the result will hopefully be well worth the multi-year wait.

About the last few months

I’ve been working in J1CK part-time. This is a completely separate venture, a separate company, etc… we have an office, and I like being able to context-switch in order to freshen my mind. The rest of the time, I work at home in my other projects.

Supporting and improving ViEmu is like a gas filling a container: it can simply take as much as I can give. On one hand, support issues can be tricky – interactions with other 3rd party add-ins, problems with the host application, etc… this is especially true for Word & Outlook, the internal architecture of which is closer to a Frankenstein than to any proper design.

Maintenance and support of the current products can take a full-time professional career, but it doesn’t provide growth. The current ViEmu is already very good and very complete. Of course, providing a constant stream of improvements helps make current customers happy, and that is important to reach more people, but it has to be done sensibly. I doubt many people abstain from buying ViEmu because of a lack of features. On the other hand, if I spend 100% of my time in improving ViEmu, the business can’t grow. ViEmu sales sustain a full-time developer, but if I am that full-time dev, there will be no growth. And the business needs to grow: Codekana, Kodumi, my other projects… plus a business needs a “buffer” zone for stability. You can’t be just making ends meet (of course, you can, but it’s not wise), or some day, a storm will take you down. As an entrepreneur friend of mine likes to say, if you’re not growing, you’re dying.

So the idea is to take current sales to a level where it can provide some growth, and I’ve been thinking about the best way to do this.

Possible Next Steps

There are always different ways you can try to attain the goal of making revenue grow:

  • Doing other products — which is just out of scope right now.
  • Doing consulting work — which I’d rather avoid. I prefer to invest in product development, one-off work is something I will only consider if absolutely necessary (or if it is very, very well paid, but these opportunities don’t usually come up unless you actively look for them, which I don’t plan to do).
  • One area I still haven’t worked on, and which makes the whole product business a bit absurd, is that I haven’t started to charge for upgrades. Absurd because, as described above, support & improvements cost real time and money, so they need to generate revenue, or things are not working correctly. Since my first release in 2005, the purchase price always offered one year of free upgrades, with the idea to charge an upgrade fee for new versions after that. The thruth is that I actually have yet to charge for an upgrade. To get this working as originally planned, I have to set up the whole online store infrastructure for that, and of course, provide enticing enough improvements so that current users will want to upgrade. It’s quite a bit of work, but it will help with the business of ViEmu, Codekana, and other products for a long time to come.
  • One other option I have is improving Codekana to try to make it more attractive. Both the product and the website could use some improvements, and this could improve sales. I have a couple features planned that can really improve the usefulness of the product.
  • And apart of these options, there is one extra option of another nature: just further marketing the current products. Investing time and effort in publicizing the products can really pay off. When you are the author of something, sometimes, you feel it’s too imperfect, and it’s a common developer mistake to invest more in improving the product than in marketing it. I have received some feedback about Codekana recently, mentioning that (1) users like it more the longer they use it, and (2) that it seems to be undermarketed. The current Codekana is much too simple compared to the one I envision, but I shouldn’t make the mistake of underestimating its value.

    Thus, I could attempt some marketing activity to try to get many visitors to the Codekana website. The main way I know how to do this is to write an interesting article, and try to make it to the top of the programming reddit. I’ve managed to achieve this two or three times for ViEmu, so I know it can easily bring a lot of visitors to your website. The tech behind Codekana provides enough material that I think I can write a potentially very interesting article, mainly about innovative parsing technology and multi-threaded code. If I manage to get the inspiration flowing, I should be able get several tens of thousands of visitors from the programming reddit, which will ensure at least some exposure to Codekana. That may or may not translate in sales in the short term, but it’s an experiment I have to do at some point.

What now?

So, I’ve described three options above: (1) try to start getting more revenue with ViEmu upgrades, (2) try improving Codekana to see if I can sell more, and (3) try to promote the current Codekana to improve sales.

The least risky option out of these ones, and one which will make everything better in the mid- to long-term, is to set up the system to charge for upgrades. This will make support work on ViEmu more profitable, the system will also allow the same thing for Codekana, and should help grow revenue to hire extra help. It can easily take me two or three months to set this all up, and then the time to actually implement new features to make upgrading worthwhile for existing customers, so it’s not a small effort — but I think it’s almost guaranteed that I will get some extra sales over the months.

Improving Codekana with new features can take quite a bit of time (it always takes longer than expected), and the return is not guaranteed at all. Of course, if I improve the product a lot, it will help, but I’m talking about short- to mid-term revenue increases.

Finally, even if it’s not sure it will have a valuable effect, I think I should consider the pure marketing operations for Codekana. I think I can attempt to do something in a few days or a couple of weeks, and if it works, it could really help a lot. It will also be a valuable experiment to see how much pure marketing (without new features) can help sales by just bringing targeted visitors over to the site.

So, basically, what I’ll do is the following: first, take a stab at promoting Codekana. Invest a bit of time in this. And once I’ve done that, the next milestone will be setting up the whole system to charge for upgrades. This involves reissuing keys, which as a nice secondary effect will invalidate the keygens out there. And then I will start pumping valuable upgrades to the products. I’m thiking about a very affordable pricepoint (probably $29), which should be able to ensure a bit of growth from upgrades.

What to expect

So what to expect in the short- to mid-term:

  1. A hopefully interesting article (or two) about Codekana
  2. A sytem to charge for upgrades to ViEmu & Codekana
  3. And finally, meaningful updates to entice current users to upgrade

There will also be public betas of some J1CK products in the near future, I’ll post here when there is something new to look at.

I also want to write more and blog more, I have to find the best way to do so. Some of these new articles may appear on the Codekana blog, even if they’re not specifically about Codekana, to try to promote the site. I’ll post about the interesting ones here anyway.

And, of course, I’ll be happy to hear your thoughts about any or all the above points!

About my blogging customs

Tuesday, February 3rd, 2009

They suck.

Ok, I was going to post something more elaborate than this.

My previous post was the first in a long time, and as such, it required some special treatment. It took me several days to write it: I wrote three versions, the first one of which was long and confusing; the second one was four pages long, mainly due to some spice and anecdotes here and there, which I didn’t like; and the third one being the one I posted. I chose to just write the points, in a more terse style. Of course I then edited a bit. Among other things, I wanted to test whether a terser style could work, as it takes much less effort to write and get right, and it’s less risky, too. This surely has to do with having recently read the novel “Silk” by Alessandro Baricco (which I heartily recommend to you) — which is proof that austerity and terseness in writing can be incredibly strong.

In the end, I liked the style, and there were a couple of strong stylistic points (at least to my taste). It was also a nice departure from my usual style, and the usual style on tech blogs. I thought I should probably try to write things in different styles, to learn how they result, and be able to apply them consciously when I want to. Like when learning to play an instrument, or any other discipline for that matter, your best bet at mastering it is to do everything in all possible ways until you can control all the subtleties.

I received quite some feedback in the form of comments and emails, plus having it linked to from a few different places (not too many). Some of the feedback has been positive, as it resonated with some people. Other people, like Gavin Bowman, rightly pointed out some of the absurdity behind it (“I’ve made it through almost 10 years (1 month to go) trying to do absolutely everything every single day… why should I change now? Oh yeah… more successful, and happier… good point… Tomorrow, I shall aim to achieve NOTHING!!!”).

All in all, I was left with the feeling that something was left to be desired with the post. It’s not as when you post an article you end up totally satisfied about. I had to think through what the reason was. You see, when I write about topics I really know about, like many aspects of programming, I’m drawing from solid experience and knowledge. On the other hand, if I write about personal productivity, or about how I feel, or about my “journey”, then I’m not an expert at all, but I’m sharing my experiences, reflections, and decisions. It’s completely different. Now I know better where the point in my previous post fits: it was my reflection adequate to my current circumstance. It can be useful in certain situations, and other situations require different treatment. That should have been part of the “staging” and the point itself if I was to have a more solid post.

I could decide to write only about areas I really know about, like programming, and the part of selling software I’ve already got some experience on. I would save some of the embarrassment, but I don’t really want to go that way now. I like posting about more personal issues, and I think it can be helpful to others out there, even if it’s not the ultimate insight on the treated subjects. I also get to learn from the posting act myself — there’s something in airing out your doubts and reflections.

For the past few months, apart from being busy with the various projects, I’ve often ended up not posting because I felt I had to write “the Great American Blog Post”. It’s not good to post every minor thing, which will end up alienating readers, but it’s no good to have such a high threshold that you don’t post in months. I’m trying to lower the threshold a bit, while keeping in mind that blog posts should be at least worth their time and attention to readers.

(This makes me think again about the concept “Everything takes incredibly longer than it seems it will take”, which I’ve taken so seriously lately — a blog with only great posts is just a fulltime endeavor by itself — it’s good to realize this early before I start investing time in something I can’t afford!)

The next thing I post about will very likely be an update on the status of all my projects, which are in a very interesting point right now, and which will be more on-topic to the blog, too.

Good luck with your own projects too!