How to use or convert Java library (PDFBox) in .NET application?

Searching with keywords “most popular programming languages 2013” in any search engine, you’ll find that Java always stays on top 3 of the list. It’s easy to understand because Java is an old programming language, open source, supports many operating systems (such as Linux, Windows…) and is able to run on many devices with slogan “Write once, run everywhere”. There is no question about position of Java or C or C++ but I just wonder how it can be, that Objective C has higher position than C#. A language for about one billion devices is more popular than a language for many billion devices around the world? It’ really weird. However it is not the topic of this post today. Back to Java, with its popularity, of course there are many great open source libraries written in Java. They are all wonderful libraries that any programmer would like to use in his product because of their numerous features and stability.

Continue reading How to use or convert Java library (PDFBox) in .NET application?

How to install Google Maps v2 in Android Emulator and use it in Intellij Idea?

Integrating Google Maps (or any map service) is always a nice feature for our applications, but it seems to be “complicated” for integrating Google Maps because Google Maps is not officially supported in emulator because lacking of Google Play Service. That forces us to use a real device during developing app. For me, not nice. So in this post, I would like to show step by step how I configure my emulator so that a Google Maps app can be installed on there. To make such an emulator, we have to use a set of correct settings/files. If not, it won’t work. So you have to set all settings like mine. My emulator targets on Android 4.2.2 – API Level 17.

Continue reading How to install Google Maps v2 in Android Emulator and use it in Intellij Idea?

How to get Android emulator working with Fiddler?

If you are trying to call web service within Android emulator, maybe you would like to see how your real HTTP request looks like and was sent to server. Of course there are a lot of ways to hook network interface such as using Wireshark, Microsoft Network Monitor,… However these tools provide low-level-interfaces with packet capturing which aren’t appropriate for TCP/IP data analyzing. Therefore, in this small blog post, I’ll summarize how to configure Fiddler so that he can capture all traffic going through Android emulator. Fiddler can parse JSON/XML format in readable form so that we can validate input/output data in HTTP request.

Continue reading How to get Android emulator working with Fiddler?

How to install Mac OS X 10.7.3 on VirtualBox?

UPDATE: For installing Yosemite on VirtualBox, you can check that link.

The market of computer applications is moving day by day from desktop to web and now is moving to smart phone and tablet. Although Android is the most popular operating system on mobile devices but last month two big customers of my company (I work there, not the boss 🙂 ) decided to use iOS for their mobile devices. That means the softwares should be ported, maintained, developed further and supported on iOS. On the market iOS is also the leader on tablet area with its Ipad series. With all of these reasons, I , a .Net/Java programmer, decide to learn programming with Objective C on iOS as my secondary skill.

Continue reading How to install Mac OS X 10.7.3 on VirtualBox?

How to change domain/site url of WordPress?

Last week I ordered new domain called hintdesk.com for my website and I would like to move my WordPress blog system completely to this new domain. You’ll find a lot of articles and instructions in internet for this problem but in this small blog, I would like to illustrate a much more simple method to do that without breaking down the current blog system. The concept can be applied for WordPress but also for any other system and is pretty performant because of taking advantage of server resources.

Continue reading How to change domain/site url of WordPress?

DropBox gives 4,5 GB for testing new feature image/video import

Dropbox is a Web-based file hosting service operated by Dropbox, Inc. that uses cloud storage to enable users to store and share files and folders with others across the Internet using file synchronization (from Wikipedia). Just drag and drop files into synchronized folders and we get files being back-up and accessed everywhere. I’ve used Dropbox for a long time and I find it’s pretty good except that the storage is small. It’s only about 2.5 GB after registration. If we want more, we have to advertise Dropbox to our friends. You know that I’m so lazy that I never introduce it to my friends. Therefore I had only 2 GB available but I stop now my complainment and go back to hot news (it’s not too hot. It’s already some days ago).

I’ll discuss usual ways to get more space of Dropbox at the end but now Dropbox has a campaign for testing its new feature of image/video importing. In this campaign you can get up to 5 GB free space more for testing. Just follow these steps:

0. If you haven’t used Dropbox before and want to try then you can download it from this link http://db.tt/W01m6BW (my reference link). Registering through this link, you’ll have 250 MB as gift and I have 500 MB as gift too. That means win-win.
1. Backup your Dropbox folder before installing new beta one.
2. Download beta version according to your operating system and install it

Windows: http://dl-web.dropbox.com/u/17/Dropbox%201.3.13.exe
Mac OS X: http://dl-web.dropbox.com/u/17/Dropbox%201.3.13.dmg
Linux x86_64: http://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-1.3.13.tar.gz
Linux x86: http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.3.13.tar.gz

3. Go to Control Panel –> AutoPlay –> Check if Pictures/Video files are set to “Ask me every time”

Ask me every ime Pictures/Video

4. Open regedit.exe, go to key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\ check if key NoDriveTypeAutoRun exists. If yes, delete it.

NoDriveTypeAutoRun

5. Plug-in your cameras or phones or SD cards. I have tried with USB Flash Drive but it won’t work. It seems to be that Dropbox will check the devices before importing images/videos. After plug-in your devices you will have a popup likes following images

Import Pictures Videos using Dropbox

Import Pictures Videos using Dropbox

In case of that you have the second popup images, click on Change Program and choose “Import pictures and videos using Dropbox”. Dropbox will start to import your images/videos. Just after importing the first image , you’ll get 500 MB as gift. Then after synchronizing of each 500 MB images/videos, you’ll get 500 MB free space more up to 5 GB. Of course you can delete your images and videos after importing.

Storage increased

Up to 5 GB Dropbox

Dropbox message

6. Notes:
– Dropbox recognizes which images/videos were imported therefore you can’t import same images/video.
– Use video instead of image will be faster. Use your camera to record short videos of 10 seconds. It’s size will be 30 MB. Then you need only about 30 Minutes to create 5 GB video. Of course you can make video with large size but let’s consider that if file is too large, it takes more time to upload. If you turn off your computer, file needs to be uploaded again.
– There is a bug with Dropbox system so you won’t get the last 500 MB bonus. Don’t worry, Dropbox team is fixing it.
– Be fast, beta phase maybe won’t take so long.

As I said before, there are some methods to get more space in Dropbox.

1. Go to https://www.dropbox.com/gs and complete the quests to get more.
2. Take part in https://www.dropbox.com/referrals and invite your friends to use Dropbox. Each new registration from your friends you’ll get some more space.
3. Connect your social network with Dropbox you’ll get some more space https://www.dropbox.com/free
4. If you have an .edu mail, then go to https://www.dropbox.com/edu to verify you email, then Dropbox will double the credit for referrals. That means instead of 250 MB for each referral you’ll get 500 MB up to 16 GB for referral. If you don’t have any .edu email (like me), just try with your email of your university as you were student. I have tried with mytum.de (this is email of student at Technische Universität München) and it works too.

Tor – How to install for specific country and reset identity with C#?

