I turn my head for a second, another Android tablet is announced!

I can’t imagine myself using Android as a media player; I find it insulting that I have to grope the phone searching for the unlock button, then unlocking the screen using swipe, then waiting 1 second for everything to load, then looking at the phone to find the Next button (usually small) on the screen and, then pressing it, then realizing that it did not react, then pressing it again. AAAAh. People are paying X00 euros for this ??

When I first got my Symbian many years ago (I’m not quite a Symbian fan anymore), it was unbelievable to be able to have ‘timed profiles’, or … profiles that were based on your GPS cell, or profiles turning your phone silent if there was a ‘meeting’ word in your calendar at that time. It was very easy to add a new internet connection and browse using the phone as a modem.

Now, you are forced to root your phone to be able to tether it ?

No guys and gals, it’s not fun any more at all, its annoying.

There are tablets from 2.8, 3.2, 4, 4.3, 5, 7, 9, 11 inches, and even Steve Jobs said something along the lines that size does matter .. Depending on the tastes and the size of the furniture object the tablet will collect dust on, you can buy anything.
Laptops, netbooks, notebooks, and hey, notebooks with screens instead of keyboard! Why not having a notebook that folds normally, but, each side too can fold again. Imagine you take your notebook with the case now consisting only of LCDs and then you unfold it like a windscreen shade and watch HD movies on it. WOW factor to the maxx!! You just need 1Kg charger and that’s it!

Why aren’t companies researching batteries ? Don’t know. You play 600 euros for a phone just to lasts you 2 days. Uhhh no sense of value anymore.

Ok, so tablets are flooding the market. I did not see anybody buying them though. I admit I saw one guy with an IPad on a flight to Brussels; 1 guy with an IPad at the office; and heard about 1 colleague getting the IPad as a present. And that’s it. It’s a different story at the Apple stands, everybody wants to interact, however, I did not hear anybody going to the clerk and closing the deal.You know the alarms at the phone stands – they are on all the time, but … when are all these things bought, during the lunch break ? As Friday nights I spend 10-20 mins in the big shops and nobody buys. Its like the extraterrestrial life paradox: we should be able to see at least something! Where are they ?

And one more thing. Why do people buy the tables when is clear that in 3 months something new will come along ? Why pay now 500 euros on a phone when in some months you will get a dual core one!? Or a bigger screen one at the same price!

I use the smallest Android phone (Sony X10 mini) for emails / news, and the lightest Nokia (5310Xpress Ed.) for music play as nothing beats physical Next / Pref, Play / Pause buttons when listening to music.

And speaking of other phones, yeah, HTC Desire HD / Samsung I9000 look nice, but they don’t have HDMI nor you are able to connect Bluetooth mouse and keyboard, like Nokia’s N8, 12 Mp camera phone.
On the other side, N8 is like that the n-th time you try to hook back with your ex. There’s still the magic, the memories and heights of the former nights, just, just, just something stupid happens, fight starts, all mood is gone.

I wonder tomorrow how many new Android tablets will be announced. Will they fill all the gap between 5 to 11 inches, in 0.1 increments ?

NoSQL – the Assembly Language of Data Storage

An year ago (well, still 4 days to be one full year), I played with a Windows port of Redis (a NoSQL database).

I abandoned the project because of lack of time, but now, 4 days to one year, I’m back again on it. Why ? Mainly because I like the momentum NoSQL is getting, but, more importantly, because I think as the databases became heavier and heavier, something lightwight and blazing fast should have appeared.

Redis reached version 2.0 (vs 0.9.1 from one year ago), a lot of changes in past year… the JDBC emulating driver I used is now unmaintained and there’s a new kid on the block, Jedis.

Let me show you what I mean by Assembly Language similarities Since I’m more or less familiarized with basics of Redis now, check this out:
INCR key vs INC dest
or
SET key value vs la $a0,value
or
LINDEX key index vs LODS – load word at address index

and so on… I can’t make up my mind if the NoSQL of Redis is more CISC or more RISC :) but due to the set intersections, and lists, it’s definitively leaning twards CISC.

But beside databases there’s also the big set of libraries needed to create a web application. I always felt that the amount of libraries required to make a basic Web Application was huge, and, beside the JVM interpreter, you look at more  than 20Mb of .jars ( so zipped content) just for starting. Which is HUGE amount of data, if you realize how games fit the 48Kb limit on 6Mhz Z80 CPU. Today’s programming world seems a waste from these resources point of view, not to mention the hardware required to run (Gigs of RAM, Gigs of CPU speed, etc).

I am surprised though that the challenge against the BIG came from the databases side – and instead of having a database engine be able to do everything (but at the price of the resources it needs / uses), the challenger is able to do atomic / basic things very fast.

And the momentum is growing:

http://www.google.com/trends?q=nosql

Google Trends for NoSQL

Google Trends for NoSQL on 24 Nov 2010

I think this is a normal and self regulating system now, the database ecosystem. Bears and squirrels sharing the same forest. You take your pick – you need wild, elementary, very fast or … trainable, obedient, with bigger brain ?

I hope there will be something like this for web applications too …… Right now you need:

  • presentation layer (javascript is still slow on big pages with many ajax requests, JSF has a very deep stack trace for each small tag you want to use it will actually invoke a LOT of methods till it actually replaces it with what it has to)
  • service layer (here you need something to abstract things a lot between the presentation and the database layer). somewhere here you need to also fit the validations.
  • database layer (huge code base here too, to abstract the databases away). and what do you do when you start having big performance issues ?

The Law of Leaky Abstractions stands strong. Among the myriad of tools that help you get to the results faster, if something is broken along the way, you have to know the tools anyway to be able to fix.

I want to see something like NoSQL but for Web too … a NoMVC ?

I’ll be watching. So far … “Your terms – nomvc – do not have enough search volume to show graphs.” (but I found a person: http://engineeredweb.com/blog/10/4/its-time-nomvc ).

It’s starting!

Sky at dawn…

image

Photo taken on a trip to Brussels, using Sony X10 Mini (5mp) phone camera.

Sock left on the corner of the bed.

Another childish attempt at painting. I’m not taking any courses, I’m self teaching myself to paint 0:-)

History of the painting:

  1. Girlfriend complaining about her room not being spotless.
  2. Me telling that I will tease her by painting a perfectly clean bedroom, but with a sock thrown on the bed’s corner.

Behold!

Bed Sock Painting

PS: other people told me that the sock looks like a glove. Oh well, anyway, here’s the first attempt at it on the PC – I did it myself just to have an idea how the end result might look:

Attempt on PC

Do you keep phpmyadmin in doc root ?

Here’s a gem I found in my web server logs:

..
GET /phpMyAdmin-2.2.3/scripts/setup.php
GET /phpMyAdmin-2.2.6/scripts/setup.php
GET /phpMyAdmin-2.5.1/scripts/setup.php
GET /phpMyAdmin-2.5.4/scripts/setup.php
GET /phpMyAdmin-2.5.5-pl1/scripts/setup.php
GET /phpMyAdmin-2.5.5-rc1/scripts/setup.php
GET /phpMyAdmin-2.5.5-rc2/scripts/setup.php
GET /phpMyAdmin-2.5.5/scripts/setup.php
GET /phpMyAdmin-2.5.6-rc1/scripts/setup.php
GET /phpMyAdmin-2.5.6-rc2/scripts/setup.php
GET /phpMyAdmin-2.5.6/scripts/setup.php
GET /phpMyAdmin-2.5.7-pl1/scripts/setup.php
GET /phpMyAdmin-2.5.7/scripts/setup.php
GET /phpMyAdmin-2.6.0-alpha/scripts/setup.php
GET /phpMyAdmin-2.6.0-alpha2/scripts/setup.php
GET /phpMyAdmin-2.6.0-beta1/scripts/setup.php
GET /phpMyAdmin-2.6.0-beta2/scripts/setup.php
GET /phpMyAdmin-2.6.0-pl1/scripts/setup.php
GET /phpMyAdmin-2.6.0-pl2/scripts/setup.php
GET /phpMyAdmin-2.6.0-pl3/scripts/setup.php
GET /phpMyAdmin-2.6.0-rc1/scripts/setup.php
GET /phpMyAdmin-2.6.0-rc2/scripts/setup.php
GET /phpMyAdmin-2.6.0-rc3/scripts/setup.php
GET /phpMyAdmin-2.6.0/scripts/setup.php
GET /phpMyAdmin-2.6.1-pl1/scripts/setup.php
GET /phpMyAdmin-2.6.1-pl2/scripts/setup.php
GET /phpMyAdmin-2.6.1-pl3/scripts/setup.php
GET /phpMyAdmin-2.6.1-rc1/scripts/setup.php
GET /phpMyAdmin-2.6.1-rc2/scripts/setup.php
GET /phpMyAdmin-2.6.1/scripts/setup.php
GET /phpMyAdmin-2.6.2-beta1/scripts/setup.php
GET /phpMyAdmin-2.6.2-pl1/scripts/setup.php
GET /phpMyAdmin-2.6.2-rc1/scripts/setup.php
GET /phpMyAdmin-2.6.2/scripts/setup.php
GET /phpMyAdmin-2.6.3-pl1/scripts/setup.php
GET /phpMyAdmin-2.6.3-rc1/scripts/setup.php
GET /phpMyAdmin-2.6.3/scripts/setup.php
GET /phpMyAdmin-2.6.4-pl1/scripts/setup.php
GET /phpMyAdmin-2.6.4-pl2/scripts/setup.php
GET /phpMyAdmin-2.6.4-pl3/scripts/setup.php
GET /phpMyAdmin-2.6.4-pl4/scripts/setup.php
GET /phpMyAdmin-2.6.4-rc1/scripts/setup.php
GET /phpMyAdmin-2.6.4/scripts/setup.php
GET /phpMyAdmin-2.7.0-beta1/scripts/setup.php
GET /phpMyAdmin-2.7.0-pl1/scripts/setup.php
GET /phpMyAdmin-2.7.0-pl2/scripts/setup.php
GET /phpMyAdmin-2.7.0-rc1/scripts/setup.php
GET /phpMyAdmin-2.7.0/scripts/setup.php
GET /phpMyAdmin-2.8.0-beta1/scripts/setup.php
GET /phpMyAdmin-2.8.0-rc1/scripts/setup.php
GET /phpMyAdmin-2.8.0-rc2/scripts/setup.php
GET /phpMyAdmin-2.8.0.1/scripts/setup.php
GET /phpMyAdmin-2.8.0.2/scripts/setup.php
GET /phpMyAdmin-2.8.0.3/scripts/setup.php
GET /phpMyAdmin-2.8.0.4/scripts/setup.php
GET /phpMyAdmin-2.8.0/scripts/setup.php
GET /phpMyAdmin-2.8.1-rc1/scripts/setup.php
GET /phpMyAdmin-2.8.1/scripts/setup.php
GET /phpMyAdmin-2.8.2/scripts/setup.php
GET /phpMyAdmin-2/scripts/setup.php
GET /phpmyadmin/scripts/setup.php
GET /phpMyAdmin/scripts/setup.php
GET /phpmyadmin/server_status.php
GET /phpmyadmin1/scripts/setup.php
GET /phpmyadmin2/scripts/setup.php

To end up with a list like this, I usually invoke a small PERL script: (it is more flexible to have it as a script that of one liner):

open (FILE, "<access.log") or die 'Unable to open access.log.';
while(<FILE>) {
	if ($_ =~ m/GET (.*?) HTTP/) {
		print $1 . "\n";
	}
}
close(FILE);

which parses hundreds of Mb of lines like the one below:

XX.XXX.XXX.XXX - - [05/Sep/2010:17:47:19 +0300] GET /phpMyAdmin-2.8.1-rc1/scripts/setup.php HTTP/1.1 "404" 61 "-" "ZmEu" .....

just to print the URLs into a easy sortable:

perl filter.pl > links.txt
sort -T h: links.txt | uniq

Conclusion

Do not keep phpmyadmin installed in the root of your website. I know not to keep anything in docroot, and also to remove/rename the install file. But come on, ALL VERSIONS ? That’s some will power right there …

Intel X25-M G2 SSD, TrueCrypt 7.0a, Windows 7

Since my desktop replacement laptop (Acer 8930s) started to feel a bit sluggish, I’ve decided to search around for an SSD hard drive. Below you will find a comparison between the same installation of Windows 7 Ultimate, once running on the standard hard disk (shown on the left side of the screen in videos), and the other running on the SSD disk, shown on the right side of the videos.

Introduction

Since I travel a lot and I keep a lot of my paper work on my laptop – I decided a while ago to keep everything encrypted (at least the system partition). I would have liked the way Ubuntu works (encrypted home folders) but … I guess that’s a long way to go.

Anyway, beside this encryption of the whole drive, I also like to keep the development stuff (I’m a Java developer mainly) on a virtual disk (which is a 15Gb big file, mounted as a virtual disk). This means that backup is really easy (just copy the big file somewhere else) and, in case of system reinstall, its very easy to restore everything (just remount the virtual disk). VD includes everything, IDEs, repositiories, JDKs installed, servers, configurations, databases, everything …

However, it felt that the poor laptop is not quite happy with this. Although I have purchased Windows 7 Ultimate and abusing ReadyBoost using an 8Gb (Class 4) SD Card, it still felt sluggish at times, especially when starting up Eclipse / Netbeans, Gimp, and so on.

Configuration

Laptop is an Acer 8930g with Intel Q9000 processor (6Mb cache, 2Ghz, 1066FSB), 4GB DDR3, 9600M GT Video, and a 7200 RPMS WD 320GB hard disk.

The laptop has a secondary hard disk slot as some other models were sold with RAID, but not mine. The model I have also come with ICH9M chipset, without RAID controller.

I’ve decided to buy an Intel X25-M G2 80Gb and install it in the second hard disk slot of the laptop:

Acer 8930g Second Hard Disk

Acer 8930g Second Hard Disk

I’ve encrypted it too (whole system partition) using TrueCrypt 7.0a – but just before that and below I present some movies on how the system compared with with the same install (also encrypted) but using the standard WD 320Gb hard disk of the laptop.

While running with standard hard disk, I was using ReadyBoost with an 8Gb MicroSD card. After switching to SDD, Windows is now saying that the system is fast enough and it using ReadyBoost does not provide any additional benefits – and thus is disabled, I cannot activate it.

Also, on both setups the Antivirus and Windows Search Service were disabled.

Comparison

I don’t have too much time to edit the movies, I just put them together using PowerDirector 8. I wanted to also add some seconds to count, but I could not figure out how (or if its possible).

  1. Boot time:
  2. Compiling Liferay Portal 5.5 :
  3. Firefox loading speed:
  4. HDTach results (I had to run in compatibility mode):

    Intel X25-M G2 (80Gb) HDTach Results

    Intel X25-M G2 (80Gb) HDTach Results

  5. CrystalDiskMark benchmark (please remember that the disk is encrypted using TrueCrypt)
    Intel X25M G2 (80Gb) benchmark with CrystalDiskMark

    Intel X25M G2 (80Gb) benchmark with CrystalDiskMark

    As a comparison, here’s the benchmark from the standard HDD (unencrypted!) WD3200BEKT-22F3T0

    Old Hard disk (unencrypted)

    Old Hard disk (unencrypted)

Conclusions

I had some issues with lockups and freezes while installing Windows 7 as well as after. Apparently the issues seemed to go away after installing latest chipset drivers from Intel for ICH9M (at this moment of writing, version 9.6.0).

Also, the system response time has increased. Although before buying everybody online was raving on how fast things got, I have to admit that I expected better results. The most impressive is when applications start up after rebooting. Its very fast. However, having ReadyBoost active, with the old hard disks the times were almost the same once the applications were started. I mean, when first compiling Liferay, it may take 55s / 1m with SSD (and 1m10s , 1m15s with standard hard disk), but only when you compile for the first time. The second compilation took the same on both setups , around 49s.

From my point of view, the system feels snappier now especially when starting up applications – and almost incredible after a reboot. However, since I very rarely reboot the machine, I can’t say I will benefit a lot.

I guess the only real real advantage, is that after hours of working on the laptop, the hands don’t burn that much :) from the heat of the hard disks inside. Now the laptop is MUCH cooler.

Violin shaped plywood shelf – part 3

Finally, a week ago I was able to put everything together and fixed the shelves on the wall.

Cutting the back to fit the shape, nailing it onto the wood, etc, all went OK (but not perfect, as I did not realize that the space is so tight in some corners,; it was almost impossible to screw in the wall supports!). I guess it took about 2 hours to put all the wall supports in place on the violin shelf. Actually this is a very good lesson for future wood working projects: whenever a space is smaller than 15cm, make sure you fit supports before putting everything together, otherwise not even a small screwdriver can fit inside.

So after all was said and done, here’s the result:

There’s only one thing to do, covering some – if not all compartments with glass. I’ve been asked by the “glass cutting” company to come up with exact dimensions and, for glass that has 135 degrees angles, to come up with a mock up and they would cut it. But this is for another round …

