Writing beautiful HTML emails

As you know we are about to launch our system – Nerrvana. It is time for the finale, hang the curtains, so to say – to prepare some nice templates for emails sent by the system. ‘A nice’ means it has to be in HTML format.

In the design of the system’s site we used loadable fonts and of course we would not mind using them in the emails. However, according to Campaign Monitor, in recent years nothing has changed – external fonts cannot be used in emails. Ok, we will take this as a given and will only use CSS and standard fonts. Googling this topic brings a tip on HTML coding for emails from MailChimp where they suggest to use inline CSS instructions, i.e. include the styles directly in the html tags. I will illustrate, using GMail as an example.
Read the rest of this entry »

How do we use phpBB

How do we use phpBB

Writing this post was quite easy as we have already written about a way we use project management system and its’ connection to the forum. I decided to add some stats:

Board started: 15/Jan/2009 2:16 am (no, we are not only launching boards at night)
Number of posts: 12705
Number of topics: 537
Number of users: 26
Number of attachments: 2677
Size of posted attachments: 513.56 Mb
Database size: 89.3 Mb
Posts per day: 12.61
Attachments per day: 2.66

These are for three developers who are engaged in work continuously and the system administrator. All other activity is from customers and two guys who have tried to work with us some time ago.

This is a breakdown of posts inside our team:
Igor – 6484
Dmitry – 2516
Alexander – 2843
Vadym (systems administrator) – 252

I decided it will be better to let you see it all first. Taking into account my addiction to screenshots with notes inside I made this screenshot (click to enlarge):
Read the rest of this entry »

How do we use Review Board

How do we use Review Board

We are quite conservative in the use of a version control system. Three years ago, Vadym had convinced us to start using SVN instead of CVS. At the same time Nerrvana came into our lives and we wanted to try some new systems that we thought would improve the process of its development. So we eventually adopted PHP Under Control (PUC) and Review Board (RB).

Today we will talk about RB. We use RB in the post commit mode. In this mode code is first committed to the SVN repository, and then later SVN RB hook* picks it up, adds to the RB which in turn sends letters to all the participants signed on changes in this SVN repository.

There is another mode – pre-commit. More information can be found in the RB documentation. This mode requires that the review request is created by hand. We thought it would be much easier to get it to do SVN. What if the errors will slip into the repository? They get there anyway :) But the requests are generated automatically, and errors in the code can be fixed in the next commit.
Read the rest of this entry »

Own web analytics for startups – Part VII

Своя веб-аналитика для стартапа – Часть VII

Part VII – our plans changed, we start implementing it.

In our last post we promised to tell you about the integration of our product (Nerrvana) with our forum (phpBB), blog (WP) and marketing site. We also were planning to show how we added code to collect analytics info into each component. Our plans changed since.
We decided to launch a beta version of our product without a forum, which takes the forum as well as Ideas and Answers out of our priorities list for now. We will add these parts during the beta testing period. But we need analytics anyway and it is time to start implementing it. Rephrasing ‘I sing what I see’ into ‘I code what I sing’ we start making it.

To heat up and tune we will complete a few tasks supporting our project.

1. Import GeoIP City database into PostgreSQL

We will need it to get visitors’ location. If you read our previous posts this is not something we terribly want from web analytics. However it can be handy to figure out what our clients business hours are. It is to understand that city info can be very wrong. According to this database I am in Perth which is not true for me. I am in Sydney but my ISP is in Perth. Country info is more reliable.
Read the rest of this entry »

How do we use Kayako – Part I

How do we use Kayako - Part I

This post lists our requirements for a support system and will be followed up (in our next post) by configuration instructions implementing them in a system of our choice – Kayako.
You may ask us ‘Why Kayako?’ We tried some other systems – open source OTRS, OSTicket and commercial HelpSpot. Below you can find some reasons why these systems were rejected by us.

- no prebuilt list of customers
- sharing is global and is not per portal at this time. So we can not turn on sharing (seeing all tickets for a company) for a client and turn it off for Nerrvana.
- did not like UI
- too complex
- no portals
- no sharing. Each user can see only their own tickets
- no time tracking
- no portals

What are our requirements?
Read the rest of this entry »

Naming chronicles

Naming chronicles

After reading Jason Cohen’s post “Naming your startup: Settle down, it’s cool!”, I recalled previously read “How To Pick A Company Name: Tips From The Trenches” and “17 Mutable Suggestions For Naming A Startup”, and even a manual from Igor International. I still remember how we came up with the name. All discussions have been recorded in our forum. Besides, I’ve never seen stories about inventing a name. And so was born the idea of this post.