For requirements in my private tool, I need to change my IP according to demand and only use IPs of a specific country. I don’t have much money to buy a private VPN or a premium service to get HTTP/SOCKs proxy. Even that I can buy a service like that, the resources of IPs are still very limit. I think we can’t get more than 10 new IPs per day. That’s not enough for me. Besides I have no inspiration to expand the current source code to login to a service, get list of proxy and apply to my web browser. I need an integrated solution which requires once configuration, works forever and not too much time-consuming for implementing. Therefore I think of Tor (https://www.torproject.org/).

Tor is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security known as traffic analysis

. Using Tor, I can completely hide me behind a proxy and thanks to his powerful flexible configuration, I can set from which exit nodes I will go out. In this small blog, I will guide you how to install Tor, set the exit nodes to specific country and requires new identity with C#.

1. Go to Tor homepage (https://www.torproject.org/), click on “Download Tor”, you will see a direct link to download “Tor Browser Bundle”. Don’t download it because it’s only for normal user who needs an anonymous identity when surfing over internet through an integrated browser. I need something more powerful because I would like to build a proxy and use this proxy for any web browser I like. Therefore, click on “View All Downloads” as image below

Tor View all downloads

2. Choose “Vidalia Bundle”, download and install it with all default settings.

Vidalia Bundle

3. After installation is finish, start Vidalia – a cross-platform graphical controller for the Tor software, built using the Qt framework, wait until authentication process is done. If not successful, then check your firewall if he allows Vidalia to access internet. If successful, you’ll have “Connected to the Tor network”

4. Now we have a local Sock proxy running on our computer, we would like to check if it works. Start Internet Explorer –> Internet Options –> Connections –> LAN settings –> Check on “Use a proxy server for your LAN…” and click on Advanced. At the Socks textbox, enter “127.0.0.1” for address and 9050 for port. Click OK to finish. Then go to any IP checking website to check if we are now anonymous.

Internet Explorer Tor Settings

5. This integrated solution is much better than we add proxy manually/programmatically to web browser. Because if we add proxy ourselves, we must first check if proxy work and if it is too slow to use, that requires a lot of programming and really time consuming when running in real time. Tor integrated solution is not that case because we don’t have to change proxy and the exit nodes will be examined by Tor for working node and as fast as possible. Moreover with Tor, every time when we start new instance of Internet Explorer, we’ll get new identity.

6. Now the proxy runs smoothly, but it will choose any exit nodes around the world for us. That’s again not what we want. We want, for example, only use exit nodes from Germany. Thanks to flexible configuration of Tor, we can exclude the exit nodes of other countries which we don’t believe or don’t want to go through. In Vidalia Control Panel, Settings –> Advanced –> Edit current torrc –> Insert Exclude Nodes to configuration file –> Click OK.

ExcludeNodes {be},{pl},{ca},{za},{vn},{uz},{ua},{tw},{tr},{th},{sk},{sg},{se},{sd},{sa},{ru},{ro},{pt},{ph},{pa},{nz},{np},{no},{my},{mx},{md},{lv},{lu},{kr},{jp},{it},{ir},{il},{ie},{id},{hr},{hk},{gr},{gi},{gb},{fi},{es},{ee},{dk},{cz},{cy},{cr},{co},{cn},{cl},{ci},{ch},{by},{br},{bg},{au},{at},{ar},{aq},{ao},{ae},{nl},{us},{fr},{lt}

7. Let’s start some instances of Internet Explorer; we’ll see that we are now always exited from Germany nodes. You can find in Internet another solution to exclude nodes, for example through name or fingerprint. It depends on your requirement how you would like to hide yourself then choose one appropriate method for you. So now is the last requirement. It’s ok to start new instance with new identity but what should I do if I want to get new identity within an instance. Let’s consider that you are programmer, you have already start an instance of web browser control. You want now to get new identity but you can’t not dispose the old one and initialize a new one because it’s really time-consuming and resources-consuming. We must find out how we can force Tor to change his identity. Vidalia has a built-in function for us to get new identity

New Identity
Of course it’s completely possible to call this function from our program. But again I don’t want to make it so complex. I would like somehow talk with Tor to order him reset identity, somehow through remotely sending message from Socket to Tor. Man calls this function as Telnet function and Tor allows us to “telnet” to his host for remotely controlling. But we need to configure Tor for allowing remote configuration.

8. Go to Settings –> Advanced –> Remove ticks from “Randomly Generate” and enter your password. You have to use this password to connect to control host.

Tor Control Host Password Settings

9. In your program, connect to control host and send message to reset identity

private bool RequestNewIdentityFromTor()
{
	IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9051);
	Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
	try
	{
		client.Connect(ip);
	}
	catch (SocketException e)
	{
		MessageBox.Show("Unable to connect to server of Tor.");
		return false;
	}

	client.Send(Encoding.ASCII.GetBytes("AUTHENTICATE \"YourPassword\"\n"));
	byte[] data = new byte[1024];
	int receivedDataLength = client.Receive(data);
	string stringData = Encoding.ASCII.GetString(data, 0, receivedDataLength);

	if (stringData.Contains("250"))
	{
		client.Send(Encoding.ASCII.GetBytes("SIGNAL NEWNYM\r\n"));
		data = new byte[1024];
		receivedDataLength = client.Receive(data);
		stringData = Encoding.ASCII.GetString(data, 0, receivedDataLength);
		if (!stringData.Contains("250"))
		{
			MessageBox.Show("Unable to signal new user to server of Tor.");
			client.Shutdown(SocketShutdown.Both);
			client.Close();
			return false;
		}
	}
	else
	{
		MessageBox.Show("Unable to authenticate to server of Tor.");
		client.Shutdown(SocketShutdown.Both);
		client.Close();
		return false;
	}
	client.Shutdown(SocketShutdown.Both);
	client.Close();
	return true;
}

10. We now fulfill all requirements. But there are still some considerations about the security of Tor that we should discuss. Because we connect to end website through a lot of nodes and our messages will be much more vulnerable to be attacked or decrypted. If a hacker operates a node in network, he can follow the network traffic or do whatever only god knows to get our data, for example mail password, ftp password, bank password… So I recommend use Tor only for transmitting not sensible data, don’t use Tor for email checking or online banking. You know that nothing is free. If you’re interested in Tor security, there’re some helpful links:
https://www.torproject.org/about/overview.html.en
http://en.wikipedia.org/wiki/Tor_%28anonymity_network%29

How to activate Guitar Pro 6?

I have bought a new guitar to play in my free time. I am just amateur not so professional. I haven’t played guitar 6 years since I left my country to make my master degree in Germany. I forget all of music theories and cannot read any note in music sheet. It’s hard for me now to read note as fluently as 6 years before but I’ll try my best. There is a lot of guitar tutorial inclusive music sheet in internet but they are all saved under format of Guitar Pro (*.gpx or *.gp5). I heard about this program and would like to try it. So I start to search through in internet but most of results were infected with virus. There is only one version which I think it may be clean until now. You can follow the steps below to activate your Guitar Pro.

1. Download file from this link http://www.megaupload.com/?d=5FZ7JQNV
2. Turn off your internet connection
3. Run vcredist_x86.exe file to install Microsoft Visual C++ 2010 Redistributable Package. If you have installed it before, the setup will turn off itself.
4. Run Guitar_Pro_66.0.7_b2_r8924_Repack_Setup.exe file to install Guitar Pro 6.
5. Run crack_x86.exe or crack_x64.exe depending on your operating system.
6. If you’re using Windows Vista/ Windows 7, copy the hosts file under C:\Windows\System32\drivers\etc to your desktop, open it in Notepad and add this row at the of file

127.0.0.1	 activation.guitar-pro.com

If you don’t file hosts file, you can read this article and find it yourself http://en.wikipedia.org/wiki/Hosts_%28file%29
7. Double click on disable-updates.reg to disable update function of Guitar Pro 6. Finish.

When I read on Internet, I think that the license routine of Guitar Pro basing on the MAC address of network card. As my opinion it’s pretty bad when a license bases on this one because the software of my company based on MAC of network card too. Until a day a customer has many network cards on his computer and he usually enables/disables these network cards because his work requires accessing to many types of network (LAN, WLAN, GPRS…). And our license model doesn’t work anymore because we don’t know anymore which card is used for license. Just some chat about license model.
And now we reach the end of this blog post. Nothing special just only on suggestion from me: Guitar Pro costs only 60$. If you are working professionally with it, I recommend buying a licensed version to support the provider. And remember, crack can contain virus, use it on your risk. I always say that a crack is seen as clean until an antivirus finds it as malicious.

C#, Tools – PC Time to track on/off time of computer

One boring task at my company is that each employee should report how he allocates time for each project he was following. Of course it is a must-do-work for project managers or supporters because they have to monitor how much time they have worked for each project so that the accounting department can send billings to customers later. But it doesn’t mean to me because I am a programmer and I have only 2 or 3 projects to take care of. I am just swinging between 2 phases: developing and bug fixing. The Test-phase will be made by Testers. Sometimes I write some Unit-Tests too but it’s not my fulltime field. As you see, my tasks are pretty “simple” however I must make myself an hour booking report at the end of each month too.
So I try to keep this task as simple as it is. Each day I make a notice on my calendar about with which project I am on. For a small, short-time project, I notice its name and its duration. It works great. But for a long-time project then I really don’t know how long I was on because it takes weeks, months to accomplish. The problem is that I always forget to book hours after working day. Then I have an idea to approximate my PC on time as project time (Of course I have to subtract lunch pause and some minutes for short break) It won’t be exact as project time but I believe it will be nearly exact. With this solution I don’t need to remember to book hour after each day anymore.
To monitor PC on/off time there is also half-free software on Internet, you can easily find him with search engine. In free version, I can only see 3 weeks before today. If I want to see more, I must buy a PRO-version. I am a poor man so I don’t have money to buy one therefore I must write myself to help me making my hour booking report.
The tool is not very complicated because any action of computer was logged by operating system. The On/Off events are not exceptions. I just have to read them out from log files and show them in easy-read way. Every time when I turn the computer on/off, the actions will be logged in Windows Logs –> System which can be viewed through Event Viewer

Windows Logs System

As you can see in image above (in case that you can read German ^_^), Event-ID 12 is ID of ON-Event which was sent by Kernel when I turn the computer on. The OFF-Event has ID 13. So basing on this log, I can trace back when I switch my computer on/off, calculate the ON time, make some magical calculations and then I have my project time at last. I will show you how to read on/off time from this log with C#.

Dictionary<DateTime, List<TimeBlock>> PCOnOffTime = new Dictionary<DateTime, List<TimeBlock>>();
private void IntializeData()
{
	EventLog log = new EventLog();
	log.Log = "System";
	log.MachineName = ".";

	var entries = log.Entries.Cast<EventLogEntry>();
	var itemMin = from e in entries
				  group e by e.TimeGenerated.Date into g
				  select new CustomEntry { EntryDate = g.Key, TimeGenerated = g.Min(e => e.TimeGenerated), ActionType = "On" };
	var itemMax = from e in entries
				  group e by e.TimeGenerated.Date into g
				  select new CustomEntry { EntryDate = g.Key, TimeGenerated = g.Max(e => e.TimeGenerated), ActionType = "Off" };
	var itemOn = from e in entries
				 where e.InstanceId == 12 && e.Source.Contains("Kernel-General") && e.EntryType == EventLogEntryType.Information
				 select new CustomEntry { EntryDate = e.TimeGenerated.Date, TimeGenerated = e.TimeGenerated, ActionType = "On" };
	var itemOff = from e in entries
				  where e.InstanceId == 13 && e.Source.Contains("Kernel-General") && e.EntryType == EventLogEntryType.Information
				  select new CustomEntry { EntryDate = e.TimeGenerated.Date, TimeGenerated = e.TimeGenerated, ActionType = "Off" };


	List<CustomEntry> temp = new List<CustomEntry>();
	itemMin.ToList().ForEach(x => temp.Add(x));
	itemMax.ToList().ForEach(x =>
	{
		if (temp.FirstOrDefault(y => y.TimeGenerated == x.TimeGenerated) == null)
			temp.Add(x);
	});
	itemOn.ToList().ForEach(x =>
	{
		if (temp.FirstOrDefault(y => y.TimeGenerated == x.TimeGenerated) == null)
			temp.Add(x);
	});
	itemOff.ToList().ForEach(x =>
	{
		if (temp.FirstOrDefault(y => y.TimeGenerated == x.TimeGenerated) == null)
			temp.Add(x);
	});

	List<CustomEntry> result = new List<CustomEntry>();
	string actionType = "";
	CustomEntry itemBefore = null;
	foreach (CustomEntry item in temp.Distinct().OrderBy(x => x.TimeGenerated))
	{
		if (actionType == item.ActionType)
			result.Remove(itemBefore);
		result.Add(item);
		actionType = item.ActionType;
		itemBefore = item;
	}

	for (int index = 0; index < result.Count; index++)
	{
		if (!PCOnOffTime.ContainsKey(result[index].EntryDate))
		{
			List<TimeBlock> listTimeBlocks = new List<TimeBlock>();
			PCOnOffTime.Add(result[index].EntryDate, listTimeBlocks);
		}

		PCOnOffTime[result[index].EntryDate].Add(new TimeBlock() { EntryStartTime = result[index].TimeGenerated, EntryEndTime = result[++index].TimeGenerated });
	}
}

The code is pretty simple. I just instantiate a variable whose type is EventLog, indicate it to work with the System-Log at my local machine (MachineName = “.”). Then I read the first entry of each day and set it as ON action and last entry of each day and set it as OFF action. Now I have a likely ON duration but it will be wrong if I turn on the computer in the morning at 8:00, turn it off at 8:15, go out, come back to company at 17:00, turn computer on again and turn it off at 17:15. Then the first entry is 8:00 and the last is 17:15 but the truth is I am not in company during this time. So I have to catch the ON/OFF events within day as in variables itemOn/itemOff.
After having all ON/OFF events, I just add them together, order ascending according to time, remove duplicated ones and then construct them in a Dictionary whose Key is date and Value is a list of time block marked with On and Off time. That means in one date, computer can be turned on/off many times. These on/off time will be parsed as EntryStartTime/EntryOffTime and saved in list.

class CustomEntry
{
	public DateTime EntryDate { get; set; }
	public DateTime TimeGenerated { get; set; }
	public string ActionType { get; set; }
}
class TimeBlock
{
	public DateTime EntryStartTime { get; set; }
	public DateTime EntryEndTime { get; set; }
}

At the end is the GUI. With some mock-up from WPF, I have beautiful PC Time software to show me when I turned on/off my computer.

PC Time On Loading

PC Time Load Finished

Maybe you’ll tell me that you can let the computer on and go out. My tool cannot detect that. Yes, it’s true but this tool is to help you to control yourself, not to cheat someone else. 😀
Binary: http://hintdesk.com/Web/Tool/PC%20Time.zip
Source code: https://bitbucket.org/hintdesk/dotnet-tools-pc-time-to-track-onoff-time-of-computer

Windows 8 Developer Preview in VM Ware

Yesterday morning Microsoft suddenly releases a Developer Preview version of Windows 8 at http://msdn.microsoft.com/en-us/windows/home/. I’m hearing a lot about this new Windows version and curios to see how the Metro-style looks like. Is it the same as windows phone or different? So I decide to download the 32 bit version without developer tools to test on my VM Ware workstation and I would like to write some reviews for someone who has no chance to try it now. But at the beginning, may be interesting for you is how I configure VM Ware to install Windows 8 on it. When you create a new virtual machine in VM Ware, choose option “I will install the operating system later” and “Windows 7” as guest operating system as images below.

Windows 8 VMWare

Windows 8 VMWare

After creating VM (Virtual Machine), go to VM properties by right clicking on it and choose “Settings”, move to option “CD/DVD Drive” and browse its path to your .ISO file. Then turn on VMs and start install Windows 8 like usual. The installation takes about 15 minutes on my desktop with Intel Core i3 and 4 GB RAM to finish. And then I restart it to get new “fresh” start up.

Windows 8 Lock Screen

1. The lock screen looks beautiful but it takes me one minute to find out how to bypass it. I thought it was a welcome screen or logon screen. I waited and tried to find where I can enter something to enter. It takes me a while until I accidentally click on the screen and drag it up and the lock screen is away. It is exactly “gesture” behavior of tablet or smartphone and I like really it. Imagine that we sit before a computer and move the mouse as we are on tablet. It’s great isn’t it?
2. After going through the lock screen, logon screen will welcome, enter password (if necessary), then users will land on “Start screen” as below.

Windows 8 Start Screen

Windows 8 Start Screen

3. If you are using Windows Phone before or developing on it, you’ll see that Windows 8 looks exactly like Windows Phone’s Metro style. The Start screen contains a lot of rectangles (or box, or button, or whatever you would like to call) and each one represents for an application. The applications can be RSS feed, shop link, website, shortcut to system (control panel) or normal application like mail, game…etc. Until now only 3 links are working: Windows Explorer, Control Panel and Desktop. When you move your mouse to the left under corner, there will be there a Start menu for Easy Access to some popular functions as Settings, Search, and Share…

Windows 8 Start Menu

Windows 8 Start Menu Settings

Windows 8 Start Menu Search

4. IMHO, this start screen is made for tablet. Although I find it’s really cool with drifting around on start screen but it’s really waste of time to use it on computer. The monitor of desktop or laptop is much larger than tablet and the users can click exactly on small area and I think users would like to have all icons in sight. It’s not likely in tablet where the monitor is much smaller and users cannot click small area with their fingers.
5. Go back to Start Menu and click on Start entry we will land on our familiar desktop with all of our shortcuts. The Windows Explorer is now equipped with a ribbon bar. And I don’t like it, really. Windows takes a step back with this ribbon bar. Microsoft is trying to make a cross platform OS for many devices. This ribbon bar is of course necessary for tablet where users cannot “right click” and therefore they need something to easily access simple actions like: Copy, Paste, Cut… but it’s really useless for computer. Nowadays computer is even as popular as television (in my case, computer is more popular than television. I have 2 laptops and 1 desktop while I have only one television). Computer users are not stupid any more. They all uses keyboard shortcut for simple actions. Then what does ribbon bar stand here for? I hope Microsoft finds another elegant solution instead of using this ribbon bar type.

Windows 8 Desktop

Windows 8 Explorer Ribbon Bar

6. So we have a first look at Windows 8. Now we will go through some highlights of this new Windows OS version. First highlight is new Windows Task Manager with new user interface in combination with Windows Resource Monitor. Each process will be marked with color depending on how much resources they are using.

Windows 8 Task Manager Simple

Windows 8 Task Manager Details

Windows 8 Task Manager Resources

Windows 8 Task Manger App History

7. Second is Picture Passport where users can choose one of their pictures and define their gestures by drawing directly on picture to create a combination of taps, straight, lines….

Windows 8 Picture Password Introduction

Windows 8 Picture Password Sample

8. I heard a rumor that Windows 8 will provide a PDF reader. We don’t need to install a PDF reader anymore but when I try to open a PDF file he asks me which program should be used to open or go to the App Store still not opened.

Windows 8 Look apps in Windows Store

9. Refresh PC should be a great option for who always play around with his computer by installing a lot of software. This highlight will keep files and personalization settings, the apps from Windows Store too but the other apps will be removed. This Refresh PC functionality takes about 15 minutes at my VM to finish but I’m not sure if it lasts longer in real case where users install a lot of software.

Windows 8 Refresh PC Introduction

Windows 8 Refresh PC after restarting

10. Now we reach the end of this blog post. I will test and update this blog if I find something interesting. Windows 8 is pretty good at first sight. Besides new GUI, new functionalities, there is some “step back” as ribbon bar and some important things as users cannot easily access the programs they installed before. Either they have program icons on desktop or they must use Search function to find it out. And the last thing: Where is my shutdown button? Microsoft doesn’t allow us to shutdown computer anymore ^_^. No just joke, after some minutes of searching, I finally found shut down button at “Setting” area.

Windows 8 Shutdown button

UPDATE 17.09.2011: How to return to user interface of Windows 7 from Windows 8
– Press Windows+R to open Run Dialog. Enter “regedit” to open “Registry Editor”.
– Browse to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer, modify RPEnabled from 1 to 0, then restart computer. You’ll be back to the old desktop style

Windows 8 to Windows 7 Registry

RPEnabled

Windows 7 style on Windows 8