2013-12-25

Product review: A portable computer for people that don't like laptops

I don't like laptops: the screen isn't big enough and is too low down to look at for long, the keyboard isn't ergonomic, the mouse pad is located in an awkward position instead of at the side and until a few years ago laptops were too weak for me.

However...

I do like portability. I like having a small computer that I can easily take with me and... connect to a full size screen, keyboard and mouse.

The solution: Intel NUC D54250WYK. A small computer with a Core i5 processor, built in HD graphics, 4 USB 3.0 ports, Giga LAN and you can choose your own storage, RAM, WAN. Cost ~400-550 USD. Windows 7 score 6.9 for CPU (without overclocking) and 6.8 for GPU (2D and 3D without overclocking).

Why this one and not one of the competitors? This mini-computer has the best specs - it comes a brand new processor (CPU/GPU) with good specs, including  the best graphics specs (well, Intel does have a few better processors, but they don't come as an option in any existing mini-computer configuration).

What parts to choose?

RAM

For compatibility and to get the best performance, you'll want SO-DIMM DDR3L-1600 RAM (maximum supported clock rate) with an extended CAS latency of 9-9-9-24 (minimum available latency).

I chose Corsair CMSX16GX3M2B1600C9, because it was the cheapest available with these specs and consists of two 8GB DIMMS (16GB total) which is the maximum supported by the processor. Cost ~200 USD. Windows 7 score 7.5.

Internal Storage

Internally, you can fit a mSATA storage card into the computer. The largest SSD I found was Crucial CT480M500SSD3 which is officially 480GB and should be more enough for OS and all your installed programs. Cost ~300 USB. Windows 7 score 7.9.

Off-to-password-screen time 19sec. (Windows 7 SP1, after installing programs, pre firewall, anti-virus).

External Storage

I wanted to able to connect my existing 3.5" HDDs via either USB 3.0 to this computer or eSATA to my old computer, so I searched and found this solution which costs ~120 USD. I haven't received this yet, so no comments yet regarding how it works.

Wireless

The computer comes with an additional PCIe mini card slot and two built in antennas. The only officially supported cards are made by Intel and the only one that supports the new 802.11ac standard is Intel Dual Band Wireless AC 7260. Cost ~25-30 USD.

Keyboard

Thanks to this not having a built in keyboard, I get to use my trusty old Microsoft Natural Ergonomic Keyboard 4000. Cost ~20-40 USD. This is the top choice for programmers.

Mouse

Any mouse you have, I haven't decided on a specific one to recommend as of yet.

Google+, Google accounts, UX and Privacy

A couple of years ago I joined the Google+ trial.

I hoped the circles would solve the issue I have with Facebook - one account for all your networking instead of one site with multiple accounts, each for a different networking environment. The circles wasn't what I had hoped for, but I decided to give G+ a chance.
A few months later I noticed that anyone searching for me had visibility of my G+ contacts (I wasn't signed in when I checked this) so I removed Google+ from my account.

Around the same time, the sign in for GMail, Blogger, YouTube and etc were unified, leaving users with the necessity to sign out and then sign in when switching site, or open the different sites in different browsers.

Recently, Google play was changed to only enable rating for accounts with Google+, forcing me to open yet another account, for rating apps.

If Google would let me choose which sites to log into for which accounts and let me log in to those accounts simultaneously (there was such a trial with limited site-support a while back) and would do more to protect my privacy by default, I would remain a happy user.

2013-12-19

UX concept: Making mobile phones' more ergonomic (or mobile keyboards)

About a year and half ago I responded to a question on ux.stackexchange.com titled "How to improve the smartphone keyboard layout?" with a non-standard answer...

Don't be satisfied with a better application, instead make the keyboard more ergonomic by placing physical buttons behind the phone, thus enabling you to type with four finger while holding the phone in the same hand or to type with eight fingers while holding the phone in two hands. This prevents stress to your thumb while using it to type or gesture while holding the phone in the same hand or stress to your index finger while using it to type or gesture while holding the phone in the other hand. In addition, change the roll of the buttons dynamically depending on the orientation of the phone (portrait or landscape) and on the hand holding the phone (detectable using an optical sensor), so that the QWERTY-like layout changes according to how the phone is held, enabling each finger to access more or less the same buttons as on a regular keyboard, no matter how the phone is held.

I have recently heard of the new transparent phones. With these new phones, instead of only visualizing a keyboard on the screen and pressing on the equivalent buttons behind the phone, you could display semi-transparent keys above the application and see your fingers below these keys,
thus perhaps making the concept easier to learn for beginners, yet still enabling the alternative mode of displaying a miniature keyboard at the bottom of the screen to users that have already got a hand of the (qwerty-like) key placement behind the phone.



Update:

It seems like someone has actual made one of these:
http://edition.cnn.com/2014/01/06/tech/web/ces-unveiled/index.html

Lecture review: A truly great perspective on Software Architecture

My impressions of lectures given by Juval Lowy, Hayim Makabee and how they relate to my own experience


I had the fortune today to sit in a lecture given by Juval Lowy on Software Architecture (Zen of Architecture). This lecture was eye opening, because it showed both what is wrong with the common methods and why and how to do things right while drawing from examples from both the software domain and other domain, all in a humoristic manner including expected reactions from management.

The highlights of the lecture are do not design per requirement or per feature, instead identify the truths of the domain, what is constant, what will change and design a solution that is open to changes that are likely to happen while closed to changes that are irrelevant.

This lecture also reminds me of a lecture I've been to in the past by Hayim Makabee (Adaptable Design Up Front), which also discussed the open/closed design principle and the quantity of design necessary up front.

Both Lowy and Makabee give advise for how to identify points for change and see the wider requirements. Lowy's advise included identifying the age-old truths, that are not likely to change vs. the latest trends that are likely to change and to look at the business' competitors as test cases for your design, as if the design can't easily be adapted to work for them, then it isn't flexible enough. Lowy also added that practicing these principles on both past and present and even non-software related problems can help you master this skill. Makabee's advise included looking not at the product you need to design, but instead at the product line to which this product belongs when designing the architecture.

Will these approaches make the architecture process take longer? Probably. Will these approaches make the implementation take longer? No, since you do not need to implement all the options at once, or usually at all, until they are needed. Will these approaches enable your architecture adapt to changes and enable the implementation to accommodate to changes rapidly? Yes. If your architecture is designed to accept changes, then the implementation of changes should be local and not system wide.

From my own experience, do these approaches hold out in the real world? Yes. While my experience is definitely not be as vast as Lowy's, all of the architectures I designed or have seen that took into account both what the product should do and what similar products do and probably will need to do ended up adapting quickly to the vast changes in requirements, enabling both high reuse and rapid replacement of components with new components when the current requirements justified a replacement. Whereas, all the products I have been involved in or have seen that assumed a set reality that was set by current requirements and not the truth of the domain ended up either being completely replaced after they failed to be changed to keep up with the changing reality or ended up crippling the business, if management refused to commit to their replacement.

I highly recommend you attend the lecture "Zen of Architecture" if possible, as it can provide you with a toolset for analyzing the domain and coming up with a good architecture.