David Gee

Author Archives: David Gee

Golang Magic: Package level vars, init

Magic

Sometimes code appears to be magic. Layer up on layer of abstraction followed through with crazy names and advanced tricks. Great for the writer and a show case of knowledge, bad for readability and maintenance. This article explores removal of said magic by simplifying what packages can do.

Intro

I’m currently levelling up my learnings with Golang and keen to maintain the heat and make use of this skill. So, when Peter Bourgon posted this http://peter.bourgon.org/blog/2017/06/09/theory-of-modern-go.html, I took note. I’ve never met Peter, but I like what I read. In summary , his post is about removing the use of package level vars and the implicitly called init() function.

I am the first to admit to using package level vars and init. My first reaction to reading the article was being irked. Why irked? Because it’s easy to use package level vars and once you understand what init() is and when it’s called. Not using package level vars means you have to think about relationships and what needs to be passed what. Not using init() means you have to think about how something is instantiated and whether it’s unique and if it should be globally Continue reading

Sharing Information Is Hard

Seriously hard. We consume a huge amount of information daily. I see metrics like 10,000 to 100,000 words a day being consumed by each of us. Some of that will be subjective, some of it objective. Some of it will be fiction, some will be fact. Some? Who knows. Political propaganda with elements of truth. Some of it will incite emotion and some of it will aid in falling to sleep.

If you blog, do podcasts or write whitepapers for reasons not tied to your employment or cold hard cash income, have you ever asked yourself why you do it? What makes you want to share?

In a society where something is declared fake news because two parties don’t agree and freedom of speech is becoming one way, is it worth it?

Why do I share?

If I need or want to learn something, I’ll go wide in the hunt for knowledge. Thanks to the ‘tinterweb, information is readily available. So much information is out there that we have the problem of validating what we read. Blogs have been a massive help to me over the years, especially when you read aligning and agreeing articles. The validation of “someone else Continue reading

Ultimate Go, Ardanlabs, Training Course Writeup

After being in the IT industry for a while, courses generally don’t impress or engage you for very long. If it’s something you’re interested in, you stand a better chance of hanging on in there, but even then, someone talking at you is always difficult. Those that attend conferences regularly will appreciate the shift to ‘brown bag’ lightening talks where a nervous energy fuelled speaker delivers the interesting snippets of a topic with the knowledge to guide question asking talk goers to the right info if they have beyond surface level curiosity.

Therefore, many of us don’t attend classroom based training anymore. Short webinars and self-lead courses are generally the way forward for those of us not in college or university. I need to add here, technology itself is changing too. Gone are the days where Microsoft, Oracle and Cisco lead the world. Sorry folks, they truly are gone. Technology now is ‘passing through’. I have a transformed view of technology akin to cattle herding; rope it, guide it to the right place to feed, then shoot it, eat it and make some handbags. Technology is more and more transient. It’s not about being an expert, it’s about the techniques Continue reading

Workflow Enhanced Networking (WEN)

Software Defined Networking (SDN) offered lots of hope, a centralized control-plane, programmable network functions and authenticated network nodes. Once we all stopped laughing and rolling around the floor with rib ache, the reality of SDN dawned quickly. It was a nice academic thought and set of experiments, but for the masses, the original meaning of SDN has changed significantly. The software giants with mountains of cash will drive technology like this early and possibly pave the way for the rest of us eventually, but for the masses of enterprises that vendors serve and that have more immediate requirements, SDN isn’t something that’s had massive adoption. The question of ‘why’ is a pretty obvious place to start and you don’t have to look too far before you find answers.

I will not get in to the overlay and underlay arguments here. These have been done to death already. Lots of organizations and vendors offer various takes on the middle-ground, far left and far right. This isn’t a product pitch either.

This post is around the “next onwards step” as opposed to changing the world. I also ‘feel’, this is the natural pull as opposed to the industry push we’ve come to Continue reading

