2013-02-07

Heath Points of Hewlett Packard and the Review of HP Envy dv6

Most of my friends are somewhat IT related,  and most of them have horrible opinion when it comes to HP. This is due to the fact that most of them know at least few friends that owned or they owned themselves HP laptop and it broke in horrible ways.
For starters friend of mine had HP laptop that constantly overheated so he had to remove bottom cover for HDD/RAM/WiFi and carry around something to lift the bottom so the laptop would get air to cool itself. His girlfriend had HP laptop and it's graphics card was repaired few times by warranty and died because of the same reason. My other friend had HP laptop, it corpus around the hinges broke in half a year. My mother had laptop for work that was painfully slow. I probably could name few more, but you get the point. Horror stories are all around.
So it happened that I was planing to buy ASUS laptop that I was looking at for a very long time, but on the last moment shit went down and I had to buy anything that works if possible - as cheap as possible. Sure I wanted something that could work with some 3D graphics and wouldn't lag on OS itself, maybe play some games, so bare with me it was not the cheapest laptop. But I got it with discount as well as 3 year warranty.
So in the end I let myself for and adventure buying HP Envy dv6.

The Horror

The unboxing was not pleasant. When I powered on the computer - I've noticed that only English power plug is added. I do believe it's a fault of seller not manufacturer. It was just a step "O.K. Here we go...". Around the screen there was protectors from fingerprints. All around the damn unit including on hinges where it's really hard to remove. There was also one on the grill bellow the monitor (purely decorative I believe). Those are made of plastic and left side is 0.5 mm too long (right side is stuck perfectly) so it just slightly out of the in-cut for it. Also on the left side there was this bit that does not stick and helps you to remove the protector. I've started pulling on that and the whole grill started to come off. At this point I was thinking how/when I'll return the unit.

Surprise, Surprise 

When turned on everything went smoothly. Windows 8 activation (about Windows 8 - it will be another topic), UEFI disabling, Ubuntu installation besides Windows 8... Maybe too smoothly. It was one of the easiest laptop setups I've done. I was especially surprised when I turned on Ubuntu. Everything works. Sure the Laptop comes with nVidia geforce gt 630M - this means Optimus Prime stomping on your dual screen... But to my surprise VGA connector is not bound to the nVidia. Dual screen true VGA works fine. The only downsides are that brightness changing takes big steps so it's not as smooth as in Windows, but hey - in last laptop (emachines) the back-light was completely not working and would light only when direct command would be sent out.
To install Ubuntu along side Windows 8 just follow this guide - http://askubuntu.com/a/228069/8825

What I don't Like

  • The screen. It's same old 1366x768. I do agree with Linus on this topic and I believe 1080p should be the smallest standard. It's one of the better screens on this resolution, but just because it's not 1080p - I hate it.
  • Around the monitor there is a rubber protector that sticks our something like 1 mm. It feels when touched horrible, but to the eye, it is not as bad as it sounds.
  • Indicators. Well more lack of them. There is WiFi indicator on WiFi/F12 button. There is CapsLock indicator on CapsLock. There is power indicator on power button as well on back of the lid (illuminated HP logo). Aaaand thats it. FFS at least they could have put NumLock indicator. Also there is no HDD indicator witch means you will not be able to know if your computer is counting sheep or hard at work with HDD.
  • WiFi and Bluetooth is a combo card, witch means you cannot turn off one without other. This means that I have always running hidden bluetooth.

Things I like

  • Sound. It comes with Beats Audio (tm) and supposedly has subwoofer on the bottom. Hard to say if it contributes that much, but I can listen music without headphones on this one.
  • Insides. Intel i7, nVidia geforce GT 630M, 8 Gigs of RAM, 1TB HDD makes quite a show. The only things that I would like to change is bit faster HDD since this one is 5200 RPM. Also since I already had 16 Gigs of 1600 Mhz CL 10 RAM - I changed those, but the ones that come are decent enough.
  • When changing RAM I've noticed that everything is accessible removing single panel and that panel is hold by single screw. No warranty stickers on it ether, so you can upgrade your laptop without a fuss. 

