My brothers, brothers of mine.
I had this one day, that was just…really good. I was feeling good, you know? I was working on a really fun project, it was perfect, beautiful weather, and I was feeling the spark of creativity. I had gotten up early, eaten a bowl of oatmeal, worked out, and walked up through the Portal, to the bike shed on the edge of the farm. I got my bike out, and hit the road, it was probably 7:30 AM.
View Post
A lot of teams have moved from being colocated to distributed recently, and quite a few people are jumping in to defend their tool of choice for representing “cards on a wall.” Jira-bashing is always popular, but one thing I’ve noticed is that folks aren’t necessarily optimizing for the same things; the result can often be a focus on tooling, and reducing the discussion to “which board is better”, rather than understanding what problems these tools help us to solve.
View Post
Note: This post was originally published on our company site, which has since been taken offline.
The last half of 2019 brought some big changes for us at Digital Solutions: We had a team member leave, and we also saw substantial growth. That meant needing to hire four new folks, taking our team of six to ten. As a small, bootstrapped company without a dedicated hiring manager, we have to prioritize our hiring and make room for it in our daily work; at the same time, our size gives us a lot of freedom to experiment with our hiring practices.
View Post
Note: This post was originally published on our company site, which has since been taken offline.
This is an experience report from our team, who first dabbled with mob programming two years ago; since then we have adopted it as part of our core culture, and continue to spread it throughout our organization and clients. We talk a bit about who inspired us, how we convinced our leaders to let us try it, and where we ended up.
View Post
Azure Functions are Microsoft’s serverless offering, and they can be a great option for building simple, scalable applications and APIs. A common practice is to apply a CNAME with your custom domain to the Azure DNS entry, and have users access your application from that domain, “hiding” the implementation. Today HTTPS is necessary, and Azure has built-in capability to apply a custom domain and certificate to your Function App.
If you want to get your certificates from Letsencrypt, there is a site extension by Simon J.
View Post
In a previous post I outlined a workflow to create and trigger a pipeline job in Jenkins whenever a git tag is pushed. A common step in this type of workflow is to deploy to a staging environment once all the build and test steps are successful.
One way to accomplish this is by using parameters–a typical (declarative) job definition might look like:
pipeline { agent { label 'myLabel' } parameters { choice(choices: 'staging\nproduction', description: 'Which environment?
View Post
There seem to be a lot of questions around making Jenkins pipelines work with git tags; having set this up recently, I thought I’d write a quick summary of one workable approach.
Workflow This post covers a specific workflow used by my team; in particular, we don’t do pull requests, and we use tags to denote releases, which are automatically deployed. We tag our releases manually, so we aren’t configuring Jenkins to tag every build, but rather to watch for new tags to be pushed, and execute builds for them.
View Post
I came across a situation recently where secrets were being leaked via SaltStack deployments, run from a CI job. I’ll explain how this can happen, and give some suggestions to reduce the risk.
A common workflow in SaltStack is to store secrets in a pillar on the salt master, which allows data to be encrypted until compilation. The file.managed module can then be used to templatize configuration files and inject secrets from the encrypted pillars.
View Post