Thursday, December 5, 2013

Sony SmartWatch 2 first impressions: a good gift!

Two days ago was my birthday so I've received a great gift from my sweetie, a Sony SmartWatch 2.
I'm very very happy because that was just what I was looking for in terms of wearable gadgets.
I've read a lot of posts in blogs and forums saying that this kind of gadgets are useless. I don't agree.

In two days of usage I never missed an event sent to my phone (and of course to my smartwatch).Just to make some example, during the day I receive a lot of mail and messages so when I'm driving is not so good to take the smartphone and tap on the screen (often locked and turned off) just to see a preview and who wrote to me.
Again, I've skype always online and often I've missed important messages just because I had the smartphone in my pocket.
Another example is Twitter... it's very simple to be up-to-date when you have a smartwatch that notifies you for new (interesting) tweets.
Often you leave your phone in charge... well with a SmartWatch you have all notifications under your eyes even when you are not so close to your phone.

Another thing that I found useful is that you can put your phone in silent mode and enable just the vibration on your smartwatch. In this way, if someone call you in the middle of the night or very early in the moring no one will be annoyed by the phone ring.

These are just few examples about usefulness of a SmartWatch.

I installed a lot of applications and all is running fine. Sometimes some application hangs because I'm out of bluetooth range, but it's normal for this kind of smartwatches.

This is my list of "must-have" apps if you buy a Sony Smartwatch 2:




These are only 10 apps... there are a lot of smart extensions in the Google Play Store! Just search for "smart extension".

The performance of the Sony SmartWatch 2 are good and the battery lasts enough and this is very important... at the end, it's always a watch!

The transflective screen let you see the time even under direct sunlight.

So, I'm happy to be a SW2 owner :-)

Do you want to do a special gift for a hi-tech person owner of an ( Android ) smartphone? Give him/her a smartwatch!

Wednesday, November 20, 2013

RaspberryPi: few dollars to go back in time

Dynamite Dux on Raspberry Pi using PiMame / mame4all
I don't know how much money I spent in arcade machine videogames. How many coins I've inserted in the hole just to have a bit of fun. Was 80's and each boy/girl (even if just a kid) wanted to play with that fantastic machine. And so, Double Dragon, Bubble Bobble, Dynamite Dux, World Cup 90, Golden Axe and many other titles have made the history of ( public arcade machine ) videogames.

Now, just for fun, I've transformed my little Raspberry Pi in a MAME (Multiple Arcade Machine Emulator) console and I've gone back in time in the end of 80's when I was 10 years old.

