Continuous Personal Development (or “Things I’ve Been Learning About”)

One of the things I’ve always enjoyed in my work is the opportunity to learn new things. Looking back, I feel slightly spoiled that, in my first job, we jumped between codebases and languages for different projects at a rate that most people would laugh at now – I’d work across Perl, ColdFusion, HTML, Javascript, ActionScript and more, all within a year. In the background I’d be personally playing around with Java, Linux admin, and god-knows-what-came-along.

The joy of technology for me has always been the challenge of … cajoling the systems to produce something of use and of value. Ends before means. It’s a fascination which continues 25 years on, that ever-present love-hate relationship with software and toolchains that accepts that you’re never, really, going to fully understand what’s going on. That you need to think on your feet, figure stuff out fast, absorb the docs almost intuitively, and make good things happen.

The last few months have been fairly technical, and I didn’t want to lose track of the variety of things I’ve been digging into, both for clients and for myself. Here’s a bit of a (definitely incomplete) list of some of the things I’ve been enjoying learning about and applying.

  • Trying out Nuclei Vulnerability scanner as a way to check for exploits on an old site.

  • POP chain exploits that use magic methods (such as __wakeup()) in PHP objects to run code.

  • The difference between CVSS and EPSS scores for assessing security risks.

  • Docker container setup, to get legacy sites running for development locally, as well as for throwing a new staging server together.

  • Replacing the inner door seal on a Bosch washer-dryer machine (which is the same as Siemens. The replacement part costs between £40 and… £120?). Labour is always 5 times what you expect.

  • In-depth TinyMCE hacking, including adding in a lot of custom code to implement drag-and-drop functionality for any files (not just images). And the licence differences between TinyMCE v6 (MIT) and v7 (GPLv2).

  • Javascript MutationObservers as a way to hang events off any changes to the DOM and styling, including CSS transitions. Related: The transitionend event.

  • Hooking into the DOM of the GoGoCarto mapping tool to do some in-depth (and probably somewhat fragile) UI changes.

  • httrack as a way of taking static copies of sites, but also learning that it’s important to pre-generate any images and files required for responsive display, and to copy those into place ahead of time as well. Always a trade-off.

  • The difference between em and ch units in CSS.

  • Passing messages between iframes using the postmessage() method, and combining it with scrollIntoView() to move an iframe fully on screen when interacting with it.

OK, these are all the technical things I’ve logged anyway. It’s harder to bullet point the softer skills around freelancing right now, but maybe that’s another post?