Privacy and Surveillance

2013 has been an interesting year for whistle blowing about surveillance from the American and British governments. Earlier in the year Edward Snowden, a former NSA technologist, decided to put his own life on the line and leak a huge cache of documents about the NSA’s surveillance capabilities against its own people in the USA. This goes against the 4th amendment in the constitution that prohibits unreasonable searches and seizures and requires any warrant to be judicially sanctioned and supported by probable cause.

Privacy and Surveillance
Privacy and Surveillance

The notion of surveillance is a complex topic. There are a lot of bad people out there that want to cause America, Britain, and Europe a lot of harm, and we need a way to keep tabs on these people. In this case I believe surveillance is justified. There will always be threats from domestic threats which also need to be monitored. The question here though is, have our governments crossed the line with the mass data collection that they are doing. In my opinion yes they have, but now this is all starting to get out in the open, maybe something will start to be done about it, hopefully. This all really started when George Bush gave the NSA the remit to collect this data after the September 11th attacks against the USA.

Introduction to AES Encryption

I was going to write a fairly lengthy post about the Advanced Encryption Standard (AES) encryption and how it works, but when doing my research I found an excellent video presentation series by Patrick Townsend of Townsend Security and thought I would share this excellent find with you.

I recently wrote a short series on using encryption algorithms in .NET and one of the posts talked about AES, as-well as RSA, Random Number Generation and Hashing and combining multiple cryptographic protocols to create hybrid encryption algorithms.

Advanced Encryption Standard (AES)  Series by Patrick Townsend of Townsend Security
Advanced Encryption Standard (AES) Series by Patrick Townsend of Townsend Security

The series starts of by talking about what encryption is and then goes on about why you should use the AES encryption algorithm, how you should approach key management, and digging into more advanced detail on how the algorithm works including the different modes of encryption.

{Coding in the Trenches} First Birthday

Coding in the Trenches 1st Birthday
Coding in the Trenches 1st Birthday

Today is Coding in the Trenches, first birthday. This time last year I had the idea to start the blog to share my thoughts on Software Development, Architecture and Leadership. It has been a very enjoyable and successful experience. My readership is growing each month and the reader numbers have exceeded what I thought I would get in the first year, so I look forward to seeing what next year brings. Although I didn’t really start posting properly to the  blog until the new year, it was the 18th of December that I had the idea and set-up the basic blog and template.

Participate with Coding in the Trenches on Facebook
Participate with Coding in the Trenches on Facebook by Click the button above.

Dieter Rams : 10 Principles of Good Product Design

Since I wrote my article recently about Google’s 9 principles of innovation a reader over on Reddit pointed me to a resource on some more good design principles. These are the 10 Principles for Good Design by a German industrial designer Dieter Rams.

Dieter Rams : 10 Principles of Good Product Design
Dieter Rams : 10 Principles of Good Product Design

Dieter Rams introduced the idea of sustainable development and of obsolescence being a crime in design in the 1970s. Accordingly he asked himself the question: is my design good design? The answer formed his now celebrated ten principles.

Whilst Dieter was an industrial and product designer, his principles can fit anywhere where good design comes into play. In the rest of this article, I will explain what the 10 principles are, and how I think they fit into software development.

The principles in this article are very useful for software developers and designers, but this is also very relevant for technical leaders. As a leader it is good to try and push your teams to make sure they are thinking about the end user. Traditionally, software developers make lousy designers (not all of them before I start a flame war), but aesthetic design, generally, isn’t something that comes naturally to programmers. Therefore having principles like these is great for giving you pause to reflect on how your system / application affects your end users.

The different product images below are examples of products designed by Dieter. Those of you old enough may recognize a few!!

Training : RavenDB

In this article I have collated a few training links about the open source NoSql database RavenDB. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.

RavenDB The Open Source NoSql Database
RavenDB The Open Source NoSql Database

RavenDB

RavenDB – Documentation – Quickstart Tutorials

RavenDB Tutorials

Adding Raven DB to your Application

Sharding with RavenDB

Fitzchak’s RavenDB in practice series

Part 1 : An Introduction to RavenDB

Part 2 : Using the Client API

Geek Being RavenDB Tutorials

