Welcome to a small window into my world

Menu

If like me you haven’t fired up your Windows 10 virtual machine in a while you may find that you’re unable to upgrade to the new 10240 build. After a search over the interwebs I’ve found a registry change which will allow you to move over to the 10240 by changing your branch from fbl_impressive to TH1.

As with anything with the registry if you don’t understand the registry or haven’t played with it before it may not be a good idea for you to try this.

Fire up RegEdit.

Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\Applicability

Change BranchName to TH1

Change UserPreferredBranchName to TH1

Update again using Update & security.

I found when upgrading from build 10074 that when I did an update the 10240 build started to download.

After reading the reviews and watching the videos I’ve just ordered myself a Equil Smartpen 2. The Equil Smartpen 2 is a pen which lets you draw on paper like a regular pen whilst at the same time creating a digital record of everything you write which you can see and edit later on (or in real time) on your iPad, iPhone, Android, Mac or PC.

This is a great little devices aimed at anyone from designers, artists, students to office workers in meetings.

The Equil Smartpen 2 also comes with a Notes app which includes character recognition and the Sketch app which lets you sketch and draw on paper, and edit the drawing later on. The apps also have Cloud synchronisation so it’s possible to easily share drawing and notes using e-mail, iCloud, Evernote and DropBox.

The Equil Smartpen 2 is currently $109, going up to $169 when it’s released later this month. So get it now whilst it’s a bargain.

Wow July 3rd was my last blog post! That’s a long time. The last year has been pretty exciting full of ups and downs, and never a dull moment. So here is a quick summary of what I’ve been up to, which unlike this blog has been far from idle:

EOS 1100D

Photography – I took up Photography is September after studying photography at an evening course. Photography is anything but just taking picture, it’s creative, it’s challenging and takes you to some awesome and extreme places. There are a lot of nerds out there who think you always need to have the latest kit, loads-a-lenses weighing you down, blah blah! But really you don’t. Just getting a good grounding in photography and getting a decent camera you can do out and play with you can do some pretty awesome stuff and get some great results. I’ve got Canon 1100D which is an entry level DSLR, the kit lens which came with it and 50mm prime lens (if you don’t understand this no worries, just have fun). I take in camera RAW (you only really care about this if you postprocess your photos) and use Lightroom for all my photos, occasionally going into Photoshop but rarely. Check out my profile on 500px.com and see what you think.

Photoshop CC

Photoshop – I will shout it from the hills, I love Photoshop! Photoshop is not just a took for making unattainable or unrealistic pictures of people on magazines. It’s a great design tool as well. I’ve been following loads of courses online including Udemy.com, SkillsShare.com and YouTube. I really enjoy Photoshop and regularly use it at work (yes I am a software engineer) and at home. It’s pretty cheap these days too, at around $9 a month it’s a great tool and if you love Photography you get Lightroom free too.

Node.js – Into the programming we go. If you don’t know Node.js is a server side Javascript engine. Basically this means that your web-server is running Javascript, serving up web-pages and acting as the back-end as a web-service. Node.js like Javascript is pretty easy to learn, but tricky to master. You can probably learn most of what you need in a long weekend and be up and running producing some awesome websites, but you have to be really careful as you can easily get into callback hell very easily which is messy and a total nightmare.

Sublime – Sublime is a text editor which if you are a developer and you want to e more productive is simply awesome. The learning curve is pretty easy, and you can be up and running in no time just by watching the short animated GIFs. I now regularly use it for web-development and often pop into it from Visual Studio when I need to do tasks which would take forever without tools such as multiple cursors. You’ll love it!

Exploration – All work and no play makes you dull and boring! I’ve recently joined a group called Explorers Connect which helps people to find and have adventures. If exploring for a career is your thing there are also loads of jobs and people looking for someone to go on an expedition. If you want to change your life from the daily grind and start seeing the work I recommend it. I’d also recommend reading Microadventures: Local Discoveries for Great Escapes by Alastair Humphreys which is an amazing book if you want to get and and start exploring.

