Most software sux, but there are exceptions, gems that make me believe that not all is lost. Sublime Text 2 is one great example (and I don’t get paid to say so). There are great many places online where you can learn about its features, this post isn’t one. I want to focus on what makes Sublime Text make me love it when I hate most software:

It’s sophisticated yet simple. In its core it’s just a text editor. Yet it has tabs, colored syntax, auto-complete, excellent regexp support, go-to-definition capability, snippets, multi-line selection and million other features that make you love it. It’s all there but it doesn’t manifest itself unless you say so.

It’s centered around you and your work. It doesn’t enforce it’s own workflow (think ‘create project’ from some IDEs). It doesn’t ask stupid questions (try closing an editor with 10 unsaved documents, you will get 10 stupid dialog boxes, 0 in Sublime Text 2). It remembers where you left your work and just gets there when started again.

It’s blistering fast. It pops up immediately – no splash screen, no questions asked. It opens and parses 150K lines of xml in just below 3 seconds (and that’s on my non-SSD PC!) and you can edit and navigate it smoothly without waiting for anything.

It’s extensible. There are hundreds of plugins and you can write your own if you know python.

It’s truly cross-platform. I’m regularly using Sublime Text 2 on Linux and Windows, with exception for some key-bindings it’s exactly the same piece of software. And a single license covers them all!

It’s elegant.

Other software like that: Blender, Firefox, Chrome, XBMC… Gosh why this list is so short?

Read More

Gosh I hate what happened to software. I really do. When did it all happen? Let’s take windows for an example: Why all of sudden to use windows you need at least 2 firewalls, an anti-virus and a rookit detector. Why every time you start something else than Internet Explorer you have to confirm that you indeed intended to run this application and yes it should be allowed to connect to the internet in both home and office network and yes public network too! Why every single app all of a sudden needs to add something to one of 10 places where windows keeps ‘autostart apps’; or sneak in a shitty toolbar plugin to spy on my every action; or at least change my default search engine.

Similar revolution happened to PC games: You need to download Steam, Origin or other spyware, create an account to play a single game these days. Origin takes 5 minutes to start on a well-spec gaming rig and Steam will fuck-up my game every time an update is release. And once you get through all this crap a small fluctuation on your network connection will stop you from playing thanks to our new friend DRM. This is supposed to stop piracy they say, but hey it has been on the Pirate Bay day before the official release day and Razor 1911 made it EASIER to install the damn thing than the distributor itself. Put the disc in, double click razor_install.exe, select path, click OK, grab a drink, play.

Another thing – programmer’s best friend – the IDE (or a very clever editor). My programming environment is like a temple so I can’t stand one that takes 20 seconds to start like Eclipse does, or one that crashes every 30 minutes like Komodo does. Since I’m using different operating systems it can’t be platform limited like Visual Studio and hey I appreciate the fact that your vim/emacs can do all that Eclipse does but I don’t have 10 years spare to learn all the magic nor I really want to use a command-line text editor 40 years after Apple stole GUI from Xerox.

Sometimes I find myself thinking that I should have become a monk; find myself an isolated cave in Himalayas and spend rest of my life searching for inner peace. Yet they don’t have 3G up there so I’ll stick to my software engineer career.

Read More

Whether you’re looking to prepare for an interview for JavaScript role, you’re an interviewer looking for inspiration or you just want to evaluate your JavaScript knowledge here are 10 advanced topics that a software engineer working with JavaScript should be able to answer. Bear in mind that answers here are kept minimal, there are lots of caveats not mentioned.

(more…)

Read More

Spoiler alert: In this article I’m going to give a step-by-step solution to Google Chromebook logic puzzle describing my exact thought process and hopefully providing few useful pieces of advice regarding cracking puzzles in general. However I encourage you to have a go at the puzzle yourself before reading the solution.

The Begining

We begin with guesstimating the correct order for colourful balls. This is the easy part, it’s pretty much a Mastermind game, but I didn’t realize it at that time. There is no limit on the number of attempts and you can pretty much brute force it. Each time you attempt to make a guess, you are being given a ‘hint’ or a ‘score’ on how close was your attempt to the actual solution. After trying for couple of times you can deduct what’s the meaning of these little black/white/gray bulbs even if you’ve never seen a Mastermind game before.

(more…)

Read More

