FERDY CHRISTANT - JUL 30, 2015 (10:28:07 PM)
I just upgraded to Windows 10, coming from Windows 8.1. Kind of a bold move, since I just spend 3 days doing a reinstall, migrating to an SSD, and getting all my programs and settings back in order. Anyways, it worked, otherwise you would not be reading this.
In this post I want to share some first impressions. This is not a review, just some observations after having worked with Windows 10 for less than an hour. The first hour is crucial, as it literally is the first impression one gets of a new operating system. Note that my perspective is that of a desktop user, using a mouse and keyboard on 2 large screens.
On Windows 8.1, I've been seeing the little Windows logo icon reminding me of the coming W10 upgrade for several weeks. After reserving my instance, today I clicked it, and it showed me it was ready for the install. Somehow it did not actually notify me, but that's ok.
I selected to "upgrade now", which kicked of the installation. In total, the PC rebooted 3 times. The 2nd reboot it took a very long time before anything came up, which worried me, but eventually the process continued. After the third reboot, I got some welcome messages, in dutch, which is weird, because it means it has forgotten my english preference. The rest of the OS was still in english, luckily.
Next, I was asked to indicate a few configuration preferences. Earlier this week I've read about the privacy concerns of Windows 10, and therefore was paying specific attention to this step. What followed is a very sleezy step by Microsoft. Here's the deal: by default, Microsoft will capture an insane amount of data from you, supposedly to "improve your experience". This includes application usage, your browser history, your typing behavior, the list goes on. You can disable all these things, but only if you find the tiny text-like link in the configuration screen that takes you to that settings page. The default is clearly to steer you towards the zero privacy model.
Before exploring anything of Windows 10 itself, I first wanted to see whether any damage was inflicted. The displays seemed to work fine, on their native resolution. No Nvidia driver issues, which caused a lot of issues for users earlier this week. Sound was working as well, all my taskbar icons are there still. Also important, I wasn't asked for a product key, meaning my genuine copy was detected succesfully. Weirdly, my wallpaper was wiped, but that was easy to restore.
The only other issue I faced was a fatal error on a VM I started in VMWare, which kind of panicked me. Luckily, rebooting once more solved that issue automatically.
Overall, I consider the upgrade process itself to be smooth. It could have been worse. The privacy attack though is inexcusable, and frankly disgusts me.
I never had a big problem with the start menu being removed in Windows 8, since I launch all my programs from the task bar. Still, it is back, which I consider an improvement. In Windows 8, I had to exactly position my mouse in the far top right corner, and do it very precisely, so that I do not enter into my second screen accidentally. That was a ridiculous user interaction to do for a desktop user, so this is much better.
The new start menu works OK, and now has this series of Modern Apps tiles attached to them. I clicked the Twitter app, yet nothing happened. The Weather app did work, and shows a very important change in Windows 10: running Modern Apps in the desktop. I'll get back to what that means in a minute.
Another new desktop feature, available for decades in Linux/Unix, is multiple desktops. A welcome addition, but too hard to discover for a casual user. You initiate it from "Task view", which has an icon that looks like multiple windows, not multiple desktops. From this screen, the far bottom right has a link "Add desktop". I actually did not see it due to the size of my screen, and had to Google how it works. It works, but in my opinion it is poorly implemented and hard to discover.
Windows 10 ships with a new browser called "Edge". And that makes me happy. The reason being, Edge is advertised as the good old blue internet explorer icon. This means that all those users reluctant to let go of what they see as "the internet", will now end up in Edge, instead of old IE. That's a good thing for web standards, and for people who build websites, like me.
Edge itself is lean and mean, fast and works well based on a quick check. The minimalism is a bit extreme though, and will likely confuse casual users. Furthermore, it lacks extensions and has poor inspection tools, but hey, it's a young browser, all of that may improve over time.
Control panel (settings)
In Windows 10, Microsoft has moved more options from the classic control panel towards the Modern UI settings app. Unfortunately, that makes it all even more confusing.
As an example, I wanted to check my resolution by right-clicking my desktop, something that I have been doing for close to 20 years. Now this takes me to the settings app, and there's no resolution. Only after finding the advanced settings link, which doesn't even look like a link, I can access the resolution. Basically, the settings are dumbed down, geared towards common usage, not power usage. If you're used to particular places and shortcuts to quickly adjust settings, you may now see them moved.
You can still go back to the classic control panel, and eventually find it, it's just a confusing experience overall.
Windows 10 overall
Time for some overall impressions. There's two critical notes that I have: Windows 10 is ugly and inconsistent.
First, the ugly part. It's very subjective, but I don't like the over the top minimalism. I have nothing against the recent trend of simple and flat UIs, but Microsoft has pushed it over the edge, where it starts to hurt actual usability. For example, Edge is all white until you click on this magical white area to reveal an address bar, which has some slight contrast to it. Some users may not even know how to go to a website at all, thinking their number one feature has just vanished. Another example is the new settings app, which is all black and white and some blue, and uses screen real estate very poorly. A similar thing is true in Office 2013, where you cannot even see where a menu ends and a document begins, because it all is just so flat and white.
I'm not a fan, like I'm also still not a fan of the crazy bright tiles, it's the first thing I removed from the new start menu.
But all of that is a matter of taste. Perhaps you do like it. Let us assume for a moment that we do. Windows 10 then still is ugly due to the incredible inconsistency that is all over the place. Allow me to explain.
Because you can now run Modern apps in the desktop, they're going to sit side by side your Win32 apps. They look incredibly different. This was not the case for Windows 8, where many desktop users simply booted to the desktop and never saw much of Modern UI. Now it is in your face, mixed with the traditional look. And Microsoft is actively increasing that exposure by promoting store apps.
Given that Win32 apps will definitely be used for another decade or more, it means this horrible inconsistency will be with us for a very long time.
But that's not the end of it. The inconsistency is weaved throughout the system. You see it in icons, different styles, menus, and the system switching you between classic and modern screens as you try to get things done. With Windows 8, many reviewers concluded that it is a weird combination of two operating systems. Some reviewers of Windows 10 now conclude that Microsoft has taken giant steps to close that gap, and make it feel like one.
I couldn't disagree more. It feels even more like a Frankenstein OS now, because for desktop users they will have more mixed UI experiences, not less. I very well understand that what Microsoft is trying to do is a giant move, but I'm quite dissapointed with the limited progress over the years. If you have years to improve the world's most used and most important operating system, with billions in the bank, and then end up with this...there's reason to worry. A lot.
To me personally, none of this matters. I found Windows 8 weird and inconsistent, and then moved on. I pin my programs to the task bar, and get going. It works. The same is true for Windows 10, I can just keep doing what I was doing already.
In light of the bigger picture though, those billion Windows users, I think Microsoft is in a risky place. It will be a very long transition (10+ years) towards a fullly consistent "modern" experience, and then again, it's even questionable whether people like the end-result. It's subjective and anecdotical evidence, but I know few people who digg the look and feel. Furthermore, how will Microsoft get the producers of the largest software catalog on the planet (W32) to move to this new model? Will desktop users actually start using and paying for these apps?
Time will tell, but they are very big question marks. To end this first impression on a positive note:
- The installation is smooth and mostly trouble-free
- Edge as the new default browser is a great development
- The start menu being back is a good improvement (or restoration of what once was)
- Multiple desktops is useful, although hard to discover
FERDY CHRISTANT - JUL 27, 2015 (09:45:23 PM)
I have a war story to tell, a failure on my behalf, yet one mistake I imagine many people potentially make. Therefore this blog post is a warning, if you're making use of VMWare snapshots.
Snapshots, how I thought they work
A while back, I replaced my physical development server with a virtual one. I used VMware to mount to a Debian install ISO and started to build up a full server from there. I paid for a copy of VMWare Workstation, since it has some features I needed, primarily support for snapshots.
I figured to use snapshots for two reasons:
- To be able to do a rollback. Before doing a risky configuration change, I'd make a snapshot. Next, I proceeded. If I screw up something, I go back to the snapshot.
- To generalize my VM. The further you configure a server, the more specific it becomes. By creating snapshots at key moments, I could spin off a new VM from a very generic state in the history.
With this model in mind, over time I collected about 25 snapshots. On disk I could see that each took about 4GB in size, the same size as the main VM disk file. No problem, I was working on a 2TB disk, with room to spare.
The word "Snapshot" suggests to me you make a copy in time of something. The copy is independent. Seeing the snapshot files take up the same amount of space as the main VM further strengthens this belief.
Snapshots, how they actually work
All of the above assumptions and beliefs are entirely wrong:
- Snapshots are NOT independent copies. They are delta files. You cannot and should not use them for backup purposes
- Snapshots are linked to each other. If you delete one from disk, outside of the snapshot manager, you destroy the integrity of all your snapshots
- Snapshots should NOT be used for a period longer than 24-72 hours
- Snapshots, the amount of them, directly decreases the performance of the last state of your VM, since the last state is the combination of the main disk and the snapshots
- Deleting a snapshot in your history of snapshots (correctly, using the snapshot manager) means a very heavy reconsolidation action that can take hours, if not longer.
- Should you ever get a disk corruption issue in your VM (a virtual corruption, that is), it may corrupt your entire history of snapshots.
I've learned the above the hard way. Yes, I admit ignorance. But I also blame VMWare. The only conclusion I can make based on the above, is that VMWare snapshots are NOT snapshots. Snapshots, by defintion, are independent captures in time of something. VMWare snapshots do not meet that basic expectation. Let's use the literal word "snapshot" in an analogy:
You take a snapshot (photo) of yourself every day for a year. You end up with 365 photos, or snapshots, that captured you in a particular moment in time. Would you now expect the following:
- If you lose one of the snapshots, all are ruined
- If you scratch a single photo, all are scratched
- Taking a new snapshot takes exponentially longer each day
How did I find out this ugly truth? Here's the link, the dark side of VMWare snapshots.
FERDY CHRISTANT - JUL 27, 2015 (08:52:41 PM)
Although the whole world has gone mobile, when at home I tend to prefer work and play in my home office, which consists of a powerful desktop (Alienware Aurora R4) and 2 large 27" screens at 2560 x 1440. I've been enjoying this setup since 2012 on a daily basic, trouble free.
However, the system still has a conventional HDD, and upgrading to a SDD drive for long has been on my list of things to do. For about 2 years actually :) Anyway, as I increasingly found the disk to be the slowest part of the system, I finally had an incentive to do something about it. So last weekend I took the plunge, this post simply lists some of my experiences.
I wanted to feel the SSD performance upgrade across the board, so I went for a no-compromise solution: a 1TB SSD, the Samsung 850 EVO. Yes, having your OS on the SSD in itself is a vast improvement, however, I do very heavy photo editing (36MP photos) and work a lot with virtual machines. If those 2 tasks would still be done on a normal HDD, the upgrade would be far less of an upgrade overall. That said, since I would still have my conventional 2TB HDD, I will reconfigure that to be secondary drive, for even more storage.
Finally, there's an additional goal. My Aurora R4 shipped with a built-in copy of Windows 8. However, it is not shipped as a disk, nor is there a product key sticker anywhere. It is part of the BIOS or part of the recovery partition, I'm still not sure which.
Anyway, I want to keep that genuine Windows copy as part of the upgrade. It will help me transition to Windows 10 in a smoother way. Furthermore, the particular install of Windows 8 comes with Alienware utilities and drivers which are convenient to keep.
I've pondered over how to approach this upgrade. At first, I figured to just clone my entire current HDD. This way, the upgrade would be seamless. However, as my current Windows install is over 2 years old and goes well over 1TB, I ultimately decided to do a clean install (after first backing up everything onto my NAS).
A clean install of the factory setup, that is. I burned restore discs from Alien Autopsy, as the option to restore from the restore partition failed, I'm still not sure why. Using the discs worked. However, I then had several hours of Windows updates to install, both from Windows 8 and Windows 8.1.
With everything backed up and a clean, genuine install on the HDD, I figured the transition would be simple. Here's what I had in mind:
- Physically install SSD (in slot 2, slot 1 being used by the normal HDD)
- Check in BIOS if SSD is recognized, boot to Windows
- In Windows, clone the HDD to the SSD (using Samsung's data migration software)
- Reboot, and in the BIOS change the boot order to boot to the SSD
- Enjoy new SSD as if nothing happened
- Format normal HDD and use as 2nd drive
Simple enough. Except for the fact that every single step in that plan failed, and then some more. I spent close to a day chasing solutions to problems only to arrive at even more problems. It was such a large series of failures that I cannot even retrace all steps, but here's a few things I experienced:
- The SSD not being recognized in the BIOS. A BIOS update to V11 did not fix this either
- The Samsung software not recognizing the SSD at all, yet suddenly detecting it after a reboot
- The BIOS not recognizing my normal drive anymore either
- The clone method cloning to a non-C drive
- My entire system crashing when using AHCI mode (which is recommended for SSDs)
- The system booting to Windows with the SSD as secondary drive (which is not what I want)
- The system booting to Windows with the SSD as primary drive, yet with the wrong drive letter, screwing up the entire Windows install
The list is far longer than that, but I'll stop here. It did not go smooth, suffice to say.
It was very hard to find the problem, since everybody has a slightly different setup, goals and situation, yet I ultimately found it: it was a faulty cage.
The Alienware Aurora R4 has 3.5" inch hard drive slots. Since this SSD is 2.5", you need to buy a convertor "cage". It simply is a plastic box with inside it a connector. You insert your SSD in the cage into the connector, next you insert the cage as a whole into the HDD slot inside the desktop.
Actually, whether you need this cage or not depends on your exact model. The Alienware Aurora ALX models do need the cage, yet in the Aurora (non-ALX) R4 models, you don't strictly need them. It helps to better align the SSD, but it is not strictly needed, since the connectors are in the front, within reach.
Anyway, based on some Youtube install video I bought myself a Icydock cage. And this eventually turned out to be my mistake. My cage was faulty. Based on online research, it turns out I'm not the only one.
I removed the cage and instead decided to directly connect my SSD to the connectors. And bang, all my problems dissapeared:
- The SSD is now detected in the BIOS
- After booting to Windows on my normal HDD, cloning this time made a clone from C: to C:
- Reboot and change the boot order
- There it is: genuine Windows on C:, using the SSD
8 hours of agony ended in 10 minutes after making the direct connection. With this painful experience behind me, here are some recommendations:
- Investigate whether you need a cage at all, and if you buy one, buy a good one
- If your SSD is not recognized in the BIOS, do not proceed. Check the hardware, update the BIOS, do whatever is required to make that SSD appear in the BIOS
- When cloning, clone from C: to C:. If the data migration tool suggests a different target drive letter and doesn't let you pick C:, something is wrong. Do not proceed.
Help for such very specific scenarios is limited online, so if this helps only one person, I'm happy. You should be enjoying your SSD, instead of wasting your time on these issues.
Enjoying the SSD
Let's end with the good part, actually enjoying the SSD :)
I've only had a day of experience with it so far, but here's some results:
As expected, Windows boots a lot faster. What matters to me most is what happens after signing in to Windows. Normally, it appears to be ready, yet in reality it is still not responsive for 2 minutes or so. That delay is almost entirely gone. A few seconds after signing in, I have a browser open and ready to use.
That's awesome. And this snappy experience carries through all of my actions. Despite using a powerful desktop, I still always had the feeling that I was waiting for it, even for small actions. That friction is now gone. Things happen instantly.
What about photography? As a test, I did a fresh import of 300 RAW photos (45-60MB 36MP files) into Lightroom. I'd normally do such a thing when returning from the field. I'd also pour myself a drink in the meanwhile, as it takes a few minutes. With the SSD, it took mere seconds. I didn't time it, because I didn't expect it to be this fast. I thought something was wrong when it finished in front of my eyes. That's how fast it is.
The other big thing I do is to work with a Linux VM, my main development instance. Normally, I may have a small code change in mind, yet will postpone it, because powering on the VM, my IDE, build tasks and all takes too long. It's too costly to bother for a small change.
Not anymore. This entire LAMP stack is powered on in less than 2 seconds, and shutdown in the same amount of time. All friction is removed, and with it, all my excuses.
I'd like to end with that conclusion: this upgrade isn't just a hardware upgrade. It changes the way I compute at a fundamental level. As of now, friction is removed and the system is waiting for me, instead of me waiting for the system. I know I'm late to the SSD party, but better late than never :)
FERDY CHRISTANT - JUL 23, 2015 (11:03:34 PM)
It's been almost 2 months since I first announced my side project named Calumma. Despite the radio silence, I've been steadily progressing at it. This update is one of many to come.
First, a step back to summarize what the project is about: With project Calumma, I'm trying to kill two birds with one stone. By experimenting with new web technology, frameworks and more, I will further strengthen my web skills, which is my bread and butter. At the same time, I will do so in a way that will also benefit JungleDragon. If project Calumma succeeds, I will learn lots of new stuff whilst also designing solutions for the next version of JungleDragon. It's simply an efficient use of my time.
A rough outline of the steps and goals of this project would be:
- Set up a development workflow
- Create a new web front-end architecture:
- Test pages and demonstration for the front-end framework
- Design pages: concept designs for JungleDragon V5 based on the new front-end framework
The steps are not entirely sequential. As I learn new stuff along the way, I may go back and improve previous steps.
Anyway, it's time for the first post. The first several posts, even the majority of them, will all be about web development. If you're into that, it will be like looking over my shoulder as I learn new things and explain what worked and what didn't. I will also openly share solutions and things that may help you. I hope you find that interesting.
The topic of the first post is the development environment. It's not a terribly exciting topic, but we have to start somewhere, so let's go.
Calumma is pretty much a static, stand-alone project where I'm the only developer. I have placed it on my LAMP server which runs on a VM, but it could have been local development, as I will not be using a lot of PHP for this one, it's a front-end project mostly.
As a note to myself, longer term I want to try out Vagrant, which promises a very portable development setup. Or, I may finally launch my first Amazon EC2 instance. There is a free tier available, and after that reserved instances (where you pay upfront instead of per hour) look quite affordable.
You see, one of the key points of this project is to try out new things. Regarding development, I think cloud-based development is the future.
There's not much to tell about my folder setup, yet here it is:
It follows a pretty classic web project structure. A key point is that there is a SRC directory and an ASSETS directory. I do my editing in the SRC directory, and only there. A build process will "compile" the result into the assets directory, and only those files will actually be served.
Some web developers still have to get used to the idea of "building" a project, especially for a static project like this. Believe me though, once you are comfortable with some of the tools, you will experience the advantage of doing so, and never look back. Let's discuss some of those tools.
I'm already quite comfortable with SASS, and had no reason to change my CSS approach for this project. So what I do is that I edit SCSS files in the SRC/SCSS directory, and then an automatic watch process detects the change, compiles it into CSS, and live reloads my browser. All the power of SASS combined with the convenience of quick direct CSS authoring, it works for me.
There is a recent trend towards post-processing of CSS instead of pre-processing it, but it hasn't convinced me yet to switch.
One of the things I had on my list of things to learn is Bower. It's quite popular. Basically, it easily allows you to install a 3rd party dependency, for example jQuery. You can do so using a single command, and Bower will figure out where to download it, and install it in a special directory in your project. You can also easily update your dependencies with a single command.
I have given Bower a try, but it does not work for me. The thing is, Bower only installs things. Next, it is still up to you to figure out how to include those installed things in your project. But wait, there's build plugins to help with that! I tried those as well, and had very mixed results. For example, I installed an icon font using Bower, but could not automatically include it on my page, because the package definition did not support a required attribute needed for my build plugin. So now I have installed a plugin to support a tool which fails due to an incompatible package.
At this point, you start to wonder: why the hell am I going through this pain again? Just so that I do not have to go to a website, download some code and place it in my project? The tool that supposedly automates this is not taking away this "pain", it only adds more headaches.
Or so it did for me. I may work for you if you need to manage dozens of dependencies, but in this case, Bower tries to solve a problem that actually isn't a problem, at least not in this context. So I dropped it. Lesson learned.
Another new thing I wanted to try was LiveReload, which is a web browser plugin that detects file changes, and will then automatically reload you open browser, Chrome in my case, where I have the extension installed. In addition to having the extension installed, you need to include it in your build process, which is based on Gulp in my case.
Another new experiment was to add auto prefixing to my development workflow. The idea is that you can write a single unprefixed CSS statement (for example border-radius), after which this plugin as part of the build process will automatically add required vendor prefixes (for example -moz-border-radius) to the CSS output. You can configure it, for example "last 2 browsers" and it will base the prefixing on that policy.
It works well, so I'm keeping it. It's easy to forget that it is running in the background though, you start to blindly rely on it, and in case it goes wrong, you may a hard time finding the problem. So far so good though, it makes my SCSS just a little more clean.
There's a few tasks part of the build process not explained yet, but the tool binding all this together is Gulp. Less than 3 months ago I wrote about it here, and I haven't looked back since. It's now a new default in any project as it just so damn easy and powerful. Here's my entire development workflow for this project:
A summary of what this does:
- The clean task clears the assets dir, since the build process will generate fresh files
- The styles task will look for changes in the SCSS dir, compiles it into CSS, autoprefixes it, sends it to the assets dir and then reloads my browser. Note that I'm not too concerned about minification and gzipping at this point in time.
- The scripts task looks for changes in my JS dir, next it will concatenate all JS files into a single main.js file, which is moved to the assets dir. Note that the concatenation has some order logic to it, since we want to have some files listed first, for example jQuery.
- The default task is what happens if you would simply type "gulp" in the command line in the main project directory, in this case it will process both the styles and scripts, but only after first running "clean".
- I never run the default task though. What I do is to start the watch task. It does the same thing as the default task, yet it does it continuously, in the background.
That's it. To start a development session, I run "gulp watch", and without a care in the world I author the SCSS and JS that I need. It's a simple, yet effective development workflow.
This concludes the part about the development setup. My main takeaways are that Gulp is still awesome, Bower isn't for me, and LiveReload and Auto prefixing are useful additions to my belt of tools. In the next post, we'll move beyond the development setup and make a start with discussing the front-end framework.
Quick check: do you enjoy behind-the-scenes posts like these?
FERDY CHRISTANT - JUL 5, 2015 (08:39:15 AM)
Each year Henriette and I try to travel to a remote country to experience and photograph wildlife. By tradition, I never share such photos at once in a giant set, instead I share them slowly, a few each day, at JungleDragon.
I share them so slowly because that way I describe them very well, but also because these photos are my "winter stock" to keep sharing on JungleDragon when I am not out there photographing.
Anyways, hereby the Sri Lanka set is complete:
Some general links regarding Sri Lanka on JungleDragon:
Finally, for the interested some sets from previous travels:
May the tradition continue :)