StackStorm: Ghost2logger Pack

Coinciding (roughly) with the version 2.2 release of StackStorm, the Ghost2logger pack has been released.

This pack provides in essence a “Syslog sensor” that provides the user a tuple match on a Syslog entry, tuples in this case being:

  • Syslog Message (Actual syslog message)
    MANDATORY AND
  • Syslog Source (IPv4 address)

The actions can then be anything you so desire, either triggering a sinlge action or full blown workflow with Mistral or Cloudslang.

Getting Started

In terms of using the pack, all that is required from the user is the creation of rules and pointing your syslog source to the Ghost2logger location. Most of the time Ghost2logger will live on the same install as StackStorm, so point it at the IP address StackStorm resides. Worried abut StackStorm load? Don’t be. Syslogs aren’t actually processed by StackStorm, but are processed by the Ghost2logger binary. Only matched entries dispatch triggers. There is some inception going on here. Prepare yourself for this: “Rules will only match what the rules have created the match conditions for”. If you understand this hypothesis correctly, you will understand that this is simple feedback from the rules base back to Ghost2logger.

The pack itself consists of a number Continue reading

Developing Software The Right Way, with Intent and Carefulness

This blog post / write-up is long overdue. I’m the guy that’s gone from electronics and hardware person, to embedded software, software, networking and now back to software with a keen interest in programmable hardware. Whilst I haven’t had to quite start from scratch in software again, it’s been a long journey to get proficient. Therefore, perusing Twitter, Facebook, Reddit, conference notes and videos, occasionally something comes up which is interesting. Psychologically, coding is interesting (note how no-one says programmer any more? Who writes programs?). It gives away something about your personality, current learned/learning state and your happiness levels. It gives away how you view the world and how you handle danger. Seriously. I can hear those thoughts that say “Whatever dude”. Look at how some developers handle failure prone code. Do they check for errors in a shotgun style approach, or with the accuracy of a sniper?

What caught my eye back in January was a Tweet from one of my coding heroes, William Kennedy. The top one started a thought process off that I’ve been chewing on for months.

@goinggodotnet
Thinking about the diff between ignorance vs carelessness as it relates to writing software. These two words Continue reading

NFS For Network Engineers

Without beating the ‘old drum’ without reason, sometimes you have to ask does the drum still need beating. Quick 5 minute articles like this one are always worth asking that question. As system administrators make the journey to SREs or ‘Site Reliability Engineers’, network engineers are also on the same trajectory. We might start from an expected Liam Neeson story point (I have some very specific skills etc), but it’s time to become a better Dad and just stop letting them take your daughter. Sometimes we just need to understand why it’s good to understand certain technology and in this case dream boat (I watched ‘The Accountant’ night, what an excellent film), NFS provides us with the ability to write and test code on remote machines for automation use cases. Sure, it’s just a network based file share, but the power of what it allows us to do is far more interesting.

Needless to say, on the same theme as the last blog post, this is another one that is anchored around StackStorm. With our trusty platform, when we create components for a pack like a actions and sensors, it’s important to have access to an IDE or set of Continue reading

Linux Systemd & Golang Services using Kardianos Service

This week I have done something new, but I found myself dealing with a ‘zero knowledge’ situation or something I like to call ZKS. This is one of those ones where it’s fun, but it also feels a bit stressy as there was enough rope to hang myself with.

That something new is Systemd, which is a Linux operating system thing that manages the initialisation of user things. To speak about this more technically, it is a drop in replacement ‘init’ system that starts services and sets up the user environment. Wikipedia has this to say about it:

Systemd is an init system used in Linux distributions to bootstrap the user space and manage all processes

For those lacking historic knowledge around systemd, it previously many upset devs and administrators, which in turn setup a site called ‘boycottsystemd’ which looks to be offline. They said it flies in the face of doing it the Unix way, which is (to summarise) do one thing and do it well. Systemd is now the default init system for Ubuntu 15x and newer releases. Can’t be that bad…right?

