programming for kids. Borislav has been teaching his 10 year old daughter how to code. He views programming as something to be literate in, not something to have a career in necessarily. I agree. I wonder how E will respond if I try to teach him a bit every day. Borislav has kept a record of each day's lesson. He has managed to teach on 403 days so far! Wow, what a gift to his daughter.
Posts, page 2 of 4
I noticed the senior engineers at work didn't have a space to come together. Senior engineers are distributed over many client projects and, from experience, they too need a support group. I, as a tech principal, need their help elevating the the technical capabilities across the organisation.
Here's the process I took:
- validate what my senses were telling me
- On an individual basis, I told each senior engineer what I was thinking and asked whether they felt a need for a space for senior engineers to connect.
- Each engineer responded positively with their own personal take
- invited senior engineers to discuss further
- shared the positive responses anonymously in an email invitation
- prepared a one pager to guide our discussion, including steps for:
- context setting
- purpose - potential topics, initiatives, opportunities,
- membership - who was in this group and who was not
- structure - how often, the formats (round table, lean coffee, knowledge sharing, etc)
- needs - what might the needs be of the group
- roles & responsibilities - rotation of various roles, e.g. facilitator, note-taker, knowledge curators, etc...
- have the discussion for 45 minutes
The pace of the session went well, we covered all the steps, I made sure all voices were heard, and it felt like everyone was on the same page.
We agreed to meet fortnightly, have a mixture of formats, limit membership to level 5 engineers and above to keep group small and manageable. There were a lot of ideas covered when we spoke about purpose of the group and needs of the members, including:
- cohesive set of standards for common tech we use
- port of call for feedback on strategic objectives
- working out what messages to amplify to wider engineering discipline
- peer support
- fostering sense of belonging and collaboration outside of client work
- coordination of talent development, training needs and cultural change
All in all, a very worthwhile session that I should have made happen sooner.
# #work #leadership in posts
At work, I've enrolled for a programme called Inclusion Mentoring. After an hour of an explainer, I was paired with a colleague who was different enough from me so we could both learn new perspectives. Different backgrounds, different teams and different identities.
Session one was about finding out about each others background and agreeing a charter that makes sense to both of us. We agreed that there's no hierarchy, we will swap from mentee to mentor numerous times in a conversation and we everything that's said will remain confidential. I spoke about coming from a broken home, my teenage years, summarised my 20s and 30s, and where I'm at right now in my mid 40s. I also highlighted my privileges: race: white; gender: cis male; physical ability: able-bodied; class: wealthy (relatively but grew up working class); nationality: western; orientation: hetero. Plus two other bits of my identity: religion: nothing organised, maybe spiritual; mental ability: neurodiverse (self diagnosis).
We got into some excellent topics and I learnt a bunch of new perspectives. I shan't go into them here otherwise I'll betray confidence if someone reads from work.
If you get the chance to do this, go for it. You'll learn a lot from a deep, focused conversation.
Over the past few weeks I've been using a 5k speed improvement program suggested by my Corus watch. It's:
- Warm up: 3.2km at threshold pace of 69% to 81%, which is my aerobic endurance pace
- 8 sets of
- 200m at threshold pace of > 114%, which gets me into anaerobic power
- 3 minutes recovery pace, basically walking
- 1.6km threshold pace of between 92% and 102%
- Cool down: 2.4km threshold pace of 69% to 81%
I've been doing this a few weeks now. Yesterday, I switched to place in my local park which had a flat strip that was near enough 200m, so I could visually see the finishing line approaching, making me keep the pace as fast as I could. On the 4th time, a muscle fibre in my left hamstrung went twang. I tried gently running after a few minutes but it felt uncomfortable. Very annoying.
After reading a few blogs, I think I have a grade 1 strain where there is "There is little structural disruption, and the muscle heals quickly".
There are a bunch of exercises I should do on https://www.sportsinjuryclinic.net/sport-injuries/thigh-pain/back-thigh/pulled-hamstring-exercises. When I can run again, I should not sprint as fast as I can. I should gradually increase the speed over many weeks, whilst at the same time strengthening my hamstrings so they can handle the extra load sprints put on to the muscle.
I wanted to use Simon Willison's shot-scraper
tool. This made me understand how to set up a Python dev environment.
First, I upgrade Python:
~ % which python3
/opt/homebrew/bin/python3
~ % python3 --version
Python 3.12.2
~ % brew upgrade python3
~ % python3 --version
Python 3.12.3
Then I attempt to install shot-scraper
:
screenshots % pip install shot-scraper
zsh: command not found: pip
I try pip3 install shot-scraper
. This works, but doesn't install the package:
screenshots % pip3 install shot-scraper
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.
If you wish to install a Python library that isn't in Homebrew,
use a virtual environment:
python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyz
If you wish to install a Python application that isn't in Homebrew,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. You can install pipx with
brew install pipx
You may restore the old behavior of pip by passing
the '--break-system-packages' flag to pip, or by adding
'break-system-packages = true' to your pip.conf file. The latter
will permanently disable this error.
If you disable this error, we STRONGLY recommend that you additionally
pass the '--user' flag to pip, or set 'user = true' in your pip.conf
file. Failure to do this can result in a broken Homebrew installation.
Read more about this behavior here: <https://peps.python.org/pep-0668/>
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Claude gives me some options:
The error message you're getting is because of the way Homebrew manages and isolates Python packages to prevent conflicts with the system's Python installation.
Here are a few options to address this issue:
- Use Homebrew to install Python packages
You can use Homebrew to install Python packages by running:
brew install <package_name>
Replace
<package_name>
with the package you want to install. This will install the package in a separate Homebrew-managed location, avoiding conflicts with the system's Python.
- Create and use a virtual environment
Virtual environments are isolated Python environments that allow you to install packages without affecting your system's Python installation or other virtual environments. To create and use a virtual environment, follow these steps:
python3 -m venv /path/to/your/venv source /path/to/your/venv/bin/activate pip install <package_name>
Replace
/path/to/your/venv
with the desired location for your virtual environment, and<package_name>
with the package you want to install. After activating the virtual environment, you can usepip
to install packages within that isolated environment.
- Use pipx (recommended)
pipx
is a tool that automatically creates virtual environments and installs packages in an isolated location. It's a convenient way to manage Python packages without interfering with your system's Python installation. Installpipx
first:brew install pipx pipx ensurepath
Then, you can install packages with
pipx
:pipx install <package_name>
This will create a virtual environment for the package and add the package's executable to your PATH, making it easy to run.
By following one of these approaches, you can install Python packages on your macOS system without running into conflicts with Homebrew's managed Python installation.
I've going to try pipx
, although I'm not entirely sure what it is:
pipx install shot-scraper
Whilst it's installing, I look for more info about pipx
. Its README says:
pipx is a tool to help you install and run end-user applications written in Python. It's roughly similar to macOS's
brew
, JavaScript's npx, and Linux'sapt
.
I know what npx
is so I now have a good mental model. Jacob adds to my understanding:
Why?
pipx
lets me install Python-based CLI stuff (youtube-dl, awscli, doc2dash, etc.) without those projects’ dependencies messing up my global Python.
shot-scraper
has installed successfully:
installed package shot-scraper 1.4, installed using Python 3.12.3
These apps are now globally available
- shot-scraper
done! ✨ 🌟 ✨
I use YouTube Premium, which is ad-free, plus other features.
Problem
On my work Macbook, when I click on a YouTube.com link it opens in Chrome, my default browser, which is logged into my work Google Workspace account. Work obviously doesn't pay for YouTube Premium so I have to watch ads or copy the link to a different browser where I'm logged into YouTube Premium via my personal Google Account.
I don't want to copy links between browsers.
Solution
# #productivity in posts
A quick note on Sam Newman's Rip It Up talk:
- Loved the bit towards the end around local optimisation problems
- risk is you could end up with 3 or 4 databases used across the department
- comes with cost of licensing and support
- also experience is spread too thin and makes it difficult for people to switch teams
- there's a tradeoff between local cost and global optimisations
- need cross cutting group to spot local trends or niche tech. Can also spot potential duplication and opportunities to standardise, could be a simple as tech leads meeting regularly
- communities of practice and governance are two other ways
- don't use COP for tech governance unless you want a bottom up approach
- suits smaller organisations
# #org-design in posts
If you want to forage, find George Linklater. I went on a walk with him at Cowdray Estate in October, perfect time for finding plenty of mushrooms.
I picked and ate stinging nettle. Pick them up in a certain way to avoid getting stung. Scrunch them up before eating. They are highly nutritious.
I ate Dead Nettle too. Had minty flavour. It can be recognised by its square stems.
We also came across:
- Curly doc - good for burns. It has an oily substance like Aloe Vera.
- Rib wort plantain acts as an antihistamine.
- Rosehip is edible - chop it up and make tea
General mushroom facts:
- Any tree that has a wound in it has mushrooms in it.
- Parasitic mushroom near base of tree
- Amateur foragers, avoid mushrooms that have gills
- We can touch all mushrooms, we won't be poisoned.
- Toxic ones can't be broken down by liver
These are the mushrooms we came across on our walk:
- Beefsteak mushroom safe to eat. - no lectin
- Elderberry - more super than blueberries
- Dandelion tooth of the lion. Mane is seed
- Hollow elder. WoodEar mushroom.
- Puffball explodes when something drops on it
- Hedgehog feel underside - gourmet
- Turkey tail - medicinal
- Chicken in the wood - can withstand a lot of cooking
- Christmas tree - tangerine flavour when you rub it between your hands
- Brown birch belete - edible.
- Elf saddle
- Stink horn / dogs penis
- Purple deceiver - edible. Taste like cashews
- Parasol mushroom - stipe, snake skin indicates it is edible
- Belitus edgilus
- Octopus stinkhorn
Crystal Palace Park is hosting a series of open air concerts in August. Love a gig, especially when it's walking distance home. I've got tickets for Supergrass being a teenager in the 90s and now a dad in his 40s. I'm also tempted by the day headlined by Sleaford Mods but more for the female artists on the bill, like Katy J Pearson and Jane Weaver.
The musical highlights that I can remember since last posting have been:
- Aksak Maboul - Un Caïd - thanks to Steve Davis's appearance on 6Music
- Damon Albarn talk about the song Andromeda on Song Exploder
- Rediscovering Ill Behaviour by Danny Byrd
- Mount Eerie's Love Without Passion - NPR Tiny Desk acoustic version is worth checking out too, plus Julie Doiron's own set years earlier.
- Cosmo Sheldrake - Cuckoo (Live in the Dawn Chorus). Wake Up Calls (name of the album) "was created over a nine year period, using recordings of bird song featured on the red and amber lists of endangered British birds".
- Between The World And Me by The Magic Lantern
- Peace Piece by Bill Evans - an unrehearsed modal composition that he recorded for his "Everybody Digs Bill Evans" LP in 1958. It is hailed as one of the most beautiful and evocative solo piano improvisations ever recorded. Here's a live cover by Josh Cohen.
- After clicking around Josh's videos, discovered many piano covers of Radiohead songs. Glass Eyes is particularly good.
- Atlas by Bicep
Over the last twenty years I have started many a blogging website. Here's the ones I can remember.
Short-lived university blogs
https://prjxml.blogspot.com/ - I think one of my projects in my masters involved exploiting the famed XMLHTTPRequest function in JavaScript, which led to a splurge of websites loading content without refreshing the page. I think I built software to analyse all of Bob Dylan's lyrics using Wordnet and put an Ajax front-end on it, which meant the page updated dynamically as the user typed by fetching content from a backed server. It seemed like magic back in 2005. I think all this blog did was let me record a bunch of links related to XMLHTTPRequest. Should have just used bookmarks but I guess I was fascinated by putting things online instead of opting for the simple way.
https://studenttakeaways.blogspot.com/ - One of the modules in my masters was called Enterprise and distributed systems. Basically it was a group project about business. My idea was about taking the takeaway restaurant sector online, hosting menus and other services that we take for granted these days. This blog was for members of the group to discuss ideas and post interesting links. My group received a pretty good mark for the plan and its presentation to a scary bunch of business gurus and we entered the plan into a business competition run by the universities in the north east. We made the final but had to drop out because people were either too busy with other coursework or were not fully committed to the idea.
https://sewwebproj.blogspot.com/ - Another uni project, this time about the Semantic Web.
Personal blogs
https://allsorts.blogspot.com/ - This lasted for 2 months in late 2003, 7 blog posts in total.
https://landofthelongwhitecloud.blogspot.com/ - I travelled for about 9 months in Australia and New Zealand. I arrived just before Christmas 2003 in Sydney and went all over Australia. In the last few months I was in New Zealand and blogged a bit of it. I wish I blogged the whole trip as I had some great adventures. I have lots of photos to remember it by.
https://salohcin.wordpress.com/ - Nicholas spelt backwards! A mixture of diary type blog posts covering my time in Durham and Edinburgh.
https://entrewhat.blogspot.com/ - a blog about starting a business in Edinburgh based on the idea of bringing takeaway businesses online (inspired by my business module during my masters). Our name was chewchew.co.uk, we didn't know what we were doing, we were a few years too early - Hungry House was on Dragon's Den a few years later after web and mobile web was a bit more prevalent. The nail in the coffin was when another company called ChewChew sent us a letter from their lawyer saying we were infringing their brand. We hired a patent lawyer and negotiated to sell the domain name and make a name change for £2,500 then called it a day.
https://stagdo.blogspot.com/ - I'd been on a couple of stag dos and thought there isn't enough content dedicated to stag dos. I can imagine my intention was to create lots of content, get eyeballs to the site and get rich from adverts. This blog lasted 2 posts!
https://rowlando.wordpress.com/ - personal blog between 2008 to 2011. Mainly pics.