How to dismantle a Logitech G15 keyboard
My Logitech G15 got wet again and none of the keys were working. The logical thing to do, then, is to take it apart and try to figure out what's wrong with it.
Note: Don't try this at home. It WILL irrevocably void your warranty, and you can easily cause permanent damage to the keyboard.
Why I love FLAC (If you listen to MP3s, you don't know what you're missing)
Lets imagine that you have some music in MP3 format, and that you've never heard the original source. This could be because you downloaded it off the internet, or bought it at an online digital music store such as iTunes.
You'd think that you're getting the full musical experience with MP3s, because 192 kbps encoding works perfectly well and produces perfectly listenable files. If the music really needs it, just bump it up to 320 kbps to make it supposedly indistinguishable from CD quality.
For the most part, this is true. This does cover most listening needs, and I've happily built up a 40+GB MP3 library for several years on this basis.
But only for the most part.
Recently I discovered an alternative, called FLAC.
Why I hate Javascript (because I love JQuery)
When it comes to the web, I'm a server side programmer. I love the stability of the environment I get in server side code, and I detest the client side chaos that goes on in the world of browser wars and their incompatibilities and differences. As such, the inevitable forays I make into clientland are usually conservative and very "1.0".
If I can, I try to avoid browser scripting completely. My first and foremost excuse for this, and the one that actualy has some merit in an argument, is that I feel that in the current state of browser affairs, one simply can't rely on Javascript* for anything more than decoration and enhancement of existing functionality.
A post by Stephen "Valorin" Rees explains my feelings well, and even goes as far as to propose the term "JUE", for "Javascript Usability Enhancement":
AJAX [Javascript on the whole], should only be implemented after the page has complete functionality, and should only be used to enhance the usability of the webpage. Every function which is possible through the AJAX, should also be possible in the same or similar way without the AJAX (but usually with an extra page-load or two).
This isn't just about usabilty, unobtrusiveness, or separation of code though. There are plenty of advantages on starting from the server side and working your way up. Some of my favorites are...
- Security: Client side validation or sanitation can never be relied upon, because it's so easily to bypass. It's impossible to guarantee that whatever's talking to the server is a browser, or that it will obey to any restrictions I ask it to.
- Compatibility: Static HTML makes very few assumptions about the environment it's in. It just informs the client of the information it wants to transmit, and lets the client figure out how it wants to render that information. This makes it the lowest common denominator for the Web. Scripting, on the other hand, makes a lot of assumptions about its environment and how it will behave. As such, any scripting will only work well in the environment it was written for, while static HTML has a much greater reach, to a wide range of environments.
- Transparency: Static HTML is the closest thing to the true model of the web, while scripting is a higher level layer over it. Focusing primarily on scripting makes it that much easier to miss the right way to do things under the web model, especially for someone that's not well versed in it.
- Purpose: Any browser scripting technology is still just something designed to manipulate bits of document. The fact that it grew into UI emulation is a mind boggling technological abomination. If you realy want to make a rich, web-based application, why not use something designed for rich UIs, such as Flash or Silverlight?
- Performance: As a demonstration of my previous point, despite all its recent advances, browser scripting performance still doesn't hold a candle to desktop applications in terms of speed and responsiveness. Static HTML is still what browsers were designed for, and the features that it supports will always have the best performance. While a static HTML interface might not be as feature rich as a scripted one, its endurance shows that it's good enough to be efficient. Being used to the efficiency of static interfaces, the added weight of all of the "rich" interfaces makes for an uncomfortably noticeable break in flow.
However, scripting isn't without its merits. Despite all of the points above, scripting does help address the very real, and always increasing need for rich interfaces on the web. It's undeniable that adequate application can yeild great results for a lot of people.
The real reason I don't like client side scripting is because Javascript, and the way it's designed, doesn't make it easy to do anything worthwhile.
Take the fact that it's modelled as a low level interface for document manipulation, add the problems that come from browser inconsistencies, top it off with poor debugging and IDE support, and you got yourself a clusterfuck that can be only beaten by the current state of CSS. Every time I've picked up Javascript, it's been a productivity struggle of monumental proportions.
This is understandable. Javascript is like the C++ of web programming: very flexible, but too low level to be adequately productive.
The solution then, I discovered, is not to use it at its lowest level, just like someone that wants to get things done wouldn't start from Win32 in their C++ forms application. It turns out that there are tons of great libraries that already implement all of those things that you would have to do over and over again in Javascript, if you started from scratch.
Point in case, I was recently asked to do a small widget that cycles images, "like the thing on Yahoo Movies". After several hours of browsing sites that explained in great detail all the code I would have to do, and tons of custom implementations with said code, I came across JQuery.
It was like God himself came down to me in an angelic choir, and slapped my eyes open to the Truth. This may have had something to do with the fact that it was 4 AM at the time, and I only had 3 hours of sleep the night before. I was enlightened.
Although I don't usually enjoy adding non-standard, external libraries to my code, this is really one of those things that should be standard, and only isn't because it wouldn't be fair to all the other JS toolkits.
JQuery delivered an excelent first impression. Having had no previous experience with it whatsoever, it took me 10 minutes, and a grand total of two lines of code to make my animated scroller. It already had everything done for me, starting from a CSS-like element finder syntax, to automatic tweening of any value.
To be honest, I'm a bit ashamed because I feel like I'm walking into "Well, duh" territory, and discovering for the first time something that millions of people already knew for years before.
The problem is, if you try to research Javascript or AJAX, you will find tons and tons of resources, merrily explaining you how to use document.getElementById(), make XMLHttpRequests, or animate things using setTimeout and setInterval, and then enumerating the myriads of caveats and their workarounds between browsers.
Not once I've seen a site stop, and tell me "Hey, you! You're reimplementing stuff that's already been done a million times! Why not just use a library that handles all of this for you?"
It seems Javascript coders suffer a lot from the "Not Invented Here" syndrome. Maybe it's because you don't need anything but a browser to write Javascript. Maybe watching your page come to life after all of that hard work is very satisfying. Maybe they're afraid that if someone looks at their code and sees them use a library, they won't seem as hardcore.
I, however, don't have the patience for it. From now on, I'll just be dropping JQuery into all of my projects.
Do not pull out the Logitech G15's keys!
You'd think that the Logitech G15, the greatest achievement in keyboard technology known to man, would react nicely to the common task of removing the keys to clean the coke you spilled all over it. And yet, after doing this usually harmless procedure, one might notice that the keys are sticking if they're not pressed exactly in the middle.
It seems that the plastic hooks that keep the keys upright don't take too well to bending, and now that I pried them out, the bent hooks let the keys play from side to side. This means that pressing the key slightly from the side will make it tilt and get stuck in its shaft, making it hard to press, and sometimes causing it to stick.
One of my greatest offenders is the left Ctrl key, which makes it now very hard to copy and paste, and the F key, which sticks horribly, and I had to correct repatedly during this post.
I'm considering getting a new one. It's that annoying. I just hope I won't have to drop a hundred bucks every time I want to clean it.
Why ads suck and why I don't block them
My main peeve with internet advertising is that during my entire decade or so of browsing, I haven't once seen an ad for anything that I've ever been interested in. I don't forsee it happening any time in the future either, unless ad targetting systems somehow learn to scan my mind for my deepest desires.
A lot of this is because I live in a small, obscure, European country (the local websites of which I do not browse), which makes my relevant ad domain a lot smaller. But the main issue is that ads are the internet equivalent of cold calls.
Cold calls assume that I'm somehow uncapable of finding what I want on my own, and this makes them annoying and mildly insulting. If I want a product to perform some specific task, then I will search for it. I don't want to be constantly reminded that there's an application that can insert gay ass smilies into my emails. When and if I, for some reason, start needing an application to do that, I will go into Google, and search for gay ass smilie email programs. I will then commit seppuku to retain my honor.
In any other situation, I'm not interested, I don't need your products, and I don't want to hear about them, because I am not going to buy them. Period.
Furthermore, there are ads that are simply insulting to my intelligence. Things like "You won the internet lottery!", or "You're the 1000000th visitor for the 10th time today!", or "You have 10 new messages from hot babes that want to bang you!", or "You have 159834 viruses!" simply enfuriate me to no end, especially when they try to (badly) disguise themselves as OS windows or alerts.
And what about those CPX Interactive "minigame" flash banners that tell you to eat more bananas than the other monkey or do more pushups than the jock to win a ringtone? What, those assholes think I don't see that they're just baiting for clicks? Don't they think that if I wanted a ringtone, I'd just go to a goddamn ringtone website? And yet there it is, moving and jumping around and going "Waaah, you lost, try again!" in my periferic vision. It's enraging.
I can't wrap my mind around how can all of these cold-call-like techniques actually work well enough to be a viable marketing approach. Because of all of this, I see ads as a waste of my screen space, and a waste of brain processing cycles.
I do, however, understand the need for banner ads as a way to support free content websites. And this is why I don't block ads, unless they go out of their way to annoy me. The way I see things, advertisers are paying me for my attention and time that I spend to make note of their product. I am, in turn, automatically donating this money to the website that provided me with the useful content. This is acceptable.
I don't care about the advertiser. I didn't ask them about their products, so it's their fault if they're spending money on trying to force them on me. I only care about my comfort, and about the comfort of people that offer me useful content or services.
An adblock application that loads the banners (and still registers the hits), but doesn't show them, for me, is the best of both worlds.
This might seem a bit selfish. Some might be quick to argue that if noone actually looks at the banners, then advertisers will see them as ineffective and stop using them, which will then harm the sites which host the ads.
Luckily, the way the internet is, being selfish in my position is acceptable, because the internet has an endless supply of people that don't think like me. These are the people that don't have an opinion on advertising, and people that actually click on these things, and people that are absolutely thrilled in being faster at eating bananas than the other monkey. These are also the people that install spyware on their computer, and then pay money to have it removed.
These people vastly outnumber people like me. They are the plankton that everyone else on the internet can feed on. And while we have them, I won't feel bad about hiding ads.
Some ads I actually like though. These ads are the ones that clearly describe the product, and tell me why I should be interested in it. They are subtle, corteous and don't boss me around ("Buy this! Drink that! Watch this!") in an attempt to trigger impulse buys.
The best example of these is the ads on Coding Horror, which are just small, clearly marked, bits of subtly highlighted text at the end of each post. It feels like the advertiser is genuinely trying to get the word out about their product, instead of trying to attract the most number of clicks and attention.
This is what ads should be like, and they're the ones that work the best in environments where there isn't as much plankton, such as tech sites.
It's too bad that an ad like this actually asks for some merit on the advertiser's part. If one was to ask this from all of the advertisers, there would only be a few that could make up a convincing argument for their product. Most of advertising nowadays is convincing people that something is better than it really is.
In reality, I don't even hide ads, because I really can't be bothered. Most of them aren't that annoying that I actually feel that the effort is justified just for the purpose of not having to look at something. Maybe I just don't want to give the advertisers the satistfaction of having me waste my energy on blocking their ads.
:: Next >>