Wednesday, 26 October 2016

Node development on CentOS for .Net devs

I'm about to start a new role which entails Node, Angular, Mongo and linux (CentOS) so ive set about learning the above. Quite a bit of a shift from the previous number of years which have been pretty much exclusively Microsoft and .Net. But im really excited about it and the new learning I need to embark upon. Today it was the turn of getting a CentOS development environment up and running on virtual box with npm, node and webstorm.

Creating the development environment

Install virtual box (5.1 at time of writing)
download the dvd image of centOS (7 at time of writing)

Create a VM of the image,
On software selection i used KDE Plasma with internet tools and 
i used the KDE desktop with internet and KDE applications and development Tools
enable the network
create a user as well as set the super user password

To enable higher resolution
once set up, from the VM menu: device > insert guest additions CD image
this will act as if a cd was inserted into the VM
in the VBOXADDITIONS drive double click and enter your superuser password

Installing npm, node and webstorm

Within a terminal window
su -
yum install epel-release
yum install npm
npm --version
node --version

Download webstorm
Extract the folder to the place you want to install webstorm
double click to install
remember to chose a dark theme ;-)

Create your first hello world node app with express

In a terminal (not as root)
cd /home/username/
mkdir code
cd code
mkdir express01
cd express01

npm init
take all the defaults
npm install express --save

Im not going to go into the the how to create a basic express app to echo something to the console and to the browser, there are so many tutorials about that out there.

Enjoy your new development environment.

Major learnings. I.e. Don't do this at work...

When you enter sudo for the first time you get the apt warning:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

The first time I created the hello world app from the guide above I used su for everything, including creating the folders and npm init. This resulted in files and folders that i could not write to from webstorm so i tried to fix the permissions with chmod. But I used it very very wrongly and the interwebs advised me to reinstall everything. Which as it happens, this time was not a big deal for me.
So what did i do?
Whilst i was su i think i ran:
chmod 777 /. -R
In powershell .\ is the current directory, I thought ./ would be the same in linux but i did a typo and so i ended up making all the files and folders (on the whole VM) 777 rather than just the new code folders. Apparently this is very hard to fix.
The symptom is you type the command su - you get the error:
su -
su: cannot set groups: Operation not permitted

It can make things rather difficult if you cant get root access anymore.

Should it be this easy to screw your entire VM? or was there actually an easy fix? if you know id love to hear about it.

Sunday, 23 October 2016

Damo's Podcast Highlights 2016 #42

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Software Engineering Daily] DevOps Handbook with Gene Kim
  • The intent of the DevOps movement is to get organizations moving faster and more effectively by breaking down siloes, and improving communication. Gene Kim’s book The Phoenix Project illustrated this by telling the fictional story of a company adopting a DevOps mentality. Although that book was fiction, Gene is an experienced engineer, having worked as founder and CTO of Tripwire, a software company that makes security and compliance automation software.
  • In his new book The DevOps Handbook, Gene presents a practical companion to The Phoenix Project. Together with his co-authors, Gene has written a guide for how to move an organization toward DevOps, and in this episode we explore some of the topics from his book

[Hanselminutes] Orchestrating and automating deployments with Octopus Deploy
  • We first interviewed Paul Stovell a few years back when he started a micro-ISV he was calling "Octopus Deploy." Now it's a fully formed and successful company whose flagship product Octopus Deploy is used all over. Damian Brady joins Scott and explains why deployment is more subtle then you think.

[TEDx] Surprising Lessons From 100 Days of Rejection: Jia Jiang &
  • Jia Jiang knows first-hand how the fear of rejection can hold us back. The tendency to avoid it at all costs can be detrimental to our lives, our careers, our dreams
  • Chasing your dream requires you put everything out there and deal with the consequences. When aspiring entrepreneur Jia Jiang left corporate life to build his dream company, he had no idea it also meant facing crushing rejection. The best way to recover? 100 Days of Rejection Therapy

[CodingBlocks] Clean Code – Writing Meaningful Names
  • In this episode, we take our first dive into the book Clean Code by Robert Martin and specifically we talk about writing meaningful names for all things code related. You’ll be amazed at how following some decent rules that you can start naming things that will help you and fellow coders understand your code at a glance.
  • As always with coding blocks skip skip skip all the news and chit chat to get to the meat of the conversation
  • Lots of good show notes

[YOW! 2015] Adrian Cockcroft - It's Complicated...
  • What does it mean to be complicated?
  • How can we manage complexity when we scale up systems?
  • Why do people find it horrifying when the internal complexity of monolithic apps is replaced by a “death star” diagram of the relationships between microservices?
  • Are many microservices less complicated than one monolith?
  • Why do people expect complex adaptive systems to behave predictably?
  • How does complicated relate to intuitive?
  • How can small fast release processes reduce risk, speed up teams and reduce costs?

