Skip to content

Learning to live again

A productive start to the week and I am feeling much more like myself again. I thrive when I am getting things done whether that be a large or small task.

My TODO list for this week:

  • Practicalli Rust - more content but still very early days for the book
  • DONE: prep for job interview
  • DONE: job interview (EM)
  • digital archive clean up continues
  • DONE: unclog central heating (3 way port motor blockage) - using manual lever on colder days.
  • DONE: at least 1 bicycle ride
  • DOING: Heart points and steps for each day - didnt complete for the whole week, but a good improvement.

This weekly journal is updated most days and gives an easy way to capture and more importantly review what I've been up to. Especially when doing many small and disparate things, it is easy to forget what was done. The journal keeps my brain active and allows me a central place to review my activities (and feel good about them).

I had the first interview in a year and a half and even though I prepared for the interview questions using STAR responses I didnt feel I had sufficient focus in my responses during the interview and I dont think my health was good enough to be interviewing.

I am definitely out of practice interviewing, especially when very tight replies, so I will need to figure out how to effectively practice, or just do more 'practice' interviews.

Engineeringλ︎

Joining a new team

  • what deadlines and expectations does the team have? (sets the pace of the EM on-boarding with the team)
  • review the foundations (communication, trust)
  • review working practices (are they helpful or getting in the way)
  • avoid introducing new actions before reviewing what works well (and not so well)

Debianλ︎

Updated Gkar computer running Debian testing.

Interesting aspects to review in the changelog shown when running the apt upgrade command.

Changelog from update on 2025-02-18
apt-listchanges: News
---------------------

curl (8.8.0-2) unstable; urgency=medium

  The curl CLI is now using GnuTLS instead of OpenSSL:
    This change was required in order to enable support for HTTP3. We are still
    providing an OpenSSL backed libcurl so dependencies are not affected.

    In the unlikely case that you notice a regression in the curl CLI due to
    this change, please open a bugreport.

  The curl CLI now supports HTTP3:
    You can now call curl with "--http3-only" or "--http3".

  wcurl - a simple wrapper around curl to easily download files:
    We started shipping an utility for users who just need to download a file
    without having to remember parameters. This utility will pick sane defaults
    and is supposed to be a replacement for the simpler uses of wget.

    By default, wcurl will:
      - Percent-encode whitespaces in URLs;
      - Download multiple URLs in parallel if the installed curl's version is >= 7.66.0;
      - Follow redirects;
      - Automatically choose a filename as output;
      - Avoid overwriting files if the installed curl's version is >= 7.83.0 (--no-clobber);
      - Perform retries;
      - Set the downloaded file timestamp to the value provided by the server, if available;
      - Disable **curl**'s URL globbing parser so {} and [] characters in URLs are not treated specially;
      - Percent-decode the resulting filename;
      - Use "index.html" as default filename if there's none in the URL.

    A manpage is provided as well, check wcurl(1).

    Example to download a single file:
    $ wcurl example.com/filename.txt

 -- Samuel Henrique <samueloph@debian.org>  Sun, 30 Jun 2024 13:53:05 +0100

ipxe (1.21.1+git20220113.fbbdc3926+dfsg-3) unstable; urgency=medium

  ipxe now splits bootable images and grub scripts into a new binary
  package: grub-ipxe. This includes ipxe.lkrn for BIOS on i386 / amd64,
  ipxe.efi for UEFI on all supported architectures, and some relative
  maintainer scripts to add / remove ipxe to / from the grub menu.

  If you are booting ipxe physically on your machine, please make sure
  grub-ipxe is also installed. Should you are using handcrafted grub
  configs / scripts for ipxe, we suggest removing them and re-generate
  the grub config to avoid possible duplication / conflicts.

 -- Shengqi Chen <harry@debian.org>  Mon, 03 Feb 2025 04:23:45 +0800

apt (2.9.24) unstable; urgency=medium

  /etc/apt/trusted.gpg is no longer trusted. Setting the Dir::Etc::trusted
  option manually continues to work for some more time.

  sources.list(5) entries without the Signed-By field are deprecated;
  migrate any legacy entries to the deb822 .sources format. See the
  apt-secure(8) manual page for best practices for signer configuration.
  This deprecates the /etc/apt/trusted.gpg.d directory.

 -- Julian Andres Klode <jak@debian.org>  Tue, 21 Jan 2025 12:17:36 +0100

