Monthly Archives: September 2010

Kindle 3 – after some time

When I was writing my “first day review” about Kindle 3, I promised to get back with some experience after more days of using. Well, here it is. Two weeks of usage.

My initial worries about space where to place thumbs was false, kind of. I developed new way to grab Kindle, because it’s smaller and lighter and because the place together with buttons isn’t large. Not an issue anymore.

Mentioning the buttons, previous and next page buttons to be precise. As I wrote, the buttons are around the edge of device, so when you press one, it goes little bit of the device on the bottom. And you can also press it by grabbing Kindle on both edges. But I simple untaught myself grabbing it that way ;) , not a big deal. And feeling the button from the bottom? No problem, I got used to it. The buttons are smaller, so now I’m pressing these by tip of my finger, not whole finger as I was. I think it’s just a different way for different model. Both moves are equal for me.

After two weeks of usage I don’t have enough samples to judge the battery life. But from the way the battery icon looses it’s fill I’m sure it’s not worse than the previous one. My guess is, with 3G and/or WiFi turned on and occasionally using these plus heavily using the device for reading, it would take roughly two weeks to get fully out of juice. With all networks turned off (and using it of course ;) ), probably about a month, similarly to previous model (which I can confirm). From my experience with previous model these numbers are more than good to forgot to charge it before you leave for business trip (and of course forgetting cable). :) Good enough for me.

The new Kindle still outruns the old one very. So far I didn’t find any problem that would make me regretting the buy. I would still recommend it to anyone who loves to read. And a recently discovered way to get documents into it for free without having to plug it in using cable, it’s my primary device for all content I read that takes more than minute or two to read.

Sending documents wirelessly to Kindle for free

Today I accidentally discovered the way to send documents into Kindle for free. It’s pretty easy.

  1. Optionally set your charge limit in your Amazon account to 0.
  2. Send your documents to <your selected name>@kindle.com (if your charge limit is 0) or <your selected name>@free.kindle.com.
  3. Optionally you’ll get notice in your Kindle (as well via email) that the limit was exceeded, delete it.
  4. Connect to WiFi network (if you’re not already) and in a couple of seconds your documents will be downloaded through this connection.

I think is probably described somewhere, but who has time to read manuals, isn’t it? ;)

Multigenerational architecture (in databases) and immutable structures (from functional programming)

I’ve just realized something interesting.

Right now we’re kind of experiencing the renaissance of functional programming and some (well many) functional concepts are heading into mainstream programming languages.

One of the important concepts in functional programming is, that everything is immutable, hence if you want to change it, you need to create new item with new value(s). Consequently this is very good for parallel programming, as when nothing can change implies there’s no shared state.

And one of the segments, where parallel programming is used heavily is database systems. This brings me to my point. You know MGA/MVCC is used in Firebird, but only in it, also with some modifications in Oracle Database, MS SQL Server, Postgres, …, in fact many todays modern RDBMSs. But the concept of MGA is actually idea of using immutable data structures. Yes, it uses some additional concepts to fully support ACID and scale well in some particular cases etc., but the core idea is same.

Isn’t it nice? Sometimes you know two things and then suddenly you realize both are based on same idea and are basically same. Connecting dots…

Identification of Kindle browser

New Kindle 3 has also new browser. It’s based on WebKit and I have to say, it’s noticeably better than the previous one. The browsing, if the page is focused on text, is really pleasant.

However if you’re webmaster or simply some website owner you might be wondering how the browser in Kindle identifies itself when accessing your page. Probably because you may consider showing mobile version of your site or you just wanna know how many visitors are accessing your page from Kindle.

Well, it’s:

Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)

with current latest firmware (515460094). Exactly same identification is sent when the screen is in landscape mode.

Seamless support for Boolean and GUID datatypes in Firebird and Entity Framework

It may came as a shock but Firebird does not have direct support for neither bools nor guids. On the other hand people around Firebird are smart and came with more or less standard solutions for both. The bool is easy, just use number with constraint to 0 or 1. For guid we (ab)use special character set available in engine. It’s called OCTETS and it’s exactly what you think it is. Just a bunch of binary data, without any other interpretation from engine. That means CHAR(16) and the above character set is a perfect match for storing (not only) guids.

On the other side, where .NET Framework and Entity Framework lives, the bool and guid datatypes are core part of both frameworks. This created a small mismatch or better to say inconvenience. It wasn’t showstopper but working with (or actually without) it wasn’t pleasure either.

But this is over, since today, I used similar trick we used for “identity” columns and added two new special keyword (if I can call it like that). #BOOL# and #GUID#. When you use these (we’re looking for these in whole comment, so you can place it anywhere you want), your model will contain properties with accordant types. (Note, we’re not doing any checks whether your underlying datatype is compatible, it’s up to you.) Similarly the internals of Entity Framework support were improved to handle these changes correctly (as well as Model First support).

If you wanna try it, grab it from SVN or weekly builds and enjoy. And report any problems you encounter, of course.