Well this is a quick round up, and not everything. See you in the next post.

Bower.io is a package manager for the web designed by Twitter and available on GitHub. Normally when you need the latest version of a Javascript librariy such as jQuery, Angular.js, etc you download the relevant library from the website and add it to your project. This though can be a bit of a laborious task each time for each project or each time a new version of the library is released.

Bower.io simplifies this allowing you to run a single simple command line tool to search, download, manage and update all of the libraries in your project. Bower.io is based upon Node.js and uses GIT so you will need to have both of these installed for it to work.

Installing Bower.io is a simple npm (Node Package Manager) command:

npm -g install bower

You can then download a library such as jQuery and Angular.js using the following commands from your project folder:

bower install jquery
bower install angular

Bower.io will download the latest stable build of jQuery and Angular.js storing them in the local folder ‘components’ or if that folder does not exist it will create and store them in ‘bower_components’. It even does dependency checking for you. You then just need to add a ‘script’ reference in your HTML file. In the future if you want to check for an update to the libraries your project brings in just type in the single command:

bower update

Bower.io also allows you to search for features, such as if you want to look for available jQuery plug-ins you can type in the following command which will find and list them for you:

bower search jquery

Since I’ve been using Bower.io I’ve found that it has certainly helped my workflow searching, downloading and updating libraries which I use for my projects. The Bower.io registry contains quite a lot of projects though from the thousands available on the internet it doesn’t contain all of them.

Personally I found the fact that it downloads components to ‘bower_components’ or ‘components’ a little awkward. For the project I was working on I preferred them in the folder ‘javascript’. Bower.io is configurable and allows you to configure directory structures, projects and repositories. Configuring Bower.io is a simple case of creating a local file ‘.bowerrc’ which is a configuration file in JSON format. You can then configure folders using a ‘.bowerrc’ file with the following contents:

{
"directory": "javascript"
}

Bower.io contains quite a lot of documentation to help get you started and I found that I got the hang of it in now time. You can check out more information on Bower.io including check out the sources from http://www.bower.io.

I’ve been porting a library and test applications from .NET Framework 3.5 to a Windows 8 Modern UI Store App (WinRT). Windows 8 Store Apps have a cut down implementation of the .NET Framework so that they are none blocking and always responsive. This means that many of the synchronous APIs we are used to have been removed and we’re forced to use their asynchronous counter parts. It has also meant that we’ve needed to port our library to instead be a Portable Class Library so that we can reuse it in different versions of Windows.

The library I’m working on returns byte arrays contains JPEG image data. In the .NET Framework 3.5 it simply took the byte array fed it into a MemoryStream and then into the BitmapDecoder object. Unfortunately this implementation isn’t possible in Windows 8 Store Apps as the BitmapDecoder is blocking and we don’t have blocking APIs in Windows Store apps.

The new implementation is based around using a InMemoryRandomAccessStream object which we first write the data too, reset the internal pointer to the beginning of the data, and create a BitmapImage object which we then feed into our XAML image object.

Our new implementation:

public async void SetImageFromByteArray(byte[] data,
Windows.UI.Xaml.Controls.Image image)
{
using (InMemoryRandomAccessStream raStream =
new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(raStream))
{
// Write the bytes to the stream
writer.WriteBytes(data);
// Store the bytes to the MemoryStream
await writer.StoreAsync();
// Not necessary, but do it anyway
await writer.FlushAsync();
// Detach from the Memory stream so we don't close it
writer.DetachStream();
}
raStream.Seek(0);
BitmapImage bitMapImage = new BitmapImage();
bitMapImage.SetSource(raStream);
image.Source = bitMapImage;
}
}

At the moment I’m learning User Experience design and how it can be used to dramatically improve the experience of the product, improve the workflow of an application or website, get people to ‘want’ to use your product and to ultimately save and make money. Today I put my own relationship with the tools and applications I use under the microscope and took a look at animations.