openldap (2.6.9+dfsg-1~exp2) experimental; urgency=medium

  The TLS library used for the OpenLDAP packages has changed from GnuTLS to
  OpenSSL. This affects the set of configuration options available, as well as
  the behaviour of some options.

  If no TLS CA certificates are specified, the system default trust store will
  now be loaded automatically. If you do not want the default CAs to be used,
  you must configure the trusted CAs explicitly.

  Previously, the TLS_CIPHER_SUITE option accepted a GnuTLS priority string.
  Now, the option accepts an OpenSSL cipher list. For information about the
  cipher list format, see the openssl-ciphers(1) man page.

  The TLS_CRLFILE option is no longer supported; it is accepted, but silently
  ignored. Use the TLS_CRLCHECK option instead. The TLS_CACERTDIR option must
  also be set.

  For more information about the libldap configuration, see the ldap.conf(5)
  man page.

  For more information about the slapd(8) configuration, see
  /usr/share/doc/slapd/README.Debian.gz.

 -- Ryan Tandy <ryan@nardis.ca>  Fri, 10 Jan 2025 18:17:14 -0800

pam (1.7.0-1) unstable; urgency=medium

    Starting with pam 1.7.0, pam_limits does not automatically reset the
    limits of logged in users. This means that systemd, rather than pam will
    set the defaults for things like number of open files and other resource
    limits. If limits are configured in /etc/security/limits.conf or
    /etc/security/limits.d/*.conf, these values will be respected. To
    restore the previous behavior, add the set_all option to pam_limits.
    For example in /etc/pam.d/ssh, replace:

    session    required     pam_limits.so

    with:

    session    required     pam_limits.so set_all

 -- Sam Hartman <hartmans@debian.org>  Tue, 14 Jan 2025 15:47:56 -0700

pam (1.5.3-7) unstable; urgency=medium

    Starting with PAM version 1.5.3, Debian supports usergroups for default
    umask of users logging in.  If the primary group name of a user
    matches their primary user name (user pat's default group is also
    called pat), then files will be group writable by default. To disable
    this use a group name that differs from the user name or add
    nousergroups to the pam_umask line in
    /etc/pam.d/common-session and
    /etc/pam.d/common-session-noninteractive:

    session optional                    pam_umask.so nousergroups

 -- Sam Hartman <hartmans@debian.org>  Mon, 08 Apr 2024 16:15:58 -0600

tzdata (2024b-6) unstable; urgency=medium

   Previously, the tzdata package in Debian used the /etc/timezone file to
   configure the system's timezone. This method is not supported by systemd
   and certain desktop environments, which instead only change the
   /etc/localtime symlink to point to a file in /usr/share/zoneinfo.

   For this reason, starting with version 2024b-5, the tzdata package no
   longer automatically creates the /etc/timezone file, but still updates it
   if it exists. In a future release, support for the /etc/timezone file will
   be completely removed. The debian-installer from Trixie also no longer
   creates this file.

   The system's timezone configuration can still be done interactively using
   Debconf by reconfiguring the tzdata package, using 'dpkg-reconfigure
   tzdata'. The way to programmatically read or configure the system's
   timezone is described in /usr/share/doc/tzdata/README.Debian.

 -- Aurelien Jarno <aurel32@debian.org>  Mon, 13 Jan 2025 23:25:11 +0100

git (1:2.47.1-1) unstable; urgency=low

  The git-daemon-sysvinit and git-daemon-run service configuration
  packages have been removed, as they were security-sensitive, had
  low usage, and were not actively maintained.  Moreover, they are
  difficult to run safely because git:// protocol does not include
  built-in privacy or integrity guarantees on the channel it sets
  up.  See git-daemon(1) for information on how to configure
  git-daemon to be run and serve using inetd and similar service
  runners, or see the gitolite package for an example of how to set
  up a safer git server configuration.

 -- Jonathan Nieder <jrnieder@gmail.com>  Thu, 02 Jan 2025 13:29:44 +0100

Interview questionsλ︎

I had an interview for an Engineering Manager this week and the company provided questions in their candidate pack. However the actual questions asked in the interview were quite different, so I probably waffled on too much as I felt unprepared.

Preparing answers for the supplied questions did take about an hour and a half. I found it a useful exercise even though I didnt get asked the same questions.

It was quite rewarding reviewing my experiences and the lessons I learned along the way.

Regardless of if I progress to the next stage, it was valuable time spent.

The following are questions and answers prepared, removing specific companies and persons to protect the innocent :)

What achievement are you most proud of within your team(s)?λ︎

Situation: Support team members to be promoted Actions: - regular 1-2-1 sessions with a mentor focus, identify gaps in skills & experiences, discussed ways to make engineers more visible to managers (and Organisation) - additional mentor session for an engineer wanting to become an engineering manager - "bragging doc" created as a way for engineers to appreciate the work they had done, building confidence Result: 3 engineers promoted over a 6 month period (would have been quicker if budget allowed)

Situation: Poor relationship between Application support & Stakeholders As Engineering Support Manager, encouraged the team to talk to end users directly by doing so myself. Most end users were in a building around the corner, so it was a good opportunity to get face-2-face time and really understand support issues and their impact. Result: re-prioritised many issues and built a closer relationship with stakeholders, increased business efficiency.

Situation: Managing teams across multiple geographical areas (and languages Shanghi, China) with limited tools (phone) Actions: - knowledge share wiki - educate teams on all things related to Citi procedures (change advisory board, CI, Library repositories, etc) - organised video calls for interactive knowledge sharing for teams that built on each others work Results: motivated engineers, more comfortable seeking help from each other, better docs and quicker integration

Situation: Helping SaaS customers do more Action: Created practical learning guides for SaaS Admins Result: Created content for a learning platform build on the SaaS product directly, allowing anyone to build Apps & Integration and have their work verified.

Situation: On-boarding myself and a new team member Actions: - refactor outdated docs & simplify content - adding important improvements (Git commit signing with SSH keys) - Worked with IT and Ops teams to remove duplication - linked to new content from the old to help with discovery (if people were relying on older browser bookmarks) Results: - on-boarding development environment down to a day rather than weeks - website with step-by-step guides to quickly get engineers up to speed

How do you measure success, quality and accountability?λ︎

  • did we meet our goals (within expected time frame / deadlines)
  • how well did we understand our goals (did DONE change)
  • how well did we understand the value of the work

Situation: Project over-runs Action: - Pushed back several projects that were not well defined or sufficiently valuable at the current time. - Worked with Product team to identify clear priorities - Worked with management & CTO to identify clear ownership and responsibilities

  • Billing system: a rushed project initially due to very short deadlines, worked with the team to create clearer weekly & monthly goals and discover what DONE really looked like. Refined goals together and weekly planning meeting so there was a shared understanding. Reached out to the Accountancy team which was in its infancy so initially hard to get stakeholder feedback, organised regular demos to ensure DONE was a shared understanding. Took pressure of tight deadlines by working with Accountancy team to understand when specific features would be valuable, allowed for a more realistic deliverable plan.

  • API Security enhancements: already had API token, HTTP Message Signature became draft standard so was viable to be adopted

  • Transactional Fairness: long term benefit, exploratory project with low priority but highly valuable long term benefits (business growth was slower)

  • API versioning: not well defined, approach required huge amount of refactor, project terminated as only limited value to the business and customers compared to other work

Result: - Each project had a clear value, priority and value to the business (this removed a lot of confusion and repeated conversations) - Each project had weekly & monthly goals - Regular stakeholder demos for feedback and increase project confidence

Ways of working - motivation, collaboration, risk etcλ︎

Situation: inconsistent experiences across the team, no space for discussion on ways of working Actions: - Specific ways of working retrospectives - Identify constraints / blockers to getting things DONE - Encouraged issues to be captured as they were experienced. - Discussed small changes in Chat - Larger changes in retrospective actions or in Tech tidbits (regular meeting to share experiences and get help on larger challenges).

Results: - effective knowledge sharing, especially for newer members of the team - capturing tacit knowledge (experiences) and sharing across team and Organisation - identified tech debt that impacted project delivery

Situation: Engineers unclear of value of a project, Action: worked with product to clearly define value, priority and time constraints

Network Attached Storageλ︎

I have created lots of software engineering projects and documentation over the last couple of decades, along with large volumes of audio and video content for education purposes.

A Network Attached Storage device (NAS) is an effective way to manage a local copy of files

!!! "Qnap TS-859 Pro Hardware Specifications" CPU: Dual-core Intel ® Atom™ processor (1.66 GHz)

RAID 6 is used with the QNap to give limited redundancy to the physical hard drives used in the NAS. Although NAS should never be relied on as a long term back up (i.e. use a tape system), using RAID 5 (one spare drive) or RAID 6 (two spare drive) ensures a failing hard drives can be replaced without loosing data in the NAS file system.

Using RAID 5 or RAID 6 will mean less storage, but the fault tollerance is worth the reduced space if the files are important.

RAID 1 should be used for maximum capacity, providing a joint capacity of all hard drives. RAID 1 should only be used if data loss is not a concern.

Previously I have built software RAID systems with Linux which can be a slightly cheaper approach although additional software would be needed to provide the services a typical NAS system provides.


Thank you.

🌐 Practical.li Website

Practical.li GitHub Org practicalli-johnny profile

@practicalli@clj.social @practical_li