[Rocky Mountain Ruby 2016] Kill "Microservices" before its too late by Chad Fowler
  • Keep changing things, even if you don’t need to
  • Microservices make it easier to replace than to change
  • Unit tests are a design smell (tests optimise for permanence, creates coupling)
  • Use metrics instead , esp business metrics. Use alerting around the metrics to perform true testing of the system
  • Small projects vs large projects, success vs failure, stay small, go for impermanence
  • Microservices is not an architecture and small is not the goal, its health longevity
  • Systems that survive are made of components that can change
  • If it hurts do it more often

[Angular Air] 01 ngAir - Hitting the Ground Running with Angular

[Hanselminutes] Infrastructuralism with Truss
  • What is Infrastructuralism and how can it help you think differently about software and large problems? Scott sits down with Everett Harper, CEO of Truss. They talk about how applying some old ideas in new ways helped them fix
  • How we should avoid succumbing to the Black swan theory

Sunday, 16 October 2016

Damo's Podcast Highlights 2016 #41

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Software Engineering Daily] Continuous Delivery with David Rice
  • In order to move software updates from the development team to production, companies do a variety of things. Some teams might email files to each other or use FTP or even floppy disks. Most companies today at least use version control systems like Git together with separate servers for development and production. When code is ready to move to production, a build that is on the development server gets copied over to the production servers, and the production servers begin serving real users.
  • This process is known as deployment, and over the last few decades companies have started deploying more rapidly (even “continuously”), leading to faster iterations and better feedback loops between the software development team and the users of the product. A particularly effective version of this workflow is known as continuous delivery.
  • In today’s episode, David Rice from ThoughtWorks joins the show to give a short history of continuous delivery, and how continuous delivery actually looks in practice.

[StrangeLoop 2011] Simple Made Easy - Rich Hickey
  • Rich Hickey emphasizes simplicity’s virtues over easiness’, showing that while many choose easiness they may end up with complexity, and the better way is to choose easiness along the simplicity path.

[Telerik] Talking Software Craftmanship with Steve Smith
  • On this episode guests Steve Smith and Sam Basu share their thoughts on software craftsmanship, clean code, and software quality. Are you taking steps to create maintainable, and testable code? Find out what you can do to get started.

[JavaScript Air] Learning and Developing JavaScript with Ashley
[JavaScript Air] Unit Testing JavaScript with Christian Johansen

[Magpie Talk Show] Microservices, cloud and Adrian Cockcroft
  • Few people have done as much to help share the power of the cloud in recent years as Adrian, but he certainly has a career that predates the explosion of Amazon Web Services. In episode 22 of the Magpie Talkshow, he shares is journey so far in the IT industry, from physics to venture capital firm Battery Ventures, with stops at Sun, EBay and Netflix in-between.

[Developer on fire] Jon Skeet - Awesome, Humble, and Human
  • Jon Skeet talks with Dave Rael about community involvement, family and perspective, having outlandish things said about him and the joy of relationships
  • Jon Skeet is a software engineer at Google, working in their London offices. He's best known for his contributions to Stack Overflow and his book "C# in Depth". Jon loves digging into the guts of the language specification, and has an unhealthy fixation with date/time APIs.

[The Cloudcast] Multi-Cloud Serverless Platforms
  • The history of Serverless/Event-Driven/FaaS/Jeff computing, the differences in frameworks in the market, common customer use-cases and the need for multi-cloud platforms.

[Blinkist Podcast] A “How-To-Sleep” Talk with The Sleep Coach – Max Kirsten

Monday, 10 October 2016

Damo's Podcast Highlights 2016 #40

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Software Engineering Daily] Serverless Architecture
  • “Serverless” usually refers to an architectural pattern where the server side logic is run in stateless compute containers that are event-triggered and ephemeral. Mike Roberts has written a series of articles about serverless computing, in which he discusses theories and patterns around serverless architecture.
  • In this episode, Mike and I discuss how to reimagine our software architecture using functions-as-a-service. We go into the costs, benefits, and modern limitations of current serverless platforms like AWS Lambda.

[Developing Up] To get more done as a developer you need a personal task management system
  • In episode two of the Developing Up podcast we cover task management. We discuss the importance of establishing a personal task management system. We then outline the key concepts and methodologies of many systems that we have found helpful ourselves. Finally we discuss the systems we use and how you can build one that works for you.
  • Omnifocus
  • Wunderlist
  • Getting Things Done
  • Pomodoro Technique
  • Personal Kanban

