Find me on:
In no particular order… Stuff I know:
> Windows administration
I’ve never been a sys-admin, but I’ve managed dozens of Windows servers over the years. I know enough about IIS, AD, and domain controllers to be dangerous, and I can script PowerShell when needed.
> Linux administration
The terminal doesn’t scare me.
I’ve dabbled in Python.
The entire ASP.NET stack, especially MVC. I stared writing .NET applications when it was version 1.1.
React + Redux, Angular + Ngrx, AngularJS, and Vue – I have written production apps on all of these frameworks.
For UI/CSS, I really like Semantic and Ant Design, but not Foundation. Bootstrap is boring but fine. For a new project, I would consider styled-components (CSS-in-JS) and the highly composable Rebass library.
My career started in Geographic Information Systems (GIS) in 2003. I’m an expert in Esri ArcGIS Desktop, Server, 3D Analyst, Spatial Analyst, Network Analyst, and APIs. I’ve built several production systems and tools on this software stack.
Outside the Esri bubble, I know QGIS, PostGIS, Leaflet, TileMill, Carto, and low-level tools like GDAL, proj.4, and OGR.
> Web hosting
AWS, Firebase, Heroku, Azure, GoDaddy, GitHub Pages.
> Virtual environments
VMWare and ESXi? Yes. Oracle VirtualBox? Yes. Vagrant? Yes.
I’m a Vimmer/Neovimmer.
For .NET work, I use Visual Studio, VS Code, and Neovim.
> Source control
Git these days, TFS if needed.
Before Git I used Mecurial, before that SVN, before that Visual Source Safe.
I have informally filled the role of DevOps engineer everywhere I go – Webpack, Grunt, Gulp, MSBuild, TFS, VSTS, Mecurial (hg), Git, Hudson/Jenkins CI, Flowdock, Slack, Atlassian Bitbucket/Jira/Bamboo, GitHub, GitLab CE, Docker Compose, Vagrant, unit testing frameworks, and more.
DevOps isn’t about the tools, but the process. I know how to automate things and get out of a team’s way.
> Data and networking
Redis, NGINX, Docker, Docker Compose, SQLite, SQL Server, and PostgreSQL.
Oracle a fine database, but the company is toxic. Postgres is free and awesome, use that instead.
GraphQL and REST, with or without Swagger.
> AWS and “the cloud”
I’m learning K8s and Azure now, but Amazon Web Services (AWS) is what I know best.
I have managed a network of servers and services on AWS since 2012. My experience spans a large number of the core services which are needed to host and manage online apps:
- Route 53 (DNS routing),
- VPC (virtual private networking),
- S3 and Glacier (storage and static file hosting),
- CloudFront (content delivery and caching),
- Lambda (event-driven, serverless computing),
- IAM (accounts management),
- RDS (relational databases),
- ElastiCache (application caching, NoSQL database),
- Elastic Beanstalk (infrastructure orchestration, PaaS),
- ECS (Docker container hosting and deployment),
- SES and SNS (email and notifications),
- CloudWatch (logging, metrics),
- CodePipeline and CodeDeploy (build procedures and deployments),
- Certificate Manager (SSL cert management),
- IAM user management, encryption options, two-factor auth, security groups, and more.
My experience with AWS goes beyond merely knowing their service capabilities; I have real-world experience designing architectures which properly use the dynamic auto-scaling, load balancing, fault tolerant capabilities of AWS, and I have a good general knowledge of networking and troubleshooting in such environments.
My PGP public key is 0x6AF2BF57992F19ED.
I don’t reuse passwords. Google Auth everywhere.
> Crypto currencies
It’s just a hobby, but I could talk about this for hours.
If you read the Satoshi whitepaper, prepare to be blown away. :)
Terms and conditions
This blog was made to distribute valuable info and show off my recent work. To that end, I license the content under CC BY 4.0.
Source code I publish here is placed under The MIT License unless otherwise noted. I avoid reposting code that’s not mine without proper attribution, but please be careful to distinguish what is mine and what is not.
If you have a doubt about the ownership or terms of anything on this site, email me at firstname.lastname@example.org