Here are a few short notes I have recently started making about tools and developer workflow. These notes may not be particularly readable to others, but provide a narrative of my progress as a developer.

  • Git Presentation Demo

    Tomorrow I will give a presentation to colleagues titled “Git Internal”. This will cover a simple overview of how git tracks changes and how they are represented and stored efficiently. This presentation, compared to my previous ones, will focus more on a demo at the CLI where I run a series of commands stepping through git objects (trees, commits, blobs and tags) and references. I also cover the HEAD pointer and how you would recover from a deleted branch and log, as well as a quiz on useful git commands. The demo is based on the walkthrough in Chapter 10 of the git docs with some edits and changes. For reference, these are the commands I plan to use in the demo (with the git hashes changed).

    The .git folder slide 
    (from xr repo)
    cd .git
    ls -l
    ls objects
    ls objects/00
    ls objects/01

  • Project LIT

    I am starting a new personal project to rewrite Git! Check out the initial discussion on the new “Project Lit” page.

  • Developer Goals

    There are a few goals that help guide me in becoming a better developer. Keeping these at the core of what I do will help me focus on what is important in the growth of my skills:

    • Take time to configure your workflow.
    • Discuss review comments, determining the reasons for suggestions.
    • Learn new tools, prioritising understanding for long term benefits.
    • Work on code in a variety of contexts at differing layers of abstraction.

  • Using Vim

    Vim is an investment, where you must endure the initial ‘hump’. Having started the easy way with the VS Code extension a couple of weeks ago I now think I am about back to the same speed as before without it. To make it easier, I have stuck with just the basic operations to learn them faster and not get overwhelmed. To make the transition easier, I found it paramount to allow Ctrl C and Ctrl V to work in VS Code, otherwise there would be awkward issues of wanting to paste or copy to other sources.

    Currently, I am considering the best shortcut to use for navigating between panes on VS Code - I am not much of a fan of Ctrl w then h or l. Then next commands that I am learning to use are capital W and B as well as navigating using shift and square brackets. Either way I have enjoyed learning vim so far and would recommend it to others.

  • Terminal Convergence, the old website

    Terminal Convergence was the name given to my previous website. I am not really sure why I chose this name, but it stuck, and I bought the accompanying URL. More recently, I have wanted to update this website, making it closer to a personal blog and give it a redesign. However, the old website still serves a somewhat meaningful purpose (despite my doubts about the number of users). On the terminal convergence website, there are machine learning predictions for future river level predictions. In fact, the forecast gives a 10-day prediction, more than any other existing forecasts.

    I am partly amazed that it does still run. The code is quite a jumble and there are many dependencies on many public APIs for its inference data each day. Therefore, I decided to keep it running to showcase previous projects.

    What was terminal convergence is now found at tc.leoellis.uk. This was easily set up by adding a CNAME record pointing the subdomain to the base domain tc.leoellis.uk -> leoellis.uk and adding some config to the apache2 server. This allows the two websites to reside in different locations within the file-system.

  • Deploying to the Raspberry Pi

    An easy method for deploying the website to the Raspberry Pi is using Git. This approach provides the added benefits of rollback, version control, and backup. The following script automates the Jekyll build process and handles Git push/pull operations, ensuring the latest website changes are deployed to the Raspberry Pi:

    # A script to deloy to the Raspberry Pi
    jekyll build
    cd _site
    git add --all
    git commit -m "Web deploy `date`"
    git push
    ssh pi@leoellis.uk "cd html; git pull"

    I wonder if there are more efficient ways to handle this deployment. Perhaps deploying directly to the remote host instead of relying on Git.

  • Tmux Config

    My current tmux setup. This has a long way to go but it is good to get something here if I ever need to set tmux up again.

    # Allow scrolling with the mouse wheel
    set -g mouse on
    
    # Allows for faster key repetition
    set -s escape-time 0
    
    # Highlight active window
    set -g window-status-current-style bg=red,fg=white,bold
    
    # Faster command sequences
    set -s escape-time 0
    
    # Change to bind seq to Alt-f
    set-option -g prefix M-f
    
    # Change navigation between tables
    bind-key k next-window
    bind-key j previous-window
    
    # Make sure there is colour in the terminal
    set-option -g default-terminal "tmux-256color"
    set-option -sa terminal-overrides ",xterm-256color:RGB"