Whilst this is not a complete education around systemd, it’s popular and is reasonably easy to Continue reading

Python: Real World Hacking on StackStorm (Network Engineer Focussed)

It’s miserably cold, raining (the kind that gets you really wet) and a strange dark grey light covers the UK. Some would say a typical day on this island. That said, I have a coffee in hand and some thoughts to share!

For the last year working for Brocade, I’ve been heavily focussed on delivering talks, demonstrations and knowledge on the excellent StackStorm open-source project (referred to as ST2 from this point onwards for brevity). This post does not go in to what ST2 is, but for those who don’t know, it’s an event driven workflow engine. Input, decision/s, output. Simple! The ST2 website itself is a great resource for information as well as other well known blogs. ST2 is quite feature rich and under constant development. One would say it’s an agile tool for a growingly agile world.

So What Have You Been Making?

I can’t spoil what it is I’ve been building, but one of the challenges was to use the built in key-value (KV) store (currently built on Etcd with a ST2 specific abstraction layer) to use as a point of data convergence. What does this mean in real terms? I have multiple things happening and I Continue reading

Automation: Build or Consume?

The question of “home grown vs. off the shelf” comes up a lot. It comes up both in a professional capacity and social.

Home grown, usually born out of frustration to solve an immediate problem, often is a path that leads to consuming something off the shelf either Open Source or commercial. Home grown can deliver rapid results for simple things but has an exponential learning growth curve to do something more complex.

Why learn the oddities and nuances of a full programming language to write a multi-threaded application that automates concurrently, when you can write simple instructions that makes something else takes care of all of that mucking about in parallelism, logging and worrying about covering every use case. If you like hacking and building things, is it not better to apply that yearning solving rapidly rewarded challenges or to work on building something that starts off fragile and like all babies, has to learn to crawl, walk and be weened off milk?

Good tools deal with things like input, decision making and invoking output. It’s always better to control the pipeline and write linkages than to build the whole thing. After all, the problem with software is, you Continue reading

OpenStack Summit Barcelona 2016: Current State

It’s October in the UK and blimey charlie, it’s a bit chilly. Good news then that the OpenStack Summit is in Barcelona! In comparison to Canada or Japan, it’s on my doorstep! Spain being the home of English holiday makers, the smell of sun cream, sangria and chicken nugget dinners awaits.

It Felt Different

Needless to say, I play investigator at these summits. Whether it’s the SDN congress, OpenStack or other networking events, the cynical grump hat is donned. Before I even managed to investigate anything, I felt something different. The hype lever was set to average and this show felt almost corporate. Good news or bad news? Something I’ve struggled to quantify all week and even now as I sit on the home bound flight to Blighty, I continue to ponder.

Big bang news was lacking like previous shows. Realistic use cases, real commentary and on-stage demos made this feel different. One of the demos made me both cringe and chuckle as Mark Collier played real life chaos monkey, pulling fibres and eventually even cutting through them during an EPC demo which included OPNFV Doctor and Vitrage. This demoed OpenStack’s capability to integrate with monitoring and life cycle tooling. Continue reading

Discussing Disruption to IT

Disruption has come to mean different things in the realm of IT. It’s difficult to read social media for a day without seeing the word "disruption" abused by the great marketing machine.

Using this word in the context of "disruption to service" or put it another way, "What happens when something doesn’t work?", it’s difficult to come up with a good anecdote to describe the impact of something going wrong when you’re in front of customers without sounding like another marketeer. I firmly believe in delivering value by "showing" as opposed to just battering your audience with slide ware. 

Still, in networking we are actually going through a period of huge change. The CLI skill set is still dominant and I’m not scare mongering when I say over time this will change. It will. It just won’t change as fast as some people will have you believe. Anyway, I digress. 

Fred

