Each book is around 100 pages, hence the succinctly name, and Syncfusion say there are no adverts plugging their products in the books. The books are there as a genuinely useful resource.
There are some really cool books, which I intend to read like :
Localization for .NET
Entity Framework Code First
Neural Networks in C#
Windows Phone 8
ASP.NET Web API
Visual Studios Add-Ins
And many many more. I am going to be adding lots of these onto my reading list. I love the fact that the books are around 100 pages, which means they allow you to dip into new technologies very easily without having to wade through a huge text book.
I have added a new section to the menu bar at the top of this site. The sections is called TV. In this section I am going to collate many useful videos that I come across that help with training for a software developer, architect, or software leader. Many of the videos are conference talks, but I will only add videos that I think are good.
The TV section is currently split into 5 sections:
Agile and Development Process
Each section already contains a number of videos, but I will be adding many more over the coming weeks, so keep checking back. I will announce newly added videos on my twitter feed.
Not so long ago, Pluralsight updated their IPad and IPhone app to support playing their content to a Chromecast device but the Android app did not get updated. I don’t know when or if the Android App will get updated, but there is an alternative that works very well, so you can indeed play Pluralsight courses on a decent TV.
In a recent update to the Chromecast software on android devices, you now have the ability to cast your tablet/phone screen to your TV. This is demonstrated above where I have cast my Google Nexus 7 screen to my living room TV.
That is quite a bold post title, but it turns out to be very true. I was sent a link on Sunday to a Google service called Location History, where you could log in (with your Google account) and for any given day it would show you where you was at any point in the day, or more accurately where a phone that was registered with Google was during the day. I think it is safe to assume this is just for Android devices, but I would be surprised if Apple isn’t doing this too.
Don’t believe me, then look at the first image below:
This image shows my typical commute to work. In this case on Monday 7th July 2014. The data here is generally pretty accurate. There are a few points that are not quite right, but this is pretty damn close to my commute route to work via train. I don’t mind posting this you can find out the organisation I work from quite easily for this site and my LinkedIn Profile. The image doesn’t show where I live though. I positioned that out of the view.
An old colleague of mine, Matt Godbolt, recently did a talk at the Goto Conference in Chicago. The talk is called x86 Internals for Fun and Profit. The course is about the following :
It’s easy to treat the CPU that executes our code as a black box, but understanding what really goes on inside it can help you write more efficient code. In this talk, Matt will lift the lid on modern x86 processors. He’ll explain some of their features and how the code you write maps to those features. He’ll give examples of how to diagnose and fix performance issues. Topics covered include memory, caching, out-of-order execution and branch prediction.
The course is a bit low level for where I work, but it is a very good course that introduces you to some interesting CPU concepts if you are not already familiar with them. I used to work with Matt back in the late 1990’s and early 2000’s when I was in the games industry. The company we worked at was Argonaut Games Ltd in London UK. Matt was a graphics engine developer, so he would write the rendering engines on various different games consoles. Whilst I had a good grasp of 3D graphics processing, I was never good at the low level programming aspect of it all. My area of expertise was Tools development and Games AI. If I remember correctly, the game Matt was working on at the time I left was Red Dog on the Sega Dreamcast.
Even if you are a .NET / Java developer, I recommend watching the course as it gives you some good appreciation on how modern PC based processor architectures work.
In this article I have collated a few training links about the .NET F# Functional Programming Language. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.
I came across a really good library recently called Numl. Numl is a .NET library that aims to make Machine Learning much more accessible to developers by abstracting away all the complex parts. What is Machine Learning I hear you say. Machine Learning can be described as (and this is a quote from the Numl site).
The purpose of machine learning is to find (and exploit) patterns in data. Traditionally developers, when faced with a problem, develop and algorithm and write code. Certain classes of problems, however, do not lend themselves to this approach. With machine learning, the developer instead supplies relevant data to the machine and allows the computer to create the appropriate algorithm.
Numl does this via supervised and unsupervised learning. These are :
Supervised Learning : Supervised learning is the branch of machine learning that deals primarily with prediction. Given examples, supervised learning algorithms create models that generalize the decision making process. In essence, the machine learns from the past in order to accurately predict the future.
UnSupervised Learning : Unsupervised learning is the branch of machine learning that strives to understand the structure of data. This data, unlike supervised learning, does not have a predefined outcome that requires prediction but is vast enough to require a principled approach to either visual or physical compression.
Supervised learning is that part that I find most interesting and useful for my purposes. When using supervised learning you provide a labelled set of examples, and this can be provided as lists of objects, data tables etc. These data sets contain examples of how decisions were made previously.
I must say, I partially miss those days as a junior programmer, where a build of your system would take 20 minutes on your local machine and you could slack off for a coffee and a cigarette (I used to smoke back then). The professional in me must say though that we have it better these days as server builds and continuous integration make the feedback time on a build so much faster these days. 🙂
In cold climates, when the temperature drops, the pipes in houses often start knocking. Whenever you turn the water on at the tap or use the washer or dishwasher, whenever the heating system starts up, the pipes start banging against one another, against the framing, and against the walls. Sometimes they sound like a jack-hammer, especially when they start knocking in the middle of the night. Knocking pipes are hard to fix. They rattle because they weren’t properly secured. When they become loose and knock, precisely locating them is difficult.
The knocking may be happening at a different place from the insecure pipe. Over time, they become looser. It is difficult to find the exact place where they should have been secured, as the noise may be located a short distance away. Frequently, you have to make a large hole in the wall, remove any insulation, and start looking. Then, with a little luck, you can secure the pipe properly. The cost of securing a pipe correctly when it is installed differs minimally from securing it incorrectly. The cost of securing it once the building already has been constructed is much higher.
There is a powerful lesson here in that you should try to build your software as best as possible from the start. If you start making compromises in the design and testing, then you will create technical debt which you will have to pay back later, but you always end up paying it back with a lot of interest.