Jamie's Blog

The ramblings of a programmer with a little too much time on his hands

Category: Life (Page 1 of 13)

Discworld Disorganiser Header Image

Announcing: Discworld Disorganiser Web App

Today’s header image was created by Josh Kirby, you can find the more information on John Kirby here

A New Application?

I’ve wanted to build, publish and release a new application for a while now, one that’s based on an idea I’ve had bouncing around my head for a while: A search engine for Discworld novels.

Enter, the Discworld Disorganiser.

The Name

In the Discworld novels the dis-organiser is a parody of a PDA. It’s a small device, powered by an incompetent imp, which annoys the user. Not into remembering their schedule, in fact most of the features of the Mark 1 dis-organiser are apologies. It just annoys the user, that’s all it’s really good for.

The Application

The name doesn’t really hold with the aim of the application, if I’m honest. It was just a catchy, related name for the thing.

Anyway, the idea behind The Discworld Disorganiser application is that a user can use it to search for a Book, Character or Series.

The Book search would take into account as much of the book content as would be possible, when searching. Things like:

  • Name of the book (which seems quite important)
  • ISBN
  • Book description
  • Characters included in the book

That last step would be tricky, especially with the later books. Snuff (one of the final few books in the series) has over 50 characters, for example. Now most of these characters are not that important to the story, but I wanted to be as loyal to the source as I could in as many places.

A few weeks back, I released a video of an early beta of the app. It didn’t have a full data set, and was missing the Series search functionality, but I’ll include it here for completeness:

A Walk Through the Application

Since releasing that video, I’ve added the Series search function into the mix but have introduced a few bugs along the way.

First an updated video showing off the new features:

The first thing I do is search for a Book, you can see that it uses character names (which is why I search for “Rincewind” and “Nanny Ogg”) along with the book description (why I searched for “Watch”).

Then I search for Vimes on the character screen and we get the first bug: There are quite a lot of entries for Samuel Vimes.

Whoops

Then I do a partial character name match: “rince”. This matches on a few character names, so we get a few results. Again, though, there are too many Rincewinds.

And finally, I do a Series search. Currently this searches only on series names, so you wont get results if you search for “Nanny Ogg” or “Night Watch”. But you do get results for a series name, or for a blank string search.

Wanna Try?

If you’ve gotten this far, then I’m sure that you want to try it. And you can, it’s available for free. All you have to do is point a web browser at: http://discworlddisorganiser.azurewebsites.net

It’s on a free tier of Microsoft’s Azure hosting platform. This means that when the application isn’t being used it shuts down, and can take up to 4-5 seconds to start back up again.

Luckily, this only happens after about half an hour of no one using it

Wanna Know How I Did It?

If you got this far, then I know you’re more than a little interested in how I built this thing. Well you’re in luck, because I wrote up every step that I took to build both parts of the application.

Technically, it’s two applications

The first part of the application is a .NET Core WebApi project which uses Entity Framework Core and Sqlite. There was very little documentation out there for Entity Framework Core when I started building this application, so it was all a bit touch and go. But I documented the process, and you can read all about it here.

The series of blog posts presented in that link are in reverse order, because I like to mess with people.

The second part of the application is a .NET Core MVC Single Page Application using Angualr2 and webpack.

now THAT sounds impressive

I wrote all about the process of building that part of the application here.

I write a fair bit these days, huh?

On top of all that, I’ve released the source code for free. This means that if you follow along with the blog posts that I’ve linked above, you’ll be able to build a version for yourself.

Including the bugs!

WebApi

I’ve tried to keep the design for the  WebApi part to be as open as possible. As long as your dataset is complete enough, you should be able to swap the seed data JSON files for any other set of books, characters and series data.

Want to build a Brandon Sanderson search engine? How about a Stephen King search engine? Both of those are easy enough. Just swap the data in the JSON files, rebuild the app and call /database/dropdata followed by /database/seeddata to see your whole new search engine.

The source code for the WebApi project is available here

WebUi

The UI project is equally as open. As long as you change the address used in the search methods to that of your book engine, then everything will work fine.

The source code for the WebUi project is available here

Thoughts?

There’s not much else to say other than, go give it a try and let me know what you think. Let me know what you think of the application (or if you find any bugs) in the comments.

Post 2534 Header Image

How I Organise my Blog Posts

Today’s header image was created by Elvis Santana, the original source for the image is available here

Organised?! You Hardly Ever Post!

So it’s been a while since I last posted.

I start all of my catch up posts like that, have you noticed?

Well, I’ve been busy. I really have. I have three blogs now:

I post something new on the .NET Core blog

which chronicles my journey in learning .NET Core

every week. This means that not only do I have to make sure that I know enough about a given topic to write about it, but I also have to have some code written which shows off the topic of that week.

As an example, I spent February and March of this year writing a series of tutorials to go from nothing to this. Along the way, I wrote every line of code, designed a database architecture and published an application to the Azure cloud platform.

All of that in just five tutorial posts. All five of which come in at about 10,000 words

It was based on a project that I’d wanted to do for a while, so most of the design work had been done on the back of envelopes and scraps of paper.

But I still had to write the darned thing, then come up with a way of dividing it into chunks and writing about it in a way which meant that it would be engaging enough with readers for them to try it out.

I guess it helped that I gave the entire source code away for free, too.

On top of that, I have a list of posts, that are either written by myself or my brother, which are ready to be published for the Waffling Taylor Boys blog. This is a blog all about retro games and our thoughts on gaming in general.

They usually go out at a rate of two per month, but I still need to plan, research (read: play all my old games), write and proof read.

The posts are usually quite small, but my posts on Samurai Warriors and the NES classic TMNT have both been over 1,000 words, and my soon to be published post on the first SCUMM based Discworld novel tips over to nearly 2,000 words.

Tools

I use quite a few tools to write my blog posts:

  • Trello
  • Google Keep
  • Google Calendar
  • WordPress
Google Keep

When I come up with an idea for a blog post, I’ll usually have my phone with me or I’ll be near my computer. When an idea strikes, I’ll log into the Google Keep app

which is free, by the way

and start a new note. I’ll usually give it a title like

Blog post on …

and tag it with the blog that it would be relevant to. Here’s an example

in fact it’s an early version of the keep item for this post

Google Keep item for this blog post

I don’t flesh out the points much more than that.

this is a note taking platform after all

From there, I’ll head over to Trello and create a card for it.

Trello

Trello is one of the great fremium task management apps. The idea is that you create a card for a task and move it from list to list as it moves through stages of being completed.

it’s just a virtual version of a kanban board, but it’s really effective

Each of my blogs has it’s own kanban board on there, which means that I can focus on one blog at a time. Having the one board to focus on at a time is easier to manage than looking at the boards for all of my blogs at once.

The layout that works best for me is to have the following columns:

  • Ideas
  • Planning
  • To Do
  • In Progress
  • Published

On the .NET Core blog board, I have a “scheduled for publishing” column. This is because I’ll usually be, at least, one week ahead of myself. So it’s nice to have somewhere for each card to go between In Progress and Published.

Trello board for this blog

A redacted version of the Trello board I use for this blog

After I’ve created the Google Keep card, I’ll create a Trello card for it in the Ideas column. I don’t usually do much with the card while it’s in this column. But every few weeks, I’ll go through and move a card or two to the Planning column.

Once a card is in the Planning columns I’ll flesh out the main points that were on the Google Keep card, adding links and check lists as I go. At this point, it’s a short list of the main points that I want to hit, with some web resources to help me get the point across.

At this point, I’ll start adding labels to the card.

Trello card with labels

Trello has support for colour blindness. As far as I’m aware, I’m not colour blind, but I do prefer gradients and patterns over blocks of colour for my labels.

I’ll add labels based on what the card is about, the above card is about the Security of one of my blogs, and the steps I took within the software to secure it more, so those are the labels that I chose.

Once I’m happy with a card and I’m ready to start working on it, I’ll move it to the To Do column. Basically, this column is a waiting area until I get the time to work on a card.

When I’m ready to start working on a blog post, I move the top card from the To Do column into the In Progress column.

The most important thing here is that there is never more than a single card in the In Progress column at any time.  Each board can have a card in its In Progress column at the same time, but the In Progress column for a given blog can only have one item in it.

The reason for this is simple and can be summed up by quoting Charles Emmerson-Winchester III:

I do one thing at a time, I do it very well, and then I move on

Doing more than one thing at a time, especially something like writing, can put you under a lot of stress.

ask any university student around the time that their dissertations are due

So I only ever work on one blog post at a time.

Only when the card is in the In Progress column will I start to write it. By this point I’ve:

  • chosen the topic
  • planned out the content
  • picked a header image
  • picked out tags and categories

For instance, here is the card for this blog post:

Trello - Blog Post In Progress View

As you can see, I’ve fleshed out the original idea, added a header image, and added labels.

Once a blog post has been published, I’ll add a direct link to the live post to the card then move it to the Published column.

I can’t show you that for this blog post, so I’ll show you the last thing to go live, which was a post on my  .NET Core blog:

Trello - Published Post Example

Google Calendar

Having the cards move about is all well and good unless you have some sort of schedule for moving them around and getting the work done.

The best way to explain my work schedule is for you to see it, dear reader. So here’s my schedule for this month (April 2017):

Google Calendar Blog Post Schedule

Not included here is socialising time (time with friends and family), chill out time (because they’re different), bleed over time (when one blog post takes longer than the allotted time to complete), publicising time, and sleep.

oh, and work

Every Monday, I work on a post for the .NET Core blog. More often than not it’s me doing a write up on some code that I’ve written or some project that I’ve gotten live for people to play with.

Tuesday is my night for working on something for the Waffling Taylors blog. This is usually typing up my thoughts on a game, series or some other topic related to retro gaming. I’ve usually spent time during the preceding weeks playing the game or discussing the topic with my brother.

Unless it’s something that my brother has written, in which case I’ll have an evening of not writing

Wednesday is proof reading night. I take the post that I’ve written on Monday and proof read it. I read through it slowly, and some times out loud

which is a great way to check punctuation

I make my edits to the text and start again. I keep doing this until I’m happy with the post.

Thursday is the night that my .NET Core blog post goes live. I’ll usually spend half an hour before it goes live making sure that the post still makes sense (I make very minor edits here – capitalisation, usually).

One the post has gone live, I’ll grab a link to it and put it on the card as a comment. Then I’ll move the card to Published and spend part of the evening publicising it.

Friday is when Waffling Taylors posts go live, but that happens during the day. They go live during my lunch break, which is when I publicise it. Then all I have to do in this instance is to grab a link to the published post, add it as a comment to the card, and move the card to published.

Saturday is a free day.

On Sunday I’ll take some time looking at this blog. Sometimes it’s a post, sometimes it’s maintenance. If it’s a maintenance task, then it’ll get done on all three blogs.

Scheduling

Before I even started my .NET Core blog, I’d taken the John Sonmez course on blogging.

Here’s a direct link to it.

I found it insightful and helpful in picking a topic and getting everything ready for the off.

The basic rules that I set myself as a result of taking that course where:

  • Set a schedule
  • (as far as possible) Stick to it
  • Have a large backlog of articles ready to go
  • Engage with your audience

There’s a lot more to it than that, and I’d recommend anyone who wants to get into blogging take the course.

psst. It’s free

After All That

I often wonder how I’ve managed to stay on schedule

and there have been a few times when I almost haven’t

but it’s just a matter of putting the effort in and trying to be ahead of yourself.

When I am writing a blog post, it’s rarely posts that will go out that week. It’s usually due to go live the week after, at the very least.

It took a lot of effort to get to this point, and I’ve only had to pull something out of thin air very quickly once. It was when .NET Standard 1.0 was officially released and Immo Landwerth produced a bunch of videos talking about it and what it was.

then again that’s gone on to be one of my most successful blog posts, ever. And I’ve been blogging since 2010

It’s even been cross posted on Medium and it’s even been (partly) translated for a Chinese audience.

I was quoted for a Chinese technology news site.

I’ve had to relax the schedule of this blog to make room for the other two, but I still love doing all three.

Do you write for a blog? If so, what’s your schedule like?

Just One More Thing

No, it’s not my Columbo impression… this time.

I’ll tack this onto the end of the post, because it doesn’t really fit with the theme of the rest of the post, but I wanted to get it out there.

This week, I finished putting together the beta of an application that I’ve been working on for a while: The Discworld Disorganiser.

It’s a search engine (of sorts) for Discworld books. Take a look at the video and tell me what you think of the beta

What I've Been Doing - Header Image

What I’ve Been Doing 2017 Edition

Today’s header image was created by Camille Kimberly, you can find the original here

 2017 Has Only Just Begun

Really I should have come up with a snappier title for this blog post, but I had no immediate ideas.

One of the fundamental laws of computer programming is that naming things is hard. That’s my excuse here, and that’s what I’m sticking to.

This should have been titled something like “what I’ve been up to since late 2016”, but I’ll shut up about titles now and get on with the actual content. I mean, that’s what you’ve come here to read, isn’t it?

New Horizons

Back on October 4th, I announced that I was working on a new blog and that it would cover all things .NET Core.

If you’re not sure what .NET Core is and you’re not a developer, don’t worry too much about it.

Since October 4th I’ve been putting up one post every week on that blog.

Er, which you can read here if you wish.

At the time of writing, that’s 21 weeks. Also at the time of writing, I have 22 articles posted. Those articles have not been short, either. Most of them have been around 2000 words, and have had code samples that went with them.

Some of them have been about a particular topic within .NET Core (like this one, for instance) while some have been multipart tutorials (here’s an example). I’ve even collaborated on something with a friend of mine, and written about it (here’s my article on his blog)

Zac’s article was posted to my blog, you can read it here.

Views? Who Cares About Views?

This next bit is a little braggy, so I apologise in advance.

That first month, I didn’t have many readers. Only around 900 or so.

Only 900?!

But at the beginning of November, the Google SEO juice kicked in. I started to get referenced in places, and was even re-blogged.

Re-blogging is when someone copies your content, shoves it onto their site, and sticks ads all over it. They get all of the SEO juice and ad revenue, and you get nothing.

I got the re-blogged article taken down within 24 hours, but it was still pretty cool to know that someone had noticed me and wanted to rip me off.

Even at the time of writing this article, .NET Core is still very new, so that’s probably the reason regardless of what my ego says.

Then I noticed that one of my articles

shameless plug, click here, shameless plug

had started to get picked up.

What I’d done is write about the .NET Standard, which was a brand new thing that month (kind of), so Google saw my post as a very good source of information on it and because of that I’ve had about 150 people view that page PER DAY since it was posted.

That’s crazy. And it beats the per day stats of my original tutorial posts for x264 and MeGui.

Which still do very well, thank you very much.

External Stuff

On the back of that, I was published on Medium. Ok, they’re re-works of some of the posts I wrote for the .NET Core blog, but it’s still pretty good, right?

They’ve also been read thousands of times. Eep. 

Oh I was on a podcast about programming, too. Episode 8, as well.

We all know that the first 10 episodes is where it’s at.

I even have a really cool Cynical Developer T-Shirt:

More Blogs? Sure Why Not?

On top of all of that, I’ve put together a new blog with my brother. The aim of The Gaming Waffles of the Taylor Boys is for the pair of us to write about all of the games that we used to play or look forward to playing.

There’s already an article on there all about Super Mario Bros. and one about Resident Evil 7 (which was published before the game was released)

It’s fun stuff, not serious video games reviews or critiques. Just us discussing our favourite games and why we like them so much.

We’re also looking to get some guests on the blog, too. That’ll be neat.

There aren’t that many articles on there as of yet, but that’s because it’s still a pretty young blog and we’re trying to pace the content out.

There’s no point spending a weekend writing tens of articles and publishing them all at once. That’s not how it works for blogs. Consistently often, that’s the key.

It’s definitely worth taking a look and keeping a keen eye on it as it grows.

Any Others?

Those are just two of the projects I’m working on at the moment, of the ones I’m allowed to talk about.

It’s all a bit hush hush, right now.

I’ll write about the others in time. But they’ll have to remain sneaky and secret for now.

stocksnap_4yos7quwrv

Passwords And How They Are Hacked – Some Background Information

Disclaimer: I want to start this post by saying that I am, in no way, a computer security expert. However, the details presented here are correct enough to give a background and starting point for anyone who wants to follow up and dig deeper into the fascinating world of password security.

Everything about our daily lives is going up to the Cloud