Things that are "Meh"

  • Keyboard. It's comfortable - old apple style keyboard, but there is small gap between the spacing and the keys so stuff can go under the keys. It might be hard to clean.

Back to HP

So all in all I had quite uncomfortable start, but after that it exceeded my expectations. My brother right now has HP ProBook as well. He's working with quite demanding software and it handles it well. No breaking, not scratches, no heating. Nothing. Also I gave him my stock RAM's (8 Gigs) and holy fuck. This is how you change ProBook RAM:


No screws. Why the hell not every laptop is this way?! Take a note that it also opens up fan for easy cleaning. This is just perfect...
So all in all it went better than expected. Well see how it will last. I'll post updates if something happens.

2013-01-30

Quick Bits #2 - Terminal tutoring

Recently I've commented this on one of the G+ threads, so decided to put it on the paper internet. There is these tools - terminal multiplexers. Most commonly known is Screen. Another, a lot younger one is Tmux, oh there is also wrapper for these called Byobu for Ubuntu, but that's a little bit off topic. They share a lot in common, and have some differences as well. Best comparison is here - https://www.wikivs.com/wiki/Screen_vs_tmux.
In short - these programs allows to run multiple terminals in single session, allows to leave it running and continue latter on. If you're doing a lot of work via ssh, most probably you already use one of such multiplexers.
One of great features is session sharing (both of them have it). Session sharing will allow to multiple users enter text/commands and view same outputs and inputs. At least in screen (not sure on tmux yet) there is a problem - when you share a session, and it contains multiple terminal instances - all connected users needs to switch to that terminal manually. So the easiest solution is to run screen within a screen (no screenception pun intended) or mix screen and tmux, whatever works, personally I like mixing screen and tmux since by default they use different keys ^a and ^b... In such case only the bottom layer  (first screen/tmux) will need to share the session while top layer (second one) will just display output for all users, meaning that if one will switch terminal it will be switched for all. So far it seems to me to be the best way to introduce to code/configs and terminal based tools.

To share screen session (what I personally used) - http://serverfault.com/questions/336594/share-screen-session-with-users-in-the-same-group-linux
For Tmux - http://readystate4.com/2011/01/02/sharing-remote-terminal-session-between-two-users-with-tmux/

2012-12-13

Quick Bits #1 - Nginx proxy

I've been developing social games for over a year now for most of the time I had simply open ports to my laptop at office. Also our office has domain. So inside of social apps I have set iframe url as myofficedomain.com:<myport>. This is convenient only when working inside office. Sometimes shit happens and you have to help/work from home and if you want to load the same app within laptop on different network - you're shit out of luck. You have to get outgoing domain for that, network you're in might require port-forwarding that cannot be changed and so on. So I found the easiest solution for that is to setup proxy to witch you could ssh from any machine and use it as gateway for your social apps.

This brings few good things. You don't need port (for example new vk.com payment system disallows to use links with ports in payment system). You don't need change iframe urls within apps since sometimes that can become annoying since it might require confirmation true emal or even worse - phone, also sometimes these notifications lags quite a bit and it's dead time waiting.

So all you need to do is to get a server that has your soon-to-be-proxy domain pointing to it and Nginx installed in it.

