• 2 Posts
  • 55 Comments
Joined 1 year ago
cake
Cake day: June 24th, 2023

help-circle


  • Often the question marked as a duplicate isn’t a duplicate, just the person marking it as such didn’t spend the time to properly understand the question and realise how it differs. I also see lots of answers to questions mis-understanding the question or trying to force the person asking down their own particular preference, and get tons of votes whilst doing it.

    Don’t get me wrong, some questions are definitely useful - and some go above-and-beyond - but on average the quality isn’t great these days and hasn’t been for a while.


  • Google’s first quarter 2023 report shows they made massive profits off vast revenue due to advertising.

    It is about control though. The thing that caught my eye is that they’re saying that only “approved” browsers will be able to access these WEI sites. So what does that mean for crawlers/scrapers? That the big tech companies on the approval board will be able to lock potential competitors out of accessing the web - new browsers, search engines, etc. but much more importantly… Machine Learning.

    Google’s biggest fear right now is that ML systems will completely eliminate most people’s reason to use Google’s search, and therefore their main source of revenue will plummet. And they’re right to be scared, it’s already starting to happen and it’s showing us very quickly just how bad Google’s search results are.

    So this seems to me like an attempt to control things from that side. It’s essentially the “big boys” trying to consolidate and firm-up their hold in the industry and not let newcomers rival them, as with ML the barrier to entry has never been lower.


  • Red Hat saying that argument in-particular shows they’ve pivoted their philosophy significantly, it’s a seemingly subtle change but is huge - presumably due to the IBM acquisition, but maybe due to the pressures in the market right now.

    It’s the classic argument against FOSS, which Red Hat themselves have argued against for decades and as an organisation proved that you can build a viable business on the back of FOSS whilst also contributing to it, and that there was indirect value in having others use your work. Only time will tell, but the stage is set for Red Hat to cultivate a different relationship with FOSS and move more into proprietary code.




  • I’ve been there. My mum struggled to communicate with me when I was in that period of my life, and so she’d buy me various books that she thought - sometimes through title alone - would get through to me. Almost all didn’t. Almost. One did.

    Now, I will recommend the book of course, and more, but that’s not the message I want to give you. We’re all different, we’ve all got into this differently, and we all get out of it differently - what started things rolling for me may well do nothing for you. My message more is that the answer is within you, you just can’t see it - it’s hidden from you through no fault of your own; but with the right nudge, the right spark, and you’ll start to see a way out - so dim at first you scarcely recognise it for what it is, but it’ll nag at you, pique your interest, and slowly, ever-so-slowly, the snowball begins to roll.

    Form me, the book was The Glass Bead Game by Hermann Hesse.

    I firmly believe that it’s no co-incidence that this book connected with me, it is astonishingly well crafted, the author is a winner of the Nobel Prize in Literature, and several of his books, including The Glass Bead Game, “explores an individual’s search for authenticity, self-knowledge and spirituality.” Reading it is a journey - it takes it’s time to get hold of you, presumably with different elements appealing to different people, then it starts to lead you down a very carefully crafted but almost invisible path to a self-realisation.

    A modern author, Matt Haig, wasn’t on my radar when I suffered from depression, but he is a somewhat unusual author in that he writes self-help books and novels. His most famous book The Midnight Library is particularly good, and it was a page-turning read, though I’ve not yet read any of his other titles.

    Finally, we’re getting into books that have nothing to do with self-help directly, but I think are just straight-up amazing and recommend them to everyone, but they’re inspirational too:

    The Name of the Wind by Patrick Rothfuss is the first book in The Kingkiller Chronicle’s, of which there are currently only two out of the three books at this time - so you will be left hanging, as we all have been for years - but it’s so very definitely worth it.

    Ender’s Game by Orson Scott Card is a book that spawned a series referred to as the Ender’s Saga or Enderiverse - it’s brillant on its own, but I highly recommend reading Ender’s Shadow too as it really adds to the first book in an unexpected way.

    The author Kazuo Ishiguro is a phenomenal writer and also a winner of the Nobel Prize in Literature. His books are very diverse, but from my experience so far (I’m not finished reading them all) they have something in common to Hermann Hesse’s books; they carefully take hold of you and pull you down a very carefully constructed path that you can barely see, but you feel like you’ve found the way rather than been led there as you must have been! The Remains of the Day is a period drama, not my cup of tea at all normally, but is brilliant and is so well written it made me realise I’d been missing out reading so much pulp sci-fi/fantasy! Another pick is Klara and the Sun, a sci-fi book set from the perspective of an android, which is incredibly well written and manages to shift your perspective on the story so much with so few words.

    And so onto my final recommendation, of where to buy cheap books, but I’m going to be sneaky and tell the story of how my search for cheap books helped me overcome my depression.

    Charity shops, aka thrift stores, are great for cheap second-hand books - most places will sell them for less than you can find them online - you just might have to do some hunting and regular visits to find them. Now, depending on where in the world you are, they may or may not exist. If they don’t, find out what happens to used books in your country and hunt them out there… it could be church fund-raisers, libraries, etc. But the act of actually browsing all the books and hunting for something new to read is a great activity in and of itself, if you set the goal that you’ll come back with something new no matter what!

    But it was while looking at used books in a local charity shop that I realised they were looking for volunteers. So I started volunteering. At first I just stayed in the back listing books for sale online. Then I was convinced to help someone on the till, then asked to look after the till, then the shop, then eventually a paid position came up and I applied for it and got it.

    I didn’t know it then, but that act of volunteering truly set me on my path to wellness. Initially I thought it was because of the objective good I was doing in the world, which would make sense - but looking back it wasn’t that at all. It was a more immediate sense of purpose, of socialising, of talking to people and listening to their problems, of getting social cues wildly wrong and learning, and so on. I was in full control of the rate of social interaction, but they always pushed me that touch more - with encouragement, kindness, and support.

    Then one day I realised something strange - I was doing small-talk without thinking. It was almost terrifying, thinking back that I’ve literally just said something I’d not explicitly thought. But then it dawned on me… for the first time in over 20 years, I’d just been myself for a fleeting moment - free from worry and free from over-thinking; no conscious thought process martialling my thoughts and speech. It was in that realisation I knew for sure I’d eventually be OK. It took a long time, many years, and there were some bumps - but my rise to good health was inexorable.

    Then the crazy part comes… dealing with emotions again! It had been so long since I last properly felt them, outside of expressing all emotions through negative emotions (i.e. I love my brother so much I would do X if someone did something to him"). I’d say I was actually manic for a while, having really high highs more powerful than the best drugs I’ve ever taken, and really low lows where I thought I was back at the start again. But having since seen my young nephews grow up, I realise now it was just learning how to deal with emotions again. It’s a wild ride, but one to be excited about and look forward to, not fear.

    Another element that I really struggled with and slowed my progress was “blame”. Who’s fault was it I was like this? Mine? My parents? This event? That experience? It tore me up for a long time, there’s one thing worse than blaming yourself, and that’s blaming those you love. But over the years I came to see that it was a perfect storm, multiple overlapping waves that in isolation would have been tough but fine, but altogether at just the wrong times, sunk the ship. It was nobody’s fault that all these waves came at just the wrong times, that was chance.

    So my advice is to read some of these great books and those others suggest, get involved with your community - there’s so many great causes desperate for your help, and set yourself on the path to find that first glimpse of the dim spark that will inexorably lead to your good health. You might not find it in days, weeks, or even months - but if you keep looking, even after a long break, you will eventually find it.

    Good luck!

    EDIT: Just to say, the Ender’s Game audiobook is amazing - tons of 80’s sci-fi sound effects!


  • I personally found Fedora to be rock solid, and along with Ubuntu provided the best hardware support out of the box on all my computers - though it’s been a couple of years since I used it. I did end up on Ubuntu non-LTS in the end as I now run Ubuntu LTS on my servers and find having the same systems to be beneficial (from a knowledge perspective).



  • Containers can be based on operating systems that are different to your computer.

    Containers utilise the host’s kernel - which is why there needs to be some hoops to run Linux container on Windows (VM/WSL).

    That’s one of the most key differences between VMs and containers. VMs virtualise all the hardware, so you can have a totally different guest and host operating systems; whereas because a container is using the host kernel, it must use the same kind of operating system and accesses the host’s hardware through the kernel.

    The big advantage of that approach, over VMs, is that containers are much more lightweight and performant because they don’t have a virtual kernel/hardware/etc. I find its best to think of them as a process wrapper, kind of like chroot for a specific application - you’re just giving the application you’re running a box to run in - but the host OS is still doing the heavy lifting.


  • As always, it depends! I’m a big fan of “the right tool for the job” and I work in many languages/platforms as the need arises.

    But for my “default” where I’m building up the largest codebase, I’ve gone for the following:

    • TypeScript
      • Strongly-typed (ish) which makes for a nice developer experience
      • Makes refactoring much easier/less error-prone.
      • Runs on back-end (node) and front-end, so only one language, tooling, codebase, etc. for both.
    • SvelteKit
      • Svelte as a front-end reactive framework is so nice and intuative to use, definite the best there is around atm.
      • It’s hybrid SSR/CSR is amazing, so nice to use.
      • As the back-end it’s “OK”, needs a lot more work IMO, but I do like it for a lot of things - and can not use it where necessary.
    • Socket.IO
      • For any real-time/stream based communication I use this over plain web sockets as it adds so much and is so easy to use.
    • PostgreSQL
      • Really solid database that I love more and more the more I use it (and I’ve used it a lot, for a very long time now!)
    • Docker
      • Easy to use container management system.
      • Everything is reproducible, which is great for development/testing/bug-fixing/and disasters.
      • Single method to manage all services on all servers, regardless of how they’re implemented.
    • Traefik
      • Reverse proxy that can be set to auto-configure based on configuration data in my docker compose files.
      • Automatically configuring takes a pain point out of deploying (and allows me to fully automate deployment).
      • Really fast, nice dashboard, lots of useful middleware.
    • Ubuntu
      • LTS releases keep things reliable.
      • Commercial support available if required.
      • Enough name recognition that when asked by clients, this reassures them.


  • I was recently helping someone working on a mini-project to do a bit of parsing of docker compose files, when I discovered that the docker compose spec is published as JSON Schema here.

    I converted that into TypeScript types using JSON Schema to TypeScript. So I can create docker compose config in code and then just export it as yaml - I have a build/deploy script that does this at the end.

    But now the great thing is that I can export/import that config, share it between projects, extend configs, mix-in, and so on. I’ve just started doing it and it’s been really nice so far, when I get a chance and it’s stabilised a bit I’m going to tidy it up and share it. But there’s not much I’ve added beyond the above at the moment (just some bits to mix-in arrays, which was what set me off on this whole thing!)



  • I did start with it and use it on a laptop, honestly I think that’s where it shines the most - but I guess the more windows you open the less useful it becomes. I think if there was a way to do the expose-like “view all things at once” (Super key) that worked across all workspaces, I’d be all over them. But as there’s no easy way to live view everything on all workspaces, I just don’t use them.


  • Yes, I love it! Really it’s the MacOS-like “Expose” feature that I find to be essential.

    I would advise against using workspaces though, I find those actually sort of go against the core idea of it IMO. There are a few things I’d really like added to it, but for the most-part when you get into it it’s great.

    My main desktop I have 4 monitors (I know, but once you start a monitor habit it’s really hard to not push it to the limit - this is only the beginning!) It roughly breaks down into:

    1. Primary work (usually a full-screen editor)
    2. Terminals (different windows, some for the project, some monitoring)
    3. Browsers - documentation, various services, my own code output
    4. Communication - signal, discord, what’s app (ugh), etc.

    The key, literally, is you just press the Super key and boom, you can see everything and if you want to interact with something it’s all available in just one click or a few of key presses away.

    On my laptop with just one screen, I find it equally invaluable, and is actually where I started to use it the most - once again, just one press of Super and I can see all the applications I have open and quickly select one or launch something.

    It’s replaced Alt + Tab for me - and I know they’ve made that better, and added Super + Tab, but none of them are as good as just pressing Super.

    The things I’d really love added to it are:

    • Better tiling (including quarter tiling). It’s a sad state of affairs when Windows has far better tiling than Gnome.
    • Super then Search, I’d like it to filter the windows it’s showing and shrink/hide the others, along with a simple way to choose one using the keyboard.
    • Rather than having an icon for each window, I also want the tooltip information to always be shown (e.g. vs code project) and for standard apps to expose better information for that (e.g. Gnome Terminal to expose its prompt/pwd) and/or have a specific mechanism by which apps could communicate.
    • Adding Quicksilver-like functionality to the launcher/search would be amazing. e.g.
      • Super
      • Sp… (auto-populates Spotify)
      • Tab
      • P… (auto-populates Play/Pause)
      • Return
    • Session restoration - it just doesn’t work at the moment for some reason. Some apps do, some don’t. Some go to their correct position/size, some don’t.


  • With regards to education, one of the things I’ve come to understand goes entirely counter to the way I was taught at University - for me, programming is a creative activity. It’s an iterative process, and the less constraints I have on how I achieve something, not what I achieve, the better I enjoy it, the more productive I am, and the better by many measures the end solution will be.

    I think that is a key part of what’s missing from CS education, to understand that and lean into it to both increase engagement but also to get people thinking outside the box for solutions to their problems. Students seem to be taught so much, but very little about “Here’s a high-level problem, provide a solution” which is the “core loop” of software development (outside of being a code monkey implementing other people’s designs). You go over requirements and specifications, but you don’t actually DO it… you don’t speak to people, ask the questions, realise they’d don’t know much about software, then later go “Oh shit, I made this assumption and made the wrong thing!”

    One of the things that I used to like more than anything was achieving things even though there were constraints. For example, back in the 90’s even before even AJAX was a thing, I created a site for a betting company that was a SPA and pulled in data and live betting odds. I did this by having a message queue in JavaScript, a hidden frame from which to send messages from the queue to the server using a form, and then the server returned JavaScript code which executed and put the data where needed and updated the page. I absolutely loved that project, and most people on the team just couldn’t believe it was even possible.

    But I didn’t solve it through engineering, I solved it through playing - trying things, seeing what would work/what didn’t, adapting the idea, etc. until I found something that worked - and it was based on some of the things I’d been messing about with in my own time (somewhat bizarrely, creating a sort of online aquarium of Dr. Seuss fish where each one was a person viewing the site!)

    I think if we can inject more of the creativity, tinkering, iterative, playful side into our education it’ll make a huge difference.


  • I left University in the late 90’s and got my first job based on the things I’d been messing about with in my spare time with the University’s facilities/at home (Unix, Internet protocols, client/server arch, distributed computing, etc.) rather than anything I’d been taught. I learnt more in my first 3 months in work than 3 years of education.

    Then the dot-com boom hit, and the number of applicants for any position surged - everyone was going into software development for the money. The whole team became involved in selecting candidates and being part of the interviewing process - it was a nightmare trying to give every person a fair chance. We had some good hires and some bad hires, but the bad hires became such a problem because we had to go through the recruitment mill again.

    But we realised that the number one factor for whether they’d be a good hire or not was not education, but their own personal projects. That’s what mattered. Doing this for fun was the key indicator of being good, and became the ONLY thing we looked for on CVs in the first pass. Doesn’t matter if you have a 1st from Cambridge, if you don’t demonstrate you have a passion for the subject, you don’t get an interview. It was a huge success, and we built an amazing team and saved ourselves a ton of time during recruitment.

    Those people still exist though, I see it all the time! But I think now that the “industry” has grown so much that in any given field there are less people (relatively) being attracted to it. For example, I can see that while back in the 80’s I was drawn to the personal computer, then the 90’s the internet - those things are staples of everyday life now. But I can see more modern young people being attracted to things like AI, drones, quantum computing, 3D printing, and so on as well.