[Software Engineering Daily] Salary Negotiation with Haseeb Qureshi
  • Negotiation is an important skill for software engineers. The salary you negotiate at the beginning of your job could be a difference of tens of thousands of dollars over the course of an engineer’s career, but intimidating recruiters and exploding offers scare many engineers from negotiating at all.
  • Today, Haseeb Qureshi returns to the show to discuss his epic story of salary negotiation. On a previous episode, Haseeb discussed leaving his career as a poker player to join a coding boot camp and start down the path of a software engineer.

[The Tim Ferriss Show] The Art and Science of Learning Anything Faster
  • I explore the tips, tricks, and framework I’ve used to learn just about any skill.
  • This is the meta-skill of meta-learning, or learning how to learn.
  • I’m going to share techniques that can help you — even if you’re sub-par or a rote beginner — take the smartest first steps and use 80/20 analysis to accelerate your progress.
  • This is adapted from The 4-Hour Chef, which is the cookbook that’s not a cookbook — it’s a book on accelerated learning.

[The Tim Ferriss Show] How a Computer Hacker Optimizes Online
  • Samy Kamkar is one of the most innovative and notorious computer hackers in the United States. He’s also a well-known whistleblower. If you want to learn how Samy hacks everything from online dating to car alarms, this episode is for you.
  • He is best known for creating the fastest spreading virus of all time, a MySpace worm named “Samy.” He got raided by the United States Secret Service for that one. More recently, he’s created SkyJack, a custom drone that hacks into any nearby drones, allowing him (or any operator) to control a swarm of devices; and Evercookie, which appeared in top-secret NSA documents revealed by Edward Snowden. He also discovered illicit mobile phone tracking by Apple iPhone, Google Android and Microsoft Windows Phone mobile devices.
  • His research and findings led to a series of class-action lawsuits against these companies and a privacy hearing on Capitol Hill.

Sunday, 2 October 2016

Damo's Podcast Highlights 2016 #39

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Developing Up] Using D.U.M.B goals and S.M.A.R.T goals to grow
  • Goals and goal writing systems
  • Why goals matter for personal and career growth
  • How you can create and write goals using specific goal writing systems
  • How to succeed in your goals
  • S.M.A.R.T Goals
  • D.U.M.B Goals
  • Why SMART goals are Lame

[.NET Rocks!] nServiceBus Update with Udi Dahan
  • SOA, microservices and actors
  • Version 6 of nServiceBus

[Hello Tech Pros] Flight 1549 "Sully" Survivor and Software Architect Ben Bostic on Motivation
  • Life changing events can lead to reflecting on life goals.
  • In survival-mode, your mind filters out things that aren’t helpful.
  • If all your worldly possessions are sinking to the bottom of a river, do you really care?
  • Try to live in the now. Don’t worry about the past or regrets.
  • Have goals and dreams. Focus on building stronger relationships.
  • Get rid of negativity and surround yourself with more positive people.
  • When life flashes before your eyes, will you regret the things you have yet to do?

[Software Engineering Daily] Tech Leadership with Jeff Norris
  • The role of “tech lead” is a combination of a software engineer, a project manager, and an architect

[Soft Skills Engineering] Writing Great Resumes and Pushing Back on Non-Engineering Tasks
  • Do you really need a resume these days?
  • How important is formatting and good design?
  • What content should be on your resume?
  • How and when to push back on non-engineering tasks like powerpoint

[Adventures in Angular] 112 AiA Upgrading from Angular 1.x to Angular 2
  • Should everybody update to Angular 2?
  • Defining migration
  • Is migration worth it?
  • Schedule for rewriting large and small apps
  • Business versus Technology: Rewriting apps
  • Process for migrating from Angular 1 to Angular 2
  • Role of testing in a migration

[Software Engineering Daily] Remote Work with Scott Berkun
  • Thoughts and perspectives on remote work
  • Workplace dynamics

[.NET Rocks!] The Scourge of Multitasking with Ben Day
  • You can't multitask! Carl and Richard talk about the myth and scourge of multitasking, which has been proven again and again to not actually work. Ben talks about how the human brain is not that different from a microcomputer CPU - the context shifts involved in multitasking are expensive, and if you do too much of it, you spend all your time switching contexts, rather than actually getting work done. The conversation digs into all sorts of good discussion around productivity, but first and foremost, it is about getting things done - focus on one task until you're finished, then move on!

Tuesday, 27 September 2016

Damo's Podcast Highlights 2016 #36-38

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

This is a big catch-up post as I've fallen behind in the last couple of weeks:

[Mastering Business Analysis] Agile Manifesto – What it Means to Business Analysts
  • In this episode, they take a look at the 12 principles of the Agile Manifesto and see what they mean in the context of Business Analysis
  • How to apply each of the 12 principles of the Agile Manifesto to Business Analysis
  • The mindset shift we need to make to be successful in agile environments
  • What you can do to adopt agile practices, even in waterfall environments

[Developer Tea] Deliberate Practice: Part 1
  • Learning About Learning
  • The Role of Deliberate Practice in the Acquisition of Expert Performance (white paper)
  • Code Kata - A Practice Arena for Becoming a Better Programmer

[Developer Tea] Deliberate Practice: Part 2

[The Ruby Rogues] The Evolution of Agile and Evolutionary Design
  • Co-opting Agile and the movement away from technology/software
  • Agile Alliance Technical Conference
  • Agile Fluency Model
  • Evolutionary Design in Agile
  • Technical Practices and Agile Architecture
  • Procrastinate on Purpose
  • Engineering on a Team Level
  • Redesigning Team Responsibilities

[The Ruby Rogues] Software Craftsmanship

[Devnology Podcast] 97 Things Every Programmer Should Know - Kevlin Henney
  • Kevlin shares his thoughts on the software craftmanship movement and states his opinion on the discussion whether our profession is a form of engineering or not.

[Simple Programmer Podcast] What Are The Areas You Should Master In Life?
  • Talking about what are the areas of your life that you MUST master.

[Software Engineering Radio] Kief Morris on Infrastructure as Code
  • Why this concept is becoming increasingly important due to cloud computing. They discuss best practices for writing infrastructure code, including why you should treat your servers as cattle, not pets, as well as how to monitor your cattle.
  • The benefits — security, auditability, testing, documentation, and traceability.
  • How to introduce infrastructure as code to organizations.

[Simple Programmer Podcast] Can You Really Learn Anything In 3 Months?

[Cloud foundary summit] Devops, microservices and platforms, oh my

[Nordic APIs] Microservices Anti-Patterns
  • When microservices are appropriate, and where to draw the lines between services.
  • Dealing with performance issues (data affinity, parallelism, monitoring).
  • Testing and debugging techniques.
  • Managing a polyglot landscape and the explosion of platforms.
  • Managing failure and graceful degradation.
  • If you’re an active programmer, then you’re either building a microservice architecture now, or you’re about to inherit someone else’s. This talk will give you the tools to build yours right, and to quickly identify shortcomings of those you have to work within.

[Talks at Google] Scott Berkun- The Art of Project Management

[Agile Vancouver] Deception and Estimation How We Fool Ourselves - Linda Rising

[Eat Sleep Code Podcast] Better code with functional programming
  • We discuss how functional programming has made its way back into modern development, clean coding, and more.

Saturday, 3 September 2016

Damo's Podcast Highlights 2016 #35

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[RunAs Radio] The Science of DevOps
  • Nicole is one of the key people behind the State of DevOps report (published by Puppet).
  • The conversation digs into some of the findings in that report, including the proof that stability and speed are not mutually exclusive - you can bring new features and products to market quickly while keeping your systems stable.

[.NET Rocks!] Feature Toggles
  • The conversation starts out talking about different kinds of features toggles, starting with the classic one that allows you to build features over time, but keep the code in the trunk, just not visible to the users until you're ready.
  • In some cases, that feature toggle because permanent because it is a tool for ops to reduce load on a server at peak times.
  • Toggles are also a strategy for A/B testing of different features, styling and advertising

[Focus 53] What Football Has Taught Me About Business and Life
  • Short memory
  • How to lose
  • How to spot leaders
  • How to be a leader
  • Controlling your emotions
  • Setting, working for, and achieving goals
  • Life isn't always fair.
  • Hard work
  • Knowing who you are
  • Discipline
  • Responsible for yourself
  • Managing time
  • Focusing on what you can control

[Eat Sleep Code Podcast] Six Figure Developer

[Startups For the Rest of Us] Our Favorite Tabletop Games
  • Many games mentioned here, if your into table top games this is worth a listen. They put the games into 3 different categories by age range and difficulty and share some stories on how their families and kids enjoy them.

Tuesday, 30 August 2016

Damo's Podcast Highlights 2016 #34

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[RunAs Radio] Building a Blameless Post-Mortem Culture
  • How do you build a blameless post-mortem culture?
  • A methodology embraced by the safest and most reliable organizations - think aircraft safety. Having everyone involved in an incident able to discuss everything they did and saw helps to get a clear picture of the truth. Without that information, it's very hard to make real improvements in our organizations.
  • ChatOps as a strategy to get there, using tools like Slack to let people see the conversations going on and capture the critical information during an incident to address problems.

[Hello Tech Pros] Motivation
  • Neither the carrot or the stick are advantageous. Tap into intrinsic motivations: passion and purpose.
  • Everyone wants to count.
  • It’s important to have a support group around you that believe in your vision.
  • Quit because you don’t like it. Don’t give up if you think you can’t.
  • Convince yourself you MUST follow your dreams.
  • You don’t need to take MASSIVE action, you just need to take some action. Start now rather than later.
  • Get clear on your passion and purpose. What’s your underling emotional benefit for what your going for?

[Troy Hunt] Understanding account enumeration, the video tutorial edition
  • What is account enumeration?
  • How do you protect against it?

[London devops] 18 - London DevOps #18 @ Facebook
  • This is the event that Ruben and I attended back in June
  • Getting Bits from Developers to Users: How we ship
  • Continuous Integration in the Data Center Provisioning Space
  • IoT Project Canned: Let's Use Docker.

[.NET Rocks!] Patterns and Anti-Patterns
  • Developer Habits, good and bad
  • Discussions about anti patterns in software development

[Developer Tea] 3 Things Aspiring Developers Should Be Doing Today
  • Not easy, require effort
  • Eliminate the bottom 20%, remove all activities that do not provide value
    • Focus on the things on the critical path
  • Make one single value statement for the next 6 months 
  • Make learning about yourself a priority

Tuesday, 23 August 2016

Damo's Podcast Highlights 2016 #33

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[This Agile Life] Moving from Scrum to Kanban
  • What is Kanban and how does it compare to scrum
  • Scrum vs. Kanban
  • Kanban board
  • WIP limiting
  • Flow of work
  • Pull versus push work-flow

[Developer Tea] Focus
  • how to cultivate focus

[The Static Void Podcast] .NET Core RTM
  • Jeff Fritz from Microsoft joins Jess, Todd, and Chris to talk about .NET Core and we challenge our discussion of .NET Core RTM in the previous episode.

[The School of Greatness with Lewis Howes] 8 Lessons the Olympics taught me about greatness
  1. Vision is the beginning of the journey.
  2. Develop your talent.
  3. Have obsession with your passion.
  4. Don’t try to do it alone – have coaches and a team.
  5. Embrace pain and adversity.
  6. Play for something bigger than yourself.
  7. Understand that all we can do is our very best.
  8. Acknowledge and appreciate your accomplishments.

[The Ruby Rogues] Contempt Culture with Aurynn Shaw

Thursday, 18 August 2016

Damo's Podcast Highlights 2016 #32

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[This agile life] The Version One 10th Annual State of Agile™ report. Pt 2.

[Eat Sleep Code] JavaScript Messaging Patterns
  • How to use messaging patterns like RabbitMQ to create scale-able applications.
  • We also learn how messaging promotes asynchronous behavior throughout an application.

[.Net Rocks] Data on DocumentDB with Ryan CrawCour
  • Ryan talks about how DocumentDB provides a fast, scalable place to store objects and write your queries any way you like. You write the rules for how your data partitions between collections, as well as the performance of each of those collections, and you can change them on the fly. More sophisticated than a simple key-value-pair store, but less structured that a relational database, DocumentDB sits in a great spot in your data storage needs. 

[audiobookpodcast.Programming] Software Craftsmanship by Sandro Mancuso
  • video -
  • After over ten years since the Agile summit, software projects are still failing and developers are still behaving and being treated as factory workers. The software development industry is still very amateur when compared to other professions. How can we change this? Why Agile was not sufficient? Why so many clients are unhappy with their software projects? Why is it so difficult to find good developers? Our industry needs more professionalism and that's what Software Craftsmanship brings to the table

[.Net Rocks] Building Multi-Tenant Applications with Paul Stovell
  • What does it take to make an application support multiple customers?
  • As with most things, making multi-tenant apps is more complicated than it seems! Paul talks about making architectural decisions around separation between various customers - do they each get their own database? What about web server and/or app-pool? What about customizations and deployment. Do customers get new features immediately, or do they have the option to wait? How does the cloud impact your decision making? It's a complicated subject with a variety of trade-offs!

[Devnology Podcast] David Anderson - Kanban
  • From the Theory of Constraints to Kanban and the benefits of visualizing the workflow and limiting Work-in-Progress

[OnBooks] Ego Is The Enemy by Ryan Holiday
  • Early in our careers, it impedes learning and the cultivation of talent.
  • With success, it can blind us to our faults and sow future problems.
  • In failure, it magnifies each blow and makes recovery more difficult.