You need to setup Nginx vhost as displayed:
server {
    listen 80;
    server_name myawesomeproxydomain.com;

    location / {
        proxy_pass        http://127.0.0.1:5000;
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
This will proxy all requests that will come to your domain to localhost:5000

Sure on the server nothing runs on localhost:5000 (sure you can change the port) so we need now to setup proxy from your machine to the server. It's simple as connecting to the server. SSH has -R attribute that will setup reverse proxy. Or as manual writes:
     -R [bind_address:]port:host:hostport
             Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.  This works by allocating a socket to listen to port on the remote side, and whenever a connection is made to this port, the
             connection is forwarded over the secure channel, and a connection is made to host port hostport from the local machine.

             Port forwardings can also be specified in the configuration file.  Privileged ports can be forwarded only when logging in as root on the remote machine.  IPv6 addresses can be specified by enclosing the address in square braces.

             By default, the listening socket on the server will be bound to the loopback interface only.  This may be overridden by specifying a bind_address.  An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all
             interfaces.  Specifying a remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).

             If the port argument is ‘0’, the listen port will be dynamically allocated on the server and reported to the client at run time.  When used together with -O forward the allocated port will be printed to the standard output.
So it's as easy as opening SSH connection with such command line:
ssh -R 127.0.0.1:5000:127.0.0.1:8000 proxyuser@yourawesomeserver.com
So if you run your project in localhost:8000 it will receive everything that comes to proxy domain.

Another good thing to do here is to increase life time of a SSH session. This can be done on both sides - server and your local machine. I suggest to do it on your local machine. Simply edit /etc/ssh/ssh_config if you're in Linux and add ServerAliveInterval 60 this will send each 60 seconds a packet to the server to mention that the user is still around.

SSH session fix is taken from here: http://ocaoimh.ie/2008/12/10/how-to-fix-ssh-timeout-problems/

2012-10-24

Flask With Green Pony. Part #1 - Putting Damn Pony into the Cage.

So I figured to share some evening battle stories. Maybe it will help someone while fighting against their own demons and zombies via Google jails.

TL;DR - scroll to the bottom.

Right now I'm fighting Gunicorn - a green nifty WSGY server. It's not the best. But I like it. Buzz off.
The situation is this. I'm developing quite big flask app. The reasons that made me choose flask over others was that I'm for sure going to use SQLAlchemy and flask has some nifty plugins. For me Django without it's ORM seems bit pointless. So I figured to take something smaller and build on top of it.

One of my friends always says how he's used to start big and just remove stuff he don't need. As I saw him using snippets that was exactly what he did. Vim combo results in huge snippet and then a third of that is deleted. I have quite opposite plan of actions. Start small, but clean and then build up. Sure I see advantage in his approach that you don't need to remember/find that much stuff. Anyways. Flask.

Flask has some issues. Devs loves to put everything in single file. That pisses me off. I like hierarchical clean structures. Also Flask just adores global variables. I would suggest to find a room for those two [flask and global variables], but hey who I am to judge?

So the idea is that I have Flask app that is developed by my standards meaning that there is startup scripts, management commands, soon to be plug-in modules, clean settings for app. Yeah. More or less lighter Django with more litter in the code. But it's MINE. Buzz off.

So challenge is to run my fat-ass Flask app with gunicorn. What Flask docs has to offer?

http://flask.pocoo.org/docs/deploying/wsgi-standalone/#gunicorn

myproject:app? that's what?.. Method? setup.py has possibility to add global console scripts (terminal global scrips per say) that uses package:method declaration. But this does not work in my case if I give it main method. I wish... So what Google has to offer?

http://www.capsunlock.net/2011/04/running-flask-with-gunicorn.html
http://community.webfaction.com/questions/7229/nginxgunicornflask-setup
http://samrat.me/blog/2012/05/flask-nginx-gunicornon-a-vagrant-box/
http://wirtel.be/posts/en/2011/02/24/nginx_gunicorn_flask/

So it expects global variable once again. Great. But then again what's the point of it? I don't want to always run my app with $ gunicorn <stupid_miles_long_path>/main:app <crap-ton of properties>
I want to make it that I just could run MyApp within terminal and give few SIMPLE arguments and everything would be fine. So I want to implement gunicorn directly to my app. Most of the internet here is useless, all you can find is how to proxy with nginx to $ gunicorn main:app

Here is the golden link:

http://damianzaremba.co.uk/2012/08/running-a-wsgi-app-via-gunicorn-from-python/

It's almost right. Few fixes - main file is not main.wsgi in most projects, it's proper *.py and there is few problems. Last line of MyCustomApplication class.

If you look at util file https://github.com/benoitc/gunicorn/blob/master/gunicorn/util.py#L275 you'll find that it tries to extract app file from string (you're giving it string - what do you expect). If you're doing this directly from app - you have everything on your finger tips - why the hell you would want to get file from same folder try to parse it's name and then fail. Yep. It leads to error of booting workers. Something similar to -
https://github.com/benoitc/gunicorn/issues/338

If you're doing everything cleanly - it will simply wont find THE app. And it's easy to fix it. Instead of calling utg.import() simply import your global variable from whatever you placed it and return THE app.

Oh also I added ProxyFix. Not sure if I need it. In most google places it was added so I would assume it's a good thing.

So here is that custom extra class. I named it Server:

from gunicorn.app.base import Application

from werkzeug.contrib.fixers import ProxyFix

from MyApp import app


class Server(Application):
    '''
    Custom Gunicorn Application
    '''

    def __init__(self, options={}):
        '''__init__ method

        Load the base config and assign some core attributes.
        '''
        self.usage = None
        self.callable = None
        self.options = options
        self.do_load_config()

    def init(self, *args):
        '''init method

        Takes our custom options from self.options and creates a config
        dict which specifies custom settings.
        '''
        cfg = {}
        for k, v in self.options.items():
            if k.lower() in self.cfg.settings and v is not None:
                cfg[k.lower()] = v
        return cfg

    def load(self):
        '''load method

        Imports our application and returns it to be run.
        '''
        app.wsgi_app = ProxyFix(app.wsgi_app)
        return app

And this is how my part of main:main looked with flask running:

def main():
    startup()

    app.secret_key = settings.SECRET
    app.run(
        host=settings.ARGS['--host'],
        port=int(settings.ARGS['--port']),
        debug=settings.DEBUG,
    )

And this is how it looks now:

def main():
    startup()

    app.secret_key = settings.SECRET
    Server({
        'bind': '%s:%s' % (settings.ARGS['--host'], settings.ARGS['--port']),
        'debug': settings.DEBUG,
        'worker_class': 'gevent',
        'workers': numCPUs() * 2 + 1,
    }).run()

Sure main has right now access to numCPUs() method and sure Server is imported. numCPUs() method can be found in previously mentioned link - http://www.capsunlock.net/2011/04/running-flask-with-gunicorn.html
Also my app uses docopt, so I just removed __doc__ string from examples here.

I still right now have some issues - it seems gunicorn ignores my debug option. Demonizer suicides. But that's for another evening.

Over and out.

2012-09-09

Asus EEE X101CH Review


For quite I while I have to fix, update and maintain this little netbook. Although it's not mine - I've used it for quite a while and feel comfortable writing this review.

The Outside

It's meant to be cheep. Plastic only. However it means that it's light. Just a bit over 1 Kg with charger in your bag. So don't expect anything special, it's meant just to do it's job and it does it quite well.

Keyboard is surprisingly comfy. Touch pad is incorporated to plastic cover. With this one I had few problems, but about that latter on. It has full size HDMI connection, VGA, 2xUSB 2.0 LAN, Audio connections and Card Reader. That's it.

Screen is reasonable - 10.1 inch LED Backlight WSVGA (1024x600) screen. It's not glossy, colorful and sharp enough that it wouldn't strain your eyes.

All in all - it's good enough that it wouldn't bother you.

The Inside

This one is a bit tricky. Sure it has standard Intel Atom N2600 Dual Core processor and a gigabyte of RAM. 320Gb HDD, 0.3 Mp front camera, single (quite bad) speaker,  WLAN, Bluetooth... Nothing special until you touch operating system... Here goes my rant...

It is suggested to be used with Windows 7. What a load of bullshit that is. First touch pad drivers... Non of both types of drivers provided by Asus does not work and it's better to leave it as is after installing Windows. One of those makes touch-pad unusable other simply does nothing. Great.

Secondly it has only a gig of RAM, immedeatly at least half of it is occupied by Windows. So if you want to write a document while opening 3 or so tabs of chrome while listening for music in the meantime - you gonna have a bad time... You cannot upgrade RAM since it's stuck right to the motherboard and does not have SO-DIMM.

I'm not sure ether it's fault of Windows since it does not have swap space and tendency to ran out of memory or ether it's problem with overheating, but netbook tends to freeze up from time to time (also it gets hot) when under heavier loads. It's really annoying and it's a huge problem. On this alone I would not recommend buying this one, but only if you cannot live without windows.

Yep. Linux to the rescue! Linux did had a problem with this laptop since Linux did not sported Intel GMA 3600 graphics (this netbook Intel Atom uses these). So you got 800x600 resolution only, or something similarly small, but since release of Linux Kernel 3.4.2 it works fine. So newest batch of Linux distributions will work better and better with this laptop. Currently I've installed Ubuntu 12.04 and 3.4.2 Linux Kernel and it works fine. Sure Battery wont hold as long, brightness settings does not work yet as well, YouTube video lags a bit too (from time to time), but hey, at least it does not freeze up for a minute once per 5 minutes and can multitask. Ubuntu 12.10 already contains this Kernel update as far as I know, so there wont be any need for addition fiddling with Linux Kernels very soon. Also running Linux makes it faster and more responsive. And no more - "you [pathetic human being] need TouchPad Drivers" popups again!

All in All

It's small little netbook, probably will be on sale for very low price in official retailer shops since Asus is killing eee netbook series due to tablet invasion for small portable devices. If you do need something like that and you're comfortable with Linux I would really suggest grabbing one just because of low price it could end up. Otherwise if you do need windows and you do need exactly netbook, I would suggest to avoid this model.

Update

So it seems that Ubuntu 12.10 will not boot at all since there is a bug that requires to blacklist that particular GMA chipset. So far the best is to run 12.04 with 3.4.2 kernel. At least that works. More info here: http://linuxrepository.blogspot.com/2012/09/how-to-install-linux-342-quantal-kernel.html

Asus Transformer Prime Revisited or Bashing The Prime

I should keep my promises... I haven't found any time to do any blogging, or I was too lazy. Who knows... Anyways this is my retaliation. As promised Asus transformer review revisited! If you haven't seen last review - look here.

The Bad


WiFi... I've mentioned that WiFi is not the strongest point of this tablet. It's still true. Range wise it's OK...ish. But the main problem with it is speed. Downloading larger files suffers from quite a speed loss. I can't tell the exact figures since it depends on place and WiFi spot, but I've ran into situations where cheap eee net-book downloads up to 4x times faster. For regular usage it's fine, just for larger files you will feel lack of speed.

Battery life is amazing. I love it. Problems appear when you ran out of battery. There is two stages of battery death. When it does not turn on, but displays an empty battery if trying. And another stage is when it does nothing at all. On first stage it takes somewhere up to 15 mins of charging time till you'll be able to turn it on. On second stage it takes up to half an hour of charging. It sometimes becomes really annoying. For example if you're not using tablet for few days or a week and just want to watch a movie in little time you got.

It's bit on the heavy side. While reading a book or playing a game it may become a bit uncomfortable. It's not a big deal but...

The Ugly

Brushed aluminium finish does look good, and I can't see any scratches on it. Fingerprints don't shine on it ether (the screen is still a magnet for them). However it gathers fat from finger prints and then dusts so that might look a bit ugly. It's still quite easy to clean it though, but it's not as easy to maintain shiny as some plastics.
OK i'm nitpicking here, but my point is that it looks really good only if it's clean therefore it requires regular cleaning of all surfaces.

Opening keyboard a bit too wide and pushing on it a bit makes a gap in the keyboard dock back side. I does not break just makes a little gap that is closed easily with little push. It's just a tiny bit annoying.

Although I was worried about audio jack connection, it turned out fine. However micro-HDMI connection turned out to be fiddly. It will loose connection from time to time if you're moving tablet. So it might not be the best option for presentations if you want to have tablet in your hands and connected via micro-HDMI. I have to point out that it won't happen randomly, so for connecting to TV and watching movies/YouTube there are no problems.

The Weird

Physical keyboard is only good in so few languages. If your native language is English or one of few supported that it's fine for you, but for me it sucks. I can't reply to the most of the emails, I get uncomfortable when using IRC or other chatting programs... The only option is to use non standard on-screen keyboard. It does work, but leaving out physical keyboard in spots where it would be most useful is a bummer to say the least. Sure I could write using only standard characters, but I feel like a retard by doing that.
It is possible to solve this issue with external apps apparently.  Also incoming Jelly Bean update might contain cure for this issue.

If I'm trying to watch a better quality movie on my TV via HDMI connection... First of all most of such movies won't be playable by default player. Sure it's a minor complain since there is so much to choose from. However most players stops playing those movies after 3-15 mins randomly. It's due to software decoders as far as I know and only few support hardware decoders well enough to be usable. So I ended up using BSPlayer. So don't rush to purchase any of the player apps and test those before buying if you need one.

Round up

These are the main bad point I've seen so far. I still think it's awesome tablet and worth it's price, just it's not as perfect as someone may portray it. Sure new model is already out there, but if you get chance to get this one for cheap, I would say it's a good deal.

2012-03-12

Asus Transformer Prime and Android ICS first impressions

I've recevied Asus Transformer Prime just few days back and these are my initial impressions. In case you thinking about buying one you probably allready saw bunch of reviews on youtube, so I'll try to sum up my afterthoughts. Display cons and pros. I hope it will help someone to decide. 

Just keep in mind that this is additional info that I trow into the wild. It is something that was unexpected for me after all those reviews I've seen and have red.


TL;DR
If you like Android - it is awesome. In other case, whatever I'll tell you - you won't care, so buzz off.

If you do have a chance - wait for next generation. Having in mind how much Prime got better compared to it's precesessor, next one should be awesome. However if you need a tablet right now - it is so far the best tablet experience I had so far. Sure I can compare only to Samsung Galaxy Tab 10.1 and iPad, but damn this one is good.


Bad

Grey color looks purple
Prime is available in two collors - silver and grey, atleast these two collors are being written on specification in shops I've looked at. Silver looks like elephant tusk (yellowish white) and grey model looks dark purple... Nowhere near grey. Not that I would care that mutch about collor, but still it would be nice to be happy about it. For now I can say my purple model is a bit ugly OK (after living with it few days).

Brushed aluminium looks like pre-scratched
Prime is also proud about it's metal "spun" finish. It looks as if someone would scratch it in circular motion, nothing special. Sure usualy you will find brushed aluminium to be done in straight lines, but the visual effect of this is just too small to be worth bragging so much about it.

Connection protectors - one time deal
Most of the connection slots are protected by soft plastic plugs that are quite hard to pull out. Also they are perfect parts to loose. So that is what I sugest you - just pull it out if you need that port and forget the plug...

Sloped edge connectors

Tablet has sloping edges that give smooth finish. It sure looks nice, but sticking in headphone jack will mean that on the shorter side of the connector - will stick out ~3-4mm in my case. It applies to most of the connectors, yet the most problematick might be jack one since with uncarefull actions you might damage both the plug annd the socket although build quality seems to be strong.

Noise when music app is paused
Sometimes when music app that uses sound channel is paused/muted I can hear noise in my headphones. It may be due to connector, but having in mind that I've used my headphones on numerous devices and this is the first one to have white-noise i'm blaming jack socket or the software.

Fingerprints
It is litteraly fingerprint maget. Although fingerprints are not that visible but they also are a bit harder to clean than from other devices (I'm talking abouth both - the screen and metal finish).

Heavy
As from tablet I would like that It would be bit lighter. Adding keyboard means the unit will weight over a kilo. 

No Linux support
Asus putted in some really nice apps for syncing, remote desktom and even streaming, yet non of those work under Linux. Pity.

Lousy mono speaker
Although Asus claims that they added stereo speakers, in reality there is only one. And after making some stereo tests it's clearly mono one, just maybe with seperated mid and low sound channels (doubt it). Also some people are angry that they putted in just where right handed people are holding tablet it self thus covering the speakers, but I think this is better decision that putting it on a side in other place (with exception of top/bottom center). Why? Covering grills disturbs the sound waves making them spread to any dirrection available so if you're not holding it firmly you might feel "stereo" effect. If you're on a dock, then it's totaly mono. On the right side only. Yup. It's like a youtube video just with right channel. After some time it becomes painfull to listen. I have to mention that quality of the speaker it self is actually good. It's just that it is mono and placement could be better.

No F row

Keyboard dock does not have F row keys. Yes Android does not need it, but if you connect to a remote machine via rdp/vnc/ssh you only will be able to access those true the screen if app will allow it. I think it would be an wesome if prime dock would have those accessible with fn+shortcut key.

Random reboots
I've witnesed few random reboots. 4 so far.

App refresh on keyboard plug/unplug
If you're whatching youtube video on full-screen or playng game, after connecting/disconnecting dock - app will be refreshed restarting the game or reloading youtube video. Annoying.

Slippery bottom
Although dock has rubber feets, it is quite slippery when opened since only front feet touches the surface and back ones are raised by hinge so pushing it from the table is not that hard. When closed it's quite steady.

Only few languages for dock
There is not a lot to say more. Samsung clearly does care a bit more that Asus about adding other keyboard layouts. And remmember that on-screen keyboard layout might be customized with additional apps while dock cannot. Atleast it is my initial impression, I hope I'm wrong.

Box contains
There were literally charger and USB to proprietary connector. Oh and a wiper. That's it. I hoped to get more gadgets by it. Mini HDMI to HDMI converter maybe? Although I must say it was known to me. Still, this is a field where they can do better.


Good
Aluminium
It is covered in cold and nice aluminium (with exception of front side of tablet). It mght be negative thing for some, but I do really love it.

No heating
Because of aluminium ability to transfer heat, even on high loads or charging, it remains cold. The only part that gets hot is the charger it self.

Screen

Every single review I've looked at commented how good the screen was yet some mentioned - "hey there are some problems with wifi, but you already know it!". Sure regarding the tablet it is one of the main features and boy oh boy it is good. Sure iPad3 now offers cosmical resolution, but i doubt if you need that much on such small screen. The only thing that would be cool is better resolution output true HDMI (maybe it does, haven't tested it yet) besides that I doubt that you would see a difference on the screen. Maybe. Anyway, screen is gorgeous. Crystal clear, bright and sharp.

Build quality
You feel that it is premium product. No squeeking, no wobling... Apple once was famous because of quality. This goes on the same road.

Keyboard/dock advantage
Keyboard is as in the regullar notebook, reminds me Apple MacBook. Personally - quite comfortable having in mind that I'm holding it on my knees. Sure after long time of typing your hands might start to hurt, but it a common problem with all the notebooks.

CPU power

As with all Androids from time to time you will ran into rare studdering, but besides that it is the soothest expirience so far even with quite a few apps running.

Sound true headphones
Although speaker on the tabled is a shame - sound comming true headphones is astounding. I haven't got a portable device with such hight quality in years. Besides that bug of noise on paused songs, there are no white-noise in the background while playing and music is crisp and ritch. I know that it is my new favorite device for music listening.

1080p playback


Default video played does not understand all the types of videos, but MX player does understand quite a lot of them. Also VLC is coming to town... And if Prime understands the codecs - it can playback 1080p. Great!

Battery life
That is another ace of prime. Dock contains another battery extending battery life. So far I unloaded doc's battery within 6-7 hours so I don't know yet how long tablet battery will last. Having a dock means that at most you will need to charge it once a day. At most. For me it lasted ~14 hours or so of constant usage on a single charge.

Initial app set

I own HTC Desire Z that by default contains a crap ton of apps that I don't need. Facebook, Amazon MP3 Store and so on. Also I cannot delete them and that annoys me. On this tablet on the other hand, I havent found a totaly uselless app. Maybe some news readers are not as needed but besides that there are ton of really good apps. Polaris office syncs with google docs and is perfect for Android, file manager is also really easy and nice to use. Asus really thought about what to stick in instead of trowing in what brings money.


Wifi
In quite a few reviews it mentioned wifi problems, that wifi signal is weak due to aluminium backplate. To be honest, I can't see that happening. My laptop has quite bad wifi and phone (since it is a small device) has one even worse. I hoped that this one would have atleast same strength antenna as my phone, yet it has almost as strong as my laptop, if not the same. So I really cannot say that wifi signal is that weak. Because of that many negative reviews I can say it is a good thing since I underestimated it.

Mini HDMI connection.
I'm looking forward to test it out.

Conclusion
Latter on (after a month or so) I'll try to post an update about this thus making it a proper review. I have updated only a little of this one, but I've finally have written follow-up here
Despite all that nagging with negative things so far it is worth this status: