Efficient full stack software systems that grow with you
I create full stack software solutions[1]. With over 20 years of professional development experience. Here is a portfolio of some of my work. I focus on creating isomorphic codebases. Sharing logic & rendering between the server & browser. This maximizes flexibility with crafting web apps. This detailed crafting creates efficient apps free from bloat.
- Crafting software since 2002
Personal systems has been an instrumental tool in working with the chaos of the world. My career began during the .com collapse. It continued with the rise of Web 2.0, consulting gigs with startups, Web 3.0, & the rise of machine learning. With these changes, I strive to create continuity in work & the rest of my life.
- Skin in the game
I love the collaborative creative energy in startup companies. The team has a goal to make an impact & to reach the next level of funding. Concentrated talent with strong opinions. Unifying process & tooling is necessary for effective collaboration. Pressure to fulfill expectations & metrics drives the engine of creation. A well-oiled machine is beautiful.
I seek a better way that aligns with my personal systems to use continuity to drive the creative process. My belief is that effective individuals & small talented teams make the most impact. Raw talent brings creativity, especially with a natural cohering team.
So I sought to create my own systems & work as a freelance consultant in 2012.
- Open Source Software
Open source software creates continuity. Particularly in tooling, libraries, & frameworks which provide a foundation for products.
I am consulting developer working on many projects. An open source toolchain helps to share work & know-how with many projects. This re-use saves effort & time.
- Development "Secret Sauce"
Development methods, frameworks, & patterns help. To improve code re-use, maintainability, domain modeling, & enhance general productivity. I will be writing some blog posts on techniques such as:
- Domain Driven Design
- Flat Architecture & Name Systems
- Multi Page App & Single Page App architectures
- Software prototypes
- Using Monorepos & Git submodules to maximize code re-use
- Software Product Creation & Maintenance
Libraries, frameworks, methods, & patterns aid creating & maintaining software. The state of the art brings more options for an efficient development process. The unified javascript & web development ecosystem is improving. These improvements allows us to focus on efficient product development and code re-use.
- Flat Architecture & Name Systems
Abstraction organizes software libraries.
There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton
Name conventions are much loved to bring organization & familiarity to a codebase. Javascript is a flexible & dynamic language. The majority of the javascript community uses the camelCase convention to join words. Yet camelCase has some disadvantages. For one, the case of a word changes depending on it's location in the variable name. The first word is lower case while the following words are Upper Case. This leads to inconsistency. Which makes global code searches more difficult.
The Tag Vector name system keeps the integrity of the names. Tags connect with a vector. Since a vector has a direction, the Tag Vector expresses the shape of the abstraction. Tag Vector supports tags that are camelCase or underscore_case. This flexibility integrates apis without changing the name of api abstraction.
Interests
Meta-Philosophy
From the question "how do we model Existence?" sprang a Philosophy.
This meta-philosophy applies language to model any reified entity. Language patterns in software & speech to create models of Existence.