What’s the Cloud, again? It’s a marketing term for anything that’s an Internet enabled service.

Your email account? That’s on the cloud. Your Facebook account is in the cloud. Your bank details are in the cloud.

What’s the problem with this? Nothing, really.

Unless the company that has all of your details on file (in their cloud) has a data breach. And if it does, you’ll end up on Have I Been Pwned.

Well, not on per se. I mean that your email address will be searchable there.

I’m searchable on there (and I’m not going to go into the details, because both are completely egregious examples of being added to databases and services that I never agreed to being added to in the first place), due to two unrelated data breaches.

Have I Been Pwned example

Have I Been Pwned? Yes I have. Have You?

It’s definitely worth taking the time to see whether your personal details are out there (due to a data breach or leak), and the guy who runs the site is perfectly trust worthy.

In fact, he’s one of the industry experts on this kind of thing.

Data Breaches

The name should be easy enough to parse, but a data breach is when someone breaks into a secure system (say your Bank’s computers) and makes a copy of the data that is stored there (say, account names and balances) for their own nefarious purposes.

Data breaches are not a new thing. Ever since the idea of organised businesses was created, there have been competitors who have wanted to steal their ideas and information. Then computers came along and data breaches got easier. Then the Internet came along and they got even easier.

OK, computer systems have become more secure since the early 70s.

Because security is ALWAYS an afterthought it wasn’t baked into how computers or the Internet worked from the begining, and we’ve been playing catch up ever since.

In some ways they’ve become less secure. The best IT folks out there will tell you, more than likely through the promise of anonymity, that even the best businesses have issues with their security. Most likely due to the users to of the system, but not always.

Users are bad? Yeah.

What Did Users Do?

Kevin Mitnick is a person who became infamous in the late 80s and early 90s for his escapades relating to computer security. He had spent his teenage years hanging around with Phreakers. These days, Phreakers would be called Hackers.

These were people who had figured out that there was a test tone on AT&T phone lines (around 2600 Hz), and if you played it down the phone before dialling, then your call would be free.

It’s so famous within the “hacker” community that there is a magazine named after it.

Soon after figuring out that the 2600 Hz tone would get them free phone calls, they started to learn other ways to get free things. Mainly they were after free access to computers or BBS‘s.

BBS’s were what we had before The Internet came along. Accessing them required a computer (which were expensive at the time) and an unmetered phone line (again, expensive).

To get access to these, Phreakers would spend their time figuring out how to get into buildings, and guessing (and resetting) passwords. They came up with a bunch of techniques:

  • Dumpster diving (for passwords that had been written down, and then thrown into the trash)
  • Creating fake IDs
  • Talking their way into the building
  • Calling random workers, pretending to be an employee and asking for favours

As a side note: the movie Sneakers, whilst fictionalised and mostly fantasy, shows how to use a bunch of these techniques in order to break into systems.

All of this falls under the umbrella term “Social Engineering”

Social Engineering?

Imagine the situation:

You’re at work, sitting at your computer working on some big project. Your desk phone rings, it’s Dave from IT. He’s new and is calling round to introduce himself.

Hey, this is Dave from IT. I’m still pretty new here and Steve, my boss, has asked me to install an update on everyone’s computers. I could walk up there with it on a USB and install it on each computer in turn, but that would take hours he wants it done now. Could you do me a favour and let me run it on your computer from here? It’ll save me a lot of hassle.

You will? Awesome, thanks. I’ll need your username and password, and you’ll need to not use your computer while I do it  – maybe grab a coffee or something. I owe you a beer, seriously. Thank you for saving my bacon.

What if Dave doesn’t actually work in IT? Have you ever met Dave or Steve? Was there an email or announcement that there was a new person starting in IT. Did you even pay attention to the number that came up on your phone (most internal lines will be a lot shorter than external ones – although, these can be easily faked)?

You’ve just given access to your computer to someone that you potentially don’t know.

This is an extremely simple example, but it happens every day. Why? Because we have a need to be helpful. It’s why we hold doors open for people, or pick things up when someone drops them. Because we’re social creatures, and being helpful is polite and expected from us all.

For more examples of how this is done, go watch Mr. Robot. It’s a fictional TV show, but there are some real security professionals who work on the show and some pretty realistic examples of how hacking is done.

The “Hi, this is Geoff from Microsoft,” calls have been happening to my friends a lot more, recently. This is another example of social engineering and they usually have the same format:

I can see that your computer has a virus on it. I need you to go to this website, download some software and I can fix it for you, from here. I’m from Microsoft, remember.

No. This person, whoever they are, are not from Microsoft. They’re a crook, and are tying to social engineer you into giving them access ot your computer. The key questions to ask yourself here are:

  • How did they get my phone number?
  • How do they know my name?
  • Why haven’t they called anyone else that I know?
  • How can they see that my computer have a virus on it?

One of my friends once asked the guy who’d called him this last question. The response from the “Microsoft Engineer” was a scripted, “We have an application that sweeps the Internet looking for computers with issues,” sort of thing. But when my friend asked the “Microsoft Engineer” how they could do this, considering that he didn’t have access to the Internet he was promptly hung up on.

What Does This Have To Do With Passwords?

Passwords are a hot topic. Even sciencey web comic XKCD has weighed in on it: https://xkcd.com/936/

Even a quick Google for password related topics returns millions (if not billions of results). If there is so much advice out there, then why do we still need to learn how to make safe passwords?

Because passwords, like security, are almost always an after thought.

Be honest with me

I’ll never know anyway, seeing as this text.

How many of your online accounts have either “password”, “password1” or something similar as their passwords? How many of them have the same password as another account? Does your Facebook account have the same password as your Gmail account?

Here is a link to one page (of thousands) that contains the most commonly used, and therefore worst, passwords of 2011 into 2015

See.

The biggest problems with passwords are:

  • Password reuse – is your Amazon password the same as your Twitter password?
  • Password entropy

Password Reuse

Let’s say you have a Facebook, a Gmail and an Amazon account. Let’s also say that you used your Gmail account to create your Facebook and Amazon accounts. For the purposes of example, lets say that your Gmail address is something like “[email protected]

This means that your usernames for both Amazon and Facebook are [email protected]

Let’s say that I guess your email account password. Actually here’s the more likely example: let’s say you signed into your email using some public or work computer and forgot to sign out.

If I can get access to that email account, I know how access to your Facebook and Amazon accounts.

Even if your passwords are different for each of these services, all I need to do is reset your password and I’m in.

Not a big problem? Are you sure about that?

Facebook will have your real name, phone number, a list of your friends, your work place, your home on it, and a list of places that you have been recently.

If you’ve entered any of this data, that is. And, let’s be honest, you have.

Amazon has your real name, phone number, address, business address (if you’ve ever had anything delivered to work), address history, and credit card information.

Still not a big deal?

Here’s the more likely situation: You sign into Facebook on a public or work computer and forget to sign out. From the Facebook account, we can get to your email account, from your email account, we can get to your Amazon account.

Heaven forbid you use the same Gmail account for work, too. That was the biggest issue with the LinkedIn hack – since it’s used primarily by business folks, with their work email…

And all that because you used the same password for them all.

And none of this has even touched actively trying to hack into these accounts by cracking the passwords.

Password Entropy

The extremely short version is that the longer a password is, and the more random characters it uses (without any that repeat), the harder it is for a person or a computer to crack.

If you want to read more about how entropy is estimated, you can read the wikipedia article on it, here.

I’m also well aware that it makes it more difficult to remember too (more on that, in a moment)

When a computer is trying to break a password, it has two basic ways of doing it:

  • Brute Force
  • Rainbow Tables

There’s actually loads more ways to do it, but these are the most often used.

Brute Force Attacks

Brute Force is what most people do when they forget their password.

I’m sure that it was password12345.

Wait! It isn’t?! Maybe password123456.

What?! Maybe it’s password1234567.

Except that a computer can do it millions of times a second. Usually they’ll either use a dictionary attack or just start at the beginning of the alphabet and work up, adding a letter at a time, until they get in (or the system locks them out).

Dictionary attacks are basically when a computer uses a file which contains all the words from a dictionary (might be the English dictionary, or a list of common words and phrases) and tries each one in turn.

But most of the time they use lists of the most common passwords (like this one, which I linked to earlier)

Rainbow Tables

Rainbow Tables are a little more complex.

Your password will, hopefully, not be stored by the website, app, or service as plaintext.

Plaintext is what you’re reading right now, you don’t need any kind of decryption system to figure out what these words are. So a plaintext password might look like this:

p4ssw0rd

Whereas an encrypted version of p4ssw0rd might look like this:

5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

That example uses SHA-1 to encrypt the password. SHA-1 is NOT secure and shouldn’t be used for securing passwords.

Because good websites only store the encrypted version of the password and check that against the encrypted version of what you type, there should never be a way for anyone to guess what the encrypted password actually is.

A good website will “hash” your password (put it through some kind of mathematical equation that will swap all of the characters with something else), but it will also use a “salt” (something that is added to the encryption to add a layer of randomness) before storing your password in their database.

When you enter your password on a login screen, it is passed through these hasing and salting algorithms and THAT is what’s checked against the record of your password in the database.

Well, it is if they don’t store your password in plaintext

Because going from the plaintext password to the encrypted version is a difficult thing for a computer to calculate, there are groups of nefarious people who have done the hard work for you already. What they produce is Rainbow Tables.

These are collections of the most common passwords (from other leaks) that are already hashed and salted using a range of different encryption methods.

The idea behind these is that, once you’ve made a copy of the website database, you can look at the password fields and figure out which encryption system was used. Then you can use a known decryption system (usually reverse engineered) against all of the passwords in the database, and you’ll have them in hours (versus days and weeks of brute forcing the decryption of a single password).

A very basic version of this was used by the Bombe to break Enigma: figure out the common words and phrases, then use that decryption key to figure out the rest of the message.

What Can I Do?

Very little.

Pretty bleak, huh.

If the folks who made the websites and services that you used have protected your password then you should be ok. But only if you use completely different passwords for each website or service that you have an account on.

Seriously, you need different passwords for different things. If I’m able to figure out your password to your Facebook and you use the same password everywhere, then what’s stopping me from logging into your iCloud.

That sounds familiar

In fact, go check one of your passwords here: https://www.grc.com/haystack.htm

Before you ask: I’ve checked, nothing is sent back to any kind of server or stored anywhere.

What that GRC link will do is tell you just how long it will take a computer to guess your password. In fact, here’s what happens when you give it “password”:

GRC Haystack Password

How long it would take a computer to crack the super secure password of “password”

 See.

 Unique Passwords

Your absolute best bet to reduce the chances of it happening to you is to always use a unique password. But to be able to do that, you should be looking to use a password generator.

There’s an awesome one over on codeshare, which is free to use and adhere’s to the OWASP password guidelines.

Seriously, go try that password generator out. It’s super cool.

Now that you’ve generated your super strong password, how are you going to remember it? Well, that’s where password managers come in.

The idea with these is to store all of your passwords in one encrypted file with a master password being used to unlock them. I’m not going to compare them, because greater minds than mine have done that for me.

And there are a lot of them out there.

But I will recommend two fantastic password managers:

What’s the difference?

Well, LastPass stores your passwords on the cloud and KeePass stores them on your computer.

Depending on whether you want to be able to access your passwords on the go, or just on your computer will define which of the two you could use.

So in conclusion:

  • Don’t use the same password in more than one place
  • Use strong passwords everywhere
A cropped version of the Trick The Last Stage poster

Trick – The End: My Thoughts

I’ve been a fan of Trick for over a decade (I’m even working on a translation of one of the in universe books) as such I’ve written about it before, sometimes as small mentions (talking about the in universe books and my plans to translate them into English), and once as a kind of overview of the series. To find out about Trick as a whole, I would recommend starting with the overview.

The overview post contains a listing of the series as it was then (wow! that was back in 2011), which I’ll paste here too:

  1. Season 1
  2. Season 2
  3. Trick: The Movie
  4. Season 3
  5. Trick: The Special
  6. Trick: The Movie 2
  7. Trick: The Movie 3
  8. Trick: The Special 2
  9. Trick: The  Special 3
  10. Trick The Movie: The Last Stage

Since then, another special and movie have been released (I’ve added them to the above list), and the movie was heavily marketed as being the final thing in the entire series.

When the final movie came out, I made the decision not to see it for as long as possible. This was because Trick is one of my favourite shows of all time (I should probably write a post with that list at some point… note to self), and I didn’t want to see it to the end meaning that I could go back and start it again whenever I wanted and it wouldn’t lose any of it’s… magic, I guess.

Last night I watched the final movie, after spending a few months re-watching everything to build up to it.

It should be obvious, but if you’re a Trick fan then the remainder of this post should be considered spoilers. If not, then parts of this wont make sense.

The Last Stage

So, the plot of The Last Stage revolves around Physics Professor Ueda Jiro and Stage Magician Yamada Naoko going to an isolated village in Malaysia, to expose the local Shaman as a fake.

They do this on behalf of a Trade corporation who want to farm the area for it’s rare plants. They’re joined by an executive from the company, one of the project leaders and a doctor. They also meet Yabe Kenzo and his Otaku lacky (I always just refer to him as Shibuya).

Swan Song

As I mentioned above, this movie was marketed as the final story in the series. This included a fourth-wall breaking trailer at the start of the final special (which was broadcast a few months before The Last Stage’s release) in which Hiroshi Abe and Nakama Yukie manipulate dolls of the characters that they portray, whilst telling the viewers to go see the movie and that it would be the final one.

Going into the movie, a lot of the older character points are reiterated to the viewer (or spelled out to new viewers):

  • Yamada Naoko is a magician, and is a lot less successful than she thinks she is.
  • Ueda Jiro is a flashy, over the top professor of Physics at Tokyo University and is more successful than he should be.
  • Naoko’s Mother teaches calligraphy in Nagano (this scene has hints that the final film is not the last one in the series) and is from a long line of spiritualists.
  • Naoko’s Father (who was a successful magician) was suddenly murdered, presumably by a spiritualist.

After that, it’s time for the plot to actually start.

There was a wonderful scene, set at a Water World like amusement park, which had quick references to out of universe (i.e. Real World) things, which then set up Naoko’s need to travel with Ueda.

The pair then fly off to Malaysia and travel to the isolated village. Along the way, Naoko meets up with Yabe (because a Trick movie without Yabe would be a strange beast indeed).

One of the things that was telegraphed during the final special was that Mother (from the very first episode of Trick) has a sister, who is also a spiritualist and is looking for the people who brought down her sister. This is kept up in The Last Stage, by some of the Malaysians making the same finger pose and chanting, “Okaaaasamaaaaaa” while looking a paintings of Mother, which are dotted around their isolated village.

The gags where really funny (as is always the case with Trick), and the puzzles/tricks were really well though out. That’s not to say that the puzzles/tricks in the earlier productions aren’t well thought out, but these ones were real head scratchers, reflecting Naoko’s ability to see through ore and more obtuse tricks.

The Ending

Again, spoiler warning.

At the beginning of the movie

Wait! The beginning?! We’re talking about the end of the movie, right?

At the beginning of the movie, we’re told about Houdini’s quest to find a real spiritualist so that he could contact his dead mother (something we’re told about at the beginning of the previous special too), and while on his death bed he told his wife, “if there is an afterlife, then in one year I will find a way to contact you,” before he died.

At the end of the movie, Naoko sacrifices herself so that a Tunguska event like explosion can be averted and everyone can get away to safety. Before she does, she repeats to Ueda what Houdini said to his wife in the introduction animation.

One year after the explosion, we’re shown Ueda winning yet another award. He offers the money that he wins as a bounty for anyone who can prove that they are a real spiritualist and that there is a one week deadline, as a kind of mirroring of how the series started. We’re then shown Yabe and Shibya chilling in a hot tub, when they’re told to go investigate “a young woman who has washed up in the south shores, suffering from amnesia.” Yabe shrugs this off, and we’re propelled a week forward to the day of the deadline.

We’re taken to the waiting room by Ueda’s office. In the waiting room are all of the “spiritualists” who tried out before Naoko did back in the first episode, and Yabe’s original partner is in Ueda’s office, trying to prove that he knows where Yabe (who he calls “Anee”, which means Brother), by spinning Ueda’s globe and stopping it with his index finger. One by one, the spiritualists are sent away.

Naoko’s Mother turns up and tells Ueda that, “even if a person dies once or twice, they will always remain the same” before leaving.

Over the credits, which includes the original closing theme, we see Ueda pacing around in his office watching the clock, intersperced with clips of Naoko from season 1. Just as the clock is about to strike midnight

… I wont say exactly what happens, but it’s perfectly played out.

The End

There wasn’t an explicit ending of the story (which links in with what Noako’s Mother’s students where writing at the beginning of the movie – “thanks for the support over the last 13 years. Maybe this isn’t the end?“), and going in to the final movie I was convinced that there never was going to be one.

Sure, we knew all along that Ueda and Naoko would get together (it’s kind of how TV works, and even Naoko’s mother knows how much Ueda wants to be with Naoko) so we don’t need to be told it, and subsequently wasn’t.

But the way it was done, left me speechless at the end. I watched that final post credits scene with baited breath. It’s a cliché, but I was literally on the edge of my seat (I nearly fell on my backside).

A fantastic end to a fantastic show.

…or is it the end? I’m sure those interested had already discussed it when it first came out, though.

My current desktop environment. XFCE with Numix and Conky.

Snappy Title Here

One of the reasons why I’ve been pretty bad at posting lately is that I’ve not had much time to sit and compose a long post (I’ve still got one in the backlog that I’m putting a fair bit of research into).

It takes me about an hour to go from an initial idea all the way to publishing it and walking away from a post.

So what I thought I’d do is share a few smaller posts in one mega post (if you will).

What I’ve been up to

So Windows 10 issues aside I’ve not been doing that much with my computers. I’ve been playing with Desktop Environments on my Ubuntu box, watching some Japanese TV, playing my bass and trying to get fit.

Desktop Environments

It’s not exactly the same, but you can thing of a Desktop Environment as the desktop interface for a computer: how the icons look, the fonts used, what the desktop looks like, all that stuff.

So I’ve been playing with Desktop Environments. Ubuntu comes with Unity which is nice, but it’s a little too reddish brown for me. Plus, I’m not a huge fan of how it connects to Amazon to get search results when you’re searching for an application or file using their launcher.

I’ve settled on XFCE because it’s small and fast.

Then I started looking for ways that I could alter the whole thing and make it more my own – one of the core ideas behind GNU Linux is the ability to swap things around: don’t like Nautlius (a file manager, similar to Explorer on Windows)? Then why not swap it out for thunar or pcmanfm?

I started playing with Conky and Numix and managed to get something that I really liked in about an hour. Here’s a screen shot of my current desktop environment:

My current desktop environment. XFCE with Numix and Conky.

My current desktop environment. XFCE with Numix and Conky.

My desktop wallpaper came from: atomix.vg

Japanese TV

I was often forgetting how far through Japanese shows I’d gotten, then I found a service called MyDramaList which seemed to fit perfectly. It’s basically like TraktTv but specifically for East Asian shows.

Anyway, so what have I been watching?

Seikei Bijin

Seikei Bijin means Artificial Beauty and that’s, pretty much, what this early 2000s show is about. At the beginning of the first episode Saotome Honami (the main character, who is played by Yonekura Ryoko) gets back to Japan after a trip to America for some extensive plastic surgery.

She spends most of the series getting back at men who are only interested in her because she’s attractive. This is all while working as a model for a photography agency, which makes it a little double faced I guess.

The first episode grabbed me with it’s combination of outright stupidity and stark realism, then it seemed to lose it’s way for a few episodes (basically repeating the same story twice over), but it picked up again.

The theme song aint half bad too:

Nobunaga Concerto

Nobunaga Concerto is one of them “character is flung back in time and meets a famous person who happens to look just like them, and they agree to switch places” types of shows.

The big draw here being that high school student Saburo (played by, then 32 year old, Oguri Shun) is flung back in time during a high school trip (he falls off a wall, after asking a girl out on a date). How far is he flung back in time? Around 500 years to just before the Sengoku Jidai. He promptly swaps places with Nobunaga Oda (who decides to go chill out at a Buddhist temple for a bit) and runs the clan for most of the 11 episodes of the show.

This one is quite silly in places, and poignant in others. The music is written by Taku Takahasi of M-Flo fame, too.

Shinzanmono

Shinzanmono means “new comer” and is the tale of Detective Kaga Kyoichiro (played by Abe Hiroshi) taking on a murder case in the Ningyo-cho area of Nihonbashi, Tokyo. The whole series involves a single murder case, and the story is very much character driven. Each episode revolves around Kaga learning about eahc suspect and ruling them out of the murder case. Story wise it’s very slow moving, which gives the characters room to breathe and grow.

The acting in this one is top notch (and not just because Abe Hiroshi is one of my favourite actors), and the story is really well told. There are occasional bits of sillyness, and a fair bit of poignancy.

Here’s the theme for Shinzanmono:

I’ve even watched the 2 hour special episode and the Shizanmono movie (which I almost never do unless I really like the show).

Podcasts… again!

I’ve written about podcasts in the past, so I wont waffle on too much here.

I’ve ramped up my podcast subscriptions recently (although I’m keeping a space open for when We’re Alive: Lockdown is released), which means that they have replaced music on my commutes and trips about town.

A couple of new podcasts have been added to my list:

This doesn’t include the Japanese language ones, though. I’m using them to keep my listening comprehension up (immersion is one of the best ways to pick up new words in a language – remember that scene from 13th Warrior?)

This means I’ve got a rolling list of things that I listen to throughout the day, and learning quite a bit too (as long as it’s sticking – which I think it is, because I’m more of an auditory learner than visual).

Deadpool

You don’t need me to tell you how good this movie is. If you haven’t seen it, then you really need to. If you’ve already seen it, then you need to see it again.

3.5" Hard Drive

Operating Systems – Eeek!

My Windows 7 machine was running a little slow recently. So, I decided to buy a shiny new SSD and upgrade to Windows 10.

After all, users of Windows 7 and 8.1 can get a free upgrade to Windows 10. So why not, right?

Installing an OS

My SSD arrived, and I cracked open my PC when I got home. I took out all of my current (non-SSD) drives and got to work installing Windows 10.

The reason I took out the old hard drive is an old one, one that I’ve tried to avoid for years:

Accidentally wiping the wrong drive

My three hard drives have loads of important data on them. Pictures, documents, music,movies. All sorts of stuff that I’ve created and collected over years.

Some of the things I have stored on these drives are over a decade old and important to me.

Anyway, so I ripped out the current drives and jammed my shiny new SSD in there. I fired up the machine with high hopes. My USB drive with a Windows 10 installation media was already plugged in.

It’s 32GB my USB 3.0 drive (named Anoia), btw

After about 20 minutes, Windows was installed and ready to run.

Issues?

After an hour or so of setting up Windows 10, I shut down to re-install my old drives. And that’s when things started getting janky.

After a few hours of using my computer I started to notice random restarts.

Blue screens where happening a lot.

Luckily Windows 10 is pretty useful when it restarts via Blue Screens, so I got to Googling. Here are some of the issues I had:

  • 0x80070570 – 0xa003 (which is a Windows 10 media creation issue)
  • BAD_POOL_CALLER
  • KERNEL_PANIC
  • KERNEL_SECURITY_CHECK_FAILURE
  • MEMORY_MANAGEMENT_ISSUE

Unfortunately Google wasn’t that helpful. But I kept Googling.

Results?

After a few evenings wasted Googling, I found a few forums posts related to my motherboard (an ASUS P8P68) and UEFI Secure Boot (which is what Windows 10 uses to ensure that it’s boot loader hasn’t been edited by a malicious third party).

UEFI Secure Boot?

An extremely simplified and (not entirely correct) description of UEFI Secure Boot is this:

When you’re computer starts up, the BIOS fires. BIOS stands for Basic Input Output System and is used to do a bunch of things (including a POST – Pre Operating System Test), the main thing is to choose a drive to boot from.

Booting is when your computer loads a tiny piece of software, called a Boot Loader. The Boot Loader tells the computer where on the drive to go to load the rest of the Operating System.

UEFI Secure Boot is a way of making sure that the boot loader doesn’t get altered by anyone (a virus, Lenovo or Dell).

Technically Lenovo and Dell didn’t alter the Boot Loaders of affected computers, but their software was installed at the lowest level and consumers didn’t know.

The Boot Loader on an UEFI machine has been encrypted. The Boot Loader is decrypted by your BIOS, a bunch of things are done to ensure that the Boot Loader hasn’t been altered since it was installed. Then the operating system (which is linked to by the Boot Loader) is started.

And The Point Is?

Well, it turns out that the model of motherboard that I have has an issue with UEFI Secure Boot. I’m still piecing  things together, but it looks like, under a set of very specific circumstances, my Windows kernel was screwed up. And one of those circumstances was related to UEFI Secure Boot.

The Kernel is the core of the operating system.

A Week Later

After about 8 hours of the operating system being installed, something would screw up and the kernel would get chewed up by something.

It can’t be the installer for Windows, because I’m using a completely legitimate installer – I’d paid outright for a Windows 10 install.

I was going to install an upgrade, but it turned out that my copy of Windows 7 wasn’t eligible for the free upgrade.

I don’t believe it was related to some kind of virus or malware. I was running a legitimate install (again something purchased outright) of Bit Defender 2016 each time the OS was installed.

It was the first thing that I’d installed after initial boot, I’d let it update itself and I’d leave it in Auto Pilot mode.

Resolution

After spending a week, trying to get the OS to install and run nicely I’ve given up. For some reason, it kept screwing up and I was getting more than a little miffed.

My choice was:

  1. Buy some new hardware and hope that it fixes everything
  2. Don’t use Windows

Moving to a free operating system seemed like a great idea after a week of struggling to get a stable OS installed.

Anyway, this is all a really long winded way of saying that I’m currently running Ubuntu 14.04.

That’s all, really.

Hit the Floor Podcast Logo

Podcasts, podcasts, podcasts

Feature image courtesy of http://www.hitthefloor.com/

Keen readers will have noticed by now that I’ve written about Podcasts before (namely here [LINK]).

Not to worry though, dear reader. Previously, I’d written about podcasts relating directly to software development.

I’m a software developer, you see. It just stands to reason that I’d be interested in that kind of thing.

This time, I thought I’d ramble on about recreational podcasts for a while. The kinds of podcasts that I might listen to for unwinding purposes, or to learn more about the world we all live in. Podcasts that I can listen to when I’m wandering about town, on the train, or doing the shopping. But not when I’m necessarily looking to learn about my chosen profession.

I’ve picked my favourite 14 podcasts from my current subscription list, I’m going to list them with a short description and some reasons why I think they’re great. So without further ado (or rambling on to take up space, or increase my word count), here is my list of podcasts:

99% Invisible

I discovered this one while listening to the TED Talks Audio podcast (more on that in a moment). It’s the brain child of Roman Mars, one of the founders of Radiotopia [LINK], who brings you a weekly short essay on design and architecture, each of them is eminently entertaining and extremely informative about the things that are almost completely invisible.

Mars’ discussion on the design of flags, for instance, has been viewed/listened to over 1 million times (and that’s just on the TED website alone). Each episode is thoroughly thought out and presented in a way that is engaging whilst being open enough to allow you to take in what is being said and think for yourself. Plus, they range from 4 to 12 minutes in length, which is a plus for our 21st century, instant entertainment, world.

The Biggest Problem In the Universe

This is an extremely entertaining podcast with an extremely simple set up: Each week hosts Maddox and Dick Masterson bring 2 problems each to their discussion, they discuss the problems and listeners are invited to vote on the problems. Essentially, they’re getting the wider Internet to choose the world’s biggest problems.

It’s actually more hilarious than it sounds mainly due to the interplay of Maddox, Dick, Shaun (the audio engineer), and whoever they have on as a guest star. The site includes a glossary of inside jokes (for folks who might have missed the odd episode), the list of problems, fan art, and a voice mail number.

At the time of writing, amongst the highest rated problems are:

  • Anti-Vaxxers
  • Female Genital Mutilation
  • Slacktivists
  • Social Justice Warriors (SJW)
  • Conspiracy Dipshits

They also offer a paid-for series of podcast episodes (named The Biggest Solution in the Universe), which has the same format but for solutions to life’s big problems.

GK:AD

After Gaijin Kanpai went belly up (for reasons that I’ve never really understood), hosts LoKi; Jalyee; Zero and Erin bring you silliness and reviews of albums from Korea and Japan.

Their reviews are very thorough and informative, with enough information about the artist and culture – which is what happens when you have 4 folks who are VERY interested in all things Japanese.

The episodes are quite short, and they usually include snippets of the album in the background so that you can get a feel for the album as you listen to them talk about it.

History of Japan Podcast

Isaac Meyer is a PhD student at the University of Washington who specialises in Modern Japanese history. His history of Japan podcast is both entertaining and informative with a whole host of sources to back up each episode (and for further reading).

How Did This Get Made?

Comedians Paul Sheer, Jason Mantzoukas, and June Diane Raphael discus the intricacies  of big blockbuster flop movies. Fan favourites include Street Fighter (with June asking, “What exactly is a street fighter?”), the Fast and Furious series, and Deep Blue Sea.

Occasionally, they record live episodes at Largo which include audience interaction and prizes for attendees. Paul also records mini episodes, where he goes through corrections and omissions (“things we might have missed or gotten wrong”), Q&As (“You give me Qs and I give you As”), and whether the movie they reviewed would be better with Nicolas Cage in the lead role.

I Was There Too

Each week Matt Gourley interviews someone who was there for the making of a historically important film, but not necessarily  the A stars. For instance, the latest episode (at time or writing) was an episode about the film Mrs. Doubtfire, featuring an interview with Lisa Jakub (who played the oldest child, Lydia Hillard), another was an episode about T2; Aliens and Titanic featuring an interview with Jenette Goldstien.

Each episode has a link to the previous one (via 8 degrees of separation style linking), and some have information on the music, production or writing. Definitely one for you movie buffs.

KEXP Song of The Day

KEXP is an internet radio station based in Seattle. who broadcast 24 hours a day. They are so much more than just an Internet radio station, though. In their own words:

KEXP is a dynamic arts organization that provides rich music experiences on the air, online, and on the streets. KEXP’s unique services benefit three distinct groups: Music Lovers, Artists, and the Arts Community.

As well as broadcasting local and internationally renowned artists 24 hours a day, they reviews of albums (in the form of blog posts) and a daily “Song of the Day” podcast which features a performance by a local (to Seattle) band or artist, each day of the year.

Samurai Archives Podcast

Another Japanese history podcast. This time, it focuses on the founding of the Samurai (ranging from the Heian period up to early modern Japanese history), their role in medieval Japan, the bloody battles they fought and the changes (political and otherwise) they helped bring forth.

Hosts Nate, Chris and Travis talk you though each individual topic in 30 minute chunks. They are students of Japanese studies (or at least they were, when they started this podcast) at the university of Honolulu so they definitely know their stuff.

A word of caution though: the first 4 episodes are pretty rough and are interviews which take place at the  AAS/ICAS (The Association for Asian Studies and the International Convention of Asia Scholars) of 2011.

TED Talks

I’m going to assume that you know what TED talks are (if not, then you can learn all about their mission statement here: [LINK]).

Each episode of the podcast is a 4-8 minute short, audio version of some of their best talks. Everything from the design of flags (as mentioned earlier, when I mentioned the 99% Invisible podcast) to the difficulties with raising African-American children in modern America, from Machine Learning to Autism.

The Blacklist Table Reads

The Blacklist [LINK] is a website devoted to getting the best unproduced screen plays into the hands of Hollywood big wigs. The Blacklist Table reads is a podcast devoted to performing the very best of the site in a weekly podcast.

Each screenplay is split across 4-5 twenty minute long episodes performed by extremely talented actors and comedians, with interviews with the writers. If you’re at all interested in movies and story telling, I would recommend listening to this one.

The Bugle

With nearly 300 episodes (at the time of writing), this weekly satirical podcast goes all the way back to 2007 and has the illustrious honour of having introduced the word “Fuckeulogy” into several Dictionaries of the English language (not just online ones, either). The Fuckeulogy was created when Host John Oliver gave a eulogy (of sorts) on the death of Osama Bin Laden.

Obviously, not safe for language ahead:

[youtube www.youtube.com/watch?v=AVb84n-FFx4]

The pairing of Andy Zaltzman and John Oliver makes for a double team of satirical wonders. Nothing is free from the magnifying glass view of their wit. Definitely a recommendation for those who enjoy laughing.

The Pratchett Podcast

It’s no secret that I’m a Terry Pratchett fan [LINK] and, though I’ve not written about his passing (yet), I was affected by it not as much as those closest to him obviously.

Graeme Sheridan and Rhys Parton host a monthly podcast devoted to all things Discworld (books, Audiobooks, DVDs, stage plays, conventions, and everything in between). Due to the nature of the podcast, it can (and does) contain spoilers for the books so listen with caution.

The Steve Austin Show

Austin 3:16 says, “Lo there you shall find the cast of pods; brought to you by the loud mouth, trash talking, actor, professional wrestler and ass kicker; Steve Austin.”

There are two versions of the show: the “clean” version, released on Tuesdays; and the “unleashed” version, released on Thursdays. Definitely worth a listen if you’re into Professional Wrestling, TV, Movies or listening to a man talk trash about life and everything that it entails.

We’re Alive

As much as I’m a fan of all of the above podcasts (and a whole bunch of others to boot), We’re Alive is simply the best of the bunch.

It was a bi-monthly produced radio show about a group of survivors after a Zombie apocalypse. Presented as a series of journal entries, We’re Alive won a whole slew of awards and was featured on the Nerdest podcast network. It’s available as a series of Audiobooks (with extended episodes), too.

It’s popularity has even spawned a side story (currently in post production, have smashed it’s kickstarter goal).

Seriously folks, if you’re into storytelling and dramatic works then I don’t think you’d be able to miss this show. Even though it’s already ended, you can listen to it’s 4 season story arch from start to finish with very few interruptions (at 48 chapters of 45 minutes each it would take you one and a half days, listening non-stop) and it’s still available for free as a podcast.

The End?

One thousand seven hundred words later, and I’ve listed 14 of my favourite podcasts with reasons as to why I like them.

I’m always on the lookout for new podcasts, so I’m off to go see what the Internet has for me.

I’m still looking for more Japanese language podcasts that don’t require me to use iTunes to subscribe to them.

Give some of these podcasts a try, I’m sure that you’ll like them, and let me know what you think.

Keeping up with Development – Podcasts

Feature image courtesy of www.programmingthrowdown.com

Programming is one of those occupations where it can be hard to stay up to date. Especially since it seems like there are 2 new languages, 3 new frameworks and 18 new Javascript libraries released each week.

All of this means that it can be difficult to keep up with current affairs in our chosen line of work. That’s where chunks of bite size information can come in handy.

I’ve written before about how easy it is to fall behind in programming [LINK to source]:

Anyone who works in software development (regardless of the languages, frameworks or target platforms) will tell you just how easy it is to fall behind. If you are out of the development world for as little as six months, you can fall behind and be left in the dust – it is imperative to remain up to date with what’s going on.

Commuting?

It turns out that more and more people are commuting every day. A 2011 study by the office of national statistics reports that roughly 876,000 people commute into London everyday [LINK]. Most of which where coming into London from neighbouring areas, but some as far as Milton Keynes and Yorkshire.

I like to think that the folks coming in from Yorkshire where infrequent commutes. I can’t imagine it being much fun having to get up early enough to commute to London form Yorkshire (although, I do know someone who does the opposite journey often enough).

As an average (and this is my own guess, based on my experience), I’d say that most commutes are between half an hour to two hours in length. What can you do for that amount of time? Well, one thing is that you could catch up with programming news.

… If you wanted to.

Where to start?

Well, there are all sorts of places: Blogs, Books, Magazines, Reddit (careful that you don’t get too distracted by gifs of kittens, though). However, my favourite is podcasts.

I’m going to assume that you know what a podcast is, but for those who don’t:

A podcast is a series of short (typically between half an hour and an hour in length) audio programmes about a given subject. They are subscribed to, and the latest episodes can be delivered to the subscriber as soon as they are available for download. More often than not they are free to obtain, but some podcasters offer paid-for episodes in an effort to support their work.

In a nutshell: it’s a bit like talk radio, but more specialised as you can get a podcast on just about anything.

Programming Podcasts?

I’ve alluded to podcasts before, on a completely different blog, when I wrote:

whilst programming is a visual medium, discussion on programming can take any format. 40-60 minute discussions on programming can be quite helpful for folks who are looking to fill their daily commute with something entertaining and related to their job (or field of study).

I’ve found that my walk to work (and sometimes into and around town) can be made a little more interesting by throwing on a podcast (or AudioBook, but that’s for another post) and listening while you take your journey. A lot of folks listen to music (either the radio, or their personal collection), so it’s only a small change but one that I’m convinced can be very worth while.

Because there are natural pauses in human speech (and the lack of the loudness war), it can often be safer to listen to podcasts while commuting (either walking, taking the bus or train, or driving), as you can still hear most of the environmental sounds around you. They also make for a quieter environment for those around you, which is useful for if you take the train or subway to work.

A Reason To Do It

It’s no secret that reading and learning helps you out in life. Take this news article from The Telegraph, for instance: [LINK], or how about this one (from The Guardian): [LINK]

According to the 2012 Learning Survey by Niace, the adult learning organisation, there’s a strong correlation between learning and sustained employment. Staff who undertake learning activities are more able to adapt to the changing requirements of an organisation and gain a competitive edge in the job market.

The amount of times that reading comes up on career guidance and advice forums is staggering. It’s one of the most important things that you can do, apparently.

That, and actually turning up to work and doing the job you’re paid to do, obviously.

All of this is ever more important in the development/software engineering/programming/whatever-you-want-to-call-it market. Without continually developing our skill sets, we’ll be left in the dust to fend for ourselves, whilst those with the drive to learn things in their own time will be living the high life.

In fact, there’s an episode of HanselMinutes (see below) all about how and when someone is ready for the title of “senior developer” (and it’s not about how old you are, either).

Confucius once said:

No matter how busy you may think you are, you must find time for reading, or surrender yourself to self-chosen ignorance.

And that’s pretty heady, if I say so myself.

Yeah, ok so we don’t always have time to read, but why not use “active listening” on a podcast or two. It’s worth it, I promise you.

Recommendations?

Since I’m a programmer, I’m going to lean this towards programming. There are searchable podcast directories, two of the best being iTunes (which acts as a great podcatcher, too) and gPodder [LINK] (which helps to keep all of your subscriptions in one place). So, if you want to find a podcast about your profession, hobby or whatever, then I’d try those first… or Google.

Anyway, on to some recommendations. Where possible I’ll link to the podcast’s homepage rather than the RSS feed as that’s more useful to most folks.

Programming Throwdown

Patrick Wheeler and Jason Gauci talk listeners through a different programming language, framework or technique every two weeks. They go into detail about the history and where the language/framework of choice is used the most, they also talk about their daily lives and some of the work that they’re doing recently. Each episode is 40 minutes to 1 hour long (just long enough for most commutes), and is really informative.

Coder Radio

Chris Fisher and Mike Dominick host a weekly show which looks at the art and business of software engineering. They have very detailed discussions about each technology, framework or issue that they face and always supply places to go to learn more about the topic of each show in the show notes. It also has a supporting subreddit with even more information and in-depth discussion [LINK].

To be honest, I’d recommend any of the podcasts on Jupiter Broadcasting, they have a wide range of shows covering all sorts of topics.

Hanselminutes

Hanselminutes is a weekly podcast by Scott Hanselman. Scott works on the Web Platform Team at Microsoft, so he definitely knows what he’s talking about. His podcast covers a very wide range of topics in software engineering, from subjects are far and wide as theoretical computer science and web development, to 3D printers and rockets.

Debug

Debug is hosted by Guy English and Rene Ritchie and is described as “the great talk you get at the bar after the conference”. The hosts focus on development for iPad, iPhone, Mac and Gaming but there are gems here for folks who don’t work in those arenas (especially web devs).

Stack Exchange

Hosted by Joel Spolsky (one of the creators of Stack Exchange) with Jay Hanlon and David Fullerton, the Stack Exchange podcast lets you listen in on discussions and decisions about the Stack Exchange Network. The Stack Exchange podcast gives you an unparalleled view into how a startup is created and built as well as some real gems on how to maintain a massive web development project, long term.

Adventures in Angular

Hosts Joe Eames, Aaron Frost, Brian Ford, Charles, Max Wood and Miško Hevery discuss all things AngularJs (Google’s MVVM JavaScript framework). From the origins of Angular, why you would use it, and the potential pitfalls of using Angular to tutorials and helpful tips and tricks. Definitely worth a listen, whether you’re new to Angular or not.

JavaScript Jabber

As with Adventures with Angular, this DevChat podcast takes listeners through “what is Javascript?” all the way to advanced, server side, NodeJs type stuff with everything in between. Almost everyone uses JavaScript these days (even recruiters who don’t know the difference between Java and JavaScript, know that it’s important – relevant link: [LINK])

Full Stack Radio

Adam Wathan brings, along with a special guest each week, knowledge and experience about all the steps of developing software from user interfaces all the way up to system administration the Full Stack, as it were. Worth a listen for anyone who wants to know about all of the steps involved in developing some new software, from the ground up.

This Developer’s Life

Another one with Scott Hanselman, this time co-hosted by Rob Conorey. This Developer’s Life is modelled on This American Life [LINK], and covers the things that a lot of things that most books and other media don’t cover, namely: the real life aspects of being a software developer (the late nights during crunch time, the stress, the tiredness, the amazing feeling when a project completes).

.NET Rocks

Carl Franklin and Richard Campbell have been doing a weekly podcast since 2002 and have covered such a wide range of topics that they offer personalised RSS feeds based on what you, the listener, are interested in [LINK to the feed page]. I cannot recommend this podcast enough.

What now?

So there you have it, a selection of programming related podcasts to keep you entertained and up to date. The selection may seem haphazard, but then I’m like that with my tastes sometimes.

Take a listen to a handful of the episodes for each show, and I guarantee that you’ll learn something new about your chosen field of programming. Also get in touch with a podcast recommendation of your own via the comments, I really like checking out new shows and will give any a listen.

Cropped code image

Mono, Xamarin and Gtk#

Over the past few weeks I’ve been playing with cross platform development tools. With Microsoft’s announcement of the Visual Studio Code preview [LINK], the latest version of Mono (version 4.0, built against the C# 6.0 spec) [LINK] and Microsoft open sourcing their entire Core CLR for .NET [LINK], now is the time to be developing in C# (if not before).

If you can’t tell already, this will end up being a post about programming.

One of the many great things about Microsoft open sourcing the Core CLR is that many years of research and development over at Microsoft has just become available to us developers, for free. We’re talking things like garbage collection [LINK], cryptography [LINK] and a whole host of other features.

Also, since the Core CLR is so ingrained into the Windows kernel (there haven’t been any major “scrap it and rewrite it from the ground up” kernels in Windows since NT first came out) that Microsoft are basically ensuring that any code written using the Core CLR is going to run, without major issues on all versions of Windows to come.

Not just the desktop and tablet ones, but the mobile and gaming platforms too.

It also means that code written for the Core CLR can be ported to non-Windows platforms extremely easily. As long as the C++ that it’s written in will compile for the target system, then it’ll be available for it (and the code for the CLR is really well written).

Mono

So Mono is an open source version of the Core CLR (the project had begun several years before Microsoft open source their Core CLR), amongst other things. It’s been written with cross platform development in mind, which means that there are precompiled binaries for Linux, Mac OS and Windows.

The Mono development team haven’t shied away from using any of the recently open sourced Microsoft code in their version of the C# compiler, too [LINK]. Mostly, they’re using the code as either source material for implementing their own versions of some of the C# features that have been buggy or not fully implemented in the past.

Xamarin

Xamarin are the company who own the intellectual property rights for the Mono project. There’s a long story behind it, but the short version is:

  • Mono is developed in mid 2000 as a way of getting the .NET CLR on Linux by Ximian
  • Novel bought Ximian in 2003
  • Attachmate then bought Novell in 2011
  • Attachmate lays off hundreds of layoff at Novell (including Mono staff)
  • Xamarin are granted full licence to work on all Mono products

Xamarin then went on to make Mono Develop, which was cross platform IDE for Mono. In early 2013, Xamarin announced Xamarin Studio which is based on Mono Develop, but with many advanced features.

Xamarin Studio is able to read and work with Visual Studio projects and create iOS, Android, OSX and Windows applications. It also has most of the features available for Visual Studio (code completion, advanced debugger, UI designer, etc.)

What’s All This Got To Do With Me?

Well, since I’ve been playing around with Mono and Xamarin Studio, I thought I’d write a little about it. I’ve been using Xamarin Studio on my laptop (mid 2010 Mac Pro) for developing some applications and writing some throwaway code.

Why use the Mac?

Mainly because it’s small, fast to boot up and I can take it with me places.

Seriously, if I’m travelling anywhere (say I have a long journey ahead of me) then I can pull down my latest code and do some work while I’m sat around waiting to get where I’m going. It works too – I get quite a lot done on those long journeys (I used to watch a film or something, but now I’m way more productive).

The code view is very similar to most IDE’s (it feels like it is modelled after Visual Studio).

Xamarin Studio Code View

Some filenames have been censored due to the nature of the code being worked on

The designer uses GTK# (a wrapper for the GTK+ library) version 3 for GTK enabled projects.

Xamarin Studio Designer View

Some filenames have been censored due to the nature of the code being worked on

What Do You Think of Xamarin Studio?

It’s really quite nice,  and very similar to Eclipse and Visual Studio. I really do feel that users of both of those two IDEs will get on well with Xamarin Studio.

However, and I’m not sure whether this is specifically my laptop or not, I’ve noticed a few crashes on opening Solution files. This tends to happen when I’ve got the GitHub GUI open at the same time as Xamarin Studio, so perhaps there’s a file lock issue?

I’ve noticed a similar issue with the GitHub GUI when I’ve got Xamarin Studio open: opening the GitHub GUI after making edits with Xamarin Studio (but having not closed Xamrin Studio), I’m told that I’ve made no edits to any files in the repository.

Plain Sailing?

Not really. I had a bit of a massive issue with compiling and running some Mono code using Xamarin.

When developing on Windows using .NET and C#, Windows does some smart things when creating an instance of the compiled program for execution. One of these is to figure out which system DLLs need to be loaded for the program to run. On non-Windows environments, using Mono this is slightly broken.

What’s meant to happen is that all of the Windows DLLs are mapped to Mono binaries that are compiled for the target OS (OS X Yosemite, in my case). However, this isn’t done automatically, which leads to a lot of instances of errors like this one:

Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for Gtk.Container ---> System.DllNotFoundException: gtksharpglue-2
at (wrapper managed-to-native) Gtk.Container:gtksharp_gtk_container_get_focus_child_offset ()
at Gtk.Container..cctor () [0x00000] in /private/tmp/source-mono-mac-4.0.0-branch/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/gtk-sharp-2.12.21/gtk/generated/Container.cs:79
--- End of inner exception stack trace ---
at Gtk.Bin..ctor (IntPtr raw) [0x00000] in /private/tmp/source-mono-mac-4.0.0-branch/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/gtk-sharp-2.12.21/gtk/generated/Bin.cs:15

After a LOT of Googling and a LOT of reading about how Mono handles DLL mapping, I found a really good and concise answer on StackOverFlow (one of my favourite websites, ever – seriously, there’s a Stack Exchange for every possible subject):

http://stackoverflow.com/a/15655635

The extremely short version is that there needs to be a shell script in the binaries folder which will call the mono runtime with the compiled program as an argument, but also ensuring that the correct Mono library is loaded into /usr/lib before running it. The shell script needs to be run for the compiled binaries to run correctly.

In case the answer is ever removed, or the  link doesn’t work for some reason, here is a copy of the shell script that needs to be written:

[sharp]!/bin/sh
export DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib:$DYLD_FALLBACK_LIBRARY_PATH:/usr/lib"
exec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono ./binaryNameHere.exe

Swapping out [sharp] for an # and binaryNameHere for the name of the binary to run, obviously.

Platypus can also be used to wrap all of that up into a native .app file, too. So that’s cool.

Anything Else?

You’re quite right, I’ve rambled on for long enough as it is.

Oh, one last thing before I go: I’ve been thinking about getting one of the CODE keyboards [LINK], because I keep hearing great things about mechanical keyboards. Although I have used them in the past (all of my early computer experiences include mechanical keyboards), I’ve not had the chance to try one properly as an adult.

Anyway, I’ll leave it at that I think. We’re getting close to 1300 words, which won’t be fun for you to read I guess.

Until next time, have fun!

Page 1 of 13