Useful Tmux Commands

General :source-file ~/.tmux.conf // Reload .tmux.conf Sessions C+b s // list sessions C+b $ // name session From Command Line tmux // start tmux new -s myname // start new with session name tmux a # // attach tmux a -t myname // attach to named tmux ls // list sessions tmux kill-session -t myname // kill session Windows C+b c // new window C+b , // name window C+b w // list windows C+b & // kill window Panes C+b % // horizontal split C+b " // vertical split C+b o // swap pane focus C+b x // kill pane C+b q // show pane numbers :swap-pane -s 2 -t 1 // Swap pane 1's position with pane 2's Resize :resize-pane -D (Resizes the current pane down) :resize-pane -U (Resizes the current pane upward) :resize-pane -L (Resizes the current pane left) :resize-pane -R (Resizes the current pane right) :resize-pane -D 10 (Resizes the current pane down by 10 cells) :resize-pane -U 10 (Resizes the current pane upward by 10 cells) :resize-pane -L 10 (Resizes the current pane left by 10 cells) :resize-pane -R 10 (Resizes the current pane right by 10 cells)

Unpopular Opinions About Tech

Kubernetes is a terrible tool to use, but it’s still better than what came before it React Hooks are redux for devs that can’t be trusted to use redux. I still like them Site speed only matters in so much as: A) google uses it to rank you, and B) it impacts your users ability to use your product The hard part about iOS development was never Objective-C but rather the cocoa libraries it has to interact with.

My Rules for Remote Work

So I actuallly had a really hard time working remotely for the first few months, typically working long hours for little billable work. Eventually my wife and I realized that it wasn’t sustainable and we had to come up with a better strategy for handling the work life balance. What follows is the product of trying many different things, to separate the messiness of having my job and my office exist in the same physical location.

Functional Composition in Javascript

What is ‘functional composition’? Functional composition is when you take two or more functions, and make one a single function out of them. When you compose functions into a single function call, you can start using them as pipelines of specific behavior. These pipelines can then take the result of each function that comprises it, and use it as the argument to the next function in the pipeline. This approach of making a pipeline of functions might seem more cumbersome, but it ends up giving you more flexibility in how you work with your data, while also aiding predictability/readability/testability/etc.

Engineering Roles

Nailing down the roles and responsibilities a company expects from their engineers is one of the most over-looked, but important, areas of a company’s organization. It’s often talked about when hiring or promoting, but rarely at other times. When it is talked about, it’s usually more of a gut feeling by individual stakeholders rather than objective criteria. The conversation usually resembles something like this: Person A: I feel like what I’m looking for in a senior is someone who has a real hacker mentality and isn’t afraid to tackle the difficult problems

Useful Command Line Workflows

Search through history You’re trying to remember how to do something you did in the recent past, but can only remember generally what it’s about joe$ history | greg foo this takes all of your command line history, and pipes it to grep for any line that has the word “foo”. What you end up with, is a set of results like… 123 foo -bar 145 foo --name="bizz"

Useful Git Workflows

Squash Commits Sometimes you have made multiple commits as you go, but in reality the work would have made more sense as one commit. This is probably most common when you are fixing spelling errors, or backing out code that didn’t end up working out after all. Here’s a basic example of how to squash multiple commits together into a single one git rebase -i HEAD~3 The -i flag is for interactively rebasing.

Chief Architect

Summary Focuses on understanding the business needs of the company, and translates that into a consistent and forward-thinking vision for the tech team as a whole Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity? Responsibilities: What are the type of things that they need to take ownership of and not let fall to the floor?

Platform Architect

Summary Works closely with the Chief Architect to understand the tech vision for the company, provide feedback based on the platform of their focus, and help others understand and follow the companies tech vision Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity?

Architect

Summary Work with the architecture team to make sure they have the information they need to make wise choices for the company, work closely with engineers to surface the root of important problems before they become systemic Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity?

Lead Engineer

Summary Able to look at the whole project, and figure out how to best implement the vision from the architect team. Helps co-ordinate tasks between engineers so that the technical decisions are consistent throughout the project Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity?

Senior Engineer

Summary Able to to do all task, along with helping mentor the junior/mid engineers, and also see past the individual tasks they are given to accomplish the true objectives of the company Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity?

Mid Engineer

Summary A capabale engineer that has a good understanding of the necessary technologies and how to accomplish 95% of the tasks given to them. Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity? Responsibilities: What are the type of things that they need to take ownership of and not let fall to the floor?

Junior Engineer

Summary Able to do basic tasks, and is familiar with the necessary technologies, but frequently needs steps explained and laid out for them. Expectations and Abilities Responsibilities Needs Considerations and Concerns Abilities: What are the basic types of task that they can excel in? What can you trust them to learn on their own? How are they able to handle situations of various severity? Responsibilities: What are the type of things that they need to take ownership of and not let fall to the floor?

React Context Api

The React context api is a simple messaging system similar in concept to the Publish/Subscribe pattern. It has three main parts you need to implement to use it: Context, Provider, and Consumer Context: the store of value. Also where the Provider and Consumer come from Provider: the publisher/emitter of the value aka the source Consumer: the subscriber/listener for the value to be received to aka the destination What about Redux?

Resume