May 20, 2014

Windows 8.1 Round 2

Many months ago in the summer of 2013 Microsoft released version of Windows 8.1 for people to test out. I blindly went ahead and installed it... which was the biggest waste of 3 days I've done in a long time. Not only did it prove to be insanely unstable, but many applications I needed simply couldn't function on Windows 8.1. It wasn't fully ready for release and was more of a showcase anyways so I basically blew it off as pre-release defects.

I decided after all this time to upgrade to 8.1, in May 2014, over half a year since it has been released. My upgrade process went as follows:
  1. Download upgrade to 8.1 from store I never use
  2. Install upgrade to 8.1 which was fairly quick in terms of OS upgrades
  3. Watch computer reboot and do 'magic'
  4. Watch Windows 8.1 start up
  5. Watch Windows 8.1 give me a blue screen and reboot
  6. Watch Windows 8.1 downgrade itself back to Windows 8 and reboot
  7. Windows 8 loads up and kindly informs me the upgrade failed and I am now running Windows 8
I don't really have an exotic hardware setup, yes I run high-end parts but nothing strange and a modest overclock compared to most. But after this long I would have thought Microsoft would have invested the time to work out the upgrade bugs... Instead I find a nice thread back from October 17, 2013 with 400+ responses talking about how the upgrade fails in an identical manner to me.

Windows 8 keeps looking more and more like a lemon, good thing it boots fast or I would have downgraded (or should I say upgrade) to 7 a long time ago...

Will Windows 9 prove to be awesome? Only time and Microsoft can tell you that... Some days I wish Linux had better game support.

May 9, 2014

Bare-bones Eclipse

I work with many languages, but I like to work with Java. I would prefer to work with C# if the tool/library support was as good as Java, but unfortunately it isn't.

Eclipse and IntelliJ are the 'best' IDEs to use (in 2014) when working with Java. Gradle is the most promising build system for Java. However, Eclipse's default installation you find when searching for it on Google points to a bloated version which has a bunch of unneeded junk. Most of it will simply slow down the IDE. This is why I have been using the Platform Runtime Binary and then adding only the components I need. You can find it from the download site at:

http://download.eclipse.org/eclipse/downloads/index.html

Just follow to the version you want, scroll down until you find the Platform Runtime Binary group and select the version for your OS. When you first launch Eclipse it will load fairly fast, but it will also support absolutely nothing except general projects. I also suggest making a copy of this eclipse installation and using a copy for each language you wish to work with. For example, one version per language or set of languages you are going to use on projects. This keeps Eclipse running extremely fast and means you only ever load the plugins which are absolutely required for your project. There might be a way to disable (without uninstalling) plugins but I have not found the option anywhere. Also some poorly maintained plugins may not cleanly uninstall themselves and cause issues over time which are a nightmare to track down.

May 6, 2014

A "Small" List of Useful Tools and Knowledge

Anyone who has shared files has probably heard of Dropbox. Though it is only one service of many file sharing services. I would never argue it is the best, but it does offer some pretty decent basic services if you want to store a backup copy of files onto the magical thing called "The Cloud". For free, you get limited space (a few GB), window's shell integration, client-side syncing, and ability to create public direct links to your files. I haven't ever had an issue or a complaint about it other than the brutally limited space (if you want to sync all your files you are out of luck or going to pay a fortune with Dropbox).

Google Drive, also provides a limited way of sharing files. It isn't ideal for syncing data and also suffers from limited free space. However, if you use google documents then you technically have unlimited space as they don't count. Not to mention the fact you can work with nearly limitless number of people on the same document together is a great bonus. After using it since... 2009? I have seen it slowly evolve into a great tool for collaboration, and best of all it is free. Need a notepad to share notes with yourself between computers or others, it works like a charm and provides you with a great backup location accessible from anywhere.

