Matthew Lang avatar

Matthew Lang

Family guy and web developer

A New DuckDuckGo

Sicne I started using DuckDuckGo as my primary search engine last year, I've had to content myself with what was an aging look and feel to their search results. While Google and Yahoo were charging ahead with redesigned search result listings, DuckDuckGo was falling behind. Thankfully though DuckDuckGo recently upgraded their search page.

The new user interface itself is a welcome upgrade to the old one interface. With tabs for images, videos and products, searches become much more useful depending on your search term and the search listings themselves are easy to scan. There is also a section with more details about your search term if it's a person, company, product or brand name.

Not only does the new user interface work well on desktops and laptops, but it's mobile friendly as well. I've frequently use it now on my iPhone rather than the suggested search engines that Apple includes. Without jailbreaking my phone though, there's no way to make DuckDuckGo your default search engine on the iPhone. I'm hoping that this will be an option in the future.

The next step I hope is that DuckDuckGo updates their iOS app with ability to do searches there and pass the results into Safari. There might be restrictions on this, but it's what I would like to see.

I'm glad to see that DuckDuckGo are keeping their search engine modern and relevant. It might just be a change of look to the search engine, but sometimes that's all that is needed.

Book Reviews #3

At long last I managed to finish The Second World War which has been holding up my reading list for the last few months. Here's a few reviews of what I've been reading over the last few months.

  • The Second World War by Antony Beevor - Without doubt this is the most complete and detailed account of the Second World War that you will find on any bookshelf. The bibliography alone takes up the last quarter of the book with supporting material from other books as well as journals of military personnel and civilians providing eye witness accounts of events. The book covers all the critical events from the leading up to the start of WWII until it's final days when Japan surrendered to the US. It seems wrong to say that I enjoyed this book given the topic, but I did. It was a learning experience for me. A chance to find out everything I didn't know about the Second World War. There were parts of the book that I found troubling to read, but the incidents that the book highlighted only re-inforce the human cost of war and why it should be avoided at all costs.
  • Inferno by Dan Brown - Dan Brown's books sometimes receives unfair criticism that they are not of the same calibre as other great fictional books but I've never found that. I enjoyed this book. Another outing for the Harvard symbologist. It was a good read and it kept me turning pages right to the end. One concern I have though for these books are their duration. Like the Chase / Wilde series by Andy McDermott, I'm starting to see a repeating pattern in the adventures of Langdon as he hops across the world, interpreting symbols and saving the world. I don't think there's much mileage left in these books if Brown decides to write more of them, but I still found this book enjoyable.
  • The City by Stella Gemmell - I wanted to love this book so much as I thought that it being from someone who was close to David Gemmell when he was alive, it might have some influences from him. I started the book with enthusiasm but it quickly wained over the course of the first sixty pages. I found it to be slow with no sign of picking up. After sixty pages I eventually gave up and moved on to something else.
  • Extreme Programming Explained by Kent Beck & Cynthia Andres - It's been on the reading list for a while, but it's taken me to now to read it thanks to a prompt by another developer on App.net who mentioned he was reading it to get back to the basics of extreme programming again. The ideas and practices that I learned from this book just back up for me how important agile practices are to software development. A must read for any software developer whether they are starting their career or want to re-kindle those basics of good software development practices again.

Checklists are often skipped over as an aid to problem solving. They shouldn't be. They provide a quick step plan to narrowing down a search or criteria to identify a problem.

This week was one of those week's where I was caught out with a problem. In debugging an application, I couldn't work out why the plugin I installed and setup wasn't being called in a screen. Despite changing what I thought was the correct screen, nothing was happening. It turns out I was in fact updating the wrong screen. A simple mistake to make in most applications but here the application is slightly different.

This application I am referring to is in fact a content management system. It contains a number of different layouts depending on the type of site that you want. This means that there are hundreds of files that make up the user-interface to the application. There is a default file representing each particular screen and then there is a screen for each different type of site that can override the default screen if we need it. This means that there are hundreds of files representing the different screens in this application. Some are similar and as a result, ensuring you are updating the correct screen is important.

So where does the checklist fit in then? Well as I was debugging the application on a particular type of site, following through a number of steps would have ensured that I was in fact debugging the correct screen. Thinking of each item on the checklist as a way of narrowing down the problem allows you to eliminate easy to find problems, eventually narrowing down you scope to the actual problem you were having.

I've since started putting together a number of checklists for identifying such problems. I've done a number of debugging sessions like this where I missed a step in identifying the actual issue and instead spent a few hours going down the wrong path. It's time that I don't want to waste in the future. I'd rather identify the problem quickly, fix it and crack on with something else.

Not surprising that George RR Martin writes his Song of Ice & Fire books on a disconnected DOS machine. With that amount of plot lines, character deaths and surprises he can't afford distractions. It does raise another question though, how many assumptions does your computer make about what you do?

I watched the clip of George RR Martin on Conan admitting that he used an old DOS PC that isn't connected to the internet to write his series of books, A Song of Ice & Fire. Martin and Conan have a laugh about it on the clip, but Martin makes a good point about the computers of today. They do so much for you, but are they doing too much?

When I was a software developer working with Microsoft's .NET framework, I wrote all of my applications in a programming environment that did some of the work for you. It's called a integrated development environment or IDE for short. What sets an IDE apart from a regular text editor like Sublime Text or Vim, is that the IDE is more than just a text editor. It's an environment tailored towards a specific set of languages or frameworks. It has features and shortcuts built-in that are there to help you write software applications.

One of the reasons that Microsoft's Visual Studio environment is used by so many developers working with Microsoft's .NET framework is that it does some of the work for you. When you create a file for your project, it will include a template of a class or module with boilerplate code included, or if you're building a website it will include a basic layout on a new HTML file. It does lots of little things like this because it's been built to assist the programmer as much as it can.

Having worked with IDE's like Visual Studio for a number of years it's easy to the see benefits in the amount of code you can write in a typical work day. I wasn't happy with this though. Too many of the small decisions were being taken out of my hands and assumptions were made by Visual Studio that I would need everything that it generated for me. Over time I gradullay tailored the templates and snippets that Visual Studio included by default so that Visual Studio wasn't making as many big assumptions about what I need. Not everyone does this though.

This is what Martin makes a point of when he is writing. He doesn't want an opinionated machine that makes suggestions for him, he wants a machine that just does as it's told. In this case if he makes a spelling mistake it won't suggest the right spelling to him, if he writes a new word that the computer can't find in a dictionary it won't suggest an alternative word that it thinks the writer was supposed to type. It takes the words that Martin types in and that's it. That's probably all that a lot of writers want. A chance to write without distractions and suggestions and other changes that the computer thinks we need.

I use a text editor with a few plugins that automate work for me as a programmer. As a rule I use packages and libraries that only make a minimal number of assumptions about what I need when I am writing code. Yes, I have snippets to create new classes, modules and methods, but they don't assume I need anything more than the declaration of the object in question. I want to make the decision about the structure of a new class or a new method when I'm writing my code. If the computer does it and it's wrong, I end up having to make a correction and then continue with work.

It's good to see that Martin is proof that the latest devices or apps are not what you need to make an idea a reality. Focusing on computer speed, productivity tools and other factors may not make you work any faster than if you had older equipment and tools. It's about using those tools correctly and removing distractions and barriers that make you productive. Every day I face my laptop and get notifications of new emails, app updates, test updates, and all manner of alerts telling me to shift my focus from what I am doing. I should turn these off or at least par them back to only the necessary alerts that I need to do my job.

Computers, tablets, phones and even washing machines, dish washers other home appliances are all made to make assumptions about what we want. These aren't always the right assumptions and we often find ourselves making daily micro adjustments to get the desired result. By ensuring that the devices and apps we use make minimal assumptions about what we do, it allows us to do things our way. And doing things our own way is better than adhering having to constantly fine tune the ways of others to get what we want.

Graham Obree and Chris Boardman have both had their Hour Record times re-instated into the record books thanks to simpler regulations that determine the equipment cyclists can use to break the hour record.