Part 1 : Introduction and Basic Operation

Part 2 : Simple Querying

Part 3 : Tips for Development

 

Training : Node.JS

In this article I have collated a few training links about Node.JS. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.

NodeJS
NodeJS

Node.JS

The Node Beginner Book (First 21 pages are FREE)

Node.JS for Beginners

Felix’s Node.js Beginners Guide

How To Node

Node Tutorials : Node.JS Video Tutorials

Node.js Getting Started Guide – Windows Azure Tutorial

Node.JS Tutorial

Training : JavaScript and JQuery

In this article I have collated a few training links about Java Script and JQuery. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.

JavaScript and JQuery
JavaScript and JQuery

JavaScript

JavaScript Tutorial at W3Schools

JavaScript Tutorial at EchoEcho.com

JavaScript Tutorial at CodeCademy

Eloquent JavaScript : A Modern Introduction to Programming

JavaScript Tutorial at Tutorials Point

JavaScript for the Total Non-Programmer

JavaScript Kit Advanced JavaScript Tutorials

JQuery

JQuery Tutorial at W3Schools

JQuery Learning Center

Try JQuery by Code School

How jQuery Works | jQuery Learning Center

JQuery Tutorial at Tutorials Point

JQuery Tutorial at Codecademy

The Complete JQuery Tutorial

JQuery for Absolute Beginners

Google’s 9 Principles of Innovation

Whilst doing my daily trawl through the internet and Reddit pages, I came across a very interesting talk at the San Francisco Dreamforce Summit where Google’s Chief social evangelist, Gopi Kallayil talks about Googles 9 principles of innovation. Please do go and watch the video as it is a great insight to the inner workings of Google, but here are the 9 principles summarized here.

Googles 9 Principles of Innovation
Googles 9 Principles of Innovation

Innovation comes from anywhere

An idea for an innovation doesn’t have to just come from your super star employees. Ideas can come from anyone. There is a really good example that Kallayil mentions where an onsite doctor at Google had idea that if someone talks about suicide in a Google search that the first item in the search results should be the phone number for the National Suicide Prevention Hotline.  The call volume to the helpline went up 9% after that. This is a great example that an idea for an innovation, no matter how small, can have a big impact.

Google's automatic reference to a suicide hotline.
Google’s automatic reference to a suicide hotline.

Due to the impact of this one small change, they have now rolled this type of change out across the world. In the screenshot above you can see where it shows the phone number of the Samaritans.

How to Motivate and Innovate Part 3

In the first 2 articles in this series I talked about what is motivation and how developers can find meaning in their work. An effective development team is a team that is engaged in their work, feels as though their contribution is valued and that the work they are doing has real benefit for the business.

In this 3rd part of the series I want to talk about innovation and how you can encourage it within your teams. Being able to innovate is something every developer should want to do, but you need to control the innovation process properly otherwise you can end up with a team just doing their own thing and taking their eye of the ball for the business.

Encourage your team to innovate solutions.
Encourage your team to innovate solutions.

What is Innovation

Innovation is the application of better solutions that meet new requirements, in-articulated needs, or existing market needs. This is accomplished through more effective products, processes, services, technologies, or ideas that are readily available to markets, governments and society. The term innovation can be defined as something original and, as consequence, new that “breaks in to” the market or into society. One usually associates to new phenomena that are important in some way. A definition of the term, in line with these aspects, would be the following: “An innovation is something original, new, and important – in whatever field – that breaks in to (or obtains a foothold in) a market or society.”

Definition of Innovation from WikiPedia

As the quote above says, innovation is the application of better solutions that meet new requirements. I believe it is important to try and foster a culture of innovation in a software development team as your developers (I am including QA’s, UI designers, and anyone technical in this too) are the brains behind your companies systems. Innovation can come in many forms. It could be an idea for a completely new system, or it could be an enhancement to an existing system or process. If your innovation could end up taking a large amount of time to implement, maybe you can do a proof of concept first to sell the idea to your management or business sponsors.

I want to give an example of a recent innovation that has come from my team and talk about how it has benefited the business. This is an example that ended up being a large revenue generator, even though the actual ideal was quite simple and didn’t take that long to implement.

%d bloggers like this: