Text

No Emails on Saturdays

The last time I sent out an update for one my projects, I did it a bit differently. Instead of mailing all 2000 subscribers on the mailing list at once, I sent the newsletter in 5 batches, one batch a day, from Saturday to Wednesday.

This was three weeks ago and today I got around to looking at the stats.

Read More

Text

Novel optimization technique

Consider a snippet of code that goes through a list of items to find one that matches a condition. For example, searches for a heap bucket suitable for allocating a memory block of a certain size:

    bucket_t * b;
    size_t     i, n;

    ...
    for (i=0, n=heap->bucket_count, b=heap->buckets; 
         i < n; 
         i++, b++)
    {
        if (b->size_min <= size && size <= b->size_max)
            break;
    }

Now, check this out.

Read More

Text

Extended default arguments / C++

It’d be nice if C++ would allow overriding selected default arguments and preserving the rest. Specifically, given a declaration like this -

  void foo(int a = 0, const char * b = NULL, T * c = NULL);

the following is supported -

  foo(100);
  foo(100, "bar");

but the following is not, though it’s a natural extension of the same idea -

  foo(, "baz");  
  foo(678, , &x);

In fact, it’d be very nice if C would support this as well.

Text

Retina support, Windows-style

Every bit of graphics that goes into a modern Windows app must be done in at least three different sizes - one for each common screen DPI level.

Read More

Text

How to Stop Forum Spam

Say you make and ship a software product. Chances are that you also maintain a public forum in the support section of the website. It is also highly likely that you have a problem with spam.

Any public forum with open positing policy quickly deterriorates into a dump. A conventional way to deal with this is to require creating an account, solving a captcha and then validating the email address. This is not good, this is a hassle.

Consider someone who just downloaded the product, tried it and on the spur of the moment decided to tell you all that there’s to tell about it. That’s an impulsive feedback - very precious, very useful. The last thing you want is to drag this person through the hurdles of registration.

Alternatively, you can let anyone post, but hold initial posts in the moderation queue. This is not good either, because it’s a hassle too, but this time it’s yours.

But there is a better way.

Read More

Text

Relative relative symlinks

If you have been around computers long enough, you probably know what a symlink is. It is also likely that you’ve created at least one relative symlink that was pointing up the tree and then back down to a sibling directory:

  foo.txt -> ../../bar/foo.txt

But here’s something that you probably don’t know, and it’s as confusing as it is useful.

Read More

Text

Re-subscribe

One of my projects got upgraded to a fancy HTML newsletter and it looked like a good opportunity to do something interesting with an obligatory Unsubscribe link.

Conventionally, the link leads to another page that acknowledges the unwelcome news, confirms the unsubscription and pleads to undo the mistake - we are sorry to see you go, yadda yadda.

I thought I’d try and keep things simple and streamlined at the same time. Like so:

Read More

Text

Pre-launch promotion in numbers, part 2

Here’s a paid tweet that went out on Friday morning.

Here’s the summary of how it worked:

  • 12,000 followers
  • 12 clicks
  • 1 new subscriber (to the mailing list)

The tweet cost $100 and it was purchased through BuySellAds. Needless to say, it wasn’t worth the money.

Read More

Text

Google Bot now crawls arbitrary Javascript sites

Just spotted something while looking through Apache logs:

66.249.67.106 ... "GET /ajax/xr/ready?x=clcgvsgizgxhfzvf HTTP/1.1" ...

This is an ajax request issued from document.ready() callback of one website's pages. This means that the bot now executes the Javascript on the pages it crawls. The IP of 66.249.67.106 is crawl-66-249-67-106.googlebot.com and the A record is a match, so this is in fact a Google Bot.

Read More

Text

#! tweets

Here’s a functional reduction of the pinned tweets idea from yesterday.

Instead of relying on Twitter to support pinning, it is perfectly possible to do it entirely on a client side. I hereby present you… a drum roll

THE #! TAG

#! tweets

I propose to adopt a convention whereby adding #! tag to a tweet marks it as important. Then when a twitter client on the followers’ side is readying such tweet for showing in the UI, it will replace original timestamp with current date and time and this will automatically place the tweet at the top of one’s feed.

Read More

Text

Pinned tweets

If you use Twitter, you’ve seen promoted posts. They are essentially a form of random spamming on Twitter’s part, routinely irrelevant and hardly ever interesting - nothing more than an annoyance.

Promoted tweet

On the other hand, there are some tweets that I actually want to see. For example, there are news and updates posted to company’s accounts. These are infrequent, released unpredictably and they are exactly the reason why I am following these accounts in the first place. But they get lost in the noise.

What Twitter needs is an ability to promote tweets to the followers.

Read More

Photo
An internal analytics dashboard for Notwerk

An internal analytics dashboard for Notwerk

Text

Pre-launch promotion in numbers, part 1

Notwerk site has been up for several days and I thought I’d share some numbers.

First of all, the site is a single teaser page, it is meant to introduce the product and to try and get those interested to subscribe to updates and to help spread the word.

During the first week we went through a list of simpler options that were either free or relatively inexpensive including BetaList, Reddit, StumbleUpon, Twitter, Dribbble and Forrst.

There’s plenty of metrics that can be used to measure the traction, but at the end of the day, the only metric that really matters at this stage is how many people joined the mailing list. And so here it is:

Read More

Photo
Test of Paper

Test of Paper

Text

Fast-track patents

The following is based on my exchange with the US patent attorney in late 2011. If you have an US patent application pending a review, I would strongly advise to read on.

tl;dr

The USPTO has a new prioritized patent application review process that is about twice as fast as the conventional one. Any pending US patent application is currently at risk of a competing application getting granted if latter is fast-tracked even if it was filed on a later date.

The way to protect against that appears to be to request the USPTO to publish your application now instead of waiting until it is reviewed and the patent is granted.

Read More