tl;dr: I’ve experimented with Bitcoin, the p2p, digital crypto-currency, for over a month, made some profit and eventually decided to build a dedicated mining machine. Recently Bitcoin has gained a lots of attraction and has been both praised and criticized. While there are multiple threats to the technology and community, Bitcoin is something definitely worth keeping an eye on.

What is a Bitcoin

Bitcoin is an anonymous, decentralized, p2p, digital (crypto)currency that comes with a network to maintain it. There is no central authority to maintain the currency, thus the network has a mechanism to track transactions and the ownership of Bitcoins, as well as prevent any fraudulent behavior such as spending Bitcoins you don’t have, double spending or creating Bitcoins out of a thin air. New Bitcoins are created at predictable rate through a process known as ‘mining’ which requires a lot of computational power to do and is also used to verify past transactions. Bitcoin has been created in 2009 by a mysterious Satoshi Nakamoto who wrote the original client and helped the network to take off, then gradually reducing his involvment. To join the Bitcoin community and start using it is an open source client which you can download from bitcoin.org.

(more…)

Read More

A simple fact that I have figured out while being 12km above the ground: you can do more during a single transatlantic flight than you can do during an entire day in your standard working environment.

Flight from London to Washington DC takes roughly 8.5 hours. Minus time for the take off, landing and food that gives you approximately 7hrs of interruption-free time. In other words a true blessing! There are no co-workers to distract you, no lengthy meetings, no family or friends, no cell phone, not even the Internet access with things like Skype, Facebook, Twitter and Hacker News lingering for your attention. I’ve realized that I can do much more in a single block of uninterrupted time that I can in the same time split between other arrangements.  It’s amazing on its own, but there more to it!

(more…)

Read More

For last couple of days I’ve been reading and hearing a lot about now being the beginning of next dot-com bubble. Well we certainly see many more startups showing up these days and I believe that it’s because it’s way much easier to run a startup now. We have this wonderful pool of tools available that let you rapidly mock up, test and throw away (or further develop!) concepts. A quick and by no means complete list of assets that has emerged in recent years to make life of hackers and entrepreneurs alike so much easier (in no particular order):

  • Cloud hosting like Amazon EC2 that can be instantly ‘thrown away’ when no longer needed’
  • Social Media
  • LaunchRock
  • Frameworks and rapid development technologies that get you halfway through to ready product instantly
  • Supporting communities
  • A real fever of events like Startup Weekend

 

But to call it a bubble? I think that’s too much. Until yesterday I’ve been convinced that as Naval Ravikant has stated: there is no bubble. Yesterday however Color has lunched and not without lots of hype. And hype is all I expect from something that managed to attract 41 million dollars of funding. Last night I’ve snatched an Android phone to check what is all this commotion about. (more…)

Read More

It seems that folks at Quora don’t like the OpenID even going as far as claiming that:

OpenID is the worst possible “solution” I have ever seen in my entire life to a problem that most people don’t really have

Sounds pretty harsh, doesn’t it? Personally I think it’s all bunch of bollocks! I think problem does exist and OpenID is part of a solution. Fortunately Stack Overflow community, which opinion I highly value, has not yet  ruled out the OpenID. In this post I intend to revisit the ‘problem that most people don’t really have’ and take a fresh look at  OpenID-based implementation.

(more…)

Read More

The WebSocket is quite a cool concept that might gradually affect web as we know it. Currently to implement a real-time chat (Facebook and Gmail have one) you need to employ one of the xhr-based hacks aka COMET (i.e. long polling, xhr multipart etc.) and while these techniques will work, there are couple of problems. First of all HTTP protocol has not been designed for sustained client-server connection – keeping the connection open creates a performance penalty on each side. Secondly this is not a true two-way communication protocol, a lag of couple of hundreds of milliseconds in one direction is pretty much unavoidable. I could name couple of more issues related to the use of COMET but that’s not the point. Point is Websockets are coming for a rescue! Well more like slowly crawling than coming, but still on the horizon.

(more…)

Read More

Ok, I admit the title might sound a little bold.

Recently as a part of a bigger project we’ve been working on a piece of software that would need to generate an extensive, complex and nested hash structure, then compare it with another, previously cached version of the same structure and decide whether it’s the same or different. The rest of the system has been written in perl thus logically we’ve selected perl for the implementation. Our hash comparison tool would be executed every 30 seconds and it  had to perform well on a rather busy system. We knew that a brute-force approach of comparing each key and value recursively would definitely cause performance issues. It was time to do some cheating!

(more…)

Read More

Tom Najdek

back to top