Part 1: http://hex.ro/wp/blog/violin-shaped-plywood-shelf/

Part 2: http://hex.ro/wp/blog/violin-shaped-plywood-shelf-part-2/

Violin shaped plywood shelf – part 2

Hey, I’m back from another shop – just got the plywood cut properly!!

Here’s a sneak preview :D

Looks almost perfect! Now the fun stops … and work has to begin. Connecting everything together, finish up here and there. And I haven’t yet thought of the glass that has to cover it. Oh well, more updates to come soon.

Part 1 of the project: http://hex.ro/wp/blog/violin-shaped-plywood-shelf/

Part 3 of the project: http://hex.ro/wp/blog/violin-shaped-plywood-shelf-part-3/

Violin shaped plywood shelf

I’m describing a ongoing wood working project that I’m fond of. Here’s how the whole thing started.

I have the AC unit mounted in the middle of the wall – and the tubes that run out of it have a weird bend somewhere along the way (click images to get a larger view):

wall photo

I was looking at it a few days ago, and realized that the shape of the tubes look like a side of a violin / guitar. Since the guitar is not that long, I decided to go with a violin. Here’s the initial drawing I did:

I took a photo of a violin, displayed it, and then, with a math paper layed on top of the LCD – I draw some angles that match the violin :)

This was starting to look perfect. I fired up Google Sketch Pad – and came up with this drawing:

This very nice render really got me going. I needed to build it for real!
Here’s how it may look in the end (a ‘skillful’ combination of Gimp and MS Paint :D ):

Now since everything looks sweet – off I was to the plywood shop where I got the wood cut and some nice sides for visual contrast. I have choose Wenge color (all my furniture looks similar):

The bad thing is that the guys didn’t want to also cut the angles (22.5 degrees and 45 degrees) as they don’t want their master wood cutting device decalibrated :( . Oh well… still, I bought the plywood – and I have to really find somebody to to cut the angles properly! As you can see below, my hand cutting mastery is not impressive:

Anyway, please check back soon for an update :) I found an angle wood cutter device, but costs around 250euros and I’m not willing to pay that much just to own it. Still looking for a shop where to get it done. Meanwhile, I’ve also bought some decor for the upcoming shelf:

What do you think :) ?

Updates are available:

Part 2: http://hex.ro/wp/blog/violin-shaped-plywood-shelf-part-2/

Part 3: http://hex.ro/wp/blog/violin-shaped-plywood-shelf-part-3/

Acer AS3410-723G / Celeron 723

I’ve just benchmarked the Celeron 723 CPU (1.2Ghz , 800 MHz FSB).

Here are SuperPI results for 2M digits (power settings = high performance; nothing else running in the background but HW Monitor):

SuperPI results for Celeron 723

The CPU temperature never went above 45C:

Celeron 723 HW Monitor

I am happy with the purchase (got a discount at El Corte Ingles, ended up paying only 335 euros). I’ve fiddled for a few days with a standard Atom netbook: Packard Bell dot ZG6; it was nice, however, no Adobe Flash for HD movies (it did work but 1 frame/sec).

The price I payed puts this laptop into the netbooks range of Atom @ 1.6Ghz, 1Gb RAM, 160Gb hard drive, Intel 945 on 1024×600 – but is much responsive with 3Gb RAM, 250Gb hard drive and Intel 4500 MHD on 1366×768.

Not to mention the CPU which is now able to run Adobe Flash movies in 720p in the browser.

I also like the design: on all other laptops I saw, I had to remember -more or less- the location of USB ports or at least I had to look every time on the side of the laptop. On this model there are symbols drawn on the top part of the laptop, just above the ports themselves. Never miss the slot again!

Windows Experience Index is 2.8 (CPU is the limiting factor here – click to enlarge):

Acer AS3410 Windows Experience Index Score

The HDMI output is a bonus. I feel a bit bad with a single core CPU, but on the other han, if it does the single job better than 2 core CPU (Atom) [I'm referring to Flash Player of 720p videos on Youtube], then it’s OK. I’m coming from E8500, Q9000 so I can’t have too many words about this one – it doesn’t heat up and does the stuff I need it to do.

Last, hdtach (ran in compatibility mode) results:

Acer As3410 Hdtach Score

PS: Operating system: Windows 7 Home Premium, 64 bit.

One drawback I’ve noted so far: The Caps Lock key doesn’t turn on any light indicator.