How to make a copy of an Eclipse update site

I'll probably never do it again, but just in case:

$ECLIPSE_HOME/eclipse -nosplash -verbose \
  -application org.eclipse.equinox.p2.metadata.repository.mirrorApplication \
   -source \
    -destination ~/tmp/mars-mirror-meta

$ECLIPSE_HOME/eclipse -nosplash -verbose \
    -application org.eclipse.equinox.p2.artifact.repository.mirrorApplication \
       -source \
           -destination ~/tmp/mars-mirror-arte

My fight for the best title to your story

Someone just made me a remark about the style of titles I give to bug tracker tickets. They are apparently too long and actionable, which leaves no space for the text in the description.

I am angry. If there is one area I feel being an expert, this is titles. I've been running a community website for over 15 years and it's been 10 years since my only moderation activity there is fixing titles while other people moderate comments for hate speech and obscenities.

The website is serving 600,000 page views per month, half of what it did in its heyday 6 years ago. Facebook took over its market. Still, it is one of the few websites of its kinds that survived until now.

When I started moderating titles, users took it personally, so I had to back off manual post-moderation and built a dozen pre-moderation filters that forced people to write proper titles. I blocked long sequences of uppercase letters, obscenities, too short and too long titles, duplicate postings, greetings, improper use of punctuation, series of exclamation and question marks and god knows what. It worked, but it drove away some readers from the website.

A few years later, I relaxed the pre-moderation filters and reintroduced post-moderation. This time, I sent automatic notifications to users as titles of their posts changed. I kept receiving complaints, I so I developed a few tricks that would reduce the number of complaints. Instead of rewriting a title, I took user text that represented the essence of the post and put it as the title, keeping the original spelling and even case, so that the user clearly sees that the titles come from his own post.

A programmer's joke

A CS student shows his lab assignment to the professor. The code works and even produces the correct output, but the professor mutters that the code is not OK:

— You have to choose variable names wisely. Names like i, j, foo and bar make your code unreadable. By next time, please use long, mnemonic variable names.

A few weeks later, the same student completes a new assignment and brings it to the professor. This time, his code is full of long_mnemonic_variable_i, long_mnemonic_variable_j, long_mneminic_variable_foo and long_mnemonic_variable_bar.

SWIFT vs. the progress

Just for the record and because I've been asked about this a couple of times, already:


  • SWIFT became redundant after Diffie-Hellman key exchange protocol was described in 1976.
  • Euroclear became redundant when blockchain technology came out in 2009.

Software Archeology with git

A couple of useful git commands for styding big git repositories:

Rank contributors by contributed lines of code in HEAD

git grep --cached -zIle '' |\
     xargs -0n1 git blame -e |\
    sed  -n 's/^.*(<\([a-zA-Z.]*\)@.*/\1/p' |\
    sort|uniq -c|sort -rn >authors-by-line.txt

sort branches by last modified date in the remote repository

git for-each-ref --sort=-committerdate \
    --format='%(committerdate:short)%(authorname)%(refname:short)' refs/remotes >branches-by-date.txt

How Lenovo, Dell, HP and Fujitsu messed up with their most lucrative clients for 1½ years

It's not a coincidence that notebook docking stations are being sold only with high-end laptops. My Dell e7740 costs over 2000 €. When I bought it in January 2014, I couldn't imagine I'll have trouble making it work under Linux. After all, it was all-intel, already well-supported hardware. The trouble came from a usually dumb piece of hardware: the docking station. I run two 1920x1200 screens in portrait mode, but this freaking docking station"intelligently" merged the two screens into a virtual 3840x1200 screen and presented just that to the notebook.

The bug-o-feature responsible for this is called Displayport Multi-Stream Transport and it was intended to drive multiple displays via one cable using daisy-chaining. When first docking stations with MST support appeared by end 2013, none was prepared for it. It took well over a year before MST support landed in mainline 3.17 kernel. And it will take another year until all major distributions move to 3.17 and past it.

Red Hat itself found it out only when they run into the problem, and it took 6 months before David Airlie came up with a patch to fix this hardware bug. Check out this talk for a good overview of the story.

How to detect bad web design

Whether you order designs from 99designs or from an in-house designer, use this simple rule of thumb:

Your most valuable content should be the most contrasted.

Here's why. Bad designs are wildly different, but all good designs share one thing in common: they put your content first. As I am writing this, I realize that the text I am typing appears in charcoal gray or #4d4f51 while the title is all black. This is inconsistent at best, but not everything is lost for LinkedIn — the list of my last posts on the right is in a lighter gray #96999c and the editor buttons are even lighter than that.

The poster boy of good design, Boston Globe, displays text as black #000000 on all-white background #ffffff while their menu items have varying levels of greyness, from a rather dark #464646 on white to the same dark #464646 on neutral gray #eeeeee. This is good design — the most important thing Boston Globe has is news, and their news enjoy the most contrast you can get: all black text on all white background.

However, many websites have their main content in a rather worn-out pale black, while surrounding elements are flashy and attractive. Check for instance, their content is shown in dark gray #404040 while the navigation is in all-black #00000.