Ignored By Dinosaurs 🦕

[This was partially inspired by this excellent article that I read Saturday morning.]

I manage two teams. One of them has been through a lot of changes in the last 12 months, basically taking a rather sharp turn in responsibilities and day to day work. This was always the plan because I believed that there was no better team to take over this particular process than ours, but when it came down to actually implement the changes clearly it was not what some members of the team had signed up for.

One day recently one of our strongest team members told me she wanted to move to another team.


I know for a fact that there are managers in this world who would take this poorly. Best case scenario they wonder how the team member is going to be replaced and how it's going to affect the team members that remain. Certain other managers would worry about how this is going to reflect on them as a manager if one of their team members wants to move to another team.

The absolute worst response you could get from a manager is “no, I like you where you are” because this openly tells the team member that there's nowhere for them to grow in your organization. They would be better off finding a new job if they want something new, because there's nothing for them here but more of the same.

Then there's the manager that says “hell yeah, how can I help?”. I'm very glad and very lucky to be in this camp and to be able to contribute to others growing their careers, even if it's through nothing more than encouragement.

Be a booster. Be a leader, not an anchor.

#business #life #personal

I've known about the Dunning-Kruger effect for years, thanks to Hacker News and its penchant for surfacing the names of Things. It never occurred to me before just now that my steady decline in productivity here on this blog, or rather the extreme productivity I enjoyed in posting to this blog in its first year, were the result of the Dunning-Kruger effect. I had so much to say! I had no idea what I was talking about!

It's a damn shame, because it really did help me to let that stuff out of my head, as I'm sure it would help me now. It's just that now that I know so, so much more about the technology business I'm so much more acutely aware of all that I don't know about the technology business.

I'ma try and get over that though, because just letting the thoughts out of my head is a very soothing process, and I have no illusions that anyone is actually reading this thing anymore. Ciao.

#life

Basically nothing you probably haven't learned already, but let me detail my latest take on web conference call nirvana:

An iPhone with a mini tripod, search “iPhone tripod” on Amazon, and a pair of AirPods. This lets you set up your meet anywhere – the yard is my personal favorite since about a month ago when spring began – and carry on doing whatever you're doing without having to balance your phone on whatever is around.

#life

Just because I'm losing Doesn't mean I'm lost

I don't know really how to get into this one, but I was talking with someone earlier today about The Struggle. The Struggle is all I've been working against for the last 10 years since I started this blog. I don't want to say that The Struggle is over, but if it's the mountain I've been climbing I think I'm basically at the top of it now. I need to find another mountain to climb now.

I started this blog a lifetime ago, and I feel like an almost completely different person than I was back then but I've been working on the same thing this whole time – feed my family and find a gig that makes me feel empowered to do what I'm good at and that gives me room to grow.

So now I'm here, my family is fed and I have a job with some upside and some growing responsibility. It's a fun job, I like my coworkers, and there's growth there if I can figure out how to [continue to] grow it.

That's the trick now. Now that the daily/weekly/yearly job of grinding it out against The Struggle has gotten me to where I was trying to be that whole time, I have to refocus on something larger.

#life

WTF is “continuous integration”??

So, back in the old days, building websites was simple. You had plenty of options for how to build one but me personally, I was totally fine with Wordpress and Drupal. They didn't force me to know what was going on under the hood to be productive and they provided a way for me to learn that stuff along the way while feeding my family. I learned CSS on the job while building the first couple things I ever built.

Cascading Style Sheets (CSS) is a stylesheet language used to describe the presentation of a document written in HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS describes how elements should be rendered on screen, on paper, in speech, or on other media. – https://developer.mozilla.org/en-US/docs/Web/CSS

Being a curious and hungry developer, I soon reached for a tool that I saw discussed called SASS that was something called a “CSS Preprocessor”. Basically it was a computer language that was like CSS, and that generated CSS. It allowed you to reuse bits and pieces of styles in ways that stock CSS did not at the time.

It was a tool that made your life as a front end developer easier, but there was a catch – now you had to process that SASS into CSS at some point along the way. There was now an extra piece of gear involved in your development –> production lifecycle.

Another example

Frontend development is insanely complex these days. Plain old Javascript that browsers can digest and execute has exploded like a million suns into various dialects, innumerable frameworks, and more tooling than any sane developer can keep track of. Gone are the days of including jQuery (and my interest in frontend dev along with it).

This is (arguably) great for developers to be more productive and provide high quality experiences to their audience, but there is much, much more to think about in terms of how to deliver those experiences to the end user. Yes, my marketing speak is rather loathesome.

By “deliver” I mean the nuts and bolts – all that Javascript has to go over a network connection from a server in a rack to a user's browser in order to execute and Do Stuff. You don't want your user to have to download 500,000 JS files weighing 40MB just to load your website, so you do a bunch of stuff to optimize that:

  • you smash all those files into 1 file, this cuts down on num_requests because those cost time
  • you compress that file into something smaller using gzip or the like, this cuts down on the weight of that code traveling over the wire because that costs time too
  • you might have to compile your chosen dialect of JS into “vanilla” JS that the browser can actually execute.

And you're not going to want to do this by hand every time, so you reach for a tool that does it all for you. There is now an extra piece of gear involved in your development –> production lifecycle.

Just one more

Package managers. They are a wonderful development, and I'm talking about Rubygems, Composer, Pip, and the like. They allow the OSS community to write, publish, and use bits of code (libraries) that other people have written so you don't have to reinvent the same wheel everytime you want to add a login form to your site. Just gem install devise and bam, your Rails site has user login forms, password resets, and a ton of other functionality that you didn't have to build yourself.

All of these package managers operate on a similar principle – they have a list of the packages required for a given project and when one of your colleagues adds a new one, it gets added to the list. All you have to do to add it to your local working copy is composer install and bam, you have that new library too.

Ideally though, you're not committing that package to your Git repo because that's “3rd party code”. It bloats your Git repo which is just a bad smell, but it's also code that you don't own and should never really touch. What should be committed to your Git repo is just your code. At deploy time, just run composer install and you're done, but you need to have a Thing that will be able to execute composer install.

There is now an extra piece of gear involved in your development –> production lifecycle.

Continuous Integration

That extra piece of gear is what's commonly referred to as a “build pipeline” or a “continuous integration layer”. It's essentially just a process that will execute your instructions for how to tranform your development codebase into your production codebase or artifact.

Plenty of players in the space, starting with a simple Bash script on the user's laptop before pushing to Git. More involved and flexible options include Jenkins, Travis, or CircleCI. Gitlab has a built in CI pipeline, it's part of why they will ultimately win over Github.

Problem with all these tools is that they're other tools, and you have to pay for them and maintain them and learn how to use them and deal with API changes etc. Platform.sh has this stuff all built in, and we're the only PaaS vendor that I know of that has this level of continuous integration built right in in the form of our build and deploy hooks.

We have shortcuts for Composer based projects, and full support for adding any number of build time dependencies (probably a whole nother post's worth of material to discuss). Most other PaaS vendors make you buy CircleCI and wire the stuff together in order to achieve the same level of cushy, modern developer experience that we offer, and that's where I've run out of steam on this post. If you got questions, ask em.

#generaldevelopment #platformsh

Problemspace

I haven't posted anything in over a year. I'm almost rusted shut, yet I lately feel the need to commit to creating a new row in the database that backs this blog.

Solutionspace

Just start writing.

I've been at this gig for over 3 years now, and I've learned a decent deal about the “real world”, the one that I wanted to exist in toward the end of my last career. I scored that tech job, I got bumped up to mgmt about 8 months ago. I actually really enjoy it and I'd kind of like to journal some of the things I've learned along the way here.

Anyway, if you knew me in my 20s and you're reading this – thank you. I'm going to just start writing.

#life

Well hey, I haven't written anything here in 2018, that's wild.

So here's what I'm doing – I'm removing the GA tracker from this blog. I don't check my stats anymore and I suspect what audience there is to this blog probably has ad blocking enabled. Hell, I have ad blocking enabled. Seems kind of hypocritical to have an ad blocker installed so that the eye of tech-Sauron can't follow me as easily around the internet, and yet to have GA tracking on my own blog. So I'm getting rid of it.

#life

The Book of Platform – 2.md

Getting started

In this chapter we'll walk through the process of setting up and deploying your very first project on Platform.sh. We'll go through the free trial and checkout process, clone a simple project from a public GitHub repository, and push it to your new Platform.sh project.

After that we'll dazzle you with how easy it is to set up development environments for various features with the click of a button. We'll make a couple of simple code changes and deploy them each separately to their own hosting environments and then merge everything back together to get it ready for a production release.

Step 1 – new project creation

The easiest way to get started is to take advantage of Platform.sh's free 1 month trial. This will allow you to step through this on boarding tutorial free of charge and get familiar with the way we make it easier for you to decide for yourself whether or not Platform.sh is a good fit for your team.

On the front page of Platform.sh's website you can find a link to a Free Trial, currently at top right of the main navigation. Clicking through that brings you to the account creation workflow. I personally prefer just creating an account on the site for whatever given service, but you are also free to take advantage of our Bitbucket, GitHub, or Google integrations for authentication.

#platformsh

The internet is hard these days.

It started simply enough – for instance, all you really needed was a Geocities account and some initiative to learn HTML and you could have your own place to put whatever you wanted and make it available to the entire world. From such simple seeds, complex structures did grow..

Geocities was permanently shut down in 2009, at once both a tragedy for the loss of so much content, so much history, and yet also a wake-up call for so many of us that we needed to have control over our own content, applications, and businesses. Many of us chose to host our own websites so that a seemingly arbitrary decision from some faceless corporate power couldn't upend overnight what we'd created over years. But that decision also made things a little more complicated.

At that point all you really needed was a web hosting account somewhere with Apache HTTPD installed as a web server. Then you could edit and upload your HTML just as before, only this time it couldn't be taken away from you because you were (more) in control of the setting.

Somewhere along the way you were likely introduced to something like Wordpress or Drupal or Ruby on Rails, which were all essentially frontends to some kind of database, and that database is where you would store your content. This was a wonderful development, not only enabling non-technical users to publish content to the web without knowing anything about HTML or FTP, but also for small businesses to be able to create their first eCommerce stores online and take advantage of an entire global market. Again, this was the march of technological progress creating new opportunities for primitive man to make use of highly advanced tools without having a Computer Science degree.

But, as the saying goes, with great power comes great responsibility. The responsibility in this case is that of having to set up and maintain your own web hosting infrastructure. Some of us like this kind of work – setting up and managing fleets of servers with all manner of different pieces of software on them to serve the world's internet needs – but some of us really just like writing code and building websites and applications.

Platform.sh is a new breed of hosting service, and was created expressly for this second group of technologists.

Platform.sh gives you an incredibly flexible set of tools with which you can build and deploy a huge range of different types of applications to the world with the click of a button or a push to a Git repo. Platform.sh currently has support for PHP, Ruby, Python, and Node.js with other runtimes like Go and Java either in public beta or in planning mode internally.

Platform.sh was also architected from the ground up to fulfill the promise of Git as a codebase management tool. No longer are your working feature branches trapped on your machine or in a remote repo with no context to make them live (and testable) for your teammates. Platform.sh will provision a fully functional, completely segregated hosting environment for each one of your Git branches, with all of the data and uploaded files that your app's codebase needs to be a fully functioning application.

Lastly, Platform.sh was designed to grow with your project as your project's needs evolve. The days of filing support tickets to have a PHP extension or a new database server installed are effectively over. Not only will we provision all of your application's software dependencies – Redis, MySQL, ElasticSearch, and many others – but you can choose from many different versions of each of these dependencies. Want to see how ruby:2.4 or python:3.6 or postgresql:9.6 or php:7.2-rc improves your app's performance? We always endeavor to provide the latest versions of each so that upgrading the underlying software on which your application runs is as simple and painless as changing a line of configuration.

If this sounds like something that might take some of the tedium out of your development day or possibly increase the velocity with which your business can bring new ideas and features to your customers then please, read on. In the coming chapters we'll walk you through getting started with Platform.sh by stepping you through setting up your first project and deploying a simple app with a few commands. After that we'll dive deep into more advanced topics such as -

  • Configuring your project with YAML
    • routes.yaml
    • services.yaml
    • .platform.app.yaml or “app yaml”
  • Managing and interacting with various administrative functions of your project both via the user interface as well as the Platform CLI
    • branching
    • merging
    • backups
  • How all of this seeming magic works under the hood
    • containers
    • environment variables
    • copy on write

So, welcome to The Little Platform.sh Book! We sincerely hope to make internet-ing a little bit easier for you and your team.

#generaldevelopment #platformsh

So much to say, so much to say..

Some day I'll write a memoir, but that day is not this day my friends. The most outwardly memorable thing I've done so far this summer is fly out to Oregon to the String Summit to cover for Mike Devol of Greensky. Mike had a baby a few days before, and back in the winter he called me up to see if I might be interested in covering for him on some summer festival shows. Duh, yes.

So I had several months to prepare, but not prepare so much that I got actually excited about the gig because it quite likely might not happen. It was a strange mental exercise.

I can't even begin to recount the whole weekend here, though it was definitely worth thinking back on. Friday morning I got to judge the band contest and though they didn't win, this band deserved to win..

Something about the line “then I'll have my family band, make play the tunes that they don't really understand” hit the waterworks button and it got stuck. I was seriously sobbing for about 30 minutes or so, fortunately I'd bought aviators on the way to the airport.

The whole experience was just so intensely cathartic for me, it's not possible to express my thanks to those guys for letting me do it.

#life #music