At college, I studied the greatest passion in life I had at the time, which was electronics. The local college department was ok and the material was industry standard stuff. Nothing crazy and out there, but useful and real. We had one super hero in the Continue reading

NFV, Skills & Mutable vs. Immutable Infrastructure

This blog article was inspired by some infuriating reads and blogs doing the rounds doing significant damage to business thinking.

I’ve heard so many conversations that confuse Software Defined Networking with Software Driven Networking, automation mixed up with abstraction and MANO (Management and Orchestration) mixed up with configuration management tools that are used for building mutable infrastructure like Puppet, Chef, Ansible and Salt. Is it possible to cross pollinate all of these technologies? Sure, but do not expect people to happy about it. Nerds will love it, process people will hate it and failures will be dominant. Don’t even go there with failing fast. That statement is out of scope as an excuse.

Mutable Infrastructure

Mutable in this sense means to mutate and change. Configuration management tools can create virtual machines, populate them with the packages required to deliver services and place domain specific configuration in order to make them live and in production.

Mutable infrastructure as we know it today is "treat your VMs like cattle, not pets" and this is achieved with well known tools.

Immutable Infrastructure

Think about containers here and unikernels. The idea is we build applications with as few dependencies as possible. Ultimately building applications Continue reading

Golang: Exercising pointers, interfaces, functions and wrapping

This article is inspired by my somewhat confused learning experience with interfaces, methods and wrapping functions in Golang. Needless to say, there was some serious learning to do here given first of all I was a C junkie then moved swiftly to Python for ease and speed in the networking world. Lots to learn.

Golang

The reason for concentration on Golang? It’s simple, powerful, quick to compile and massively supported with a vibrant community. A little like the film ‘Lock Stock and Two Smoking Barrels’, I take the tenet of ‘guns for show, knives for a pro’ approach with Python and Golang; roughly translating to Python for proof-of-concepts, speed and simple apps, Golang for performance and services. Therefore knowing how interfaces, pointers, types and methods based on types are critical knowledge components!

Show me the code

The code below is an exercise of interfaces, function wrapping, pointers and mixing usage of them all. It does not cover why you might want to do it, so go and learn that yourself. Pointers are great for highly optimised applications and can also save memory if used correctly. With Golang’s garbage collection, worrying about freeing memory is not an issue. Exercise 6 will Continue reading

Simplify Simplify Simplify In Sales

It’s super important to understand and know your audience. Even when you think you’re not being technical, there are levels of un-technical you can drop to that make you cringe, but if your audience needs it, then it’s a great skill to learn.

As the network and software world hurtles along at super ridiculous speed (that’s the perception at least), it’s important to acknowledge that a lot of the enterprises and organisations out there are dealing with much the sameness of the last decade or so. Not everyone is riding the hype of Cloud, SDN or DevOps (shock horror?), so when your area of speciality in their world is the disruptive technology, be sure to have a card in your back pocket that helps you step it down a level. Many preconceived ideas exist in every world so do not be afraid to help them understand. You will get met with resistance but remember, you are threatening the way they do things today, therefore show them and help them see the value. It’s always critical to remember, someone else has been in at some point and convinced them to do what they’re doing today. Fair fight? Never is.

Ultimately Continue reading

Golang net package: UDP Client with Specific Source Port

Well you found it if you were looking for it. If you are using the Golang net package and need to set a specific source port for the UDP or TCP dial functions, then look no further. Why might you want to control your source port and not leave it to random selection in the range of 1024-65535? Some server software might be hardwired to listen to communications coming from a specific source port and might not respond to packets originating from any other source port on a client. With the IoT world growing rapidly, this issue bit me recently and I didn’t figure it out immediately. Maybe it’s my old school brain not being down with the kids. Who knows. Solved it in the end, so sharing here to help you!

It was late on a Saturday night

Pizza had been eaten. Pepsi was being consumed. A crazy Saturday evening one would say. Alas, a friend and I had decoded the communications of an IoT device and wanted to write some better client software. The software client happened to carry out discovery using a specific source port destined to the same port, then when the mode changed from discovery Continue reading