Here is the (first?) naming chronicle. To ensure that you understand our conversations, I must say that English, for many of us, is the second, and for some – the third language. We were looking, of course, for an English name, so if some candidates may sound funny or have weird association in English, you’ll know that in Russian, they sound just great.
Read the rest of this entry »

Assign dynamic IP to VM without DHCP

The system we are developing is intensively using virtual machines. When the system core requires another machine it copies the template image, and starts it. Thus, many copies of essentially the same machine can work simultaneously.

Of course, at launch each virtual machine is identical to the template including the inherited set of the network settings. All virtual machines run on the same subnet, and therefore they should not use the same IP obtained from the template image to prevent conflicts. That is, each machine should get its own IP. It would seem that the solution is simple – use a DHCP server and dynamic IPs.

However, there are other options which I will discuss in this post.
Read the rest of this entry »

How do we use dotProject

How do we use dotProject

In this post we’ll talk about dotProject – a web-based open source project management system. We have used it from 2004 to the present day (seven years). You may consider this post as a mini-guide on the use of dotProject, based on the experience of a team of four developers who build web applications for businesses. This post is quite lengthy as we wanted to share our experiences and avoid creating just another impractical review.

It is hard to remember now, amongst which systems I had to choose. I remember that I found dotProject and eGroupWare. Today, according to Wikipedia, there are tons of such systems. In 2005 the choice was much smaller and the level of their maturity much lower. I have installed dotProject and eGroupWare, and I liked the dotProject – it had all the features that were needed, and even more. If you’ve read some of my previous posts, you know that I am not a supporter of services when you have to pay regardless of whether or not you are using the service, where the data can not be easily migrated to another provider. In general, I like lock-in free services and respect people who create them. It is not easy. I want to be able to leave without loosing data or having a headache because of data conversion. In this case we are talking about the data stored in the database and the files that are attached to projects, tasks, etc. Otherwise, I feel insecure and dependent on the service provider. If we talk about project management systems, then this freedom is only given to you by an open source system installed on your server, developed (preferably) on the language you are familiar with. This gives you almost unlimited possibilities – you can dig up and tweak anything. Rule is simple. If you do not want to tweak – you can live without it. That’s why I chose dotProject.
Read the rest of this entry »

David Heinemeier Hansson at Startup School 08

David Heinemeier Hansson at Startup School 08

This post is a side effect of our work to translate Davids’ speech to Russian. As we maintain our blog in two languages we decided to produce English version with slides, subtitles and transcript for those who does not have time to watch it. We thank David for provided slides. Unfortunately YCombinator could not find an original video footage and we had to work it out from YouTube copy. So here it is …

“I’m David Heinemeier Hansson, I work for 37signals. I’m also the creator of a web framework called Ruby On Rails [cheers]. I am not going to talk about that at all today. Sorry about that. What I am going to talk about though in a little bit is how lonely I feel up here. So I work for 37 signals, we aren’t looking for VC funding, we’re not hiring, we’re profitable and it feels kind of weird to be in a collection of young smart people and feel a little bit low in that sense. Most of the talks this morning and most of the questions were how do I pitch my VC, how do I do this, how do I do the other things, that doesn’t really, perhaps, relate directly to hey how do I build a business that’s actually viable, short of Google deciding to opening its’ purse and picking me up. I think there’s too little talk amongst start-ups, about just making money on their own, so this is going to be a talk on the secret of making money online, but actually I thought I’d revise that a little bit, because at 37 signals we’ve been accused a little bit of being arrogant – there’s one way; our way or the highway.

Read the rest of this entry »

Sparklines – Part I

Bona Vista site is closed. Image from archieve

Hi. This is my first opus as a programmer, so put away your piercing-cutting and blunt heavy objects. Today we’ll talk about sparklines which are also known as microcharts.

I joined Deep Shift Labs in November last year. Having only basic knowledge of programming (including PHP), I decided to try myself. The guys were willing to look at me and gave me a few tasks to do. “If you can get things done – join in!” I did not want to think about it in any other way and therefore took up the hatchet started with entu .. anthu.. enthusiasm! The first task was called “Project msFouine”, if you’re interested – post a comment and I’ll talk about it next time. The second task was micrographics or sparklines.

What are sparklines? It turns out, they were invented by a well-known, in the narrow circles of infographics specialists, personality professor Edward Tufte. A little research and especially a read of a discussion on the site of the inventor, brought a lot of useful information on how to properly use sparklines, what are the implementations and where they are used in practice. As a result I created a list of links you can find below diluted with my comments.
Read the rest of this entry »

Looking for something? Visit the archives.