Anyone who has ever seen me work will find that I when I’m really working I work very quickly. I’ve configured Windows and my Android phone so that I can find things and get to things fast, my computer has been optimised to be fast, all of the Window animations has been turned off so that windows appear quickly, I work in a fashion where things whiz around my screen quickly and where there is a constant buzz of information. This is great, but can easily lead you down to path of becoming mentally exhausted and on edge.

The solution slowing things down. I recently tried turning Window animations back on, and turning back on many of the visual elements of Windows which to begin with used to annoy me. The result? More time to think, more time to more carefully consider what I’m doing and ultimately produce better results. Sometime animations are put in there because, well it looks cool (to the designer / hacker coder at least). But other times the can be used to not only provide visual feedback to what’s happening but also to relax you and to help to give you time to more carefully consider what you are doing, and what the results of your actions may be.

I’m not saying here that every application should include animations, or to animate for animations sake. Instead to use animations to illustrate the information being presented on screen, to provide visual feedback and visual cues to their actions and also to help relax the user to use the application, whilst at the same time not being an obstruction to the user or the task they’re trying to do.

With just under two weeks to go and it’s all full steam ahead for revision. I’m feeling generally confident at the moment, at least more confident than I was a few weeks ago. There are still a few areas which I need to look at such as remembering the exact syntax of some of the CSS3 tags such as with transforms, animations etc. I’ve been learning using HTML, Javascript and CSS in a few of my test projects and it’s truly amazing how much more you learn by doing than reading a bunch of theory. I always think that not only knowing and but being able to apply knowledge in a creative way is important.

I’ve also been discovering the nuances of the different web-browsers. Chrome and other webkit based browsers are generally my browser of choice. Mainly due to their rapid adoption of rapidly developing standards and also the user interface design which is minimalistic and easy to use.

I bought and downloaded the book ‘Training Guide: Programming in HTML5 with JavaScript and CSS3’ which is currently on early release for the 70-480. My initial impression is that this is a well written book which certainly gets you started on the subjects. I would however advise caution about using this book exclusively for the 70-480 exam as there are a lot of subjects which aren’t yet included from the 70-480 exam requirements including grid box, flex box, transformations, columns, animations, gradients, shadow and others. It also doesn’t talk about the new structure where you can use sections and articles to change the level of header tags. Such as an h1 tag inside a section will appear as an h2 tag. You’ll probably see quite a few comments in the errata which I’ve added.

For practising CSS3 I’ve been using Brackets.io lots as I can try out new things and watch how they effect the presentation of the page instantly in Webkit. For Javascript experiments I’ve been using Visual Studio 2012 as it has fantastic code completion support. There is also the feature of adding references to other Javascript files which makes code completion really fly, just put the following at the top of your code to reference another Javascript file ‘/// <reference path=”other.js”/>’ or create the file ‘_references.js’ containing all the Javascript files in your project and just reference ‘_references.js’ at the top of each of your Javascript files.

Although I haven’t even taken the 70-480 exam I already have my eyes set on the next goal of taking the next two exams which would get me the ‘Microsoft Certified Solutions Developer (MCSD): Web Applications’ qualification.

http://www.microsoftvirtualacademy.com/tracks/developing-html5-apps-jump-start – This is the recommended Jump Start course for the 40-780 exam. It is very heavily Windows 8 centric although it’s a very good base of information. I would be careful here though as some things which they discuss are not yet avaliable in most browsers or at least not how Microsoft implements them. An example of this is the flex-box and the grid box. At time of writing the flex-box does have support in other browsers but behave very different to the Microsoft implementation. The grid box is only implemented in IE10. Also the Error object is implemented very differently in IE10 than other browsers (I checked Webkit and Firefox).

To give myself interactivity and to let me rapidly prototype things I am using the open source editor Brackets.io which is really starting to come along, easy to use, configurable and intuitive. It also works exceptionally well with Google Chrome so I can very easily change HTML & CSS files and see the results in real time.