Open Networking: The Eject Button

Those of us that weren’t born in the iPod era used to have physical music and movie media like cassette tapes, vinyl, CDs, minidisc, VHS and almost Beta Max. The idea was that you could take this media and play it on any compatible player and in some cases record too. Ok, I know the concept is almost the same with digital media, but there is something nostalgic about physical things.

Focussing on the mighty cassette tape, the medium that young teenagers used to woo their targets with heart felt mix tapes, it was possible to buy cassettes of different record time lengths and different materials for quality. Cassette decks were integrated in to boom boxes, Sony Walkmans, all in one HiFi units and of course, the more quality HiFi separate devices along with supposed studio quality devices. To give it some more background, these devices would have support electronics like headphone amplifiers, graphic equalisers, high speed dubbing (for fast transfer between decks), microphone amplifier circuits and even motorised loading and eject mechanisms. See the vague similarity between this and networking? No, I thought not. The cassette much like interchangeable networking components is removable. It’s transportable and although the tape Continue reading

Business Titles: CEO, Founder, Managing Director, Proprietor

Twitter is a great place to air thoughts, gather thoughts, create allies and destroy bridges. Twitter is also limited to 140 characters. Not great for talking about complex things. For large subject areas, Tweets are normally pre-appended with [x/y], which designates what message out of the chain this particular one is. Tweeting about emotional and sensitive things is probably something I need to stop doing, especially without the means to portray the exact meaning behind the Tweets and feeling that goes with it.

To those that have recently started those businesses, you have my respect for jumping in with both feet, not to be confused with gripes about titles!

Being Misunderstood and Business Titles

With startups being the ‘in thing’ and the millennials starting ‘micro businesses’, the misuse of titles grinds on me for very valid reasons. Everyone wants to be that person that sells their startup for millions, or gets recognition on TED for being awesome. I have news. Most companies fail within the first year or two. Most never make it past five years. Those that do in most cases have gambled everything to win. As newer technologies sees new roles and skill sets being developed, it’s only Continue reading

How to not present to the Swiss

Being English and being constantly exposed to bad language practice (not the curse word type), during a recent trip to Switzerland, I totally failed in keeping my English plain and vanilla. Their English was better than my own and in this sense I totally failed. Here is my top five of innocently said statements that just do not translate. If nothing else, it might help you to not make the same mistake when presenting to others not of your own tongue.

1) Shooting fish in a barrel
2) Stuck under a rock
3) Lots of ways to skin a cat, including with a machine gun
4) Everything including the kitchen sink
5) More features than you can shake a stick at

Speaking English is really hard to do when you’re English!!!

The post How to not present to the Swiss appeared first on ipengineer.net.

OpenStack Summit – Tokyo – 2015 – Thursday 29th – Show Notes

It’s Thursday, it’s 9am and…straight in to sessions. No keynote today, which is no bad thing considering these days are long!

The previous two days have consumed a huge amount of hours from sessions, keynotes and side meetings, some planned and some impromptu. This event really is the place to be if you want to speak to industry figure heads representing both vendors and consumers.

It was great to wander the market place hall, with some stands really paying attention to their interpreted understanding of the enterprises and their desire to access the OpenStack technology. This ranged from companies providing optimised tower (desktop style) servers, through to IBM showing off OCP blueprinted servers, which in turn provides a standard compute architecture. Not everyone company or organisation has a server room that wants to take advantage of OpenStack, nor do they necessarily have the skill to tie the components together. Interesting approaches all round!

Miranits, Canonical and Red Hat were present, for each tip of the consumer triangle, being: instant access, guided automation and tool-box


Instant AccessFuel

Mirantis offer the easy access approach, or ‘low bar’ if that’s more familiar as an ‘easy’ term. As a set of steps: Install Continue reading