BitTorrent Sync, is my absolute favourite tool. It is still in beta (but I've used/built enough software to think everything is always in beta) and works very well between computers. Think of it as a torrent which you can add/update/remove files, encrypt, password protect and runs in the background without a second thought. The idea of using P2P for backing up and sharing data between my devices is absolutely awesome. The best part is that the files are stored locally, so I don't need to spend a fortune for space in "The Cloud". I have 3 computers (server, desktop, laptop) so keeping my data synced between them is required.

7zip, is an absolute must have for compression. Winrar is like the poor sibling in comparison to what 7zip offers. The fact I can choose which compression method, the compression level, encryption, partitioning, etc in a very simple manner means any data I rarely access I can compress down and then put it on my sync folder to provide a compact backup of my data. If it isn't compressible, I can grab the folder with the files and throw it in my sync directories.

Action!, meets the need high-performance and easy to use capturing software. You can separately record multiple channels with Audacity and edit your audio with minimal effort. These two together is enough to record content like professionals and it only costs you $40. Not to mention both are extremely efficient at recording so you don't have to worry about large performance drops while recording. A common issue with FRAPS. The runner up is Dxtory, which provides you with everything you want. I prefer Action! but both are excellent.

CCleaner, is your best friend if you are a Windows user. This little tool is like a weight-loss magic pill for Windows. Keeps the registry clean (a bit aggressively) and removes temp files which really are not worth keeping around. It also allows you to deeply purge files if you want to clear caches, stored passwords, etc. Another important thing is making sure your PATH is good and not full of crap. I suggest Path Editor, but there are many other tools like it. This one just has a bunch of good simple and easy to use features.

Speccy, is great if you don't have the specs of all your computers memorized to extreme detail. It is probably the least important program mentioned here, but when you want to know all the details of your hardware (and some software) it is great for telling you what is inside without opening the box.

Memtest86+, is most likely the best memory testing tool out there. If you want to diagnose a memory issue this is your go to solution. Prime95, is a great CPU/Memory stress tester as it allows you to focus on what parts you are wanting to stress. This is important for finding stable overclocks and just general CPU benchmarking (but mostly just for stable OC, I would never consider a single bench as a good indicator of performance). FurMark, GPU stress/benchmark tool. This tool will let you know if your GPU is being cooled properly as it will stress it to the absolute maximum. This is beyond anything you will ever encounter while gaming or almost any other activity. Great for testing stable GPU OC and system heat management. Finally, Speedtest.net, for checking your network connection quality as slow internet is the greatest source of frustration for anyone.

Operating system is by far the most important software for any computer. The thing is, I have no favourite; however, I do use Windows the most. I use OS X the least, mostly because I don't own a Mac and don't see it providing me with an advantage over anything else. I actually suggest Macs to many people simply because of the "easy to use" part of it, but usually I suggest people simply stick to what they are already used to. I.e. I don't tell a Windows user to use a Mac or a Mac user to use a Windows machine, because most people don't want to spend the time learning all the 'tricks' with a new OS. I have never suggested any Linux distribution to any non-technical users as most of the common software will not be available for them (WINE, cough... yes but is that worth teaching them a whole new environment?). The last thing I want is to teach/explain to them the alternatives and how to use a different OS. If I were to suggest a Linux distribution to a user, it would be either Mint or Ubuntu. Server would be CentOS, but that is mostly because of my familiarity with it. Anyone who games, I would suggest Windows without a second thought. For any developer, I would say you should know all of them, pick your favourite and be using VMs or multi-boot for the others. In this day and age, a developer should know all the popular OSes (Windows, OS X, Linux), including the mobile ones (Android and iOS).

A developer should know most of the popular programming languages and be able to make an application in any of them: C/C++, C#, Java, Python, JS/HTML5 and Php. It wouldn't hurt to also be knowledgeable about Ruby, Lua, Scala, Haskell, D, Obj-C, Shell and Perl. Of course, there are many others to list but really by having the above you would know a majority of different programming paradigms and styles. If you only know 1-3 languages and only use those for everything then there is absolutely no way you can consider yourself a good programmer. Yes, you should have 1-3 languages you are an 'expert' in, but knowing more languages means you better understand how to decompose problems into there obvious solutions. It also means you understand there is no silver bullet language which is the best for everything. A concept most developers seem to naively do without realizing it.

I could easily just keep going with this, maybe I'll do a part 2 in the future and talk about media players, anti-virus, browser, IDEs, text editors, mail clients, etc... I guess I never realized until now just how many applications and tools I use for various tasks. By no means is anything I mention the best, it is just currently the ones I like the most.