Some things which also dawned on me was with getElementById and querySelector calls. So to get the element with id=”myElement” would be getElementById(“myElement”) or querySelector(“#myElement”). The querySelector looks great and is used by quite a few people, but I was wondering about performance. Taking a look at a few projects on JSPerf demonstrates that in many cases querySelector is 58% slower than getElementById which is staggering.

Also in the Microsoft Jump Start they talk about the NodeList returned by querySelectorAll is live, so if you add a new element to the page then the NodeList should automatically update with the new element. I tested this on Chrome and found that it doesn’t, and that I needed to call querySelectorAll again. I would therefore be very wary about some of the content of the Microsoft Jump Start as not everything they spoke about will work on another browsers.

All in all it’s going very well. Javascript is an amazing and crazy language. I first learn’t Javascript a while ago by studying the different Javascript design patterns. HTML and CSS are also both amazing which also give you a huge ability to do almost anything in a huge variety of different ways. This is probably one of the more dangerous areas of HTML and CSS, something may seem a good idea at the time but without proper prior thought you can rapidly get yourself into a hole.

In the name of creativity and plan curiosity I’ve been looking at lots of different things recently. Quite simply anything which caught my eye or seemed interesting.

WebGL – This has been around for a couple of years now and is simply 3D graphics for the web. Up until recently the only real way to get 3D graphics in browser has been to install a third party plug-in or bloatware software which in most cases doesn’t work and if it does will only work for a very small fraction of devices. WebGL is an open standard being developed by the Khronos Group and supported by Google (Chrome), Opera, Apple (Safari), Firefox a few others. With no great surprise Microsoft Internet Explorer doesn’t support it (though what does it support really?).

WebGL is something to get excited about, and their are lots of people currently developing for it and creating technical demonstrations (see Chrome Experiments and Three.js). I’ve recently started learning how to use WebGL from the book ‘WebGL: Up and Running’ which does a little bit on WebGL and quite a lot on the WebGL wrapper Three.js library. WebGL is development is certainly not an easy one to learn (much like any 3D or OpenGL programming) but there are fantastic libraries such as Three.js which takes quite a bit of the heavy lifting and help to explain some of the more difficult concepts.

Windows 8 Modern UI – I decided to take a look at developing for the new Windows 8 UI, mainly to find out what was involved, how easy / hard it is and to create a comparison between it and Android programming. As this is quite a large change to traditional Windows programming there is a reason amount to take in. Though it works heavily with existing Microsoft programming concepts such as XAML and objects and is generally fairly easy to navigate. I’m still not sure about the new Windows 8 probably as it’s such as major change to a operating system which hasn’t really seem such as dramatic change since the introduction of Windows 95.

Personally I’m sticking with Windows 7 as my main dev environment, why? Well my general philosophy is don’t hide anything from the user, but to show things when they need to be shown. Windows 8 hides a lot, with hidden menus around the screen I can see how it works for tables but it doesn’t work for desktop. I’m one who works in Virtual Machines quite a lot so you have to be quite precise if Windows 8 is on my right screen, the host Windows 7 on my left and I want to click on that precise point in the bottom left to bring up the start menu or top right to bring up this menu, or top left to bring up that menu …. Yes I could just use the Windows key but that not the point. Simply it’s bad design.

Hack Design – I may be a software engineer but I love design, even more I love good design. I also like to play with pens, pencils, paper, scissors, post it notes, glue and all those things you used in primary school. I also love to draw as a hobby at home, I may not be up to some peoples standards but I love it. Hack Design is a web site devoted to engineers, programmers, hackers or anyone who wants to move towards design or at least what design is, what it involves and how to start doing it. Hack Design is a weekly digest which uses text, pictures and videos to talk about and explain design, and design ideas.

These are just a selection of some of the top ones I’ve been looking at. In addition to these I’ve also been looking more into Node.js, Underscore.js, Backbone.js, Phantom.js and many others.