What you need are just few things:
  • A Raspberry Pi (model B) (you can find it for less than 40 euros on Element14 website ( here )
  • A miniUSB to USB cable (same as the one you use to charge your phone)
  • An HDMI cable to connect to TV/Monitor
  • A monitor or a TV with an HDMI input (or if you want you can connect your Pi to the TV A/V input using the "yellow" connector on your RaspberryPI and of course connecting the audio output of Raspberry to White/Red input audio connectors of your TV)
  • An SD memory card (I've used a 8GB SD)
  • PiMame linux distribution image (you can find it here )
  • An ( USB ) SD card reader to write OS image to the SD
  • A software to write your image on SD card (for Windows I used Win32DiskImager )
  • An USB keyboard to setup your Raspberry
  • At least one (I've two) USB Joypad for PC (mine are very cheap and are working very well)
  • An ethernet cable to connect your Raspberry to your network when you need to upload new roms
There are a lot of guides showing how to setup your Raspberry PI.

I can tell you that is very simple and it just works.

So the main steps to setup your Raspberry are the following:
  • Download latest PiMame image and Win32DiskImager software
  • Unzip the PiMame image (you will find a .img file)
  • Insert your SD card in the card reader and format it using FAT32
  • Launch Win32DiskImager and select the SD card drive letter (check it double because you can do a disaster selecting the wrong drive letter!!! Be aware!!)
  • Click on "Write" and wait Win32DiskImager to complete
  • Eject the SD using safe ejection (in order to properly unmount the drive)
  • Put the SD in your Raspberry Pi, connect all the necessary wires (HDMI, USB Keyboard, at least one Joypad, power adapter)
  • Plug the power adapter in your wall plug

RaspberryPi with PiMame up&running
To put your favorite roms on PiMame just use your browser and connect to the IP of the raspberry, you should see the web interface of PiMame. Login using "pi" as username and "raspberry" as password. Once logged in, use the roms uploader to upload your files. 
Remember to put the roms in the appropriate directory (for example I'm using "mame4all" so I've uploaded my roms in "roms" directory of mame4all emulator).

If you have a lot of roms to upload you can use even an FTP client (like FileZilla for example) to upload all the roms rapidly. 

The system is now "up&running" but if you want to start immediately with your MAME emulator when you turn one the RaspberryPi, without having to choose the emulator using the initial menu, you can edit your ".profile" file in "pi" user's home directory. You will find the last line like this:

"python /home/pi/pimame_files/menu.py"

just replace this with

"/home/pi/emulators/mame4all-pi/mame"

The last step is to configure properly your joypad(s) to work with MAME without the need of a keyboard. So, reboot the RaspberryPi and start "mame4all" emulator. Launch a game and press TAB key on your keyboard. Select "Input (global)" and setup key bindings for your joypad. Remember to choose the "exit game" button to have the possibility to change game when your keyboard is not present. It's the function mapped with the keyboard's "Esc" key. You should replace it with one of the (unused) buttons of your joypad. Remember to map the "menu" key too… it is important to edit MAME preferences without a keyboard.

So you have to map all the buttons required to play (directions, 1-2-3-4 buttons, player coin insertion button, start button, menu button and exit button).

If you have done all the above steps, you are done and your Raspberry is now a Mame console.

I got it work and my children was happy to play with it… for me was a pleasure to see that older games were so appreciated by today's kids.
I'm now planning to build my special ( real ) arcade machine using wood, plexyglass and some cheap components (such as arcade buttons, arcade ballsticks, some older LCD display, etc.).

A jump in the past!

Wednesday, November 13, 2013

Five things that really matter when you are looking for a (new)(IT) #job


There is time when you feel so good in your position and in your workplace that you completely forget to take time and look around you. But... hey! there is always a better opportunity out there and is just waiting to be grabbed!

So, how can you evaluate if a job opportunity is really good or not? Which are the parameters that you must analyze before shake the hands and sign your new contract?

Over 13 years in my work-life, I've learned that not all opportunities have to be called so. Sometimes you look at the salary, you look at career, but this is not enough, especially in the IT world.

In this post I want to share with you my five parameters (in order of importance) that I consider the most important things when I'm looking for a new job.

1) Work environment
The most important thing it the work environment. You will spend most of your life time in the office, with your colleagues. This should be your second home. You have to feel like at home, with friends that shares with you common things. Ok ok... you cannot be friend of all, but listen to me, if you have a problem, resolve it immediately before it become too big and too complex to be resolved rapidly.
I like work environments where there is no "ice" between people, a workplace flexible and dynamic where the day is productive and funny at the same time.

2) Role
What I will do for the company if I get hired? This question is very important because you have to know which kind of work you will do and what results the company is expecting to achieve with your hire. Often, when you look at a job offer, the section in which is described what the candidate will do once hired is skipped maintaining focus on required skills and expertise only. DON'T SKIP IT! READ CAREFULLY WHAT WILL BE YOUR WORK ONCE HIRED!!
During interview, always ask about the position, what will be your responsibility and what not. Don't be scared, an interview is just a conversation.

3) Technologies & devices
I love my work, really! Technology is my work, my passion and my hobby. I evaluate the technologies used in the company. Which kind of projects, products and services the company is providing to customers. But not only technologies... I love smartphones, laptops and all that is digital... so it's important for me to know which kind of hardware equipment the company will give to me to let me do a better and faster work. I want to know if will have access to some service or subscription (i.e. MSDN subscriptions or online book reading service for documentation). In other words, I want to know if the company has the same passion for technology as me.

4) Wage and other benefits
Of course, if you do a job, you have to get paid for this. It's only my fourth parameter because you can't work well if the previous parameters are not good enough. You can get a very well paid job, but money are nothing compared to your life and your serenity. BTW the salary must satisfy your expectation and if you think that is not enough for the requested role and responsibility then you have to say "no" to the new employer. Take care to consider even other benefits such as health insurance, access to the gym and a lot of other benefits that employer can offer to you.

5) General company profile
My last parameter is the overall profile of the company. All data can be often retrieved visiting the company website or company profile on social network such as LinkedIn, Facebook, Twitter and so on.

When you read it (and you MUST read it), you have to be immediately attracted. This is just like "love at first sight".

So many things can be found in company profile. For example company clients, company size in terms of employees, news about projects and products, awards, certifications, etc.

This is important for three main reasons:
If you are not attracted by the company profile, you will not be so excited to work in and your interview will show some doubt about real intention to get hired
Let you know if your experience can really be an added value for the company and if your skills will be well utilized and well valorized.
You can analyze some aspect of the company that let you imagine and evaluate the company quality, stability and solidity (remember that you need the company at the same way the company needs you)


These are my five "most important" parameters that I evaluate when I look at a job offer.
Of course this is only my opinion… there are other aspects that are not covered in this post but, for me, are less important that the above five.


Friday, October 11, 2013

iPhone 5S and the BSOD (Blue Screen Of Death)

Time ago, I bought my first Apple MacBook Pro. To buy it I went in two or three shops and one of these was a Mediaworld store (Media Market group). In the store there was a man, with a black t-shirt and a big bitten apple drawn on the back side. This man was talking about Apple products to a couple which were very interested to buy a laptop.

He done a little comparison between Apple products and "the others", saying that just because Apple is the manufacturer of the hardware, producer of the operating system and producer of the applications running on a Mac, everything works without any issue.

Now there is iPhone 5S, with his brand new operating system iOS 7.0.2 and the iWork suite, all produced (or designed) by Apple. But take a look at the video below and see yourself what happens. BSOD (Blue Screen Of Death) comes out even on an iPhone!

So, my "bitten apple" friend, don't talk about things you don't know and please  limit yourself to speak about the quality of Apple product without addressing other things about other products.




Software is made by humans, and humans are not perfect, so software too can't be perfect.

Saturday, August 3, 2013

My brand new MacBook Pro

I'm not an Apple fan because of their obstinancy to keep thing closed and proprietary.  Since two years I'm developing multi-platform mobile applications for my main client and until now I've used an "hackintosh" installed on my "old" laptop, an HP 8710w that worked very well and had an high resolution display, full hd, 1920x1200. But was time to get a real Mac because development things were becoming hard.

So I've decided, after a long long long thinking period, to buy a Mac. I've chosen a MacBook Pro, with retina display 2560x1600 and 13.3 inch of diagonal. Added to this I bought a second 27 inch display by Acer to connect to my brand new Mac and I've put it next to the first 27 inch display that is connected to my desktop PC running Microsoft Windows.

After some day that I'm using this Mac, I've to admit that is a very good machine. I've found one (hardware) issue only about the cooling fan. When all is quiet I can hear a loud noise coming from the right fan. Apart from that I'm surprised about solidity of this machine and overall of it's performance.

The main thing is its display that looks better than every display I've seen before.

The only thing that is not good is the price... € 1.529,00 for an Intel i5 with 8gb of ram and an 128GB SSD seems too much to me... but Apple machine, Apple rules.

I can conclude that I'm satisfied about this computer and how it work.

Wednesday, July 31, 2013

Windows 8: PS/2 keyboard and mouse are not working

Last night I've recovered an old KVM switch that I had in a box. I wanted to connect my brand new MacBook Pro to my keyboard and mouse that I'm already using to control my desktop PC. When both pc's are on I generally use a software KM switch named ShareMouse. But when the desktop PC is off i need a way to rapidly switch the keyboard and mouse to control the MacBook which is also connected to second 27 inch screen.

So, I've connected the KVM switch to MacBook using an PS/2toUSB adapter and all went fine. Then I decided to switch on desktop PC that is running Microsoft Windows 8 in order to check that everything works as expected... but I found a bad surprise. The KVM switch is very old and has only PS/2 connectors so I've connected it to the standard PS/2 ports of my motherboard but Windows 8 was not recognizing it. So I've rebooted and entered to BIOS management just to see if the KVM switch was the problem. But in the BIOS the keyboard functioned perfectly.

Well, the problem was Windows ( ah! ) and I discovered, thanks to this answer in the Microsoft Community, that Windows 8 disables the PS/2 keyboards and mouse (or simply the ports) when only a USB keyboard is connected.

In order to get things restored, you have to manually edit the registry changing a key (obviously using another keyboard and mouse!! :) ) in order to re-enable the PS/2 ports service.

The key to edit is "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt" and the value of the property "StartValue" must be set to "1" (hex). Once done, connect your PS/2 stuff and reboot and all should work properly.

Hope this help.

Friday, June 7, 2013

The night is made to code

I don't know why, but the night is made to code.

When you are in front of your keyboard, in the middle of the night, a low powered music in background with Massive Attack... all people are sleeping now, but you are at work!

Is something like working in relax, without pressure or confusion... no mails will arrive for the next eight hours.

Your productivity is boosted up to 200%, your concentration is completely dedicated to the objective. This is the best way to work!

You have time even to write a post in your blog just to make a pause ;-)

I think that all companies should change their way to organize and control employees.

Build your company with all professionals and let them to organize their work in autonomy, even with nightly work.

Anyway, thanks to the moon to rise up at the end of each day!

Monday, May 27, 2013

W3School HTML5 certification

Today I've obtained a new certification.
I've passed the certification test for HTML5 of W3School with 97% of correct answers.

The test was not difficult to pass and the questions were very clear. You will have 70 minutes to answer to 70 questions.

The price is $ 95,- ( about 74 € ) and I was able to pay even with PayPal.

I have taken this certification because I think HTML5 will be the most used UI programming language for the next five years (and maybe longer).

HTML5 introduces a lot of changes and evolutions allowing developers to develop rich client side applications without the needs of external plugins.

Many digital devices manifacturers are interested in HTML5/Javascript native development and big companies like Samsung and Intel are interested, for example, to  Tizen that allows you to develop device applications with HTML5. There are rumors telling that a Samsung GT-i8800 smartphone with Tizen OS onboard is under development and should be released ( maybe ) before the end of the year.

The future is now.

Friday, May 17, 2013

When the net was... the NET


Today i went back on time. I downloaded an IRC client (mIRC) and joined some server / channels on a irc network. I don't know why but I felt like when I was 16 years old. The charm of anonymity, the clear font of mIRC, talk with people that you don't know... this was the net! All us wanted to remain anonymous, but wanted to share our ideas and pass an evening (and often an entire night) talking about everything. No one was judged because of estetic aspect or the social position.

After this Facebook arrived with all the rest of social networks, full of pictures, videos, games, and so many stupid things and the net was transformed in a very big television where everyone would like to appear and the best of the net was lost.

Now, on the net, so much time is wasted to share stupid things without communicate nothing to others, without write something special, something that you have thought and not just something that someone has thought just to let you "click-and-share".

Now, all chats are restricted to known people, friends that you already have in the "real life". Friends that often thinks like you. So, there is no way to grow in this kind of net.

An exception can be Twitter just because you can use hashtags to share your ideas... but is not comparable to IRC... ;-)

Maybe I'm a little nostalgic but I think that compare ourself with others is the best way to build our character and when IRC channels was full of people the net was better than now!

Sunday, April 28, 2013

How much is it hard to think abstract?


Since 2000 I worked as a developer for several companies, and let me tell you that I've seen almost everything that was to see, starting from complete absence of logical skills to end up with developers that were called in that way just because were able to turn on and turn off a computer.

In these years the information technology world is grown very fast and the software abstraction became the key of the software development industry, but not for Italy.

Many "developers" here are not able to abstract any concept and all time they focus on the current aspect of the problem. Each day I fight against this kind of way to work, each day I need to explain what kind of mental approach should be used when you are doing software analisys and while you are modeling the real world.

Since I started to work in ICT sector, I've found few people that was able to analize and project with a good level of abstraction and a strong problem solving ability. The 90% of people I worked with, were not able to understand rapidly when the complexity of the software was reaching the necessity of an heavy abstraction.

Thanks to God I've found a coworker that it's very smart and is able to abstract very well and between us there is a "telepathy" that should be the normality in the ICT work environment.

I don't know how the ICT will grow in Italy, but I know that if we continue to call "developer" people that are not able to think abstract we'll not go so far away.

So, think abstract, think agile!

Friday, February 22, 2013

NHibernate: Unable to cast object of type 'System.Object' to type 'System.String'


I'm developing an application that uses NHibernate as data framework.

I've found a bug (I think so) in NHibernate that generates the following InvalidCastException when you try to save an istance of an entity.

[InvalidCastException] Unable to cast object of type 'System.Object' to type 'System.String'.
   at NHibernate.Type.AbstractStringType.ToString(Object val)
   at NHibernate.Type.NullableType.ToLoggableString(Object value, ISessionFactoryImplementor factory)
   at NHibernate.Impl.Printer.ToString(Object entity, EntityMode entityMode)
   at NHibernate.Impl.Printer.ToString(IEnumerator enumerator, EntityMode entityMode)
   at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event)
   at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
   at NHibernate.Impl.SessionImpl.Flush()
   at Castle.Facilities.NHibernateIntegration.SessionDelegate.Flush()
...

I banged my head on this issue for hours and finally I've found a workaround.

NHibernate uses log4net as logging library, so in my log4net configuration I had the priority set to "DEBUG" in my <root> configuration:

    <root>
      <priority value="DEBUG" />
      <appender-ref ref="Default_Appender" />
    </root>

This issue occurs when NHibernate is trying to convert the instance to a "loggable string", and it does this operation when it needs to log.

So, I've set the priority to "INFO" level (as shown below) in order to avoid this type of conversion and it worked fine

    <root>
      <priority value="INFO" />
      <appender-ref ref="Default_Appender" />
    </root>


My NHibernate version is 3.2.0.4000 and log4net version is 1.2.10.0

If you are experiencing the same problem try this workaround and let me know if this work too.