Lecstor's Blog

Jason Galea

Written by Jason Galea from Cairns, Australia.

Full Stack developer specialising in React and NodeJS.

LinkedIn | Github | StackOverflow

  • A VS Code extension for makesPDF
    25 April 2026 · 1 min read

    A small VS Code extension that turns the Markdown file you're currently editing into a PDF, without leaving the editor.

  • Sub-second, no eval, no browser
    24 April 2026 · 11 min read

    How a PDF engine fits inside a single Cloudflare Worker request with no eval, no headless browser, and no Node filesystem — and still returns sub-second renders for typical documents.

  • A catalog, a tiny DSL, and a skill file
    23 April 2026 · 9 min read

    Making AI reliably produce a working PDF template needs three pieces working together — a machine-readable catalog, a compact DSL that costs 75–95% fewer tokens than raw JSON, and a skill file the agent can fetch once and remember.

  • The builder I didn't build
    22 April 2026 · 6 min read

    The previous three versions of this product all assumed a template-authoring UI was the hard thing to build. The 2026 version doesn't have one. An AI reads a sample document and produces a template directly.

  • Four goes at the same idea
    21 April 2026 · 7 min read

    I've been bumping into PDF generation as a problem since 1999. Four of my attempts to turn it into a product have reached the level of "you could use this." Three didn't find a market. This is the history, honestly told.

  • Vanilla Zustand in hook with auto-methods
    27 January 2022 · 1 min read

    Zustand core can be imported and used without the React dependency. The only difference is that the create function does not return a hook, but the API utilities.…

  • Code Splitting and Tree Shaking Webpack Gotchya
    18 August 2019 · 4 min read

    TL;DR if you're building an SPA and plan to use Code Splitting you should ignore tree shaking and structure your modules and imports accordingly to avoid redundant code being included in your…

  • Optimising with React.memo
    21 March 2019 · 4 min read

    Takeaway: keep your memoed components focussed and their props shallow, and prefer simple solutions over complexity. skip to the flip The first step to voiding unnessary renders is to use…

  • A Journey from Google Cloud Functions to Appengine Flex
    26 February 2019 · 3 min read

    My goal was to deploy a basic React app with a server backend to the Google Cloud Platform. For learnings I decided to use Google Cloud Functions (which may also have been the cheapest backend…

  • Kafka/Protobuf Cheatsheet
    30 January 2019 · 1 min read

    Tools for working with Kafka and Protobufs - all about dumping messages to the console at this point. Kafkacat https://medium.com/@coderunner/debugging-with-kafkacat-df7851d21968 Install list topics…

  • Golang Cheatsheet
    27 January 2019 · 1 min read

    Learning Go, so started recording references to all the useful things I find so I can find them again when I need them.. Install or download from Golang Downloads and install Testing $ go test - run…

  • Go - clear cache
    26 January 2019 · 1 min read

    When trying to run go install or go test I was getting errors such as: I boiled it down to something wrong in my go setup as I was unable to replicate the errors on a second machine. Uninstalling and…

  • React does not fire onMouseLeave events on a disabled button
    22 December 2018 · 2 min read

    Posting as this was decently difficult to diagnose while researching and testing 3rd party popover/tooltip components. The button component I needed an onHover tooltip for is responsive via either…

  • Reusable React Components [WIP]
    9 December 2018 · 4 min read

    Building a reusable component library for your app will speed up development, increase consistency of the UI, and reduce the total download size of your app. Below are a few tips I've picked up while…

  • Testing Code
    10 March 2018 · 5 min read

    Some thoughts on testing - the what and the how (javascript). Testing The primary reason for writing automated tests is to ensure that your code runs correctly. When you make changes to your code,…

  • Building a PDF writer
    10 February 2017 · 3 min read

    A PDF file is basically a set of object serialised in a specific format similar to PostScript. Our initial goal is to be able to place text in a PDF by writing the required objects in the correct…

  • MongoDB Upgrade 2.4 to 2.6 in Debian
    13 May 2014 · 1 min read

    When upgrading to the latest and greatest MongoDB (2.6) the first thing you have to do is run a check on your databases. Specifically the upgrade docs say: To begin the upgrade procedure, connect a…

  • Believe in yourself
    25 April 2014 · 2 min read

    You are right. Whatever you believe to be true, is correct. It is true for you. Your knowledge of the facts is based in your reality, your experiences, and those are the only truths you can be sure…

  • How to create PDF documents
    21 April 2014 · 3 min read

    Adobe’s Portable Document Format (PDF) files have almost become the standard for preparing well-formatted documents. There are PDF readers/displayers for most web browsers, so there is no real excuse…

  • Something about Perl
    17 January 2012 · 4 min read

    Perl is used extensively all over the world in production, doing the job, all the time. Modern Perl takes the solid base that is Perl5 an implements all the goodness of modern programming practices.…

  • Using Catalyst with a Fat Model
    4 December 2011 · 3 min read

    Today I'm going to talk about using a fat model in Catalyst. When I started using Catalyst and eventually got my head around all the parts and where they all fit in, the slot for my "business logic"…