Archive for the ‘Programming’ Category

Is it so hard to get the UI right, Youtube?

Monday, February 21st, 2011

Let’s keep it short. Obvious things Youtube got wrong:

  1. Can’t drag videos into playlist – WTF? Really? How hard could that be to implement?
  2. The home page with subscriptions and etc. The user does only one thing on all sites – chooses what to click next. (Well, and watches the videos if it’s Youtube). So why the f*ck you are making it so hard? Gray out the videos that were already watched! No one should scan all the page trying to spot new videos! Unjustified cognitive load. Other pages would certainly benefit from this too but the home page is really frustrating.
  3. I wouldn’t complain if it was only this minor bug but since I’m posting anyway … “Added to queue” does not go away if you remove the video from the list. It goes away only if you reload the page after you remove the video from the queue

Editing YAML with VI

Thursday, October 22nd, 2009

Put the following in your .vimrc file and you are set:

au BufNewFile,BufRead *.yaml,*.yml set et ts=2 sw=2

When you will be editing YAML files, you’ll automatically have the following behaviour:

  • et – expand tabs – puts spaces whenever you use tabs
  • ts=2 – tab stop – 2 spaces per tab
  • sw=2 – shift width – 2 spaces to move with < and > commands

YAML in VI

clive GUI

Friday, July 3rd, 2009

Hi.

Some time ago I started using clive. It was very frustrating without a GUI, which I could not find. Here is my hack, “clive gui”, that I thought I was not going to publish. It was only tested on my system.

Use at your own risk!

Web programmers should know

Thursday, July 2nd, 2009

Here is a checklist of knowledge and abilities which I consider a must for a good web programmer.

  • HTML, w3.org standards and validator
  • AJAX
  • SQL: multiple column indexes, transactions
  • The following programming languages exist: PHP, Python, Ruby.
  • Program in at least one of the languages above
  • Program in C at least a bit
  • What is JVM and bytecode
  • What is SQL injection and how to prevent it
  • How DNS works, at least in general – what server and clients do
  • How routing works, at least in general. Tunneling. NAT. BGP is a plus
  • HTTP and HTTPS
  • Load balancing and it’s session persistence problem and how it’s usually solved
  • HTTP proxy, what it solves and how it works
  • What’s FTP
  • What’s version control and what it solves
  • How SMTP works, at least in general. POP3 and IMAP a plus
  • What’s character encoding and why UTF-8 rules

If it’s someone expected to work with Linux the following applies:

I’ll be adding to the list as soon as I remember anything important enough.
Suggestions for additional points are welcome.

What’s wrong with the Internet – SMTP

Saturday, June 27th, 2009

SMTP is a text based protocol. I already mentioned that text protocols are evil. It was phrased more nicely in previous posts. Well it can no more be phrased nice. This is stupid! In SMTP it means that binary attachments are encoded using base64 which is part of MIME. Any binary attachment (image, presentation, document, …) you’ve ever sent takes more space in the email. That means it’s slower to send, slower to receive, and wastes more space on the server. The space some people still pay for. I have to remind the reader that such encoding requires additional CPU cycles to handle which in turn increases electricity bills’ totals.

And the additional bonus: ever heard “I have 10M email box but I can’t get an email with 8M attachment from my friend. What’s the problem?”. The correct answer would be the stupidity. Wasted tech support time. They have to explain that 8M attachment can not fit in 10M email box. Try sometime to explain this to someone. Have fun. Extra bonus: Someone pays for this tech support wasted time. Exercise for the reader: figure out who’s paying.

What’s wrong with the Internet – HTTP

Friday, June 26th, 2009

Why in the world would one want to use text-based protocol? Really. WTF Dudes?
Yes, you can telnet a server on port 80 and debug… maybe. That’s about it.
Wikipedia says: “Binary protocols have the advantage of terseness, which translates into speed of transmission and interpretation”.
Lower costs would be caused by: less electricity used, cheaper hardware at the ends and along the way, less bandwidth.

I would also expect programs to be written in better ways just because of handling a binary protocol. A special library would always be used (I hope). There would probably be less stupid Perl scripts each implementing their own parsing of the query string, HTTP headers, and MIME POST body instead of using existing libraries. It would be much harder. There wouldn’t be less stupid people though… I mean that the same people that wrote those scripts would write some other stupid scripts.

HTTP does not support two-way communication in the way required for current internet applications. Wake up! Internet is mostly about applications these days and much less about documents.

Unfortunately I guess we are stuck because of the costs of upgrading to something better. I predict that we will continue to see increasing number of clever hacks to overcome the limitations of this pre-historic protocol.

WordPress SSL small and easy hack

Thursday, June 25th, 2009

Hi people.
Just installed WordPress (version 2.0.10-1etch3). After the regular installation procedure, the first thing I was trying to do is to configure the SSL.
Being naive, just added Apache alias on another virtual host (which has SSL) to point to the same directory as the original installation.
Oops, that does not work. Googled. Came up with:
http://codex.wordpress.org/Administration_Over_SSL
That page just scared me. It looks too complicated for whatever it does. Spent few additional minutes of search. No satisfying answer.

Here is my small hack which works for me and which should work fine for any installations as long as URI beginnings are the same on both virtual hosts (read same Apache alias, that’s roughly the same thing)
In wp-config.php I’ve added at the end, just before ?> :

wp_cache_add('home_before_ilya', get_option('home'), 'options');
add_filter('option_siteurl', 'ilyas_siteurl');
add_filter('option_home', 'ilyas_siteurl');

function ilyas_siteurl($v) {
    if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        $s = 's';
    } else {
        $s = '';
    }
    $v = "http$s://{$_SERVER['HTTP_HOST']}/blog";
    return $v;
}

In wp-includes/functions.php in function weblog_ping :
Replace

$home = trailingslashit( get_option('home') );

with

$home = trailingslashit( get_option('home_before_ilya') );

Note that the code was not really tested. All I know is it worked for me. Use at your own risk!
Hope that helps.