Well-rounded, goal oriented, professional software developer with extensive experience planning, developing and implementing a wide variety of solutions for both large corporations and small startups. In addition to being a highly skilled software engineer, specialties include designing both technical and non-technical solutions to meet all types of business needs, crafting and implementing development processes and leading teams to deliver high-quality software. Interested in a software engineering position that makes use of skills developed over years of solving the complex problems that businesses face.
A few of the things that keep me busy:
|
My resume and LinkedIn.
Full stack professional software developer with extensive experience in all aspects of the software development life cycle.
- Software and systems architecture design and implementation with a wide range of technologies.
- Microservices architecture design and implementation.
- Authentication services design and implementation.
- Docker, Kubernetes, AWS, Jenkins, Terraform, Helm, etc.
- Systems integration planning and execution.
- Architecture and engineering best practices advocate.
...more
|
|
Simple, predictable type conversion for Go.
bdlm/cast provides a generic function to easily convert both simple types (number to a string,
interface ito a bool, etc.) and complex types (slice to map and vice versa, any to func() any, any to chan any,
etc.). Cast does this intelligently when an obvious conversion is possible and logically when a conversion
requires a predictable measureable process, such as casting a map to a slice or a bool to a channel. It doesn’t
make any assumptions about how types should be converted but follows simple predictable rules.
intVal := cast.To[int]("8") // 8 (int)
fltVal := cast.To[float64]("8.31") // 8.31 (float64)
strVal := cast.To[string](8.31) // "8.31" (string)
intVal, err := cast.ToE[int]("H!") // 0 (int), unable to cast "H!" of type string to int
...more
|
|
Structured logging for Go.
bdlm/log is a structured logger for Go and is fully API compatible with the standard libaray log package. This package adds:
- support for sanitizing strings from log output to aid in preventing leaking sensitive data.
- additional default fields
host and caller .
- multiple log levels including verbose output of the full backtrace of logger calls.
- gRPC request interceptors.
...more
|
|
Simple, concise error handling and annotation for Go.
bdlm/errors provides simple, concise, useful error handling and annotation. This package aims to implement the Error Inspection and Error Values Go2 draft designs with full error trace support. Implements several useful interfaces including Wrapper , Caller , and Error .
...more
|
|
A golang library for interacting with the Chrome DevTools Protocol.
go-chrome aims to be a complete Chrome DevTools Protocol implementation. The primary use-case behind this project is interacting with headless Google Chrome in a container environment, but it should be appropriate for developing server side and desktop applications for any browser that supports the devtools protocol.
|
|
A simple, dynamic HTTP ingress service for Kubernetes development environments.
k8s-proxy provides a simple HTTP proxy service for easily working with multiple web services in a Kubernetes development environment. A Docker image is available.
|
|
npm, yarn, node, npx, bower, grunt, gulp, generate-md - build and dev tools.
docker-npm provides a set of shell scripts that manage Node.js docker images. The images contain the latest stable bower , generate-md , grunt , gulp , node , npm , npx , and yarn , binaries for node .
|
|
My terminal config files.
To keep me sane.
|
I've recently started learning about electronic engineering and building an 8-bit CPU and computer using simple logic gates following a design by Ben Eater. It's a ton of fun and I'm learning a lot!