[
  {
    "issueNumber": 459,
    "title": "The Last Issue",
    "slug": "2026-03-29-459-the-last-issue",
    "date": "2026-03-29",
    "templateType": "buttondown-markdown",
    "intro": "Hello,\n\nYou might have noticed that we have been unusually quiet for the past couple of weeks. That is not really like us.\n\nThis time, though, things are different. Andrea and I took a little time to reflect, talk honestly, and prepare what will be the very final issue of FullStack Bulletin.\n\nThis has not been an easy decision. There are quite a few reasons behind it, and they deserve more space and honesty than I could ever fit into a short editorial. So I wrote a dedicated blog post to tell the story properly: [**Farewell FullStack Bulletin**](https://loige.co/farewell-fullstack-bulletin/).\n\nIf you think you will miss FullStack Bulletin, please do check out the [*new* website](https://fullstackbulletin.com/) too. We wanted to leave behind something genuinely useful: the full searchable archive, structured data exports, the open source code that powered the newsletter, the live streams where we built and refactored parts of the automation, and a curated feed of websites and creators that inspired so many of the issues over the years.\n\nSo yes, this is the end of the newsletter. But it is not the end of everything that came out of it.\n\nIt has been an absolute blast, and a real privilege, to share this little corner of the web with so many of you over the years. Thank you for reading, replying, sharing, sponsoring, encouraging us, and giving this project a reason to exist week after week.\n\nI am not going anywhere. I will still be around building things, writing, speaking, and getting excited about the web and software engineering. So do not be a stranger. Let's keep the conversation going.\n\nEven if not through FullStack Bulletin, I hope we can still keep learning from one another, and keep inspiring each other.\n\nThank you, truly.\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "There is no real ending. It's just the place where you stop the story.",
      "author": "Frank Herbert",
      "authorTitle": null,
      "authorUrl": null
    },
    "links": [
      {
        "title": "Farewell FullStack Bulletin",
        "url": "https://loige.co/farewell-fullstack-bulletin/",
        "description": "After 458 issues, 3,073+ curated links, and almost a decade of showing up in your inbox, it felt only right to make the final featured article the story behind this goodbye. In this post I share why Andrea and I decided to stop, what FullStack Bulletin meant to us, what we learned from it, and what still lives on beyond the newsletter itself. If this project ever gave you a useful rabbit hole, a fresh perspective, or just a little Monday energy, I think this piece will resonate with you. It is not really an obituary. It is more of a love letter to a project that meant a lot to us, and that shaped a big part of our lives for almost nine years. I hope you will give it a read.",
        "imageUrl": "./7ba426a596712a2189189b15c32e053f83fa92453d25fec2f68c1935057a2f85.png",
        "featured": true
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 458,
    "title": "An Interactive Intro to CRDTs",
    "slug": "2026-03-09-438-an-interactive-intro-to-crdts",
    "date": "2026-03-09",
    "templateType": "buttondown-markdown",
    "intro": "Welcome back,\n\nLast week I started a new project at work and it has been one of those wonderfully chaotic weeks where one interesting problem keeps leading to three more. I ended up doing a ton of research, and I will admit that I occasionally went a little off the rails into tangents that were not exactly relevant, but were definitely fun.\n\nThis issue is very much the result of that kind of week. There is a lot of variety in the selection, and it was genuinely hard to pull together a coherent top 7. Still, I think there is a lot of great stuff in here, and I hope it gives you plenty of ideas and inspiration.\n\nOn top of that, I am still spending a significant amount of time learning and building AI-powered web applications and agents. Since AWS is usually my main deployment target, that has also meant spending a lot of time with Amazon Bedrock. Recently I went deep into Structured Outputs, really into the nitty-gritty details, and I found it much more fascinating than I initially expected. So I decided to write an in-depth article with everything I learned: [Understanding Amazon Bedrock Structured Outputs](https://fourtheorem.com/amazon-bedrock-structured-outputs/). We also recorded a new episode of AWS Bites entirely dedicated to Bedrock and why you might want to use it: [153. LLM Inference with Bedrock](https://awsbites.com/153-llm-inference-with-bedrock/).\n\nI hope you will enjoy the full selection and, as always, if anything resonates with you, reply to this email and let me know. I really do read every single one of your emails!\n\nKeep learning, keep shipping!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The most powerful tool we have as developers is automation",
      "author": "Scott Hanselman",
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "An Interactive Intro to CRDTs",
        "url": "https://jakelazaroff.com/words/an-interactive-intro-to-crdts",
        "description": "If you have ever used Figma, Notion, or Google Docs and wondered how multiple people can edit at the same time without everything falling into conflicting chaos, part of the answer is CRDTs. This is one of those topics that gets referenced a lot, but rarely explained well. I really enjoyed this article because it finally gave me a solid intuitive understanding of how some of these fantastic data structures work, and it turns out they are not that complicated after all. The interactive demos make learning genuinely fun, and much easier to follow. I hope you will enjoy this featured piece as much as I did!",
        "imageUrl": "./d84a89c0af49db8c1e65d6569927af5ab79574d6eb6712d1ddc48dab4b392561.png",
        "featured": true
      },
      {
        "title": "Proxying fetch requests in server-side JavaScript",
        "url": "https://humanwhocodes.com/blog/2026/03/proxying-fetch-requests-server-side-javascript/",
        "description": "This is a very practical piece on something that does not sound glamorous, but absolutely matters in real systems: routing `fetch()` requests through a standard HTTP proxy. If you ever need outbound traffic control for logging, caching, policy enforcement, debugging, or IP masking, this will quickly become relevant. I liked that the article stays grounded and compares how different runtimes approach the problem, including Node.js, Deno, Bun, and Cloudflare Workers, with a look at the newer Node.js support for proxy-related environment variables. This is definitely one to bookmark for future-you.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js: Evolving the Node.js Release Schedule",
        "url": "https://nodejs-org-git-fork-ulisesgascon-release-announcement-openjs.vercel.app/en/blog/announcements/evolving-the-nodejs-release-schedule",
        "description": "If you have been using Node.js for a while, you probably know the rule of thumb: even-numbered releases are the long-term stable ones, while odd-numbered releases have mostly been short-lived stepping stones toward the next LTS. That is now changing. Starting with 27.x, Node.js is moving from two major releases per year to one. This is a pretty meaningful ecosystem shift, especially if you maintain libraries, CI matrices, or internal platform docs. If your team already follows the LTS cadence, though, this should feel more like simplification than disruption. Versioning gets easier to reason about, odd-numbered releases stop being a strange special case, and the broader release story becomes much more predictable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "External import maps, today!",
        "url": "https://lea.verou.me/blog/2026/external-import-maps-today/",
        "description": "**Import maps** are designed exactly for this kind of problem: managing dependencies in browser apps without needing a full build pipeline. The catch is that, while import maps themselves are already here, one key piece, **external import maps**, is still not supported natively, so this article shows a very clever workaround you can use today. The trick is to inject an import map dynamically from a classic blocking script before modules load, which gets you much closer to centralized import map management right now. If the problem statement is not fully clear yet, there is also a helpful [companion article](https://lea.verou.me/blog/2026/web-deps/) that explains the broader context. I really like pieces like this because they show how the web platform is already more capable than we often assume. It is also a nice reminder that you can start adopting future-facing techniques today, while browsers catch up, and begin future-proofing your web apps right away.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Getting Started With The Popover API",
        "url": "https://www.smashingmagazine.com/2026/03/getting-started-popover-api/",
        "description": "And speaking of the web platform, I am always happy when the browser absorbs a whole category of JavaScript workarounds. This article makes a strong case that the Popover API is not just a nice convenience, but a real upgrade in how we build interactive UI. The examples focus mostly on tooltips, but the broader takeaway is that the browser can now handle more of the interaction model for us, including keyboard behavior, dismissal rules, and part of the accessibility wiring. Less code, fewer footguns, better defaults. Very hard to complain about that. And if you enjoy this kind of deep dive, there is also [another excellent post](https://css-tricks.com/poppin-in/) that probably does an even better job of showing incremental examples of how to put the Popover API to work.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Design Systems Checklist",
        "url": "https://tylercoderre.com/projects/design-systems-checklist.html",
        "description": "In my career I had the chance to work on a few modernization projects where building and rolling out a corporate design system was one of the key ingredients for success. Creating the system has its own challenges, of course, but in my experience adoption is usually the part that really makes or breaks the whole effort. That is why I liked this resource so much. It is refreshingly concrete and turns a broad, sometimes fuzzy topic into a practical checklist that covers everything from design language and foundations to core components and long-term maintenance. What makes it especially valuable is that you can use it at the beginning of a project like this to shape your strategy, but also later on as a sanity check for your implementation. A complete, clear, and well-executed design system gives you a much better chance of driving real adoption across teams.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making keyboard navigation effortless",
        "url": "https://blogs.windows.com/msedgedev/2026/03/05/making-keyboard-navigation-effortless/",
        "description": "I admit I am not someone who uses the keyboard that much to navigate the web, and that is probably why, whenever I read about this topic, I feel like I need to pay extra attention to make up for my own bias. Keyboard navigation is such an important part of web accessibility, and we all need to make a more deliberate effort to ensure what we build is usable by everyone. This article is a good reminder of that. It even notes that, according to the Web Almanac, about 50% of websites do not use `tabindex`, one of the common techniques for enabling keyboard navigation on the web. What I liked here is that the piece frames keyboard support not as a compliance chore, but as a core part of making interfaces genuinely usable. If you build custom widgets, form-heavy flows, or admin UIs, this is well worth your attention.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd Edition",
      "author": "Donald Knuth",
      "description": "This first volume in the series begins with basic programming concepts and techniques, then focuses more particularly on information structures-the representation of information inside a computer, the structural relationships between data elements and how to deal with them efficiently. Elementary applications are given to simulation, numerical methods, symbolic computing, software and system design. Dozens of simple and important algorithms and techniques have been added to those of the previous edition. The section on mathematical preliminaries has been extensively revised to match present trends in research.",
      "coverImageUrl": "./d986bbc806fffecd14bf633073f88d6c731e51be9d6b746075c416be8b413fa0.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201896834",
      "amazonUk": "https://www.amazon.co.uk/dp/0201896834"
    },
    "additionalLinks": [
      {
        "title": "MicroGPT explained interactively",
        "url": "https://growingswe.com/blog/microgpt"
      },
      {
        "title": "Seven years migrating to TypeScript at Patreon",
        "url": "https://www.patreon.com/posts/seven-years-to-typescript-152144830"
      },
      {
        "title": "AI And The Ship of Theseus",
        "url": "https://lucumr.pocoo.org/2026/3/5/theseus/"
      },
      {
        "title": "The Different Ways to Select HTML in CSS",
        "url": "https://css-tricks.com/the-different-ways-to-select-html-in-css/"
      },
      {
        "title": "Responsive Type Doesn't Have to Be Complicated",
        "url": "https://www.oddbird.net/2026/02/19/winging-it-29/"
      },
      {
        "title": "Locutus, TypeScript ports of standard library functions from 18 programming languages, with per-function npm imports so you only pull in what you need",
        "url": "https://locutus.io/"
      },
      {
        "title": "On Adding Homepage Delight",
        "url": "https://karlkoch.me/writing/on-adding-homepage-delight"
      },
      {
        "title": "AI Taxonomy, an operational framework for precision in AI discourse",
        "url": "https://dropleaf.app/d/AlXez8scbd"
      },
      {
        "title": "Typescale AI, a visual typography scale and design token generator for web UI",
        "url": "https://typescale.ai/"
      },
      {
        "title": "A Complete Guide to Bookmarklets",
        "url": "https://css-tricks.com/a-complete-guide-to-bookmarklets/"
      },
      {
        "title": "Distinguishing Components and Utilities in Tailwind",
        "url": "https://css-tricks.com/distinguishing-components-and-utilities-in-tailwind/"
      },
      {
        "title": "Chip Away, a thoughtful essay on designing interfaces that age well by removing rough edges one small improvement at a time",
        "url": "https://blog.damato.design/posts/chip-away/"
      },
      {
        "title": "React is changing the game for streaming apps with the Activity component",
        "url": "https://www.mux.com/blog/react-is-changing-the-game-for-streaming-apps-with-the-activity-component"
      },
      {
        "title": "TinyBase, a reactive data store and sync engine with native CRDT support and multiple persistence options",
        "url": "https://tinybase.org/"
      },
      {
        "title": "react-awesome-slider, a lightweight React slider and carousel component focused on smooth media and content transitions",
        "url": "https://github.com/rcaferati/react-awesome-slider"
      },
      {
        "title": "WarGames Terminal Fonts, faithful recreations of the terminal font from the 1983 film for use on modern computers",
        "url": "https://mw.rat.bz/wgterm/"
      },
      {
        "title": "How to supercharge your design system with slots",
        "url": "https://www.figma.com/blog/supercharge-your-design-system-with-slots/"
      },
      {
        "title": "Ply, build cross-platform applications for desktop, mobile, and the web using Rust",
        "url": "https://plyx.iz.rs/"
      },
      {
        "title": "Nobody ever got fired for using a struct",
        "url": "https://www.feldera.com/blog/nobody-ever-got-fired-for-using-a-struct"
      },
      {
        "title": "Dinero.js, an immutable JavaScript and TypeScript library to create, calculate, and format money safely",
        "url": "https://www.dinerojs.com/"
      },
      {
        "title": "unbarrelify, a tool to remove barrel files from ESM JavaScript and TypeScript projects",
        "url": "https://github.com/webpro-nl/unbarrelify"
      },
      {
        "title": "An Exploit in CSS?!",
        "url": "https://css-tricks.com/an-exploit-in-css/"
      },
      {
        "title": "The Odometer Effect (without JavaScript)",
        "url": "https://frontendmasters.com/blog/the-odometer-effect-in-css/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 457,
    "title": "AI made WebStreams 10x Faster and I don't know how I feel about it",
    "slug": "2026-03-02-437-ai-made-webstreams-10x-faster-and-i-don-t-know-how-i-feel-ab",
    "date": "2026-03-02",
    "templateType": "buttondown-markdown",
    "intro": "Hey,\n\nSorry for skipping last week. I had a super busy weekend and could not spend a single minute on FullStack Bulletin. I am also rushing this weekend, so I will keep this editorial short, but I promise the curation got all my attention and time.\n\nThe last couple of weeks have been packed with different projects, so my reading has been a bit all over the place. You will notice that in this issue. It moves from streams performance and WebAssembly direction, to CSS and UI details, plus some honest thinking about AI and how it is changing how we build.\n\nAlso, do not skip the extra links at the bottom. There are a few gems there that did not make the top picks, and it was a genuinely hard call.\n\nHappy learning and building!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The thing is, you can't fake drive. If you try to, you can easily burnout",
      "author": "Sophia Turner",
      "authorTitle": "Engineer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "We Ralph Wiggumed WebStreams to make them 10x faster",
        "url": "https://vercel.com/blog/we-ralph-wiggumed-webstreams-to-make-them-10x-faster",
        "description": "The title is a Ralph Wiggum joke, but the post is the real deal. Vercel profiled Next.js server rendering and found that a big chunk of the cost was not your app code. It was the WebStreams API itself, with lots of Promise work, per chunk allocations, and microtask churn. So they built a faster WebStreams implementation that can route the hot paths through Node’s internal streams when possible. The numbers are honestly nuts. Their React Server Components byte stream pattern jumps from about 110 MB per second to about 1,600 MB per second, roughly a 14.6x boost. What really surprised me is how much of this they got by letting AI do a lot of the grinding, with tests and benchmarks acting like the guardrails. I’m impressed that this approach can land results like this. I’m also a little uneasy about it, since it can feel like brute force instead of understanding. The best part is it is not staying locked inside Vercel. There is already work underway to bring the same wins into Node.js core, which means everyone could benefit. If you do server side rendering or stream heavy work in Node, this is worth your time.",
        "imageUrl": "./f7713d9cbfc51dc076ca006fd0c9fe544435a1e8fd8a6b43946bd4477e84fd7e.png",
        "featured": true
      },
      {
        "title": "We Deserve a Better Streams API for JavaScript",
        "url": "https://blog.cloudflare.com/a-better-web-streams-api/",
        "description": "And speaking of WebStreams, here is the companion piece you did not know you needed. James Snell from Cloudflare, who has implemented WebStreams in both Node.js and Cloudflare Workers, makes a very compelling case that the standard API has fundamental usability and performance problems that go beyond what incremental fixes can solve. The WHATWG Streams spec was designed before async iteration even existed in JavaScript, and that timing shaped everything: the manual reader acquisition, the locking model that permanently breaks streams if you forget `releaseLock()`, the BYOB complexity that almost nobody uses in practice. James presents an alternative approach built around modern JavaScript language primitives that runs anywhere between 2x and 120x faster than standard WebStreams across every runtime he tested. Together with the Vercel piece above these two articles paint a really clear picture of where JavaScript streaming is heading and why we should all care about it, whether we work on the server, the edge, or the browser.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making WebAssembly a First-Class Language on the Web",
        "url": "https://hacks.mozilla.org/2026/02/making-webassembly-a-first-class-language-on-the-web",
        "description": "This Mozilla Hacks article articulates something I have felt for a while but could never quite put into words. WebAssembly works on the web, sure, but it feels like a second class citizen. You cannot just drop a `.wasm` file into a script tag. You need JavaScript glue code to access any Web API, and that glue must be regenerated for every source language. The article walks through exactly why that is the case, comparing the developer experience curve of JavaScript, which is a nice gradual slope, to WebAssembly, which hits a wall of complexity almost immediately. The exciting part is the proposed solution through WebAssembly Components, which would give Wasm modules a standardized way to describe and use Web APIs directly, no JavaScript glue required. If this lands it could genuinely change who uses WebAssembly and for what, lowering the bar from big companies with dedicated toolchains to any developer who just wants to ship a Rust or C++ module to the browser.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Sprites on the Web",
        "url": "https://joshwcomeau.com/animation/sprites",
        "description": "Josh Comeau never disappoints and this one is a delightful blend of nostalgia and modern CSS. If you have been building for the web long enough you probably remember sprite sheets from the early days, those long image strips where you shifted `background-position` to animate things. Josh takes that old school technique and brings it into the modern era using `object-fit`, `object-position`, and the beautifully obscure `steps()` CSS timing function. The interactive examples make the whole thing click instantly. What really got me though is the practical argument: compared to an animated GIF you get full control over timing and play state, better image format support like AVIF, dramatically smaller file sizes, and everything stays crisp at any resolution. It is one of those articles that makes you want to immediately open your editor and try it out. If you are looking for a way to add some personality to a UI without heavy JavaScript animation libraries this is your answer.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Potentially Coming to a Browser :near() You",
        "url": "https://css-tricks.com/potentially-coming-to-a-browser-near-you",
        "description": "I love a good CSS proposal and this one is genuinely clever. The idea is a `:near()` pseudo class that fires when the pointer gets close to an element, not just when it hovers directly over it. Think of those share buttons that only appear when you hover an image: with `:near()` you could reveal them when the cursor is within a certain distance, making the interaction much more forgiving and discoverable. The article does not stop at visual effects though. It explores how the underlying concept could improve the Interest Invoker API for hover triggered popovers and even feed into the Speculation Rules API for smarter prefetching. What I appreciate most is that the author actually simulates `:near()` with real CSS workarounds so you can see and feel the difference today, even though no browser supports it yet. It is the kind of thing that once you see it you wonder how we have managed this long without it.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "mcollina/skills: AI-Assisted Node.js Development Skills",
        "url": "https://github.com/mcollina/skills",
        "description": "Just the other day, I was thinking it would be cool to have a skill for writing really good Node.js code with AI agents. Well, you hope and the world delivers. In this case Matteo delivers, so thanks Matteo... Matteo Collina has been one of the most influential voices in the Node.js ecosystem for years, from Fastify to Pino to his work on Node.js core, and now he has open sourced his personal collection of skills for AI assisted development. If you are not familiar with the concept, skills are curated sets of best practices and context that you feed to AI coding tools so they produce better, more idiomatic code for your stack. Matteo's collection covers Fastify, Node.js core internals, TypeScript, OAuth, linting with neostandard and ESLint v9, and even deep Node.js C++ addons and V8 work. If you are using Claude Code, Cursor, or any similar tool for Node.js development this is an incredibly practical resource. It is also a great example of how experienced engineers can encode their hard won knowledge into something that scales through AI. I would love to see more people in the community sharing their own skills like this. [**Check Repo**](https://github.com/mcollina/skills)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Factory Model: How Coding Agents Changed Software Engineering",
        "url": "https://addyosmani.com/blog/factory-model/",
        "description": "Lately we have been leaning more and more into AI assisted coding, and it is honestly inescapable at this point. We have also featured a bunch of great pieces by Addy Osmani here, so you will not be surprised to see another one. This one is genuinely worth your time. It also matches a feeling [I have mentioned here before](https://buttondown.com/fullstackbulletin/archive/453-the-incredible-overcomplexity-of-the-shadcn-radio-button/), that AI is nudging us from being artisans who shape every line by hand into managers who run factories that produce code. It is less about perfect detail, and more about shipping at scale while keeping quality under control. Addy gives a mental model for what a lot of us are living through. The shift is from writing code to orchestrating systems that write code. His analogy is a factory: you define specs, spin up agents in parallel, review what comes back, then iterate. What I appreciated most is that he is clear about what does not change. Clear requirements, strong abstractions, reliable tests, and careful tradeoffs still matter. If your spec is vague, you do not just slow down one developer anymore. You multiply confusion across a whole fleet of runs. The section on why test driven development becomes close to mandatory in an agent workflow really hit home for me. If you have been using AI coding tools and wondering how your role changes, and what good looks like going forward, this is essential reading.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to the Theory of Computation",
      "author": "Michael Sipser",
      "description": "Gain a clear understanding of even the most complex, highly theoretical computational theory topics in the approachable presentation found only in the market-leading INTRODUCTION TO THE THEORY OF COMPUTATION, 3E.\nThe number one choice for today's computational theory course, this revision continues the book's well-know, approachable style with timely revisions, additional practice, and more memorable examples in key areas.\nA new first-of-its-kind theoretical treatment of deterministic context-free languages is ideal for a better understanding of parsing and LR(k) grammars. You gain a solid understanding of the fundamental mathematical properties of computer hardware, software, and applications with a blend of practical and philosophical coverage and mathematical treatments, including advanced theorems and proofs. \nINTRODUCTION TO THE THEORY OF COMPUTATION,  3E's comprehensive coverage makes this a valuable reference for your continued studies in theoretical computing.",
      "coverImageUrl": "./9bf505c3a3ec2e716248f78abc62ede4dd615d0e2a7f1808de3456e947f698c7.jpg",
      "amazonUs": "https://www.amazon.com/dp/0357670582",
      "amazonUk": "https://www.amazon.co.uk/dp/0357670582"
    },
    "additionalLinks": [
      {
        "title": "Parse, Don't Validate — and Type-Driven Design in Rust",
        "url": "https://harudagondi.space/blog/parse-dont-validate-and-type-driven-design-in-rust"
      },
      {
        "title": "BuildKit: Docker's Hidden Gem That Can Build Almost Anything",
        "url": "https://tuananh.net/2026/02/25/buildkit-docker-hidden-gem/"
      },
      {
        "title": "Embrace the Chaos: The Shape and Flow of Masonry Layouts",
        "url": "https://patrickbrosset.com/articles/2026-02-23-embrace-the-chaos-the-shape-and-flow-of-masonry-layouts/"
      },
      {
        "title": "Secure Massively Multiplayer Snake",
        "url": "https://eieio.games/blog/secure-massively-multiplayer-snake/"
      },
      {
        "title": "Stop Putting Secrets in .env Files",
        "url": "https://jonmagic.com/posts/stop-putting-secrets-in-dotenv-files/"
      },
      {
        "title": "Simple Made Inevitable: The Economics of Language Choice in the LLM Era",
        "url": "https://felixbarbalet.com/simple-made-inevitable-the-economics-of-language-choice-in-the-llm-era/"
      },
      {
        "title": "What's !important?",
        "url": "https://css-tricks.com/whats-important-6/"
      },
      {
        "title": "Yet Another Way to Center an Absolute Element",
        "url": "https://css-tricks.com/yet-another-way-to-center-an-absolute-element/"
      },
      {
        "title": "The Inner Workings of TCP Zero Copy",
        "url": "https://blog.tohojo.dk/2026/02/the-inner-workings-of-tcp-zero-copy.html"
      },
      {
        "title": "Thread-per-core and io_uring",
        "url": "https://iggy.apache.org/blogs/2026/02/27/thread-per-core-io_uring/"
      },
      {
        "title": "Solving the Nebraska Problem with the Open Source Endowment",
        "url": "https://evilmartians.com/chronicles/solving-the-nebraska-problem-with-the-open-source-endowment"
      },
      {
        "title": "You Can Use Newline Characters in URLs",
        "url": "https://lemire.me/blog/2026/02/28/you-can-use-newline-characters-in-urls/"
      },
      {
        "title": "Web Origami",
        "url": "https://weborigami.org/"
      },
      {
        "title": "blogat.to: Static Site generator for Gleam",
        "url": "https://blogat.to/"
      },
      {
        "title": "prek: Preview and execute commands interactively",
        "url": "https://github.com/j178/prek"
      },
      {
        "title": "GitHub Copilot Prompt Injection via Commit Messages",
        "url": "https://gist.github.com/dollspace-gay/d8d3bc3ecf4188df049d7a4726bb2a00"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 456,
    "title": "Is Node.js Single Threaded… or Not?",
    "slug": "2026-02-16-436-is-node-js-single-threaded-or-not",
    "date": "2026-02-16",
    "templateType": "buttondown-markdown",
    "intro": "Hey,\n\nLast week felt like one long experiment in building with AI instead of just talking about it, and I honestly much prefer the doing to the talking. It is so much more rewarding to just take action than to think and talk and never actually build anything. I spent a good chunk of time wiring AI features into a couple of apps and really learning about three big areas: **custom tool calls** to let the model integrate with external systems and even drive parts of a web UI, **structured output** with [Zod](https://zod.dev/) and [JSON Schema](https://zod.dev/json-schema) so you can safely use LLM responses in your code, and **guardrails** that keep users focused on your application tasks instead of asking for random jokes or cake recipes. On top of that I picked up a bunch of smaller tricks to make the model behave a little more predictably for the specific workflow I had in mind. I was also rapidly prototyping a few different UIs for customer demos, and Claude Code surprised me in a very good way. Using its [frontend design](https://github.com/anthropics/skills/tree/main/skills/frontend-design) and [web artifacts builder](https://github.com/anthropics/skills/tree/main/skills/web-artifacts-builder) skills I could go from rough idea to decent, modern looking interfaces in a couple of evenings. That is the kind of work that would usually take me two or three weeks of slow iteration.\n\nIt was not all keyboards and prompts though. I also had the pleasure of chatting with [Francesco Ciulla](https://www.francescociulla.com/) on his excellent [YouTube channel](https://www.youtube.com/channel/UCBRxDSTfr2aJVODDh4WG_7g) about **AWS Lambda** and **Rust**. We did one live recording, and from that you now get two options: the [full live stream](https://www.linkedin.com/events/7425227143413968896/) where we talk more broadly about **Serverless** and why Rust can be such a good fit for Lambda, and a [shorter edited cut](https://youtu.be/SHvE8B9NYdg) that focuses only on my live demo for the busy ones who just have time to see the code in action. If you watch either of them I would love to hear what you think.\n\nNow let us get into some hand curated full stack goodness, because there is a lot to explore this week and I genuinely hope you will enjoy every single pick.\n\nHappy learning and building!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "All programming languages are shit. But the good ones fertilize your mind",
      "author": "Reginald Braithwaite",
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Is Node.js Single Threaded… or Not?",
        "url": "http://nodesource.com/blog/is-nodejs-single-threaded-or-not",
        "description": "I love this piece because it finally gives a precise answer to a question I have heard for years without any hand waving. It separates V8 from the Node runtime, walks through examples like `setTimeout` and `crypto.pbkdf2`, and shows exactly what stays on the main JavaScript call stack and what gets pushed into libuv and the thread pool. It also clears up a subtle but important point. JavaScript in Node runs on a single main thread by default, but you can get real parallelism when you explicitly opt into models such as Worker Threads or separate processes. By the end you get a mental model you can actually use when you are debugging strange concurrency issues in production or deciding whether you really need to reach for a worker. So is it single threaded? It depends what we are talking about. If you look only at the main thread then yes, but that does not mean we cannot use the runtime to run concurrent or even genuinely parallel work when a project really needs it. Node.js is kinda weird that way... and that's why I personally love it!",
        "imageUrl": "./3476f8f7b5cdd864b38dabf3d5d3cc1808b55d9dcde484bf4ed70686e9ee177d.png",
        "featured": true
      },
      {
        "title": "Definitive Guide to Multi Threaded Rendering on the Web",
        "url": "https://hackernoon.com/definitive-guide-to-multi-threaded-rendering-on-the-web",
        "description": "And speaking of multi threading, if the Node article is about how the backend thinks on its main thread, this one is the perfect companion on the frontend. The DOM still lives on a single thread, but the author shows how you can push serious work off it with Web Workers, SharedArrayBuffer and atomics for coordination, Offscreen Canvas, and even prebuilt DOM work away from the main thread. I came away with a concrete toolkit for those “why is this UI so janky” moments, plus a better sense of when it is worth spinning up a worker instead of reaching for yet another clever hook or tiny refactor. Somewhat related, I recently used [Astro’s Partytown integration](https://docs.astro.build/en/guides/integrations-guide/partytown/) to move heavy third party scripts like analytics into web workers so they stop blocking the main thread and trashing performance.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Facehash: Beautiful Minimalist Avatars for React",
        "url": "https://facehash.dev/",
        "description": "I have built way too many boring placeholder avatars in my life so Facehash instantly made me smile. This idea is almost as old as the web, or at least as old as WordPress... don't ask me dates, but we are talking decades old! I still remember fiddling with [Gravatar](https://gravatar.com/) defaults profile pictures, starting with [identicons](https://en.wikipedia.org/wiki/Identicon) then graduating to [Robohash](https://robohash.org/) and many others after that. Facehash feels like that same idea brought up to date for modern React apps, generating soft minimalist faces from arbitrary strings using SVGs that are created directly in the browser, with no external image service or asset pipeline to worry about. If, in recent times, you have seen things like [DiceBear](https://www.dicebear.com/) or [Boring Avatars](https://boringavatars.com/) you already know how delightful this can be, and here it becomes not just a fun technical trick for turning data into art but a very practical way to spice up default profile pictures in your app at almost zero cost, since everything runs entirely on the client.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A New Meta Tag for Respecting Text Scaling on Mobile",
        "url": "https://matuzo.at/blog/2026/text-scaling-meta-tag",
        "description": "This is one of those tiny web platform updates that quietly mean a lot for real users. The author shows how Firefox already respects system font size while Chrome and Safari still ignore it for web content, then introduces a proposed text scale meta tag that finally lets us opt in to matching user text scaling preferences. The examples make the difference between fixed pixel values and relative units crystal clear and there is a nice reality check about layout issues you need to test for before flipping this on in production.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "vouch: A community trust management system based on explicit vouches to participate.",
        "url": "https://github.com/mitchellh/vouch",
        "description": "This project scratches a very real itch for anyone running an open source community or internal platform. Vouch lets you gate sensitive actions on an explicit web of trust, so people must be vouched in before they can do things like merge, deploy, moderate, or even open a pull request in the first place, which feels very relevant with the wave of low quality AI slop PRs that many high profile projects are drowning in right now. The interesting bit for me is that Vouch lists can form a real web of trust. You can configure a project to read other projects lists of vouched or denounced users, so communities with shared values can share their trust decisions and build a larger, more comprehensive network of trust across the ecosystem. Someone who has already proven trustworthy in one repo can automatically be treated as trustworthy in another, and the same goes for users who have been explicitly blocked. Everything lives in a simple flat file format with ready made GitHub integration through Actions and a CLI, so you can start experimenting without tearing up your existing workflow. And as a final nudge, this comes from Mitchell Hashimoto, the same mind behind Vagrant, Terraform, Ghostty and a bunch of other staples in our tooling, which is one more reason I think it is worth checking out. [**Check Repo**](https://github.com/mitchellh/vouch)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "AI Makes the Easy Part Easier and the Hard Part Harder for Developers",
        "url": "https://blundergoat.com/articles/ai-makes-the-easy-part-easier-and-the-hard-part-harder",
        "description": "This essay put into words a tension I have been feeling for a while. If you have read the editorials in the last couple of issues of this newsletter you already know I am right in the middle of this, caught between AI assisted coding that feels like super powers and the sense that it is quietly stealing something beautiful and artisanal from us. Writing code was never the truly hard part of our job. The real difficulty is investigation, context gathering, and validation, and the author shows how handing the simple bit to AI can leave us with only the hardest parts of the work, often without the understanding we need to judge the generated code. I have to admit, I miss sitting down to actually write code and to learn the tiny domain specific details of a language or framework that make you go from “it works” to “this is excellent.” This piece captures how over relying on AI can quietly steal that kind of mastery from you. I especially liked the concrete stories about vibe coding gone wrong and the framing of AI as a senior level skill with junior level trust, which feels like a very healthy mindset to bring into real teams.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Browser Hates Surprises",
        "url": "https://frontendmasters.com/blog/the-browser-hates-surprises",
        "description": "I adore articles that change how I think about the browser and this one absolutely does that. We often treat the browser like a canvas, a blank slate waiting for us to paint pixels, but this piece argues that the browser is really a constraint solver that is negotiating geometry with you at high speed every time a page loads. You hand it your rules in HTML and CSS, and when you give it all the “math” up front the result feels magical. stable, buttery smooth, no surprises. When you do not, when an image loads late, a scrollbar suddenly appears, or a font swap nudges everything around, you break the spell and jank shows up in the form of layout shift and terrible CLS scores. The article walks through a chaotic “bad” demo first so you can really feel the pain, then shows how small changes like reserving space for images, planning for scrollbars, setting aspect ratios, and coordinating data fetching can turn the same page into something calm and predictable. If you have ever yelled at Core Web Vitals, this is a great tour of how to stop surprising the browser and start orchestrating the rendering engine instead.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Laws of UX: Using Psychology to Design Better Products & Services",
      "author": "Jon Yablonski",
      "description": "An understanding of psychology—specifically the psychology behind how users behave and interact with digital interfaces—is perhaps the single most valuable nondesign skill a designer can have. The most elegant design can fail if it forces users to conform to the design rather than working within the \"blueprint\" of how humans perceive and process the world around them.\nThis practical guide explains how you can apply key principles in psychology to build products and experiences that are more intuitive and human-centered. Author Jon Yablonski deconstructs familiar apps and experiences to provide clear examples of how UX designers can build experiences that adapt to how users perceive and process digital interfaces.\nYou'll learn:",
      "coverImageUrl": "./44d5304d991b16f0c923478333f8b8e26feb6f26c681b450b96936999bb3fb9f.jpg",
      "amazonUs": "https://www.amazon.com/dp/149205531X",
      "amazonUk": "https://www.amazon.co.uk/dp/149205531X"
    },
    "additionalLinks": [
      {
        "title": "broz: A simple, frameless browser for screenshots",
        "url": "https://github.com/antfu/broz"
      },
      {
        "title": "Building Bulletproof React Components",
        "url": "https://shud.in/thoughts/build-bulletproof-react-components"
      },
      {
        "title": "Bear UI Component Library",
        "url": "https://bearui.com/"
      },
      {
        "title": "Announcing TypeScript 6.0 Beta",
        "url": "https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta"
      },
      {
        "title": "Virtual File System for Node.js",
        "url": "https://github.com/nodejs/node/pull/61478"
      },
      {
        "title": "It’s about to get a lot easier for your JavaScript to clean up after itself",
        "url": "https://piccalil.li/blog/its-about-to-get-a-lot-easier-for-your-javascript-to-clean-up-after-itself"
      },
      {
        "title": "Next.js at Enterprise Level",
        "url": "https://techhub.iodigital.com/articles/nextjs-at-enterprise-level"
      },
      {
        "title": "rpxy: simple and ultrafast reverse-proxy",
        "url": "https://rpxy.io/"
      },
      {
        "title": "How a Broken Heart (emoji) Broke a Website's Performance!",
        "url": "https://allenpike.com/2026/a-broken-heart"
      },
      {
        "title": "Shades of Halftone",
        "url": "https://blog.maximeheckel.com/posts/shades-of-halftone"
      },
      {
        "title": "Trying to Make the Perfect Pie Chart in CSS",
        "url": "https://css-tricks.com/trying-to-make-the-perfect-pie-chart-in-css"
      },
      {
        "title": "An insightful read on how a top engineer uses Claude Code effectively",
        "url": "https://boristane.com/blog/how-i-use-claude-code/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 455,
    "title": "Nice Select, Bro",
    "slug": "2026-02-09-435-nice-select-bro",
    "date": "2026-02-09",
    "templateType": "buttondown-markdown",
    "intro": "Good day,\n\nIn the last few weeks I have been building a couple of AI powered websites and workflows where users can do things like query databases in plain English, then get results back as inline tables, charts, or even downloadable Excel files with pivot tables, color graded cells, and embedded charts. It feels a bit like giving people a new set of superpowers, without forcing them to learn SQL first.\n\nI am pretty convinced AI powered web apps are going to be a major trend this year, and for a long time after. The adoption barrier drops hard when users can simply describe what they want and the app figures out the gnarly parts under the hood. The big question is, where do you even start building this stuff? I have been exploring the growing universe of agentic workflow tools, like [Vercel AI SDK](https://ai-sdk.dev/), [TanStack AI](https://tanstack.com/ai), [Rig](https://rig.rs/) (Rust), and [Strands](https://strandsagents.com/) (from AWS, Python and TypeScript) and many more. So far I am enjoying TanStack AI quite a lot, even if it is still early and has a few rough edges and missing features.\n\nIf you are building anything in this space, please keep me in the loop. Reply to this email and tell me what you are working on, what tools you are using, and what is driving you nuts (or making you smile). I can definitely learn a lot from fellow fullstack engineers on these shiny new topics.\n\nNow, let us get into the curated content. I really like how this issue turned out. It is a fun mix of practical and inspirational pieces, and I hope you will enjoy it too.\n\nMay your code compile on the first try!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "It turns out the Internet is this amazing resource for everyone who has access to it",
      "author": "Alexis Ohanian",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Alexis_Ohanian?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=455-nice-select-bro"
    },
    "links": [
      {
        "title": "Nice Select, Bro!",
        "url": "https://nerdy.dev/nice-select",
        "description": "This feels like a perfect sequel to our favourite pick of two weeks ago: [“The Incredible Overcomplexity of the Shadcn Radio Button.”](https://buttondown.com/fullstackbulletin/archive/453-the-incredible-overcomplexity-of-the-shadcn-radio-button/) Instead of reaching for a fully custom select with a pile of div soup, this article shows just how far a real, native `<select>` can go today when you lean into the platform. It walks through a “nice select” build that keeps all the good native stuff, like accessibility, keyboard behavior, and default semantics, while layering on the kind of polish that usually screams “custom component.” Think crisp styling, smooth open and close motion, theme friendly visuals, clever handling for long lists, and little UX touches that make the dropdown feel premium instead of clunky. The best part is that most of it is CSS, with only a tiny bit of JavaScript to help with alignment and positioning. If you have ever built a custom select and instantly regretted it, this is a hopeful look at a future where the web needs fewer hacks, and you spend more time shipping features instead of rebuilding form controls from scratch.",
        "imageUrl": "./6635f914270bc57139abfb19574f1bd8d0a27d51ae94518f7fee7681d0a29e72.jpg",
        "featured": true
      },
      {
        "title": "Node.js Path Traversal: Prevention & Security Guide",
        "url": "https://nodejsdesignpatterns.com/blog/nodejs-path-traversal-security",
        "description": "Last week I finally managed to publish this article, after working on it for a while. I had the first draft ready three months ago, then it got lost on my overcrowded (and perhaps disorganized) TODO list, so I truly hope you will enjoy it. The topic is path traversal, and it is kind of scary how it is silently becoming the new SQL injection. It pops up in a ton of places, basically every time where a user input can somehow influence reading from a given file path. When it slips through, the exploits can get wild fast, like reading sensitive files, leaking secrets, and using that access as the first step for dangerous lateral movement toward something worse. The goal of this piece is to educate and give you a framework. How to spot the risky patterns, how to reason about trust boundaries and path resolution, and how to harden your code so paths cannot escape where they should live. It also does not stop at JavaScript and Node.js techniques. It pushes you to think in multiple defense layers (security in depth), which is one of those essential mindsets if you want to write reliable production code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Patterns of Legacy Displacement",
        "url": "https://martinfowler.com/articles/patterns-legacy-displacement",
        "description": "I have been working for the last five years or so as a Cloud Architect, and after seeing a whole parade of modernization projects up close, this one hit very close to home. It puts words and structure around a problem a lot of teams quietly suffer through. Legacy displacement can turn into an endless treadmill where you keep “replacing the old system” without ever truly getting to the finish line. What I like here is how grounded it stays. It pushes you to start with the uncomfortable question teams often skip. What outcome are you actually aiming for. Faster delivery, lower risk, retiring a platform, surviving a vendor change, untangling a business process. From there, it lays out patterns for making progress without betting everything on a single big bang cutover. Expect incremental moves, transitional architecture you will eventually delete, and lots of attention to the human side of change, not just the code and infrastructure. Also, if you are working more as a leader or architect, or you are aiming to grow into that kind of role, this is a fantastic read. It gives you a vocabulary for the tradeoffs, and a way to guide the conversation away from heroic rewrites and toward steady, survivable change. And yes, this is probably a bit of a step up if you have been focused mostly on the fullstack trade, but it is the kind of step that gives you a wider perspective. It is also surprisingly applicable to the kinds of projects you will run into again and again, especially once you are the person people look to when the word “modernization” shows up on the roadmap.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "otpauth: JavaScript Library for Implementing One Time Passwords",
        "url": "https://github.com/hectorm/otpauth",
        "description": "Last week I accidentally bumped into this nice little library, and I honestly cannot wait to find an excuse to use it. OTPAuth is a clean, no drama toolkit for one time passwords. It covers both HOTP and TOTP, and it runs basically everywhere you care about, including Node.js, Deno, Bun, and the browser. What I like is that it does not stop at “here is a code generator.” It handles the real setup flow stuff too, like building and parsing `otpauth://...` URIs for QR codes, which is exactly the glue you need for onboarding screens, authenticator apps, and migrations. It also feels thoughtfully designed around correctness and security, with sensible guidance on secrets, validation windows, and the realities of server side verification. If you want a practical demo of what you can do with it, there is a [dedicated browser sandbox](https://otpauth.molinero.dev/) you can play with to see the whole thing working end to end. And if you have ever been confused by the difference between OTP, TOTP, and HOTP, [this companion read](https://www.onelogin.com/learn/otp-totp-hotp) is for you...  [**Check Repo**](https://github.com/hectorm/otpauth)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Performance-Optimized Video Embeds with Zero JavaScript",
        "url": "https://frontendmasters.com/blog/performance-optimized-video-embeds-with-zero-javascript",
        "description": "Have you ever noticed that the moment you drop a single YouTube embed into a page, Lighthouse starts swearing against you? Even if you have never looked at a performance report in your life, this one is still for you. It shows a clever way to add `<iframe>` embeds without destroying your site’s performance. The trick feels almost unfair. The heavyweight player only loads after someone actually clicks play, and it does it with zero JavaScript. You render a lightweight, styled thumbnail inside `<summary>` so it looks like a real embed, then keep the real iframe behind a `<details>` toggle with `loading=\"lazy\"` so the browser does not sprint to fetch the player upfront. The extra magic is in the CSS. When `<details>` opens, the preview thumbnail gets hidden and the `<iframe>` takes its place cleanly, so there is no layout shifting. The handoff is so smooth you barely notice `<details>` is involved at all (unless you take a look at the DOM). I have been using `<details>` and `<summary>` for FAQ sections for a while now, because you get a clean zero-JS solution out of the box. But it would have never crossed my mind to apply the same idea to video embeds. Honestly, absolutely genius level stuff.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Explicit resource management in JavaScript",
        "url": "https://allthingssmitty.com/2026/02/02/explicit-resource-management-in-javascript",
        "description": "This is one of those JavaScript features that is still relatively new, but also not so new anymore. And yet I still have not seen it used enough in the wild, which makes me think it is mostly a knowledge gap, not a lack of usefulness. That is why I loved this short, super clear intro. It makes the idea click fast. BTW, this has been available in Node.js since 20.4.0, which is about two and a half years ago! The feature is **Explicit Resource Management**, and it basically turns cleanup of resources (file handles, locks, or even promises and streams) into something the language can reliably guarantee for you. You get the new `using` syntax (and `await using`), which makes cleanup a property of scope (once the variable goes out of scope, the associated resource is automatically cleaned up). Instead of manually wiring `try` and `finally` and then hoping your code stays correct through refactors, you declare the resource right where you acquire it and JavaScript takes it from there. This can be a lifesaver for avoiding accidental memory and resource leaks. And if you ever need to implement custom resources, they opt in by exposing `Symbol.dispose` for sync cleanup, or `Symbol.asyncDispose` for async cleanup. When execution leaves the scope (success, early return, or error), disposal runs automatically. And if your code does not fit neatly into a single block, `DisposableStack` and `AsyncDisposableStack` let you register cleanup steps and dispose them reliably at the end. I had not even heard of those two before, so this article was a real winner for me. It gave me a clean mental model, plus a couple of practical tools I genuinely want to start using.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "prefill: Partial application for React components",
        "url": "https://www.xoid.dev/blog/introducing-prefill",
        "description": "If your component folder is slowly filling up with wrappers like `StyledButton`, `PrimaryButton`, `DangerButton`, and `SlightlyDifferentDangerButton`, this one will feel weirdly cathartic. It introduces `prefill`, a tiny React utility that treats “preconfiguring a component” as a real primitive. The idea is simple: compose props before they reach the component, so you can lock in defaults, inject styles, or adapt an API without writing yet another wrapper. The examples make it click fast. Instead of wrapping a library component just to sprinkle defaults, you `prefill(Component, { ... })` and get nice extras like sane merging for `className` and `style`, preserved `displayName`, and fewer ref and typing headaches. It even helps with prop hygiene, so config only props do not accidentally leak onto DOM elements.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell, Charles Brewer, and Aynne Valencia",
      "description": "Designing good application interfaces isn't easy now that companies need to create compelling, seamless user experiences across an exploding number of channels, screens, and contexts. In this updated third edition, youâ??ll learn how to navigate through the maze of design options. By capturing UI best practices as design patterns, this best-selling book provides solutions to common design problems.\nYouâ??ll learn patterns for mobile apps, web applications, and desktop software. Each pattern contains full-color examples and practical design advice you can apply immediately. Experienced designers can use this guide as an idea sourcebook, and novices will find a road map to the world of interface and interaction design.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492051969",
      "amazonUk": "https://www.amazon.co.uk/dp/1492051969"
    },
    "additionalLinks": [
      {
        "title": "The Browser’s Little White Lies",
        "url": "https://blog.jim-nielsen.com/2026/browsers-white-lies"
      },
      {
        "title": "The Too Early Breakpoint",
        "url": "https://ishadeed.com/article/too-early-breakpoint"
      },
      {
        "title": "Solving Shrinkwrap: New Experimental Technique",
        "url": "https://kizu.dev/shrinkwrap-solution"
      },
      {
        "title": "Building an RSS Aggregator with Astro",
        "url": "https://raymondcamden.com/2026/02/02/building-an-rss-aggregator-with-astro"
      },
      {
        "title": "Ship types, not docs",
        "url": "https://shiptypes.com/"
      },
      {
        "title": "Docker Sandboxes: Run Claude Code and More Safely",
        "url": "https://docker.com/blog/docker-sandboxes-run-claude-code-and-other-coding-agents-unsupervised-but-safely"
      },
      {
        "title": "The Secret Life of JavaScript -  The Generator",
        "url": "https://dev.to/aaron_rose_0787cc8b4775a0/the-secret-life-of-javascript-the-generator-1fi5"
      },
      {
        "title": "Combobox vs. Multiselect vs. Listbox: How To Choose The Right One",
        "url": "https://smashingmagazine.com/2026/02/combobox-vs-multiselect-vs-listbox"
      },
      {
        "title": "Infonomic UI Kit - An opinionated UI kit",
        "url": "https://github.com/infonomic/uikit"
      },
      {
        "title": "Exploring Lambda Durable Functions (AWS Bites Podcast)",
        "url": "https://awsbites.com/152-exploring-lambda-durable-functions/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 454,
    "title": "How to make an HTTP request in Node.js",
    "slug": "2026-02-02-434-how-to-make-an-http-request-in-node-js",
    "date": "2026-02-02",
    "templateType": "buttondown-markdown",
    "intro": "Howdy,\n\nIt has been a busy one for me. I am juggling a few different projects that I hope I will be able to talk more about soon, or at least some of them. My TODO list currently has its own TODO list (sorry if that feels too meta).\n\nStill, somehow, I managed to squeeze a fresh Node.js article into the chaos, and you will find it featured in this issue. I hope you will like it.\n\nThen go spelunking through the rest of the links, because there is a lot of good stuff in there.\n\nAs always, if you have any feedback or ideas for future topics, just hit reply. I am all ears, and you know I love hearing from you.\n\nTime to explore and experiment!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Code is like humor. When you have to explain it, it's bad",
      "author": "Cory House",
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "How to make an HTTP request in Node.js",
        "url": "https://nodejsdesignpatterns.com/blog/nodejs-http-request",
        "description": "I just published a long form guide on how to make HTTP requests in Node.js the modern way. Yes, it covers `fetch()`, but that is the easy part. The goal is to help you build the kind of request code you can actually trust, with real error handling, sensible retries, streaming uploads and downloads, form submissions, plus practical testing and mocking. I also try to make the tradeoffs clear, so you know when `fetch()` is the right tool versus when you should reach for the built in `node:http(s)` modules or another library. I am also trying to show up more consistently with new Node.js content on the [Node.js Design Patterns blog](https://nodejsdesignpatterns.com/blog/). If you read it, I would love your feedback, and I would love to hear what you want me to write about next. If you are really curious, I have a [content calendar](https://github.com/nodejs-design-patterns-book/nodejsdesignpatterns.com/blob/main/.claude/content-calendar.md) you can have a peek at too.",
        "imageUrl": "./801c62059dad9d1a82769c5c010db4fe233de4ef519e8b9c4352d84fae73edb1.png",
        "featured": true
      },
      {
        "title": "How to Favicon in 2026",
        "url": "https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs",
        "description": "Oh jeez. Favicons have been around for almost as long as I have built for the web (a long time, we are talking Internet Explorer 6 type of stuff). And maybe that is the reason why for the longest time `favicon.ico` was the only thing anyone cared about (yes, a Windows file format!). But things have evolved a lot in the last decade. You can do all kinds of ridiculous stuff with favicons now, including generating them on the fly with animations, or even [squeezing tiny games](https://mashpoe.github.io/favicon-dino-game) into a 16×16 pixel space if that is your vibe. So you might be wondering *what's the recommended way to deal with favicons in 2026?* Fair question, I'd say! This article cuts through all the favicon generator chaos and shows a clean, modern baseline that covers almost everything with just a few files: one legacy ICO, one SVG for modern browsers (with light and dark support), an Apple touch icon, plus a simple web manifest with a small set of PNG icons for PWAs.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building docfind: Fast Client-Side Search with Rust and WebAssembly",
        "url": "https://code.visualstudio.com/blogs/2026/01/15/docfind",
        "description": "OK, if you know me, you know that just hearing the word *\"Rust\"* triggers my attention (perhaps in an unhealthy way)... but that's not the point, so hear me out because this is a genuinely awesome piece. The Visual Studio Code team built a tiny search engine called **docfind** that runs entirely in your browser via WebAssembly. The goal was simple: make docs search feel as instant as *Quick Open* in VSCode, without sending every keystroke to a server or paying the usual search as a service tax. The post walks through the whole engineering story, from picking compact building blocks like finite state transducers for fast lookups, to extracting keywords during the site build, compressing strings, and even patching a precompiled WebAssembly module so the index ships as a single file. The result is delightfully practical: fast queries, a reasonably small download, and zero servers to babysit. If you love this approach but you want a simple and more managed solution, I am a big fan of [Orama](https://orama.com/). Worth checking it out too, since it also comes with an [open-source version](https://github.com/oramasearch/orama).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The challenges of soft delete",
        "url": "https://atlas9.dev/blog/soft-delete.html",
        "description": "Did you ever need to implement a *soft delete* feature in an application? I am talking about those kind of apps that do not just delete things and nuke them out of existence forever. Instead, they *pretend* your item is deleted, but in reality it is more like it got moved into a trash bin so you could technically revert the deletion if you did it by mistake or changed your mind about it. The classic implementation relies on a flag or a timestamp on the record to mark it as deleted. And that is where offering this feature, while convenient for the user, becomes a *leaking abstraction* everywhere in your codebase. Because now, almost every query needs to make sure to filter out soft deleted records, right? This article is a very practical reality check. It explains why the classic `deleted_at` or `archived_at` column tends to snowball into performance headaches, broken invariants, weird edge cases with uniqueness, and endless *“oh wait, this query forgot the filter”* moments. Then it proposes cleaner alternatives that keep your hot tables clean by archiving deleted rows somewhere else, like a dedicated archive table via database triggers, or an event or CDC pipeline if you already have that kind of machinery. The idea is simple: if you want recoverability, do it intentionally, not by sprinkling a deletion flag across your entire data model.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Animating with Mobile Accelerometers",
        "url": "https://frontendmasters.com/blog/beyond-the-mouse-animating-with-mobile-accelerometers",
        "description": "With this link we enter into *fancy animations that make websites look good and well designed territory*. If you care about all the tiny details I am sure you will find this pick brilliant. The gist is simple and super practical. Those lovely 3D hover tilt effects that you are seeing everywhere feel great on desktop, then mobile shows up and the whole thing turns into a lifeless experience. This article shows how to make the phone itself the input device by wiring motion sensors into your animation logic, so the same component can react to mouse movement on desktop and device motion on mobile. It also covers the real world gotchas: skip user agent detection and rely on feature checks instead, handle the iOS permission prompt with an explicit user gesture, then map motion data into CSS variables for smooth transforms. Bonus points for the section that explains the difference between relative motion and absolute orientation, because picking the wrong one will not give you great results.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How Browsers Work",
        "url": "https://howbrowserswork.com/",
        "description": "This is the kind of question you might get in a senior level interview, and yet many of us, even the most senior, might struggle to even approach it. There are so many layers of abstraction that it is hard to explore and explain them in a coherent way. And guess what, for sure, there is stuff we think we know which in reality we do not know so well. Finally, there are even the unknown unknowns. Web browsers are such a rabbit hole. If you ever wondered why there are not many browser providers, this will make you realize that building a fully fledged browser is a no joke type of task. Anyway, I think I made this sound scarier than it needs to be, because this guide actually captures most of that complexity in a relatively short and fun, interactive read. It walks you from what the address bar really accepts, to turning a URL into an HTTP request, DNS and TCP basics, then the browser pipeline of parsing HTML into the DOM, and finally layout, paint, and compositing. Go check it out and make sure your mental model is solid for your next interview, or for the next time you build anything for the web.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JavaScript Frameworks: Heading into 2026",
        "url": "https://dev.to/this-is-learning/javascript-frameworks-heading-into-2026-2hel",
        "description": "Ryan Carniato (SolidJS creator) has been writing these “heading into next year” framework roundups for a few years now, and I love reading them. He is one of the very few high profile builders in the web world who seems to have genuinely touched, studied, and stress tested a ridiculous number of frameworks. So when he compares trends and makes predictions, even when he is being spicy and opinionated, it is surprisingly hard to poke holes in the argument. This year he frames 2025 as a turning point where AI changed what “wins” in framework land. Not because frameworks stop evolving, but because AI tends to amplify whatever has the biggest training set, while also getting better at stitching together smaller ecosystems over time. He points at Remix 3 as an “AI first” redesign that tries to reduce custom DSL so generic code is easier to generate and integrate, then zooms out to a broader swing back toward “isomorphic first” patterns that run the same app code on server and client, without committing to a full architecture shift like Islands or React Server Components. The other big thread is “async first” becoming table stakes. He connects React’s path through Transitions, Actions, and useOptimistic with similar consistency goals showing up elsewhere, arguing that the next wave of improvements is less about shiny new abstractions and more about core refinement that will quietly reshape how we build apps in 2026.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Learning TypeScript: Enhance Your Web Development Skills Using Type-Safe JavaScript",
      "author": "Josh Goldberg",
      "description": "TypeScript has conquered the world of JavaScript -  it's one of the world's fastest growing and most popular languages across developer surveys, widely used in consumer and business companies alike, and frequently credited for helping massive web applications scale. But what is TypeScript? How does it work, why does it work, and how can we use it?\nLearning TypeScript takes beginner to intermediate JavaScript programmers from knowing nothing about \"types\" or a \"type system\" to full mastery of the fundamentals of TypeScript. It's more than a means to find bugs and typos--it's a useful system for declaring the way our JavaScript should work and helping us stick to it. You'll learn how TypeScript:",
      "coverImageUrl": "./471be70fb34890cf5d71d2d68cb0dcb4419b08e5d8b51e57dc0e92c9640027de.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098110331",
      "amazonUk": "https://www.amazon.co.uk/dp/1098110331"
    },
    "additionalLinks": [
      {
        "title": "superdiff: rich and readable diff for both arrays and objects",
        "url": "https://github.com/DoneDeal0/superdiff"
      },
      {
        "title": "Unconventional PostgreSQL Optimizations",
        "url": "https://hakibenita.com/postgresql-unconventional-optimizations"
      },
      {
        "title": "Extension.js",
        "url": "https://extension.js.org/"
      },
      {
        "title": "travels: A fast, framework-agnostic undo/redo core powered by Mutative JSON Patch",
        "url": "https://github.com/mutativejs/travels"
      },
      {
        "title": "Dithering - Part 2",
        "url": "https://visualrambling.space/dithering-part-2"
      },
      {
        "title": "Introducing ReliCSS: A Tool for Front-End Archaeology",
        "url": "https://alwaystwisted.com/articles/introducing-relicss-a-tool-for-front-end-archaeology.html"
      },
      {
        "title": "Detail: Where craft lives",
        "url": "https://detail.design/"
      },
      {
        "title": "solid-ui",
        "url": "https://solid-ui.com/"
      },
      {
        "title": "pellicule: Deterministic video rendering with Vue",
        "url": "https://github.com/sailscastshq/pellicule"
      },
      {
        "title": "Temporal Playground - Learn the JavaScript Temporal API",
        "url": "https://temporal-playground.vercel.app/"
      },
      {
        "title": "Stroke - Animate SVGs",
        "url": "https://stroke.abhii.space/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 453,
    "title": "The Incredible Overcomplexity of the Shadcn Radio Button",
    "slug": "2026-01-27-433-the-incredible-overcomplexity-of-the-shadcn-radio-button",
    "date": "2026-01-27",
    "templateType": "buttondown-markdown",
    "intro": "This issue is kindly sponsored by",
    "quote": {
      "text": "So much complexity in software comes from trying to make one thing do two things",
      "author": "Ryan Singer",
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "The Incredible Overcomplexity of the Shadcn Radio Button",
        "url": "https://paulmakeswebsites.com/writing/shadcn-radio-button/",
        "description": "I admit, when I read the title of this one I was skeptical. It sounded like the usual *“look how silly the JavaScript world is”* take. Then I read it, and an old, dismissed feeling came back to me. You know, the first time I tried **shadcn/ui**, I was not really sold. The components looked great, but the implementation felt heavier than it needed to be for a lot of the basics. Then I kept using it, because the convenience is real and the results look good fast, and that nagging feeling basically vanished. This article brings it back in the best way. It walks through how a simple `<input type=\"radio\">` turns into a little universe of React wrappers, Radix primitives, ARIA plumbing, Tailwind classes, and even an icon dependency just to draw a circle. And the author is not dunking on libraries. The point is sharper than that. We keep rebuilding native controls because styling used to be painful, even though modern CSS can often get us what we want without dragging in a whole stack. I have a strong feeling now that maybe I should reconsider my choice of UI libraries and pick something simpler that leans on web standards a bit more. Any suggestions?",
        "imageUrl": "./bcc8a79e1791619c2a8a89c5b9e6a9e397e5fc05ec4c09d40539cb2b4b0fab74.jpg",
        "featured": true
      },
      {
        "title": "Tiled Words (web Game)",
        "url": "https://tiledwords.com/",
        "description": "OK, I admit I feel a bit like a stalker mentioning this one. After reading the previous article, I got curious and clicked around the author’s site *“just a little.”* That is when I found they built this awesome daily game. It feels like a genius mashup of a **classic crossword** and **Tetris**. You drag tiles around, rotate them, and slowly turn a messy board into something that actually makes sense. It is not our usual link to a web resource or tutorial, but it is a perfect little break when your brain needs a reset. Or maybe it is not a break at all, because I *also* went snooping on GitHub and found what looks like [the full source code](https://github.com/Paul-Hebert/tiled-words) of the game. It is a clean **Vue** + **Vite** project, and it is such a fun example of how you can build a beautiful, entertaining web game without having to learn Unity or Unreal. [**Take a Break and Play**](https://tiledwords.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Basecoat UI",
        "url": "https://basecoatui.com/",
        "description": "...And speaking of simpler alternatives to shadcn, one that got mentioned at the end of the featured article is Basecoat UI. The vibe is familiar (copy the component into your codebase, tweak it, ship it), but it is not trying to pull you into a React shaped world. It leans on CSS variables, Tailwind, and a CLI to grab the pieces you want, which makes it feel like a nice fit for full stack apps that render on the server, live in templates, or just want solid UI building blocks without adopting a whole runtime framework. I have not had a chance to use this one yet, but it seems quite well done. Could be especially interesting for a static website you want to keep simple and content-focused and doesn't need a full blown React frontend... Have you already seen it used in the wild? [**Browse Components**](https://basecoatui.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Extism",
        "url": "https://extism.org/",
        "description": "A few days ago I was working on implementing a spec for signing HTTP responses. Since I was in Rust mode, I ended up building a little Rust library for it. Then I hit the annoying part. The spec is still pretty new, I could not find many implementations (even in other languages), and I kept thinking, “How do I share this with other people without forcing them to adopt Rust?” That question is what led me to Extism. Extism is basically a practical way to ship logic across languages using WebAssembly. You compile your code once, then host it as a plugin inside apps written in all sorts of languages, with a tighter sandbox and a capability based surface so you are not handing out the keys to the kingdom. If you have ever wanted a plugin system, customer specific extensions, or a safe “bring your own logic” workflow, this feels like a really interesting foundation to explore. [**Check it out**](https://extism.org/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Common Expression Language (CEL)",
        "url": "https://cel.dev/",
        "description": "This one has a fun little origin story that ties nicely to the previous link. I was recently updating [my open source OIDC Lambda authorizer](https://github.com/lmammino/oidc-authorizer) and I wanted a clean way to let users express extra validation rules on the OIDC JSON Web Token without them having to fork the code. This comes up a lot in the real world. People want to validate custom claims, and once you open that door, it quickly becomes a “how do I support every weird check without hardcoding everything” problem. And it is a tricky problem. You want to support checks like “is this claim present,” “is it within a range,” “is it one of these allowed values,” and even arbitrary combinations using logical operators like AND and OR. You could let users write JavaScript or Python, but then you have to sandbox it, and you really do not want to slow down something as hot as auth that runs on basically every request. I could have used Extism, but that felt a bit heavy handed for this specific niche use case. That is when I discovered CEL (Common Expression Language). CEL gives you tiny, safe logic that is fast, portable, and intentionally constrained. The best part is it is available across most of the trending languages (yes, including Rust in my case), and it is surprisingly easy to integrate. Maybe my example is a bit too niche, but the same idea applies to much more generic problems too: think of a rule system for coupon eligibility in an e-commerce checkout, or a car rental pricing engine where discounts, surcharges, and eligibility constraints need to be expressed as composable rules. Also, if you want to learn it or just sanity check an expression, there is [a nice little web playground](https://playcel.undistro.io/). I had a lot of fun using this and I am sure I'll use it again in the future! [**Learn More**](https://cel.dev/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js is getting a config file",
        "url": "https://docs.google.com/presentation/d/1Vcezsx8QZLN9IXov_VG0Nj3XIG15uGnoas8L8oZWItI/edit?usp=sharing",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "SeqFlow JS",
        "url": "https://github.com/allevo/seqflow-js",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "TypeScript Cookbook: Real World Type-Level Programming",
      "author": "Stefan Baumgartner",
      "description": "TypeScript is one of the most important tools for JavaScript developers. Still, even experienced developers wonder why the TypeScript compiler is throwing squiggly red lines at them. Enter TypeScript Cookbook. With this practical guide, author Stefan Baumgartner provides senior engineers with solutions for everyday TypeScript problems.\nIf you're conversant with TypeScript as well as JavaScript basics, this book provides actionable recipes to help you tackle a wide array of issues. From setting up complex project structures to developing advanced helper types, each self-contained recipe guides you through the problem and discusses why and how a solution works.\nThe ideal companion for your ongoing TypeScript journey, this cookbook helps you:",
      "coverImageUrl": "./0d9c062f0813cf1276c0d481c32696b12aef9e6f54af306b5a1e96033ab08de2.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098136659",
      "amazonUk": "https://www.amazon.co.uk/dp/1098136659"
    },
    "additionalLinks": [
      {
        "title": "Open Props custom media recipes",
        "url": "https://css-tricks.com/open-props-custom-media-recipes/"
      },
      {
        "title": "Responsive hexagon grid using modern CSS",
        "url": "https://css-tricks.com/responsive-hexagon-grid-using-modern-css/"
      },
      {
        "title": "Understanding the fundamentals of CSS Layout",
        "url": "https://polypane.app/blog/understanding-the-fundamentals-of-css-layout/"
      },
      {
        "title": "Faking a Fieldset Legend",
        "url": "https://cloudfour.com/thinks/faking-a-fieldset-legend/"
      },
      {
        "title": "How to write a good spec for AI agents",
        "url": "https://addyosmani.com/blog/good-spec/"
      },
      {
        "title": "In The Beginning There Was Slop",
        "url": "https://blog.jim-nielsen.com/2026/in-the-beginning-slop/"
      },
      {
        "title": "robots.txt issues can get your site delisted",
        "url": "https://www.alanwsmith.com/en/37/wa/jz/s1/"
      },
      {
        "title": "Responsive and Fluid Typography with Baseline CSS Features",
        "url": "https://www.oddbird.net/2026/01/08/typography-baseline-css/"
      },
      {
        "title": "EC2 loves Lambda - Lambda Managed Instances (AWS Bites podcast)",
        "url": "https://awsbites.com/151-ec2-loves-lambda-lambda-managed-instances/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 452,
    "title": "Crazy stuff you can do with ASCII and a bit of JavaScript",
    "slug": "2026-01-19-432-crazy-stuff-you-can-do-with-ascii-and-a-bit-of-javascript",
    "date": "2026-01-19",
    "templateType": "buttondown-markdown",
    "intro": "Heyo,\n\nCrazy that we are already more than halfway through January 2026. This year is flying already!\n\nAnd this simple thought, somehow, got me thinking about *pace*. Am I going too fast and doing too many things at once? Too many ideas, too many tabs, too many “I should learn this” threads running in parallel? Most likely, yes! I known, I know... It is a bit of an eternal struggle for me, and it's probably because the full-stack World moves fast, too fast, and my brain loves to sprint... even though I can barely keep up!\n\nBut after all, that is one of the many reasons why this newsletter exists. Part of it is pure curiosity, and part of it is my attempt to stay grounded. If I am going to chase the ever evolving web anyway, I might as well turn that anxious energy and all the material I try to digest into a weekly guide of things that, I believe, are genuinely interesting, useful, or inspiring. For you, and for me.\n\nBut enough of me rambling. Let’s get into the good stuff.\n\nOh, I almost forgot! If, after reading this issue, you found something particularly inspiring, please reply to this email and tell me, *“Hey Luciano, you know, that stuff was particularly cool.”* It might not seem like much, but messages like that remind me this work is useful to you too, and they keep me going. Plus I love hearing from readers, so do not be shy!\n\nEnjoy the journey ahead!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Not everything I say is correct. It's correct modulo the little details you're going to have to worry about",
      "author": "John Hopcroft",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Hopcroft?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=452-crazy-stuff-you-can-do-with-ascii-and-a-bit-of-javascript"
    },
    "links": [
      {
        "title": "Crazy stuff you can do with ASCII and a bit of JavaScript",
        "url": "https://play.ertdfgcvb.xyz/",
        "description": "This site is a live playground where you write a little bit of JavaScript and suddenly you are making ridiculously cool ASCII animations right in the browser. There are tons of examples to remix, including classics like the Doom Flame, the 3D rotating Donut, and even Conway’s Game of Life. My favorite are the camera based demos that redraw in realtime using your webcam input, but the Sand game is also weirdly satisfying. Under the hood, the API feels more like [GLSL](https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders) and rasterisation than “draw some shapes on a canvas.” You write a single function that gets invoked for every cell, kind of like a fragment shader. That mental model makes the examples click fast, and it nudges you toward playful, shader style experimentation. The best part is that every example is small enough to understand, then you can tweak the code, save it, and see your changes instantly. If you want to go deeper, the built in manual in the sidebar is actually great. It shows what is possible and explains the underlying APIs the playground exposes. I promise, it is fun, and sneaky educational too. You might even steal an effect or two for your next landing page! Oh, by the way, if you liked this one, you should also consider reading this [other insanely good article](https://alexharri.com/blog/ascii-rendering) about renderding with ASCII characters! [**Check the Playground**](https://play.ertdfgcvb.xyz/)",
        "imageUrl": "./e1dad1fd87d79d5e5cc7982f86265d0d5bdb7a9ab817cc392cde9d76f42470e1.jpg",
        "featured": true
      },
      {
        "title": "POSSE",
        "url": "https://indieweb.org/POSSE",
        "description": "Last week I bumped into a concept I somehow missed for years: POSSE. It stands for *Publish (on your) Own Site, Syndicate Elsewhere*. The idea is simple and kind of radical in 2026. You publish on your own site first, then you share copies or links to the usual social platforms, always pointing back to the original post so people can reply, subscribe, or interact with the real source. Your site stays the center. Everything else becomes a distribution channel, not the place your writing lives. What I like most is the mindset shift: you keep control of your content, your URLs, and your archive, while still meeting people where they already hang out. There is also a solid ecosystem of tools to make this workflow easier. I am tempted to experiment with it and even use an LLM to adapt a post for each channel, because a Bluesky thread and a LinkedIn post want totally different shapes. Have you tried POSSE already? Let me know, I am genuinely curious.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing the <geolocation> HTML element",
        "url": "https://developer.chrome.com/blog/geolocation-html-element",
        "description": "I am genuinely surprised, in a good way, to see a more declarative API like this taking shape. Chrome is introducing a new `<geolocation>` HTML element, so something that used to require JavaScript glue code and permission handling can now start as a simple bit of HTML, with the browser doing more of the heavy lifting. I love this direction, and I am really curious if we will see more web platform APIs move toward capability specific elements like this. If this trend continues, the web might get a little simpler, and a lot more ergonomic.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Date is out, Temporal is in...",
        "url": "https://piccalil.li/blog/date-is-out-and-temporal-is-in",
        "description": "If JavaScript’s `Date` has ever made you question your career choices, this piece is for you. It does a great job explaining why the current API is full of traps, from confusing parsing rules to the fact that Date objects are mutable, which is wild for something that represents an immutable moment in time. Then comes the good news: `Temporal` is the modern replacement and after being in the works for a while, it's finally here! It is a namespace packed with focused types like `PlainDate`, `ZonedDateTime`, and `Duration`, built for sane date math, real time zone handling, and fewer “wait, why did it change” bugs. This API is finally showing up in all major browsers, so it feels like a great moment to start updating your mental model. But there's one small-ish reality check: after reading this, I realized it is still not available by default in Node.js, at least not in Node 24 and Node 25. The nice part is that there is a [good polyfill](https://www.npmjs.com/package/temporal-polyfill) you can use right now, so you can start writing `Temporal` code today and swap to native support later.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Life Happens at 1x Speed",
        "url": "https://terriblesoftware.org/2026/01/08/life-happens-at-1x-speed",
        "description": "This is an inspirational little read that hit me right in the developer brain. The author explains why they stopped consuming everything at 2x and went back to 1x for podcasts, videos, and audiobooks, with a simple rule: if it is not worth it at 1x, it is not worth it at all. It is really a piece about attention, anxiety, and the quiet productivity trap of trying to optimize every minute. The line that stuck with me is the reminder that life itself runs at 1x. That said, while I am sold on the idea, I am not totally convinced it is always practical. I think I am still going to watch a few videos at 1.5x or listen to some audiobooks at 1.25x. I will probably come to regret this, but right now it still makes sense to me to squeeze something potentially interesting into less time rather than not consume it at all. If the content is particularly good and it clearly deserves more attention, I can always go back and consume it again at 1x. What do you think?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Tool UI",
        "url": "https://tool-ui.com/",
        "description": "I admit I have been curious about building agents and chatbots for a little while now. While I have built a couple of PoCs, I have not made anything I would call production ready, and it is, honestly, pretty boring stuff. I mean, why would you want anything other than ChatGPT, Claude, or the other mainstream services? Then I discovered Tool UI, and something clicked. It made me realize there are real opportunities to build very context specific chatbots, if we put special effort into creating interactive components that are specialised in what matters in a given business context. Tool UI is basically a set of beautiful React components for AI tool calls, where tools return JSON and the UI renders it as usable surfaces right inside the conversation. Typed, accessible, and easy to copy and paste. Built on Tailwind, Radix, and shadcn/ui. Need an example? Think about internal software for car dealers. You could render car cards, comparisons, financing tables, and inventory views, instead of spitting out another wall of chat text. The sky is the limit, and I would bet we will see a lot more of this over the next few years. That is why this library makes so much sense to me. It turns tool output into an experience that actually feels interactive and immersive, not just more business text. I am thinking: what if you can combine something like this with a chat UI components library like [assistant-ui](https://www.assistant-ui.com/)? You would probably get a very fast path to building something cool. I think I will play more with this in the next few months, but let me know if you have already done something similar, and which tools and libraries you used. I am super eager to learn more. [**Check it out**](https://tool-ui.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Stop turning everything into arrays (and do less work instead)",
        "url": "https://allthingssmitty.com/2026/01/12/stop-turning-everything-into-arrays-and-do-less-work-instead",
        "description": "If your JavaScript data flow looks like `map`, then `filter`, then `slice`, then another `map`, this post is a friendly nudge to pause and ask, “Do I really need to eagerly build three new arrays just to render ten items?” The core idea is simple: do less work, allocate less stuff, and stop early when you can. This is probably why I still get excited by **streams**, **iterators**, **generators**, and other lazy ways of processing data after so many years, because these tools still feel pretty underutilized and mostly unknown to many. I also built two free workshops to try to evangelise these topics more: one about [Node.js streams](https://github.com/lmammino/streams-workshop), and one about [iterators and generators (and their async counterparts)](https://github.com/lmammino/iteration-protocols-workshop). This article is a great tour of JavaScript iterator helpers, which let you chain `map`, `filter`, `take`, `drop`, and friends on iterators, not arrays. You start from something like `values()` or a generator, build a pipeline, and only materialize it at the end with something like `toArray()`. The big win is short circuiting. If you only need the first ten matching items, you can stop after ten, instead of processing thousands. It also calls out where this shines in real apps, like large lists, infinite scrolling, and async pipelines that pull from paginated APIs. Plus it covers the gotchas, like one shot iterators and the fact that logging can accidentally consume data. If you have ever wished your array chains could behave a bit more like streaming, this is worth a read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Astro Technology Company joins Cloudflare",
        "url": "https://astro.build/blog/joining-cloudflare/",
        "description": "Astro is one of those tools I have grown to love over the last couple of years. I ended up using it for almost all my static sites. I love the content centric approach, the great defaults, and how easy it is to sprinkle in components when you need them, without committing your whole site to a single client side framework. A few days ago I noticed the Astro 6 beta was putting a big spotlight on Cloudflare Workers and a smoother dev and deploy loop. That felt like a clue. Then the news dropped: the Astro Technology Company is joining Cloudflare, and the whole team is moving over. Is that a good thing or a bad thing? I admit I have mixed feelings. There is a real opportunity here for Astro to get serious backing and let the team focus on building the best possible framework for modern content driven sites. But I also cannot help wondering if Cloudflare will become the default priority, and other deployment targets will slowly feel like second class citizens. Both announcements try to calm that exact fear. They say Astro stays open source, MIT licensed, and platform agnostic, with the same open governance and public roadmap. Still, we will have to see how it plays out in practice. If you are curious, read the official posts. This one is from Astro, and of course Cloudflare has [its own](https://blog.cloudflare.com/astro-joins-cloudflare/) too.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Essential TypeScript 5, Third Edition",
      "author": "Adam Freeman",
      "description": "Now in its third edition, this bestselling guide to TypeScript takes you through the nuts and bolts of the language. No frills, no fuss—just TypeScript essentials!TypeScript enhances JavaScript with static typing, while keeping all the JS flexibility you know and love! It's the perfect choice for any developer looking to improve the predictability and reliability of their code. Essential TypeScript 5, Third Edition teaches you how to get the most out of TypeScript 5 for a consistent, dependable development experience.\nInside Essential TypeScript 5, Third Edition you'll learn how to:",
      "coverImageUrl": "./3e622765c74235b982b0f33fc11080d771f313e63f8d8529c7ac1bbe3aabbe80.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633437310",
      "amazonUk": "https://www.amazon.co.uk/dp/1633437310"
    },
    "additionalLinks": [
      {
        "title": "Very Good Components",
        "url": "https://goodcomponents.io/"
      },
      {
        "title": "tinypdf: Minimal PDF creation library",
        "url": "https://github.com/Lulzx/tinypdf"
      },
      {
        "title": "React has changed, your Hooks should too",
        "url": "https://allthingssmitty.com/2025/12/01/react-has-changed-your-hooks-should-too"
      },
      {
        "title": "Software engineers should be a little bit cynical",
        "url": "https://seangoedecke.com/a-little-bit-cynical"
      },
      {
        "title": "How wrong can a JavaScript Date calculation go?",
        "url": "https://philna.sh/blog/2026/01/11/javascript-date-calculation"
      },
      {
        "title": "Web dependencies are broken. Can we fix them?",
        "url": "https://lea.verou.me/blog/2026/web-deps"
      },
      {
        "title": "SVG Filters are just amazing!",
        "url": "https://amitmerchant.com/svg-filters-are-just-amazing"
      },
      {
        "title": "Tips for making the Performance Panel less overwhelming",
        "url": "https://calendar.perfplanet.com/2025/tips-for-making-the-performance-panel-less-overwhelming"
      },
      {
        "title": "Death to Scroll Fade!",
        "url": "https://dbushell.com/2026/01/09/death-to-scroll-fade"
      },
      {
        "title": "Not All Browser APIs Are \"Web\" APIs",
        "url": "https://polypane.app/blog/not-all-browser-apis-are-web-apis"
      },
      {
        "title": "Memlab: Analyzes JavaScript heap and finds memory leaks in browser and Node.js",
        "url": "https://facebook.github.io/memlab"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 451,
    "title": "4 CSS Features To Know In 2026",
    "slug": "2026-01-12-431-4-css-features-to-know-in-2026",
    "date": "2026-01-12",
    "templateType": "buttondown-markdown",
    "intro": "Hey there,\n\nWelcome to the first issue of 2026! I know, I know, the wider world feels pretty fragile right now. The geopolitical climate has rarely looked more worrying in my lifetime. That is real, and it can be heavy. At the same time I want this little corner of your inbox to stay focused on what we love: **learning**, **building**, **experimenting**, **making useful, fun and beautiful things for other humans**, and **growing together** in a way that actually makes life a bit better. These may be small gestures, but if enough of us care and keep showing up with curiosity and kindness, I genuinely believe they can add up to a long lasting impact in our communities. ❤️\n\nAs a quick aside, I closed out my 2025 with one of my favorite personal traditions: writing [a long blog post to look back on the year](https://loige.co/2025-a-year-in-review/). Taking the time to list wins, experiments, and even the weird detours made me realize that 2025 was actually pretty good, and that I managed to achieve more than I had given myself credit for. That reflection left me excited and hopeful for what we can all build and learn together this year.\n\nSo I am curious about you. **What was your proudest achievement of 2025?** It can be anything, shipping a feature, learning a new skill, mentoring someone, or finally starting that tiny side project. Do not be shy! **Hit reply or reach out on socials** and tell me about it. I would genuinely love to hear from you and get to know you better.\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Controlling complexity is the essence of computer programming",
      "author": "Brian Kernighan",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Brian_Kernighan?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=451-4-css-features-to-know-in-2026"
    },
    "links": [
      {
        "title": "4 CSS Features To Know In 2026",
        "url": "https://nerdy.dev/4-css-features-every-front-end-developer-should-know-in-2026",
        "description": "What better way to welcome 2026 than by picking up the CSS tricks that are about to show up everywhere in real interfaces? This piece tours four features that feel like cheating in the best way: `sibling-index()` and `sibling-count()` for effortless staggered animations, `@container scroll-state()` to react to sticky and scroll snap states without JavaScript, `text-box` for surgically clean typography alignment, and typed `attr()` to pull validated values straight from HTML into your styles. Read it, steal one idea, and your next UI will quietly feel smarter.",
        "imageUrl": "./0650d591acb8949d60f9e376cde91e442389611db349e29eebe6cfa69e67f20e.jpg",
        "featured": true
      },
      {
        "title": "The Next Two Years of Software Engineering",
        "url": "https://addyosmani.com/blog/next-two-years",
        "description": "We wrapped up our latest 2025 issue with [a beautiful piece by Addy Osmani](https://buttondown.com/fullstackbulletin/archive/450-21-lessons-from-14-years-at-google/) and it stuck with me for days. Now Addy did it again with this piece: a genuinely inspiring, clear headed guide to what we should expect, and be ready for, as software engineers. He frames the future as five big questions (not hot takes), gives two realistic scenarios for each, then closes with practical moves you can make right now. That junior developer question is something I have been thinking about a lot myself. I still could not find a wildly positive solution, but I really like his pragmatic take on how juniors and seniors can adapt without pretending the market is sunshine and rainbows.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "It's Hover!",
        "url": "https://itshover.com/",
        "description": "I discovered this icon set last week, and I fell in love with the name almost immediately. The animated icons are incredibly pleasant to see, with motion that feels intentional instead of decorative. Even better, they work seamlessly with shadcn components via the shadcn CLI, so if you already use shadcn, you can drop them into your next project and modernize the UI with very little effort. [**Check resource**](https://itshover.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Software Is Culture",
        "url": "https://figma.com/blog/software-is-culture",
        "description": "Another inspirational read that zooms out and reminds you that software is not just tooling. It is culture. It traces how the web, and even more so mobile experiences, shaped our shared habits through interactions that feel totally normal now. Think pinch to zoom, then pull to refresh. Both are so baked into muscle memory that it is easy to forget they were invented, shipped, copied, and eventually turned into part of how we experience the world. And yet 20 years ago these gestures meant nothing to everyone.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Streaming JSON in just 200 lines of JavaScript",
        "url": "https://krasimirtsonev.com/blog/article/streaming-json-in-just-200-lines-of-javascript",
        "description": "This follows up on [a great piece by Dan Abramov showing how to build progressive JSON](https://overreacted.io/progressive-json/). This one shows how to actually build it in about 200 lines of JavaScript: stream a JSON shaped payload early, use placeholders for the parts that are not ready yet, then progressively fill them in as chunks arrive. It is the same family of ideas that makes React Server Components, and `<Suspense>` streaming rendering, feel so fast even when the data is slow.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Web development is fun again",
        "url": "https://ma.ttias.be/web-development-is-fun-again",
        "description": "I felt this article in my bones, because I was there too, slicing layouts into tiny images and stacking table elements inside table elements until something that looked like a website finally appeared. Even if you never lived through those years, the heart of the story is the same. building for the web was fun then, and even though the tools, knowledge, and expectations are completely different now, it can still be fun today. I read this as a love letter to the web and to everyone who enjoys creating for it, a reminder that our craft is allowed to feel playful and inspiring again, not just overwhelming. Let it be a little push to rediscover why you started building for the web in the first place.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "OnceMap: Rust Pattern for Running Concurrent Work Exactly Once",
        "url": "https://codepointer.substack.com/p/uv-oncemap-rust-pattern-for-running",
        "description": "This one is for the nerds. If you get a little rush from the words performance, concurrency, data structures, or Rust, you are absolutely in the target audience here. The post walks through uv’s OnceMap pattern, which is a neat little trick for making sure expensive async work only runs once per unique input while everyone else just waits for the result. It is not strictly webdev territory, more like the deep plumbing that makes fast tools and servers possible. I loved this piece, and I hope you will find it just as fascinating. Even if you do not write Rust every day, it is a great mental workout in how to think about coordination, contention, and correctness when lots of things are happening in parallel.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "AWS Cookbook: Recipes for Success on AWS",
      "author": "John Culkin, and Mike Zazon",
      "description": "This practical guide provides over 70 self-contained recipes to help you creatively solve common AWS challenges you'll encounter on your cloud journey. If you're comfortable with rudimentary scripting and general cloud concepts, this cookbook provides what you need to address foundational tasks and create high-level capabilities.\nAuthors John Culkin and Mike Zazon share real-world examples that incorporate best practices. Each recipe includes a diagram to visualize the components. Code is provided so that you can safely execute in an AWS account to ensure solutions work as described. From there, you can customize the code to help construct an application or fix an existing problem. Each recipe also includes a discussion to provide context, explain the approach, and challenge you to explore the possibilities further.\nGo beyond theory and learn the details you need to successfully build on AWS. The recipes help you:",
      "coverImageUrl": "./cee234b144c23196ee148f31cb229014c54be02a691356103f854a980bf2d794.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492092606",
      "amazonUk": "https://www.amazon.co.uk/dp/1492092606"
    },
    "additionalLinks": [
      {
        "title": "Stop Forwarding Errors, Start Designing Them",
        "url": "https://fast.github.io/blog/stop-forwarding-errors-start-designing-them"
      },
      {
        "title": "require(esm) in Node.js: from experiment to stability",
        "url": "https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/index.html"
      },
      {
        "title": "Fixing TypeScript Performance Problems: A Case Study",
        "url": "https://viget.com/articles/fixing-typescript-performance-problems"
      },
      {
        "title": "Automatically load .env files in Node.js scripts",
        "url": "https://stefanjudis.com/today-i-learned/load-env-files-in-node-js-scripts"
      },
      {
        "title": "How to compile JavaScript to C with Static Hermes",
        "url": "https://devongovett.me/blog/static-hermes.html"
      },
      {
        "title": "The 8 trends that will define web development in 2026",
        "url": "https://blog.logrocket.com/8-trends-web-dev-2026"
      },
      {
        "title": "Useful patterns for building HTML tools",
        "url": "https://simonwillison.net/2025/Dec/10/html-tools"
      },
      {
        "title": "A Minimal CSS Starter",
        "url": "https://meiert.com/blog/a-minimal-css-starter"
      },
      {
        "title": "Markdown-UI: Turn LLM responses into real interactive UIs",
        "url": "https://markdown-ui.blueprintlab.io/"
      },
      {
        "title": "ExposedByDefault: What Your Browser Reveals About You",
        "url": "https://neberej.github.io/exposedbydefault"
      },
      {
        "title": "What Happened To WebAssembly?",
        "url": "https://emnudge.dev/blog/what-happened-to-webassembly"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 450,
    "title": "21 Lessons from 14 Years at Google",
    "slug": "2025-12-22-430-21-lessons-from-14-years-at-google",
    "date": "2025-12-22",
    "templateType": "buttondown-markdown",
    "intro": "Hello,\n\nThis issue is a little love letter to curiosity. From long careers at big companies to silly side projects that spiral into real engineering, from new tools to old ideas seen in a new light, everything here is an invitation to keep poking at the world, asking questions, and learning one small thing at a time. Skills compound when you let yourself explore, and I hope at least one link here sends you down a fun rabbit hole.\n\nThis might also be the last issue of the year. I expect a busy Christmas period ahead and I am not fully sure I will find the time and energy for more issues. I might or I might not, let us see how it goes. If you do not hear from me, have a great Christmas if you celebrate it and an even better start to the new year.\n\nKeep building. The future is compounding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter",
      "author": "Eric S. Raymond",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Eric_S._Raymond?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=450-21-lessons-from-14-years-at-google"
    },
    "links": [
      {
        "title": "21 Lessons from 14 Years at Google",
        "url": "https://addyo.substack.com/p/21-lessons-from-14-years-at-google",
        "description": "[Last week](https://buttondown.com/fullstackbulletin/archive/449-ai-cant-do-your-job/) we featured [patterns.dev](https://www.patterns.dev/), another brilliant creation from Addy Osmani. This week I stumbled onto a more personal side of his work, a piece I read recently and genuinely enjoyed. In it Addy shares 21 lessons from his long and still ongoing career at Google, touching on craft, collaboration, impact, and how to keep growing inside a huge company without losing your curiosity. My favorite line is a simple one that hits very close to home: *“Writing forces clarity. The fastest way to learn something better is to try teaching it.”* I have been lucky enough to teach in different ways over the years, from workshops to books and blog articles and even through mentoring, and every single time I feel like I walk away more enriched than the people I was supposed to help. If you care about being not just a better engineer but a clearer thinker, this is a very rewarding read.",
        "imageUrl": "./a2a45ef4b1ffe3a252d3dcb382ba739e46961f8ef6ac131ef046a631efe13c2c.png",
        "featured": true
      },
      {
        "title": "Using TypeScript to Obtain One of the Rarest License Plates",
        "url": "https://jack.bio/blog/licenseplate",
        "description": "If the title of this post was not already enough to make you smash that link, I am honestly not sure anything I say here will do the trick. But let us try anyway. This is one of those gloriously unhinged side projects that starts with a silly idea and somehow ends up flexing serious fullstack skills, plenty of clever tricks, and way more polish than anyone would expect from something that began with basically “what if I just tried this for fun.” This is perhaps another demonstration that knowing how to code can come in handy to solve some real life problems. Well, maybe this was not really *a problem*, but still... you know what I mean! :D",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ty: An extremely fast Python type checker and language server",
        "url": "https://astral.sh/blog/ty",
        "description": "If you write a lot of Python in big projects, you have probably developed a real appreciation for how a well typed codebase can quietly save your future self. Fewer bugs, easier refactors, clearer intent, less fear every time you touch that scary folder called \"legacy\". With Python there are now quite a few flavors of type checkers, and recently a very promising new one stepped onto the stage: `ty`, from the Astral team, aims to be an extremely fast type checker and language server that you can actually lean on in large codebases without growing old while it runs. This post walks through what makes ty interesting as an alternative to tools like `mypy` or `Pyright`, especially if you care about fast feedback loops and working productively in bigger Python systems. It also comes from the same folks who built `uv`, a Python package manager and toolkit I have been personally really enjoying, so even if I have not yet had the chance to try `ty` myself, my expectations are pretty high.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What Actually Makes You Senior",
        "url": "https://terriblesoftware.org/2025/11/25/what-actually-makes-you-senior",
        "description": "I have a lot of opinions about this topic. I have written a few [articles](https://loige.co/the-senior-dev/) on it and even delivered a couple of [talks](https://lmammino.github.io/the-senior-dev/) about what it really means to be a senior engineer. This article hits many of the same nerves. It argues that seniority is not about how many years you have been around or how fancy your title sounds. It is about your ability to take messy, ambiguous problems and turn them into clear plans that a team can actually execute. It digs into the unsexy parts of the job, like managing expectations, noticing risks before they blow up, and quietly filling ownership gaps that no one officially assigned to you. It is the sort of article you read nodding along, thinking of teammates who are secretly the glue of the whole system, whether their title says senior or not.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Just F***ing Use Tailwind",
        "url": "https://justfuckingusetailwind.com/",
        "description": "This one was a really fun read for me. I love Tailwind, but I would not advocate for it quite as fiercely as this piece does, so take it with a little grain of salt. It is clearly written with a bit of irony, yet I still find myself nodding along with most of the points about why utility first CSS can keep your UI codebase more consistent, easier to evolve, and frankly more pleasant to work on. If you do not mind a few swear words and you are even a tiny bit Tailwind curious, this might be the push that finally convinces you to give it a try. And if you are still convinced Tailwind (and utility classes in general) are not for you, that is totally fine, but I would say you might still have a little fun reading this one.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JSDoc is TypeScript",
        "url": "https://culi.bearblog.dev/jsdoc-is-typescript",
        "description": "Back to talking about adding types to untyped languages... This time it is JavaScript. Or, since we are talking about its typed twin brother, maybe I should say TypeScript. This piece explores a neat middle ground where you stay in JavaScript land, but use JSDoc for type annotations. The *aha* moment for me was realizing that even if you just use JSDoc, the TypeScript language service is still quietly powering everything, from IntelliSense governed by a tsconfig file to type checking a project that only has `.js` files. When you do this you are already using TypeScript, even if you keep telling everyone you are still writing plain old JS. It is a really nice option if you want type safety and better tooling for an existing codebase without a huge migration. And the best part is that this kind of migration keeps things simple for everyone, even those who are still skeptical about TypeScript and hate having to deal with a transpilation step before running their code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Logging sucks... And here's how to make it better.",
        "url": "https://loggingsucks.com/",
        "description": "A friend of mine shared this article with me and I really enjoyed reading it. It starts from a feeling many of us know too well, staring at walls of logs at three in the morning and learning absolutely nothing useful about what actually went wrong. Then it walks through why traditional logging can be such a bad fit for modern distributed systems and argues for treating logs as rich structured records of what happened to a request, with concepts like wide events and canonical log lines. My favorite line is *“OTel is just plumbing. You decide what flows through it.”* which perfectly captures the idea that tooling itself will never fix your observability problems. You still have to be deliberate about what you record, which signals matter for you, and all the context future you will need when things go sideways. If you have ever felt that your logs are lying to you, this is a very satisfying rethink of how observability can actually work in practice.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Go ahead, self-host Postgres",
        "url": "https://pierce.dev/notes/go-ahead-self-host-postgres",
        "description": "This was a great read for me, mostly because it triggered a bit of an inner conflict. As a cloud expert and consultant I tend to reach for managed services first, since they keep things simple and let the team focus on what matters most, the product rather than the underlying infrastructure. I am absolutely one of those people who will say *\"undifferentiated heavy lifting\"* without blinking, and before this I did not even know that phrase is credited to *Jeff* (yes, *that* Jeff). The conflict comes from how convincingly this piece argues that running your own Postgres is not as scary as cloud providers like to make it sound. I suspect the truth is somewhere in the middle, and the best position you can be in is knowing how to self host, then deciding case by case when that effort is worth it and when you would rather lean on a fully managed service. Am I turning into a cloud misbeliever? I do not think so, but time will tell...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js Design Patterns: Fourth Edition is out!",
        "url": "https://loige.co/nodejs-design-patterns-fourth-edition",
        "description": "I left this one for last because I do not want you to think I am doing too much self promotion. If you do, please tell me and keep me honest... Anyway, It took me a while, but I finally managed to write my own official blog post about the new edition of Node.js Design Patterns. The fourth edition of Node.js Design Patterns is here, and in this post I share why we decided to write a new edition in the first place, what is new this time around, and some of my thoughts on where Node.js is heading next. If you have been using Node.js for a while or you are just curious about how to build more robust backends with it, I hope you will find this a useful behind the scenes look at the book and the ecosystem around it.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent React: Build Fast, Performant, and Intuitive Web Applications",
      "author": "Tejas Kumar",
      "description": "When it comes to building user interfaces on the web, React enables web developers to unlock a new world of possibilities. This practical book helps you take a deep dive into fundamental concepts of this JavaScript library, including JSX syntax and advanced patterns, the virtual DOM, React reconciliation, and advanced optimization techniques. By becoming fluent in React, you'll quickly learn how to build better web applications.\nAuthor Tejas Kumar helps you explore the depths of React in plain English, without the typical software engineering jargon, so you can more easily understand how this JavaScript library works. You'll learn how to write intuitive React code that fully understands the nuances and layers of React, unlocking a whole new level of fluency.\nYou will:",
      "coverImageUrl": "./f1d43db92bec955ba9f57985647a6e66a1850d78090f8803c5fc826bb19025b8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098138716",
      "amazonUk": "https://www.amazon.co.uk/dp/1098138716"
    },
    "additionalLinks": [
      {
        "title": "Debugging AWS API Gateway HTTP with OIDC-JWT authorizers",
        "url": "https://loige.co/debugging-api-gateway-http-oidc-jwt-authorizer"
      },
      {
        "title": "How to load CSS (fast)",
        "url": "https://calendar.perfplanet.com/2025/how-to-load-css-fast"
      },
      {
        "title": "A modern guide to SQL JOINs",
        "url": "https://kb.databasedesignbook.com/posts/sql-joins"
      },
      {
        "title": "Directional CSS with scroll-state(scrolled)",
        "url": "https://una.im/scroll-state-scrolled"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 449,
    "title": "AI Can’t Do Your Job",
    "slug": "2025-12-15-429-ai-can-t-do-your-job",
    "date": "2025-12-15",
    "templateType": "buttondown-markdown",
    "intro": "Ciao,\n\nToday we are leaning quite a bit into AI. Not the flashy demos or the hype, but the uncomfortable question behind it. What does AI (and especially GenAI) actually means for us as developers, for our careers, and for the way we build software together?\n\nPart of this focus is personal. I recently passed the AWS Solutions Architect Professional certification and, in a moment of optimism, decided to start studying for the GenAI Professional one. So if this issue feels a little AI flavored, it might not be entirely random. Wish me luck while you read!\n\nAt the same time, this is still a full stack newsletter. You will find plenty of non AI goodies too. From patterns for modern JavaScript apps, to performance deep dives, to two brand new React Server Components vulnerabilities that are different from the one we talked about just last week. Yes, there is more patching to do.\n\nMy hope is that this issue helps you feel a bit less afraid of AI and a bit more intentional about the kind of developer you want to become in this new era. Now, grab a coffee, sharpen your curiosity, and enjoy this week’s journey.\n\nOh, before I forget... Last week I had a couple of awesome chats with some of you, just because they decided to hit reply and get in touch more personally. I love this stuff, so do not be shy and reach out. If you do not know what to say, just tell me about your most recent project and what you learned. I love that kind of story.\n\nExplore the edges of your comfort zone!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The computer revolution is a revolution in the way we think and in the way we express what we think",
      "author": "Hal Abelson",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Hal_Abelson?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=449-ai-cant-do-your-job"
    },
    "links": [
      {
        "title": "AI Can’t Do Your Job",
        "url": "https://terriblesoftware.org/2025/12/11/ai-can-write-your-code-it-cant-do-your-job",
        "description": "Did calculators replace accountants? No. But you will not find a serious accountant today who refuses to use a calculator. Well, these days it is mostly spreadsheets and dedicated software, but you get the point. This piece takes that same idea and applies it to our current AI moment, where coding tools can write a lot of our code and at the same time spark a very real fear that they are about to take our jobs. But what is our job really? The author argues that programming is just one task inside the broader role of software engineer. The real work is everything around the code, from turning fuzzy business problems into clear requirements, to making tradeoffs, pushing back when needed, and taking responsibility for what ships and what does not. AI can speed up the typing and even help explore solutions. It cannot sit in the awkward meeting, balance constraints, and decide what actually makes sense to build. I mostly agree with that hypothesis, so I will let the rest of the essay walk you through why AI can write your code, yet still cannot do your job.",
        "imageUrl": "./8c96e2d461f452bfc0d132af65cd08eb4fdde2ce25b833f9ce12ab2ee12d7da1.jpg",
        "featured": true
      },
      {
        "title": "Werner Vogels (AWS CTO) Delivers His Final Keynote",
        "url": "https://youtube.com/watch?v=3Y1G9najGiI",
        "description": "I was lucky enough to catch Werner Vogels last two keynotes live in Las Vegas in 2023 and 2024. This year I missed re:Invent in person, so I was very ready to binge the recordings from home, starting with Werner’s new talk, which also happens to be his final re:Invent keynote... yes, there's even a mic drop at the end! In classic Werner fashion, it opens with a slightly unhinged mini movie intro. Think time travel, a very familiar car, and a tour through eras of computing that land us right back in the middle of today’s AI panic. I wanted to feature this talk because it pairs beautifully with the previous essay about AI writing your code but not doing your job. Werner takes that same anxiety and pokes at the idea that now everyone can be a developer. What actually changes when AI tools lower the bar to shipping software, and what still belongs to people who think in systems, make tradeoffs, and take ownership for what they build. I have lots of respect for Werner, but you should absolutely take it with a pinch of salt, since this is still coming from AWS, which has a huge interest in selling you more AI. But even with that in mind, there are a lot of thoughtful and provocative ideas in here about what it means to be a developer in this new era.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Kernel (Newspaper)",
        "url": "https://thekernel.news/",
        "description": "If Werner’s keynote was the movie, The Kernel is the in universe newspaper that drops as you walk out of the cinema. It literally launched at the same re Invent keynote, and from the photos and writeups it looks like they even put printed copies on every seat. A proper tech paper by builders, for builders, spun up just for this moment. The lead story is Werner’s essay on the Renaissance developer, which ties directly back to that keynote idea. In short, AI keeps lowering the barrier to writing code, but that only makes human judgment more important. The Renaissance developer is a modern polymath who thinks in systems, understands business and people, communicates clearly with both humans and machines, and takes real ownership of what ships, while using AI as one more powerful tool rather than a replacement for their craft. I like this framing a lot, but I also read it with my skeptical hat on. It is a very optimistic story that does not fully wrestle with the messy bits, like what happens to junior roles if AI eats all the simple tasks, how safe it is to rely on oceans of AI generated code, or how companies might use this productivity boost to cut headcount instead of uplifting everyone into architect land. So I recommend reading it both as inspiration for where we could go and as a prompt to think hard about the economic and human tradeoffs we will have to navigate to get there.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Patterns.dev",
        "url": "https://patterns.dev/",
        "description": "I might have shared this one before. Honestly I do not care. It is that good and I am saying this as someone who loves JavaScript, Node.js and design patterns way more than is probably healthy. Patterns[dot]dev is a free online book and reference for modern web app patterns. It is split into three big sections: Vanilla JavaScript patterns, React patterns and Vue patterns. You get classic patterns like Singleton, Factory and Observer plus modern ideas around rendering and performance, all explained in a very practical way and grounded in how we actually build apps today. It is created by two of my favorite educators, Lydia Hallie and Addy Osmani, brilliant content creators who have inspired me not just to create content but to lift my content game entirely. The whole thing is available to read online, and you can also download it as a four hundred plus page ebook for free in multiple formats if you prefer to binge it on your reader of choice.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Denial of Service and Source Code Exposure in React Server Components",
        "url": "https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components",
        "description": "[Last week](https://buttondown.com/fullstackbulletin/archive/448-the-bun-is-in-the-anthropic-oven/) we talked about [a pretty terrifying React Server Components vulnerability](https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182) that could hit you if you use Next.js (even if you never touch server components directly). You updated, you breathed out, you maybe promised yourself to look into your threat model tomorrow. Turns out the horror story has a sequel... actually two! The React team just disclosed two more RSC issues, a high severity denial of service and a medium severity source code exposure, affecting the same family of react server dom packages and even some of the versions that were supposed to be fixed by the first patch. In other words, if your app speaks the RSC protocol through a framework like Next, you probably need to update again. This official post by the React team walks through what the new CVEs actually are, which versions are vulnerable, and which releases you should upgrade to right now so your React app does not become an easy target.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Barcode as a design object",
        "url": "https://pangrampangram.com/blogs/journal/barcode",
        "description": "Perhaps this one is a bit off topic, but I have a soft spot for barcodes and QR codes, so I could not resist sharing it. Just to give you a sense of the obsession, I once tried to build a startup around the idea of certified QR codes, basically codes with a digital signature. I built a functional prototype, but the idea went nowhere at the time. Almost no one knew what QR codes were back then, and the average mobile phone camera was so bad that scanning them barely worked. Years later, that exact concept showed up at scale in digital COVID certificates all around the world, and of course I went deep on how those worked, deconstructed them using Rust and even [gave a few talks about the whole learning process](https://www.youtube.com/watch?v=2dFJkYH_Cc0). But I digress... This piece is not really about the engineering magic of cramming data into printed patterns. It is a much more artistic take. It asks a simple question. Can we make 2D barcodes and QR codes beautiful? Turns out the answer is yes, and the article walks through some really playful, clever, and surprisingly elegant examples. If you secretly enjoy this stuff as much as I do, it is a very fun scroll.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How fast can browsers process base64 data?",
        "url": "https://lemire.me/blog/2025/11/29/how-fast-can-browsers-process-base64-data",
        "description": "If you care about performance even a little, this one is nerd candy. Base64 quietly sits behind things like data URIs, blobs, WebSockets that sneak binary through text channels, and all sorts of browser tricks. The author looks at the new `Uint8Array.toBase64` and `Uint8Array.fromBase64` functions and asks a simple question. How fast can browsers actually chew through this stuff in practice? Short answer. Faster than your disk and, in many cases, faster than your network. On an Apple M4 laptop, Chrome, Edge and Brave encode at around nineteen gigabytes per second, Safari is close behind at seventeen, and Safari then jumps ahead on decode with about double the speed of the Chromium crowd. Firefox and Servo are much slower for now, although both engines already have work in progress to close the gap. It is a nice reminder that Base64 in the browser is almost never your bottleneck, plus you get a handy benchmark page you can run in your own setup to see how your favorite browser stacks up.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Multithreaded JavaScript -  Concurrency Beyond the Event Loop",
      "author": "Thomas Hunter II, and Bryan English",
      "description": "The nature of JavaScript is to be single threaded. This is reflected not only in libraries and applications, but also in online forum posts, books, and online documentation. Thanks to recent advancements in the platform—such as with web workers in the browser, worker_threads in Node.js, and the Atomics and SharedArrayBuffer objects—JavaScript engineers are able to build multi-threaded applications. These features will go down as being the biggest paradigm shift for the world's most popular programming language.\nMultithreaded JavaScript explores the various features that JavaScript runtimes have at their disposal for implementing multithreaded programming, using a spectrum of API reference material and high level programming patterns.",
      "coverImageUrl": "./d46211da006d703a5749af239640af7bedf4ff2d0c7e147caf60000e574da50a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098104439",
      "amazonUk": "https://www.amazon.co.uk/dp/1098104439"
    },
    "additionalLinks": [
      {
        "title": "Generating Utility Classes from Design Tokens using Style Dictionary",
        "url": "https://alwaystwisted.com/articles/a-design-tokens-workflow-part-13.html"
      },
      {
        "title": "On Idempotency Keys",
        "url": "https://morling.dev/blog/on-idempotency-keys"
      },
      {
        "title": "CSS Wrapped 2025",
        "url": "https://chrome.dev/css-wrapped-2025"
      },
      {
        "title": "Controlling dialogs and popovers with the Invoker Commands API",
        "url": "https://htmhell.dev/adventcalendar/2025/7"
      },
      {
        "title": "Double Click: What Does It Mean To Be A Designer In The Age Of AI?",
        "url": "https://figma.com/blog/double-click-what-does-it-mean-to-be-a-designer-in-the-age-of-ai"
      },
      {
        "title": "Did you know your browser has two accessibility trees?",
        "url": "https://www.maxdesign.com.au/articles/two-trees.html"
      },
      {
        "title": "Next.js Image Optimization",
        "url": "https://debugbear.com/blog/nextjs-image-optimization"
      },
      {
        "title": "How We're Protecting Our Newsroom from npm Supply Chain Attacks",
        "url": "https://pnpm.io/blog/2025/12/05/newsroom-npm-supply-chain-security"
      },
      {
        "title": "How good engineers write bad code at big companies",
        "url": "https://seangoedecke.com/bad-code-at-big-companies"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 448,
    "title": "The Bun is in the (Anthropic) Oven",
    "slug": "2025-12-08-428-the-bun-is-in-the-anthropic-oven",
    "date": "2025-12-08",
    "templateType": "buttondown-markdown",
    "intro": "Welcome back,\n\nThis last week has been flying for me, and I’ll admit I’m writing this intro in a bit of a rush (again, sorry). I’ve been knee-deep in renewing my AWS Solutions Architect Professional certification (a bit of a *PITA*, if I’m honest... but absolutely worth it), while also trying to wrap up a new release of [Crafting Lambda Functions in Rust](https://rust-lambda.com/), the book I’m writing with [James Eastham](https://jameseastham.co.uk/). The upcoming version includes a big new chapter on event-driven architectures, with a deep dive into how to use SQS, EventBridge, and Kinesis when building Lambda functions in Rust. If that’s your kind of thing, [check out the official website and grab a copy](https://rust-lambda.com/): the new release should come out this week! Note that, even though the book is still a work in progress, it’s already available in early access: you can grab it now at a generously discounted price, and you’ll have access to all the future updates (including the final version) as they’re released.\n\nOh, and we also got started with [Advent of Code](https://adventofcode.com/2025), something I always look forward to every December... although so far I only managed to do the first 2 (in Rust, of course). If you’re curious, check out [my repo](https://github.com/lmammino/rust-advent), but I’m definitely more curious to know if you are tackling the challenge: please reply to this email and share your repo 😉\n\nNow, onto the fullstack goodness of the week, because there’s a lot of stuff to love here, and I hope you’ll enjoy every single bit of it!\n\nQuality is a habit. Practice!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The best performance improvement is the transition from the nonworking state to the working state",
      "author": "J. Osterhout",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Ousterhout?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=448-the-bun-is-in-the-anthropic-oven"
    },
    "links": [
      {
        "title": "The Bun is in the (Anthropic) Oven",
        "url": "https://bun.com/blog/bun-joins-anthropic",
        "description": "When I first read the news, I genuinely thought this was an April Fools’ joke... but no... it’s almost Christmas, and the news is real: [Anthropic has acquired Bun](https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone)... Well, in practice, I think this means they acquired Oven, the company behind the Bun JavaScript runtime. I think this is the first time a JavaScript runtime company has been acquired, at least in recent memory. Anthropic’s angle is pretty clear: Bun is now strategic infrastructure for Claude Code (and the Agent SDK), right as Claude Code reportedly hit a $1B run-rate milestone. But what I’m linking here is not Anthropic’s perspective: it’s Jarred Sumner’s post (CEO of Oven). A great read if you want to learn a bit about the story of Bun and his vision for the future of this runtime. The official line is reassuring: Bun stays open-source and MIT-licensed, built in public, with the same team, still chasing Node compatibility and performance. My slightly-cynical take: if you rely on Bun as your main runtime, it’s normal to feel a *little* nervous that Claude Code’s needs will quietly become the roadmap’s center of gravity. That might still be a net win (I like Claude Code too), but it’s a shift worth watching. When one use case gets prioritized, I worry the larger interests of the whole community might take a back seat...",
        "imageUrl": "./a7dff940f84b8967145c1632728806fc98fcfbd547fe897f669f1ead9ad985cc.jpg",
        "featured": true
      },
      {
        "title": "Vite 8 Beta: The Rolldown-powered Vite",
        "url": "https://vite.dev/blog/announcing-vite8-beta",
        "description": "I realize we’ve been covering Vite quite a few times in this newsletter, and that’s probably because I have a soft spot for it. After many years using all kinds of bundlers, and every time feeling like I needed a PhD just to learn how to configure them, Vite has always been a comfortable and reassuring tool to use that *just works*. So it’s great to see the Vite 8 beta land, because it feels like another major step toward the VoidZero vision: a single, fast, unified toolchain for web developers. Under the hood, Vite is now powered by Rolldown, a Rust-based bundler with Rollup-compatible APIs: think “Rollup, but with a Rust engine underneath”. The details of the new features matter, of course, but the real headline here is the direction: Vite is steadily consolidating the stack and leaning more and more into Rust for the heavy lifting, with the goal of making builds faster and behavior more consistent across the board.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Critical RCE Vulnerabilities Discovered in React & Next.js",
        "url": "https://wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182",
        "description": "A critical, unauthenticated remote code execution bug was found in React Server Components. Here’s the like-I’m-5 version: your server has a special “React request” endpoint that unpacks a message from the browser and turns it into work. The problem is that the unpacking logic can be fooled by a maliciously crafted request, so instead of just unpacking data it can end up running the attacker’s code on your server. The scary bit: the attack is low complexity, needs no login, and no user interaction. And there’s an extra nasty nuance: even if you don’t think you’re using React Server Functions, you may still be vulnerable simply by supporting RSC. Reports also suggest it can be highly reliable and exploitable in default setups (yes: even a production `create-next-app` can be in scope without special changes). Now the urgent bit: if you run Next.js App Router on Next 15.x or 16.x, assume you are affected and **patch immediately**. Next.js provides a handy `npx fix-react2shell-next` that automates the fix. If you’re not on RSC (Pages Router / older lines / pure client-side React), you may be fine, but this is serious enough to do a quick “are we in scope?” check today: it’s already marked as known exploited, with reports of active exploitation.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The State of TanStack, Two Years of Full-Time OSS",
        "url": "https://tanstack.com/blog/tanstack-2-years",
        "description": "Every time I see an announcement from the TanStack team, I can’t help but get excited (and if you’ve been reading this newsletter for a while, you’ll probably remember the many TanStack mentions). It’s because what they’ve shipped over the last few years has been consistently useful, high-quality, and refreshingly focused on giving developers solid primitives to build on. This time it’s not a new release: it’s Tanner Linsley reflecting on two years of doing TanStack full-time, what it took to make that sustainable, and what the ecosystem has grown into: 13 active projects, 36 core contributors, and billions of downloads... And the “what’s next” section is the real teaser: TanStack Start 1.0 improvements (including RSC support done “the TanStack way”), more Router work lined up, and even hints at a big new library in the pipeline. If you, like me, believe TanStack is on track to reshape how we build web apps over the next few years, this is the perfect “inside the kitchen” post to read: it helps you understand where they’ve been, and what they’re optimizing for next.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "use-nemo: Custom React directives",
        "url": "https://github.com/Ademking/use-nemo",
        "description": "Just [a few weeks ago](https://buttondown.com/fullstackbulletin/archive/444-finding-mr-tiff) we were side-eyeing React’s growing love for custom directives like `\"use client\"` and `\"use server\"`... and hey, even if this isn’t the best long-term strategy, it is pretty cool to understand how this stuff actually works under the hood. That’s exactly what use-nemo is for: it’s a Vite plugin that lets you define your own React-like \"use \" directives, then runs custom build-time transformations when it finds them (injecting code/imports/comments, removing the directive string, etc.). If you’ve ever been curious about how “magic” directives are built, this repo is a fun, practical rabbit hole. [**Check Repo**](https://github.com/Ademking/use-nemo)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "TanStack AI",
        "url": "https://tanstack.com/ai/latest",
        "description": "Didn’t I just say I love what the TanStack team builds and that I’ve been eagerly featuring them here? I did, yes I did... and there’s a new library worth mentioning, so here we are! This one might feel a bit beyond the usual webdev scope, since it talks about everyone’s favourite topic these days: AI. But I actually find it very promising for a few reasons! It’s still very much focused on web dev, because it tries to bridge the gap in how people build AI-powered web applications (think streaming an LLM response to the UI), and it does so with a unified, provider-agnostic approach. But it’s also built in a pretty modular way. Just a few days ago I found myself chatting with a friend about how bloated many AI libraries have become. If you want to use one of those, you suddenly have to deal with a ton of dependencies, which can make them suboptimal for many environments (Lambda is one clear case). TanStack AI seems like a contender that tackles this by providing independent but highly composable packages, so you can install only what you really need. It’s still early days, but I’m excited to see where this is going to go!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "TypingSVG",
        "url": "https://typingsvg.vercel.app/",
        "description": "Let’s close the featured articles in this issue with a cozy, neat little tool that you might enjoy: TypingSVG. It’s a tiny web app that generates those “typing text” animated SVGs you can drop into a README/profile/website, with a live preview and copy-pasteable URL/Markdown/HTML (or you can just download the SVG). The fun part is how configurable it is: Google Fonts, emojis, per-line styling, cursor styles, typing + delete speeds, background, centering, repeat...",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Real-World Svelte: Supercharge your apps with Svelte 4 by mastering advanced web development concepts",
      "author": "Tan Li Hau",
      "description": "Harness the power of Svelte, the cutting-edge JavaScript framework used for building high-performance web applications, with this definitive guide\nSvelte has quickly become a popular choice among developers seeking to build fast, responsive, and efficient web applications that are high-performing, scalable, and visually stunning. This book goes beyond the basics to help you thoroughly explore the core concepts that make Svelte stand out among other frameworks.\nYou'll begin by gaining a clear understanding of lifecycle functions, reusable hooks, and various styling options such as Tailwind CSS and CSS variables. Next, you'll find out how to effectively manage the state, props, and bindings and explore component patterns for better organization. You'll also discover how to create patterns using actions, demonstrate custom events, integrate vanilla JS UI libraries, and progressively enhance UI elements. As you advance, you'll delve into state management with context and stores, implement custom stores, handle complex data, and manage states effectively, along with creating renderless components for specialized functionalities and learning animations with tweened and spring stores. The concluding chapters will help you focus on enhancing UI elements with transitions while covering accessibility considerations.",
      "coverImageUrl": "./449a3872eabdf53e7c1ebf1109c189b5bb4959ba905825be8af53378b96dd2fa.jpg",
      "amazonUs": "https://www.amazon.com/dp/1804616036",
      "amazonUk": "https://www.amazon.co.uk/dp/1804616036"
    },
    "additionalLinks": [
      {
        "title": "Webhooks on AWS Lambda — Tips & Tricks",
        "url": "https://blog.serverlessadvocate.com/webhooks-on-aws-lambda-tips-tricks-63b231d09360"
      },
      {
        "title": "React Router's take on React Server Components",
        "url": "https://epicreact.dev/react-routers-take-on-react-server-components-4bj7q"
      },
      {
        "title": "Can you make toast messages accessible?",
        "url": "https://adamsilver.io/blog/can-you-make-toast-messages-accessible"
      },
      {
        "title": "Designing For Stress And Emergency",
        "url": "https://smashingmagazine.com/2025/11/designing-for-stress-emergency"
      },
      {
        "title": "ty",
        "url": "https://docs.astral.sh/ty"
      },
      {
        "title": "Designing Design Systems",
        "url": "https://tkdodo.eu/blog/designing-design-systems"
      },
      {
        "title": "One CSS Trick to Eliminate Scrollbar Layout Shifts",
        "url": "https://amitmerchant.com/one-css-trick-to-eliminate-scrollbar-layout-shifts"
      },
      {
        "title": "Comparing AWS Lambda Arm64 vs x86_64 Performance Across Multiple Runtimes in Late 2025",
        "url": "https://chrisebert.net/comparing-aws-lambda-arm64-vs-x86_64-performance-across-multiple-runtimes-in-late-2025"
      },
      {
        "title": "Node.js 24 runtime now available in AWS Lambda",
        "url": "https://aws.amazon.com/blogs/compute/node-js-24-runtime-now-available-in-aws-lambda"
      },
      {
        "title": "Wrangling my email with Claude Code",
        "url": "https://jlongster.com/wrangling-email-claude-code"
      },
      {
        "title": "Better Auth",
        "url": "https://better-auth.comdocs/introduction.mdx"
      },
      {
        "title": "Grid Paper",
        "url": "https://daverupert.com/2025/11/grid-paper"
      },
      {
        "title": "How Hackers Use NPMSCan.com to Hack Web Apps (Next.js, Nuxt.js, React, Bun)",
        "url": "https://audits.blockhacks.io/audit/how-hackers-use-npmscan-com"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 447,
    "title": "Inside the Shai Hulud 2.0 npm worm. What you need to know",
    "slug": "2025-12-01-427-inside-the-shai-hulud-2-0-npm-worm-what-you-need-to-know",
    "date": "2025-12-01",
    "templateType": "buttondown-markdown",
    "intro": "Hi there,\n\nThis will be a quick one from me this week. Life got a bit busy, but the internet did not slow down. So you get a tiny intro and a big pile of hand picked goodness instead, from supply chain worms and AI slop to beautiful colors and Bloom filters. Sorry for the speed run intro, I promise I spent the time I saved finding links that are actually worth your fullstack brain power.\n\nMake it simple and solid!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Languages that try to disallow idiocy become themselves idiotic",
      "author": "Rob Pike",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Rob_Pike?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=447-inside-the-shai-hulud2-0-npm-worm"
    },
    "links": [
      {
        "title": "Inside the Shai Hulud 2.0 npm worm. What you need to know",
        "url": "https://securitylabs.datadoghq.com/articles/shai-hulud-2.0-npm-worm/",
        "description": "Shai Hulud 2.0 is a self replicating npm worm that jumps between packages, steals tokens and credentials, and, as a special treat, can wipe your home directory as a goodbye gift. If you publish or consume npm packages for a living (yes, if you are a web dev, this is you!), that should feel uncomfortably scary. The authors of this article break down how the worm spreads using Bun, GitHub runners, and npm tokens, what data it goes after, and which indicators of compromise you can actually check in your own repos and pipelines. This is not just a spooky security story. It is a practical walkthrough you can use to see whether your projects were in the blast radius and to tighten up your supply chain before the next one shows up. And if you prefer to learn from video content, here's a [link to a very nice explainer](https://www.youtube.com/watch?v=lqZo4waMB3c&pp=0gcJCRYKAYcqIYzv) from another author that pairs surprisingly well with this deep dive.",
        "imageUrl": "./1554d7ef3343491962231f59f9a7c75ea6d7250a942f0433e33b34015b6ab74a.jpg",
        "featured": true
      },
      {
        "title": "Awesome things related to Tailwind CSS",
        "url": "https://github.com/aniftyco/awesome-tailwindcss",
        "description": "A giant community curated list of tools, plugins, color generators, UI kits, templates, IDE helpers, and weird little gems you did not know you needed, all living in the Tailwind CSS ecosystem. If you love Tailwind this is simply a wonderful resource to keep around. [**Check Repo**](https://github.com/aniftyco/awesome-tailwindcss)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The problem with AI Slop",
        "url": "https://www.youtube.com/watch?v=vrTrOCQZoQE&t=732s",
        "description": "I watched this one last week and it really stuck with me. This video while it seems like an informal chat, digs really well into the concept of AI slop: all the low quality auto generated content that is starting to flood the web. It is a bit scary, because it shows a pretty plausible future where most of the web is totally AI generated and models are mostly trained on their own synthetic output, search results get worse, and the web slowly turns into a grey mush of half correct text and recycled images. It is not pure doom though. It is a very clear, very grounded explanation of what could go wrong if we are not careful about how we generate and curate content. Funnily enough, it also made me think that there is more than ever real value in honest, hand made curation, and I hope you feel at least a bit of that value in this very newsletter.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Synthesizer for Color Palettes",
        "url": "https://colorpalette.pro/",
        "description": "This is a color palette tool, yes, but the first thing that hits you is the design. It honestly has some of the best and most original visual styling I have ever seen in a palette generator, and if you have been reading this newsletter for a while you know I have seen a lot of them. It feels playful and classy at the same time, and that makes it weirdly fun to just sit there and explore combinations, tweak sliders, and get a feel for different vibes. If you enjoy tools that care about both utility and aesthetics, this one is absolutely worth a click, and maybe you will use it for your next web design project. [**Check tool**](https://colorpalette.pro/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Useful CSS custom functions using the new @​function rule",
        "url": "https://github.com/sindresorhus/css-extras",
        "description": "A neat little library of CSS custom functions that leans into the new native `@function` rule. Instead of reaching for Sass or writing the same `calc` gymnastics again and again, you drop in *css-extras* and suddenly have helpers for math, colors, spacing, layout, typography, even theme aware values, right in pure CSS. If you enjoy modern CSS tricks and like the idea of shipping fewer build tools without giving up expressiveness, this one is very fun to explore. [**Check Repo**](https://github.com/sindresorhus/css-extras)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The CloudFlare outage was a good thing",
        "url": "https://gist.github.com/jbreckmckye/32587f2907e473dd06d68b0362fb0048",
        "description": "In case you missed it, the Cloudflare incident was the featured story in [last week’s newsletter](https://buttondown.com/fullstackbulletin/archive/446-the-recent-cloudflare-outage/). This short essay picks up that thread and argues that the big outage might actually have been a good thing, because it shakes us out of the illusion that the internet is always on and reminds us how fragile our very centralized infrastructure has become. I really like how the author grounds it in real life annoyances, then zooms out to ask what happens when so much of society runs through a tiny number of providers, and why events like this should push us to build more redundancy and fallbacks.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Bloom filters: the niche trick behind a 16× faster API",
        "url": "https://incident.io/blog/bloom-filters",
        "description": "Real story. I once failed an interview with Facebook, back when the whole company was still called that. They asked how I would efficiently implement the famous Like button. I thought I had given a perfectly reasonable answer, but they were clearly fishing for extreme performance at scale, and only months later I realised the trick they wanted to hear was bloom filters. If you ever wondered why people keep bringing up bloom filters in system design interviews, this post is a really nice, concrete explanation. The authors use a very practical incident style problem to walk through what bloom filters are, why they are useful, and how they help when you need to answer simple questions at ridiculous scale without melting your database. If you want to avoid my mistake and actually understand when and how to use them in real products, this article is a great read.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Fullstack D3 and Data Visualization: Build beautiful data visualizations with D3",
      "author": "Amelia Wattenberger",
      "description": "Build beautiful data visualizations with D3\nThe Fullstack D3 book is the complete guide to D3. With dozens of code examples showing each step, you can gain new insights into your data by creating visualizations.\nLearn how to quickly turn data into insights with D3\nWe have the data. But it needs to be understood by humans. The best way to convert this data into an understandable format is to mold it into a data visualization.\nAnd D3 is the best tool for job if you need to create custom data visualizations.\nWith Fullstack D3 and Data Visualization you and your team will be able to share key insights, uncover problems before they start, and impress your boss by creating gorgeous visualizations.",
      "coverImageUrl": "./8d77dfb62fee4e29cd2a384f34d9f8a838ef53b282e49f2769a0d41e17e59662.jpg",
      "amazonUs": "https://www.amazon.com/dp/0991344650",
      "amazonUk": "https://www.amazon.co.uk/dp/0991344650"
    },
    "additionalLinks": [
      {
        "title": "dnlzro/horizon: The current sky at your approximate location, rendered as a CSS gradient",
        "url": "https://github.com/dnlzro/horizon"
      },
      {
        "title": "ShadCN Themer: Create Beautiful Themes for shadcn/ui",
        "url": "https://shadcnthemer.com/"
      },
      {
        "title": "What They Don't Tell You About Maintaining an Open Source Project",
        "url": "https://andrej.sh/blog/maintaining-open-source-project"
      },
      {
        "title": "Migrating 6000 React tests using AI Agents and ASTs",
        "url": "https://eliocapella.com/blog/ai-library-migration-guide"
      },
      {
        "title": "React 19.2: The async shift is finally here - LogRocket Blog",
        "url": "https://blog.logrocket.com/react-19-2-the-async-shift"
      },
      {
        "title": "To Be a Leader of Systems | Hazel Weakly",
        "url": "https://hazelweakly.me/blog/to-be-a-leader-of-systems"
      },
      {
        "title": "Defending Against Glassworm: The Invisible Malware That's Rewriting Supply Chain Security | Snyk",
        "url": "https://snyk.io/articles/defending-against-glassworm"
      },
      {
        "title": "Why XSS Persists in This Frameworks Era?",
        "url": "https://flatt.tech/research/posts/why-xss-persists-in-this-frameworks-era"
      },
      {
        "title": "The Internet is Cool. Thank you, TCP",
        "url": "https://cefboud.com/posts/tcp-deep-dive-internals"
      },
      {
        "title": "Messing with bots",
        "url": "https://herman.bearblog.dev/messing-with-bots"
      },
      {
        "title": "<100ms E-commerce: Instant loads with Speculation Rules API",
        "url": "https://blog.sentry.io/less-than-100ms-e-commerce-instant-loads-with-speculation-rules-api"
      },
      {
        "title": "Responsive Letter Spacing",
        "url": "https://cloudfour.com/thinks/responsive-letter-spacing"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 446,
    "title": "The recent Cloudflare outage",
    "slug": "2025-11-24-426-the-recent-cloudflare-outage",
    "date": "2025-11-24",
    "templateType": "buttondown-markdown",
    "intro": "Hey,\n\nToday we start with a quote that I deeply respect, not just because I was lucky enough to meet *Mr. Doom* himself on a couple of occasions, but also because it lines up with something I have always admired... People who can build an entire videogame from scratch by themselves (or in a tiny team) feel almost mythical to me. Making a game is absolutely wild. You might think it is mostly about coding, but in reality you need sooooo many other skills. Game design, story telling, graphics and animation, music and sound effects, and then of course marketing, which becomes fundamental if you are an indie dev trying to stand out in an incredibly crowded industry. It is like a blend of literature, visual arts, music, and more, all balanced together. So yes, if you do not think this is an artistic profession, I genuinely do not know what is.\n\nNow let us leave planet video games and get back to planet full stack. I have put together a fresh batch of links for you, and I hope you will enjoy today’s curated content as much as I enjoyed picking it.\n\nIf you feel like engaging with me in a more personal way, just hit reply and tell me which link you liked the most and why. Do not be shy, I will be waiting to know you a bit more personally 😉\n\nAsk good questions, find better answers!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "You might not think that programmers are artists, but programming is an extremely creative profession. It’s logic-based creativity",
      "author": "John Romero",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Romero?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=446-the-recent-cloudflare-outage"
    },
    "links": [
      {
        "title": "The recent Cloudflare outage",
        "url": "https://blog.cloudflare.com/18-november-2025-outage",
        "description": "I know... we have been recently covering another Cloudflare issue and just a few weeks ago we questioned the future of the cloud talking about a recent AWS incident. In case you are wondering... yes, I still believe in the cloud. It is not perfect and it is not diversified enough, but I just cannot see a future where everyone is back to managing servers and data centers and spending a good chunk of their engineering time on these non differentiating activities. But I digress, because we need to talk about this new incident. Last week, Cloudflare shipped a change to their bot management pipeline that generated a feature file which quietly grew way beyond the size their edge proxy expected. When that oversized file was pushed out, core traffic handling software started to panic and respond with a sea of 500 errors. For a few hours a huge slice of the internet was slow or completely down, including things many of us rely on every day, such as ChatGPT, X, Shopify, popular games, and lots of other sites that sit behind Cloudflare. Funny enough, a lot of the online conversation instantly turned into a take about Rust. The crash happened at an `.unwrap()` in their Rust proxy code, so some folks used it as “proof” that Rust is not really a safe language after all. Which slightly misses the point. Rust buys you memory safety and some amazing defaults, but it cannot stop you from making bad assumptions or wiring unvalidated data into the critical path. Logical bugs, bad limits, surprising input, these are all still possible in Rust, just like in any other language. That is not a Rust problem, that is simply programming at scale. Before leaving you to the article for all the gritty details, I want to call out the actual silver lining. Cloudflare is very explicit about what went wrong and about the preventive measures they are now putting in place, from stricter limits and safer fallbacks to better validation and rollout controls, so that a single feature file cannot knock over their core proxy again. This is how things get better, not by looking for scapegoats, but by treating every outage as an opportunity to harden the platform for everyone who builds on top of it.",
        "imageUrl": "./ba82bedd5f85faafbbe91dd2fd463a124493a80c0bde090370b0a9fc2c943d56.jpg",
        "featured": true
      },
      {
        "title": "Mozilla SSL Configuration Generator",
        "url": "https://ssl-config.mozilla.org/",
        "description": "SSL and TLS have finally won. At this point it is weird to see a site that is not running on HTTPS, which is great news. The catch is that if you are still managing your own servers, you know that crypto does not magically configure itself. You still need to pick protocols, ciphers, curves, session settings, all the fun stuff, and you need to do it in a way that does not break your clients. That is why I love little helpers like this one. You pick what you are running and it spits out the exact config snippet you need for your specific setup. It is not just about web servers like Nginx, Apache, or Caddy, it even supports things like Redis and MySQL, so you can tighten up transport security across your whole stack without memorizing a bunch of obscure flags. What I really like is that you can choose how strict you want to be. Modern for services where you control the clients and they already speak TLS 1.3, Intermediate for general purpose servers that need to support a wide variety of clients, Old only if you must keep a few ancient clients limping along. Pick your server, pick your compatibility level, copy the incantation, and you have a solid starting point instead of a fragile config stitched together from random blog posts.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "StyleX: A Styling Library for CSS at Scale",
        "url": "https://engineering.fb.com/2025/11/11/web/stylex-a-styling-library-for-css-at-scale",
        "description": "Another CSS-in-JS library? Why not?! StyleX is Meta’s home grown styling system that tries to grab the nice parts of CSS in JS, like co located styles and good TypeScript ergonomics, and then cheat by compiling everything down to tiny atomic CSS classes at build time. The result is a setup that feels like writing CSS in JS, but ships as plain static CSS with very little runtime work, which is exactly what you want when you are styling apps the size of Facebook, Instagram, WhatsApp, and friends. The post is a deep dive into the compiler side of StyleX, how it extracts and deduplicates styles, keeps specificity predictable, and makes CSS size plateau as the app grows. Even if you are perfectly happy with your current styling stack, this is a fascinating read about what it takes to keep CSS maintainable when you have thousands of engineers touching the same design system.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Best Free Fonts",
        "url": "https://bestfreefonts.com/",
        "description": "If you have been following this newsletter long enough, you will know I have a thing for fonts and typography. I am definitely not an expert but I am naturally fascinated by fonts and I recognize they can make a huge difference in any design. So I could not pass on this resource. BestFreeFonts is a neat little curated collection of free typefaces that are actually usable in real projects, not just meme thumbnails. You can browse by category, try them out on the page, and quickly spot options that could work for your next landing page, dashboard, or side project. This is not strictly developer territory, but I think it is the kind of resource that levels up your taste. We spend all day shipping interfaces, and the right font choice can quietly make your work look more polished and intentional without touching a single line of code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Gitlogue: A cinematic Git commit replay tool for the terminal",
        "url": "https://github.com/unhappychoice/gitlogue",
        "description": "This goes into my *“mindblowing open source project of the week”* shelf. Gitlogue is a cinematic Git commit replay tool for the terminal, turning your Git history into a living, animated story. It simulates an entire code editor right in your terminal, so you can sit there watching commits play back with realistic typing and feel like a Vim magician, even that's not your superpower. I mean, if you have never considered re watching all your commits to see how the project evolved (and how many bugs were created and fixed along the way), you really have no excuse not to try it now. BTW, it is written in Rust, and since you can control the typing speed, you might just use this to pretend you are doing very intense work in a crowded office. Just do not tell anyone I was the one who suggested this use case. [**Check Repo**](https://github.com/unhappychoice/gitlogue)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "When Everyone’s a Developer, How Do We Promote the Web Platform Over React?",
        "url": "https://webtechnology.news/when-everyones-a-developer-how-do-we-promote-the-web-platform-over-react",
        "description": "When everyone and their favorite AI chat window is suddenly a developer, this article asks a very simple question: *if the web platform is finally good enough to do most of what React does, why does everything still end up as a React plus Next stack by default?* The author digs into how large language models and so called vibe coders, people who prompt more than they program, keep reinforcing that default. You ask the magic lamp for an app, the genie hands you a React project, and all the nice browser features that shipped in the last few years quietly sit on the bench.\nThe piece suggests a few ways to push back. Teach AI users to explicitly ask for web native solutions, build open datasets of framework free examples, and highlight real projects that ship great experiences with the platform itself instead of a giant framework stack.\nI loved this piece because it is aligned with something I have been thinking a lot about lately. Conversely, I also think AI might actually work in favour of diversity and innovation. For example, I really like SolidJS, and I am realising that with great documentation you can relatively easily port component systems, libraries, and even full projects from React to Solid, which helps bridge the gap between ecosystems. That is just one example, but it makes me hopeful that AI plus good tooling and being very specific with our ask might eventually make it easier, not harder, to explore alternatives beyond the default React shaped path.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What even are Cloudflare Durable Objects?",
        "url": "https://boristane.com/blog/what-are-cloudflare-durable-objects",
        "description": "We started with a Cloudflare related piece, and it is only fair we end with another one. This one is a bit more technical, and it covers a topic I have been struggling to appreciate, and this article finally made it click for me. Cloudflare Durable Objects are basically little stateful services that live inside the Workers platform, each tied to an id and guaranteed to run in a single place at a time. You can treat them as tiny per user or per room instances that keep their own state and that you can send messages to from anywhere, which suddenly makes things like chat, collaboration, counters, and coordination logic much simpler. What this article nails is showing where Durable Objects fit next to Workers KV and your regular database, and why they save you from sticky sessions, distributed locks, and a lot of glue code. After reading this, I wish AWS Lambda had something similar.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Communication Patterns: A Guide for Developers and Architects",
      "author": "Jacqueline Read",
      "description": "Having a great idea or design is not enough to make your software project succeed. If you want stakeholders to buy into your design and teams to collaborate and contribute to the vision, you also need to communicate effectively. In this practical book, author Jacqui Read shows you how to successfully present your architecture and get stakeholders to jump on board.\nMisunderstanding and lack of buy-in leads to increasing costs, unmet requirements, and an architecture that is not what you intended. Through constructive examples and patterns, this book shows you how to create documentation and diagrams that actually get the message across to the different audiences you'll face.\nThis book shows you how to:",
      "coverImageUrl": "./b5b174148128faf8ecc73cdb532ddb481e9f78dfc5c12b940daf1af217a482e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098140540",
      "amazonUk": "https://www.amazon.co.uk/dp/1098140540"
    },
    "additionalLinks": [
      {
        "title": "The Range Syntax Has Come to Container Style Queries and if()",
        "url": "https://css-tricks.com/the-range-syntax-has-come-to-container-style-queries-and-if"
      },
      {
        "title": "Tooltip Components Should Not Exist",
        "url": "https://tkdodo.eu/blog/tooltip-components-should-not-exist"
      },
      {
        "title": "My CSS selector strategy",
        "url": "https://stuffandnonsense.co.uk/blog/my-css-selector-strategy"
      },
      {
        "title": "Deploy Ascent React",
        "url": "https://railway.com/deploy/ascent-react"
      },
      {
        "title": "Animating CSS width or height no longer forces a Main Thread animation (in Chrome, under the right conditions)",
        "url": "https://bram.us/2025/11/13/animating-css-width-or-height-no-longer-force-a-main-thread-animation-in-chrome-under-the-right-conditions"
      },
      {
        "title": "Six Things I Bet You Didn't Know You Could Do With Chrome's Devtools, Part 1",
        "url": "https://readwriterachel.com/things-i-learned/2025/11/09/devtools-1.html"
      },
      {
        "title": "How to \"officially\" deprecate methods with Node.js utilities",
        "url": "https://stefanjudis.com/today-i-learned/deprecate-method-in-node-js"
      },
      {
        "title": "A developer’s guide to MCP auth",
        "url": "https://workos.com/blog/mcp-auth-developer-guide"
      },
      {
        "title": "Dynamically Generating PWA App Icons in Next.js 16 with Serwist",
        "url": "https://aurorascharff.no/posts/dynamically-generating-pwa-app-icons-nextjs-16-serwist"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 445,
    "title": "Your URL Is Your State",
    "slug": "2025-11-17-425-your-url-is-your-state",
    "date": "2025-11-17",
    "templateType": "buttondown-markdown",
    "intro": "If you have ever caught yourself talking to your laptop or secretly giving it a name, you are in good company. I recently got a new one, the one I am using right now to write these lines, and named it *Sideral*, which is why I found todays featured quote particularly hilarious.\n\nThis issue is an invitation to go through every single piece of content with curiosity. Each one has a story and a lesson, from URLs as state to colors as inclusion, from data and security to CSS quirks and visual types. I am pretty sure you will come out a little more inspired and a little more ready to build cool stuff. In the end, that is why we are here, to create awesome web experiences for ourselves and for our users.\n\nLearn by doing and sharing!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Once you get to naming your laptop, you know that you're really having a deep relationship with it",
      "author": "Cory Doctorow",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Cory_Doctorow?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=445-your-url-is-your-state"
    },
    "links": [
      {
        "title": "Your URL Is Your State",
        "url": "https://alfy.blog/2025/10/31/your-url-is-your-state.html",
        "description": "Kind of wild to realise how much the whole web leans on this tiny thing we mostly ignore: the URL. Almost every experience we have online starts from one, and every hop between pages or sites goes through it. I honestly cannot picture the web existing without something like URLs, yet most of the time we treat them as a boring technical detail and never really ask whether we are using them to their full potential. This piece was a proper wake up call for me. It shows how flexible and well designed URLs actually are, and how much more we could lean on them to encode state, improve sharing, and craft better user experiences. Query params, hashes, path segments: they are all little building blocks we can combine to make our apps more understandable, more resilient, and easier to revisit. After reading it, you might find yourself looking at the address bar with a lot more respect.",
        "imageUrl": "./d02b3c310c6ceb5e6a842947b037bd36d3cad5f95f2b518338b8ecd3386279d7.jpg",
        "featured": true
      },
      {
        "title": "InclusiveColors - Accessible color palette creator",
        "url": "https://inclusivecolors.com/",
        "description": "We talk a lot about accessibility in terms of components, patterns, and frameworks, but color choices quietly make or break a lot of real user experiences, especially for people with low vision or color blindness. Inclusive Colors is a very neat little power tool for building entire color palettes that are accessible from the start, not patched after the design is done. I love that you can start from your existing brand color, which makes it feel practical instead of theoretical, then tweak from there while seeing which combinations actually pass contrast checks. If you are working on a design system, theming, or just tired of guessing which shade of gray is safe, this is a great way to bake inclusion right into your tokens instead of bolting it on at the end. [**Check tool**](https://inclusivecolors.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "MockSpeed - 3D Mockup Editor",
        "url": "https://mockspeed.io/",
        "description": "If you ever need to share some cool looking mobile screenshots of your web apps, this is a very handy little helper. MockSpeed is a browser based studio for creating photo realistic 3D app mockups in just a few minutes, so you get shiny device renders without touching 3D software, begging a designer friend for help, or using AI and getting unpredictable results that are very hard to change. You drag your screens into different scenes, tweak angles, lighting, and backgrounds, then export clean visuals that actually make your app look as good as it feels to use. Perfect for indie hackers, landing pages, pitch decks, portfolios, or any other showcase of your craft. [**Check tool**](https://mockspeed.io/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "TanStack DB 0.5 comes with Query-Driven Sync",
        "url": "https://tanstack.com/blog/tanstack-db-0.5-query-driven-sync",
        "description": "TanStack DB is a library that lets your app treat remote data like a smart local store. Your components tell it what data they need, then it fetches everything for you, keeps it in sync, and lets you make optimistic updates so the UI reacts in milliseconds while it quietly talks to your backend in the background. It shines in dashboards, admin panels, search and filter heavy UIs, and any product where you want actions to feel instant even when there is a network in the middle. I am super excited about this library, but I still have not really had a chance to try it in a real project. This new version actually tackles some of the doubts I originally had. Is this only going to work for small scale apps? What if I have a lot of data? With query driven sync and the new sync modes aimed at large datasets, I am now even more excited to give this a go. Have you tried it already? Reply to this email and let me know what you think.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Official Node.js Security Best Practices",
        "url": "https://nodejs.org/en/learn/getting-started/security-best-practices",
        "description": "It is really nice to see the official Node.js site shipping more tutorials and guides, and especially that they are putting real emphasis on what you actually need for production ready deployments, not just hello world examples. This new page is all about security. it walks through a bunch of real world threats you might face when building Node.js backends, like denial of service attacks on your HTTP server, DNS rebinding, request smuggling, timing attacks, prototype pollution, and supply chain issues from malicious third party modules, then shows concrete ways to defend yourself. I will admit I did not even know a couple of these by name, so this is definitely not just fluffy introductory content. it is a well packed investment that takes only around 15 to 20 minutes to read. If you write any Node.js at all, this is one of those resources you really should read at least once.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Weird Parts of Sticky positioning",
        "url": "https://frontendmasters.com/blog/the-weird-parts-of-position-sticky",
        "description": "I always love a good piece about CSS. Do not ask me why, perhaps I am weird, but I hope that you share the same weird love for CSS. This one digs into `position: sticky`, which looks simple on the surface, then completely falls apart the moment you try something slightly fancy. The article walks through the classic sticky use cases, then shows the subtle reasons it can fail, like when your sticky element is taller than its scroll container or when flex and grid layout create a bounding context that is just too small. It is full of clear demos and practical fixes, so next time your sticky header behaves like a confused cat on a glass table, you will actually know where to look.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Visual Types",
        "url": "https://types.kitlangton.com/",
        "description": "If TypeScript types still feel a bit like wizard magic to you, this is a lovely way to peek behind the curtain. This site gives you a very visual intro to how the TypeScript type system works, with playful animations and clear, interactive explanations that show how unions, intersections, conditionals, and inference actually behave. It is the kind of resource you can casually click through in a few minutes, then suddenly realise your mental model of types just got a big upgrade.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture",
      "author": "Christian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, Carola Lilienthal, João Rosa, Alexander von Zitzewitz, Rene Weiss, and Eoin Woods",
      "description": "Software architecture metrics are key to the maintainability and architectural quality of a software project and they can warn you about dangerous accumulations of architectural and technical debt early in the process. In this practical book, leading hands-on software architects share case studies to introduce metrics that every software architect should know.\nThis isn't a book about theory. It's more about practice and implementation, about what has already been tried and worked. Detecting software architectural issues early is crucial for the success of your software: it helps mitigate the risk of poor performance and lowers the cost of repairing those issues. Written by practitioners for software architects and software developers eager to explore successful case studies, this guide will help you learn more about decision and measurement effectiveness.\nThrough contributions from 10 prominent practitioners, this book shares key software architecture metrics to help you set the right KPIs and measure the results. You'll learn how to:",
      "coverImageUrl": "./fc76ff19f404e641c67a969c4f0335f8060c6b80e30160101e659d09e1ad9ac2.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098112237",
      "amazonUk": "https://www.amazon.co.uk/dp/1098112237"
    },
    "additionalLinks": [
      {
        "title": "Mantine DataTable - build awesome data-rich web applications",
        "url": "https://icflorescu.github.io/mantine-datatable"
      },
      {
        "title": "To Affinity and Beyond",
        "url": "https://matthiasott.com/notes/to-affinity-and-beyond"
      },
      {
        "title": "Gramio: Powerful, extensible and really type-safe Telegram Bot API framework",
        "url": "https://github.com/gramiojs/gramio"
      },
      {
        "title": "Range Syntax for Style Queries",
        "url": "https://una.im/range-style-queries"
      },
      {
        "title": "Simple One-Time Passcode Inputs",
        "url": "https://cloudfour.com/thinks/simple-one-time-passcode-inputs"
      },
      {
        "title": "Reimagine the Date Picker",
        "url": "https://dbushell.com/2025/11/10/pikaday"
      },
      {
        "title": "Payment form best coding practices that don't drop sales",
        "url": "https://evilmartians.com/chronicles/payment-form-best-coding-practices-that-dont-drop-sales"
      },
      {
        "title": "DNS Resolution Adds Up",
        "url": "https://macarthur.me/posts/dns"
      },
      {
        "title": "Some practical examples of view transitions to elevate your UI",
        "url": "https://piccalil.li/blog/some-practical-examples-of-view-transitions-to-elevate-your-ui"
      },
      {
        "title": "Metallic Text Effect Generator",
        "url": "https://design.dev/tools/metallic-effect-generator"
      },
      {
        "title": "You Need To Become A Full Stack Person",
        "url": "https://den.dev/blog/full-stack-person"
      },
      {
        "title": "Error chaining in JavaScript: cleaner debugging with Error.cause",
        "url": "https://allthingssmitty.com/2025/11/10/error-chaining-in-javascript-cleaner-debugging-with-error-cause"
      },
      {
        "title": "Effectively Monitoring Web Performance",
        "url": "https://smashingmagazine.com/2025/11/effectively-monitoring-web-performance"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 444,
    "title": "Finding Mr TIFF",
    "slug": "2025-11-10-424-finding-mr-tiff",
    "date": "2025-11-10",
    "templateType": "buttondown-markdown",
    "intro": "Howdy,\n\nThis issue turned out more inspirational than I planned, which might be exactly what we all need. Thinking deeply and broadly often moves us further than learning the latest CSS or JavaScript trick. If you are here to stay inspired, you will love this one.\n\nStill, you will find a few practical pieces to keep you grounded and ready to build for the web. Do not forget to check the extra links at the end. I packed more than usual because I found some gems that were too good to skip.\n\nLet’s wander a little. Inspiration likes to be found off the path.  \n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=444-finding-mr-tiff"
    },
    "links": [
      {
        "title": "Finding Mr TIFF",
        "url": "https://inventingthefuture.ghost.io/mr-tiff",
        "description": "Have you ever heard of the [**TIFF** file format](https://en.wikipedia.org/wiki/TIFF)? It stands for *Tagged Image File Format*. It stores high quality raster images with lossless options. It was introduced by Aldus with help from Microsoft in 1986, and is now stewarded by Adobe, which makes it almost four decades old. I used it a few times early in my career (funny to think this format is pretty much as old as me), but that is not the point here. The point, or the question should I say, is *who created this format?* It is a legit question, and we often forget to credit the people behind the tech that shapes how we work. I was mesmerized reading this story where the author is trying everything to unravel the mystery behind the person who actually created TIFF, which for years was credited to a company rather than a human. I will not spoil it. It is a fascinating and touching read. It sits a little outside our usual full stack beat, yet it is absolutely worth your time. I am sure you will enjoy it.",
        "imageUrl": "./a38285bf16a226e1d3c70d8c332953ea7f5e5cd5bf1c6b9413b3ac7faf8061e8.jpg",
        "featured": true
      },
      {
        "title": "The SSO Wall of Shame",
        "url": "https://sso.tax/",
        "description": "Have you ever found yourself staring at the feature matrix on a SaaS pricing page and thinking *\"why are some of these features so disproportionately expensive?\"* Intuitively, the technical cost rarely lines up with the sticker price. Sometimes it feels like luxury pricing: it's expensive... just because they can and somebody is willing to pay for it just to make a problem go away!  SSO is the poster child here, and I have seen some truly wild workarounds inside teams just to dodge that extortion level fee for the feature. Ans SSO is one of those things that should be done right and should be a priority for any team with more than one person! That is why this site hit me right in the feels. **SSO Tax** tracks and calls out products that charge extra for single sign on, highlights companies that include it at no extra cost, gathers community reports, and even gives you a friendly email template to nudge vendors toward fair pricing. If you have been hit by the SSO tax before, I am sure this will resonate with you too. And if you are building a SaaS product, please do not make SSO expensive for no technical reason... Thanks!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "You Should Write An Agent",
        "url": "https://fly.io/blog/everyone-write-an-agent",
        "description": "AI Agents are having a moment. This post makes a simple case: you should build one. Not for the hype, but because wiring a tiny LLM loop with a single tool is far easier than it looks, and the exercise teaches you a lot about context, tool design, and where the real engineering work still lives. It walks through a minimal Python loop, adds a small tool, then nudges you to think about context storage, security boundaries, and cost trade offs you will meet in the real world. It is opinionated, practical, and very buildable. It is a bit off topic for our usual full-stack beat, or perhaps not. Maybe the future of building for the web will have us shipping agents alongside our apps. Or maybe we'll write agents that collaborate to create websites on our behalf... Who knows? For now let's just enjoy the exercise and stay open minded.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "From web developer to database developer in 10 years",
        "url": "https://notes.eatonphil.com/2025-02-15-from-web-developer-to-database-developer-in-10-years.html",
        "description": "I have met some ridiculously talented systems engineers in my career, and a few of them quietly (well, sometimes not so quietly) believed that web development is easy, or at least not as worthy as their craft. Like web dev is for simple folks, who can't even fathom the complexity of *real* software development! Maybe there is a grain of truth in the sense that constraints and failure modes look different. Still, software is software. If you learn the fundamentals and you care deeply, you can cross borders. You do not have to limit yourself to the web craft. That is why this story hit home. It follows a developer who started with web pages in PHP, then kept pulling the thread until it led to writing databases in C and Rust. The journey is patient, curious, and very human. It shows that switching domains does not mean you will be mediocre at both. It can mean you become excellent at one by bringing lessons from the other. Do not let anyone tell you that you cannot go from the browser to the storage engine. Follow your curiosity. Follow your passion. You can do it, and you can be good at it too.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Perfectly Pointed Tooltips: A Foundation",
        "url": "https://frontendmasters.com/blog/perfectly-pointed-tooltips-a-foundation",
        "description": "I admit I started today's issue with a stack of pure inspiration. Loved every minute of it, and I hope you did too. But maybe you are itching for something practical that flips you into build mode fast. Here is one for the CSS lovers. This guide breaks down how to craft tooltips that actually point to what they are attached to. Clean positioning, a crisp little arrow that stays centered, sensible spacing, and graceful behavior when space gets tight. It leans on modern CSS, keeps JavaScript light, and does not forget accessibility with focus and keyboard in mind. The result is a reusable foundation you can drop into real apps without feeling hacky. If you want a quick win that sharpens your UI instincts, dive in and ship a better tooltip today.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Fix Any Bug",
        "url": "https://overreacted.io/how-to-fix-any-bug",
        "description": "Bugs do not care how senior you are. We all get stuck, we all spiral, and we all need a reliable way out. This piece lays out a calm recipe you can follow when your brain is fried and the logs look like hieroglyphs. Shrink the problem until you can hold it in your hand. Question every assumption. Change one thing at a time. Add probes and asserts that tell you what really happened, not what you hoped would happen. If you cannot reproduce it, you cannot fix it, so keep slicing until you can. One interesting detail: the author uses LLMs as a troubleshooting assistant, which is smart and time saving. The technique still holds even if you do everything by yourself, just like the good old times. When you are truly lost, step away, then come back and read the code like it was written by a stranger. It is simple, not easy, and it works across stacks. Frontend, backend, databases, you name it. Worth bookmarking for the next time a bug decides to live rent free in your day.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Directives and the Platform Boundary",
        "url": "https://tanstack.com/blog/directives-and-the-platform-boundary",
        "description": "Maybe you have felt this too. In modern fullstack React projects with server side rendering, those top of file strings like `\"use client\"` and `\"use server\"` never quite sat right with me, but it was hard to say why. This piece finally clicks it into place. It argues for using *directives* carefully because they look like part of the platform even though they are not. That blurs the boundary between JavaScript and a framework. The confusion leaks into tooling, makes portability brittle, and nudges the ecosystem toward vendor dialects. The author’s core suggestion is simple: when a feature needs options, ownership, and evolution, prefer an explicit import and an API over a magic string. Treat HTML and the platform as the source of truth. Let libraries plug in through imports, and keep that boundary crisp. I like the caution here. We are drifting toward a style of JavaScript that abuses custom directives, and the near term ergonomics hide long term costs. If you value portability, clarity, and a healthier path to shared primitives, this is a timely read.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Building Evolutionary Architectures: Automated Software Governance",
      "author": "Neal Ford, Rebecca Parsons, Patrick Kua, and Pramod Sadalage",
      "description": "The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time.",
      "coverImageUrl": "./4b6b914e661a4d7c4504b31bf4eec378a7fac35070fd0003599e52c169717e7e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492097543",
      "amazonUk": "https://www.amazon.co.uk/dp/1492097543"
    },
    "additionalLinks": [
      {
        "title": "History of Domains",
        "url": "https://dotcom.press/history-of-domains"
      },
      {
        "title": "Use Cases for Field Sizing",
        "url": "https://ishadeed.com/article/field-sizing"
      },
      {
        "title": "Requiring Node.js modules from BitTorrent",
        "url": "https://evanhahn.com/node-torrent-import"
      },
      {
        "title": "Comparing interviews at 8 large tech companies",
        "url": "https://blog.pragmaticengineer.com/comparing-interviews-at-8-large-tech-companies"
      },
      {
        "title": "The Dead framework theory",
        "url": "https://aifoc.us/dead-framework-theory"
      },
      {
        "title": "Datadog Instance Explorer",
        "url": "https://instances.datadoghq.com/"
      },
      {
        "title": "The \"Most Hated\" CSS Feature: tan()",
        "url": "https://css-tricks.com/the-most-hated-css-feature-tan"
      },
      {
        "title": "Why startups choose React (and when you shouldn't)",
        "url": "https://evilmartians.com/chronicles/why-startups-choose-react-and-when-you-should-not"
      },
      {
        "title": "The Origin Story of JavaScript (video)",
        "url": "https://youtube.com/watch?v=Sl3XUmg4LBk"
      },
      {
        "title": "How We Saved $500,000 Per Year by Rolling Our Own “S3”",
        "url": "https://engineering.nanit.com/how-we-saved-500-000-per-year-by-rolling-our-own-s3-6caec1ee1143"
      },
      {
        "title": "JavaScript prototype pollution",
        "url": "https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/Prototype_pollution"
      },
      {
        "title": "Encapsulate as much state as possible in your component",
        "url": "https://blacksheepcode.com/posts/encapsulate_as_much_state_as_possible"
      },
      {
        "title": "The Inner Workings of JavaScript Source Maps",
        "url": "https://www.polarsignals.com/blog/posts/2025/11/04/javascript-source-maps-internals"
      },
      {
        "title": "TypeScript’s rise in the AI era: Insights from Lead Architect, Anders Hejlsberg",
        "url": "https://github.blog/developer-skills/programming-languages-and-frameworks/typescripts-rise-in-the-ai-era-insights-from-lead-architect-anders-hejlsberg/"
      },
      {
        "title": "Embedding TypeScript",
        "url": "https://andrews.substack.com/p/embedding-typescript"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 443,
    "title": "Past Time for Passkeys",
    "slug": "2025-11-03-423-past-time-for-passkeys",
    "date": "2025-11-03",
    "templateType": "buttondown-markdown",
    "intro": "What's up,\n\nI shipped the fourth edition of [Node.js Design Patterns](https://nodejsdesignpatterns.com/) last month, and I am finally back working on my other book [Crafting Lambda Functions in Rust](https://rust-lambda.com/). If you know me, you know that Serverless and Rust have been my happy place for the last five years, so stay tuned for more. You will see a few relevant picks in this issue too: Rust fans, you are in for a treat.\n\nI will still keep our compass pointed at full-stack web development, that lovely and complex craft where we mix protocols, pixels, and people to do a little magic on the web. With a bit of luck, the things we build reach millions and make someone’s day a tiny bit better. That is worth showing up for.\n\nA small inspiration to carry into the week: learn the tool, and then learn the why. Curiosity compounds! The more we peek under the hood, the better we design, the kinder we are to our future selves, and the smoother our apps feel for everyone else.\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)\n\nPS: The quote you read in this issue was suggested by our good friend and reader [Paolo](https://www.linkedin.com/in/paolocaressa/), whom I truly admire in the broader world of software engineering. Thank you Paolo, we are blessed to have you here. I loved this quote because it reminded me how programming is an art that is perhaps more bound to humans than it is to machines and this is a kind reminder in the age of AI and LLMs. If you want to suggest an inspiring tech quote, or use these quotes in your own projects, [they all live in a public repo](https://github.com/FullStackBulletin/tech-quotes) (and there's even an API). In the great spirit of open source, use it or just make it yours. It is totally open and free.",
    "quote": {
      "text": "The essential part of any program, the theory of it, is something that could not conceivably be expressed, but is inextricably bound to human beings.",
      "author": "Peter Naur",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Peter_Naur?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=443-past-time-for-passkeys"
    },
    "links": [
      {
        "title": "Past Time for Passkeys",
        "url": "https://www.youtube.com/watch?v=GVH8X_QOlKg&t=237s&pp=0gcJCQMKAYcqIYzv",
        "description": "Last week I fell into a [Nordic.js](https://nordicjs.com/) rabbit hole and found myself watching this talk from [Kyle Simpson](https://github.com/getify). One day I will actually make it to this very cool conf in person. Kyle is one of my favorite speakers and writers. Tiny spoiler. he still does the best intros in the business. The talk is called Past Time for Passkeys and it is a crisp tour of why passwords are a relic and how passkeys can make our apps safer and our users happier. This is not brand new tech, yet I feel we are still underusing it and underrating it in real products. Have you shipped passkeys in one of your apps? I have not yet. I am itching to find an excuse so I can learn it properly and bring it to a real project.",
        "imageUrl": "./5ea36ad965524a64126ae8f572d02ddd12332531e8d553edc882a2f2c340737f.jpg",
        "featured": true
      },
      {
        "title": "The Two Button Problem",
        "url": "https://frontendmasters.com/blog/the-two-button-problem",
        "description": "A tiny UI trap that trips a lot of real products: the two button problem. When you have two buttons with different looks and no cursor, it is weirdly hard to tell which one will fire. The author shows clear examples from TV screens and pill toggles, then suggests practical fixes like stronger focus rings and platform aware styles for coarse pointers with that neat media query trick. It is a fast read that will sharpen your eye for states and intent. Slightly more design than code, yet perfect for fullstack folks who ship screens and want fewer user oops moments.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Build Your Own Database",
        "url": "https://nan.fyi/database",
        "description": "NO! You should not build your own database... for production. But, you should absolutely build a toy one to understand what real databases do for you. This interactive guide walks you through a tiny key value store, starting with a plain file and layering in the ideas that make lookups fast and writes safe. The article uses beatufully animated interactive components to make those concepts click in your hands. Read it, then go back to your favorite database with new eyes. You will avoid silly queries, pick better indexes, and ship faster.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What Actually Happens When You Press ‘Send’ to ChatGPT",
        "url": "https://blog.bytebytego.com/p/what-actually-happens-when-you-press",
        "description": "On a similar vein as the previous article, this is another in the series *\"do you know how stuff actually works or do you just use technology blindly?\"* As folks who actually make tech, we should aim to understand the machinery, not only press the shiny buttons. I will confess: if you had asked me last week to explain how LLMs work, I would have rambled and hoped you changed the subject. This piece changed that. Now, I feel comfortable explaining the path from your prompt to the streamed reply, and I feel better using these tools in my day to day!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Here comes the sun: building a weather client in Rust",
        "url": "https://bitfieldconsulting.com/posts/here-comes-sun",
        "description": "This pick is a bit outside most comfort zones unless you are diving deep into Rust, which I strongly recommend. I could not skip it. If nothing else, because of this opening that nails why we build software together: *\"We’re better together, and that’s as true of software engineers as it was of the Beatles. None of us is as smart as all of us [...]. I encourage thinking about every program we write as a kind of global collaboration. By designing our [...] programs as modular, reusable components [...] and publishing them to the universal library, we make it possible for others to connect our software with their own.\"* I mean... How beautiful is that? And the rest of the article delivers too, with a tiny weather client used to teach small crates, clean interfaces, and tests that pull their weight. Even if you are not writing Rust this week, the mindset travels well to any stack. It is motivating, practical, and genuinely uplifting.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why does \"👩🏾‍🌾\" have a length of 7 in JavaScript?",
        "url": "https://evanhahn.com/javascript-string-lengths",
        "description": "If you have been reading this newsletter long enough you know by now I have a knack for emojis and UTF encoding. I do not claim expert status, but I always find this stuff fascinating. This piece is one of those reads that feels simple and entertaining and still very educational. Before I started to really deep dive into UTF I never questioned how machines store text. I took it for granted. Of course it is all bits and bytes, which means we need standard encodings and sometimes it really helps to know how those standards work. Now let's see how much a single emoji can teach us!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Scripts I wrote that I use all the time",
        "url": "https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time",
        "description": "Another slightly weird pick that is not strictly full stack, yet deeply inspiring. I have a [little repo](https://github.com/lmammino/dotfiles) of personal scripts that I keep in sync across machines, and this post made me want to clean it up and add a few more. Evan shares a grab bag of tiny helpers that smooth real day to day work. things like copy and pasta for the clipboard, to make and enter a temp folder, `trash` for safer deletes, `serveit` for quick local hosting, plus timing and sound helpers. It is practical, personal, and full of copy worthy ideas. I am absolutely going to steal a couple of these smart time savers. Bonus note. the post blew up and sparked a lot of people to share their own favorites, which is a lovely nudge to invest in your own tools.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Don’t Forget These Tags to Make HTML Work Like You Expect",
        "url": "https://blog.jim-nielsen.com/2025/dont-forget-these-html-tags",
        "description": "These days there are a few tags and attributes you see in every single HTML page, even the simplest one. But what are those and why do we need them? This tidy checklist spells out the tiny incantations that make a bare page behave the way you expect. think `<!doctype html>` to avoid quirks mode, `<html lang=\"en\">` for accessibility and language aware processing, `<meta charset=\"utf-8\">` so text does not garble, and `<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">` so layouts do not shrink on phones (I know, this one could have been easier, but it's just boilerplate at this point). I generally like stuff from this blog, because it carries a great spirit: a love letter to the big beautiful mess that is making things for the world wide web.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Rational Software Engineer: Strategies for a Fulfilling Career in Tech",
      "author": "Mykyta Chernenko",
      "description": "This book will serve as a framework for you as a software engineer seeking a fulfilling career and wishing to stay passionate and maintain a healthy mental state. It is filled with protocols to achieve effective life-long learning, navigate career development, adapt to changes, maintain work-life balance, and have a healthy lifestyle.\nAs a successful software engineer you tend to focus on improving your technical skills: learning a new programming language, mastering another tool, or using a library. But you also need to build a solid mental framework that will help you navigate your professional development. You need to develop the skills that will help you be a happy software engineer.\nThis book will help you if you feel frustrated, unmotivated, or unhappy; lost in your career path; or uncertain if you want to be a software engineer. It can help you deal with burnout, high levels of stress, or depression; or if you struggle to be productive while working from home.\nWhat You Will Learn",
      "coverImageUrl": "./5a8ac6e033a4ca44d77739b707eda6a5ea3f2d3ba4d14d59452ba4d8fe923cc2.jpg",
      "amazonUs": "https://www.amazon.com/dp/1484297946",
      "amazonUk": "https://www.amazon.co.uk/dp/1484297946"
    },
    "additionalLinks": [
      {
        "title": "The present and potential future of progressive image rendering",
        "url": "https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering"
      },
      {
        "title": "Importing vs fetching JSON",
        "url": "https://jakearchibald.com/2025/importing-vs-fetching-json"
      },
      {
        "title": "Rethinking async loops in JavaScript",
        "url": "https://allthingssmitty.com/2025/10/20/rethinking-async-loops-in-javascript"
      },
      {
        "title": "Why NaN !== NaN in JavaScript (and the IEEE 754 story behind it)",
        "url": "https://pzarycki.com/en/posts/js-nan"
      },
      {
        "title": "Toolchains, the hard parts",
        "url": "https://ematipico.xyz/blog/toolchains-the-hard-parts"
      },
      {
        "title": "Migrating (from AWS and Azure) to Hetzner",
        "url": "https://digitalsociety.coop/posts/migrating-to-hetzner-cloud"
      },
      {
        "title": "Measuring Engineering Productivity",
        "url": "https://justoffbyone.com/posts/measuring-engineering-productivity"
      },
      {
        "title": "CSS layout: flexbox, grid, media queries and container queries",
        "url": "https://2ality.com/2025/10/css-layout.html"
      },
      {
        "title": "Free Customizable SVG Icons for Web Developers & Designers",
        "url": "https://design.dev/free-icons"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 442,
    "title": "The Cloud is Dead, Long Live to the Cloud",
    "slug": "2025-10-27-422-the-cloud-is-dead-long-live-to-the-cloud",
    "date": "2025-10-27",
    "templateType": "buttondown-markdown",
    "intro": "Heyo,\n\nSorry for going quiet last week. I am still finding my footing as a new dad and trying to shape a sane after work routine. If you are still here, thanks for sticking with me!\n\nThis issue kicks off with a big reflection on the future of the web and the cloud, sparked by the recent AWS outage in the `us-east-1` region that disrupted a few thousands of big apps. What failed? What it says about centralization? And, what we should we expect for the future of the web?\n\nBut that's just the first pick... As always, you will find a heap of hand picked reads, tools, and tasty CSS tricks to keep you informed and inspired in your wonderful full stack journey.\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The Web as I envisaged it, we have not seen it yet. The future is still so much bigger than the past",
      "author": "Tim Berners-Lee",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Tim_Berners-Lee?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=442-navbar-gallery-navigation-design-inspiration"
    },
    "links": [
      {
        "title": "The Cloud is Dead, Long Live to the Cloud",
        "url": "https://aws.amazon.com/message/101925/",
        "description": "Last week's web madness and unreliability were a reminder that distributed systems are hard as f**k and raised a lot of questions about the future of the web and the cloud! What happened? A rare race condition in AWS automation wrote an empty DNS plan for the DynamoDB regional endpoint in us-east-1, which made the DynamoDB service unavailable in the region. This had a massive ripple effect for a few reasons. First, us-east-1 is a heavily used region, so any regional failure there touches a lot of workloads across many customers. DynamoDB is one of those services that are at the core of many other services in AWS, so the outage made more than 100 other AWS services flaky as well. Furthermore, some AWS services have only one control plane in us-east-1, and this created side effects in other regions for certain operations. Finally, even if you were not in us-east-1, a vendor you depend on probably was, which meant you still had a broken dependency. Of course, the outage triggered a wave of cloud skepticism. It also made some long time cloud users uneasy. The big question is simple: *Did we break the internet by centralizing too much with a few cloud providers?* It is a fair concern and worth discussing. For a sober technical baseline on what actually failed and why, start with the AWS postmortem (main link here). I also shared my take on LinkedIn [here](https://www.linkedin.com/feed/update/urn:li:activity:7385992455126564864/) and [here](https://www.linkedin.com/feed/update/urn:li:activity:7386333921602486272/). Yan Cui captured the root cause clearly in [his own post as](https://www.linkedin.com/feed/update/urn:li:activity:7387501023751311360/) (well worth a read) and [this other article](https://blog.pragmaticengineer.com/aws-outage-us-east-1/) is a great explainer too. So, *is the cloud dead?* I do not think so. I am optimistic we will get a more resilient AWS and, hopefully, stronger and more diverse competition will emerge over time across the board. I say the cloud and managed services in general are still a great bet for those who want to be focused and productive, so *long live the cloud!* But that is just me... Hit reply and tell me what you think! [**Read the official Postmortem**](https://aws.amazon.com/message/101925/)",
        "imageUrl": "./cf02d11f2f7b421239d6d2548b4adee534a795e0665f5beb9f4dec6195c5ebdb.png",
        "featured": true
      },
      {
        "title": "Navigation Design Inspiration",
        "url": "https://www.navbar.gallery/",
        "description": "Designing a navbar and want fresh ideas? Navbar Gallery is a collection of the best website navbar inspiration designs on the web, curated so you can quickly find the ideal navigation example for your next build. Lots of layouts, animations, and tiny interaction details to spark a better top level experience. I am semi-seriously wondering if I can use some of this to vibe code a better navbar for my own personal site!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Modern CSS Round-Out Tabs",
        "url": "https://frontendmasters.com/blog/modern-css-round-out-tabs",
        "description": "Designing pill style tabs without JavaScript. This walkthrough shows how to build rounded tab UIs with modern CSS, with clear structure, sensible states, and accessibility in mind. Practical, copy ready patterns that scale from simple demos to real product nav. I loved to see a clear comparison between the old and hacky solutions and what is now possible with clean, modern CSS (e.g. using `shape()` to carve away the edges of an element to look like a folder tab).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Design, animate, and export SVGs from one file",
        "url": "https://mirrow.app/",
        "description": "I came across a tool called **Mirrow**: a declarative language that simplifies the process of creating animated SVGs. The idea is to design, style, and animate everything within a single file, without needing any extra CSS or scripts. You can then export your work as ready-to-use code for frameworks like React and Svelte. It seems perfect for building crisp icons or playful microinteractions without getting lost in a tooling rabbit hole. If you're curious, they have a live web-based [playground](https://mirrow.app/playground/) where you can see what's possible with just a few lines of code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "State-based vs Signal-based",
        "url": "https://jovidecroock.com/blog/state-vs-signals",
        "description": "In the last couple of years, thanks to the rise of [SolidJS](https://www.solidjs.com/) and its signals based reactivity model, we have seen a lot of frameworks shift toward signals for building reactive user interfaces on the web. React, the most widely used UI framework, is still resisting that switch and keeps its state based rendering approach. So what is the difference between these two models and why does it matter? This article summarizes it nicely, with clear examples that contrast fine grained updates in a signal system with component level rerenders in a state model, plus the trade offs around mental model, performance, and ergonomics. If you want a crisp primer that helps you choose when signals shine and when state is just fine, read this and keep it handy for your next architecture chat, especially if you are looking for an excuse to explore something different from React!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The new progress() function in CSS",
        "url": "https://amitmerchant.com/the-progress-function-css",
        "description": "A tidy intro to the new CSS `progress()` function with practical uses you can copy today. This piece explains what shows how to wire it into animations and transitions, and walks through patterns like scroll indicators, progress rings, and playful loaders without JavaScript. Clear snippets, sensible defaults, and a mindset shift toward letting the browser do the math for you. I loved seeing how a small function can replace a bunch of hacks and tons of handwritten JavaScript to give you motion that feels clean and predictable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS :is() :where() the Magic Happens",
        "url": "https://matthiasott.com/notes/css-is-where-the-magic-happens",
        "description": "A crisp primer on why CSS is where real magic happens. It dives into the new `:is()` and `:where()` pseudo classes and shows how they solve two pains at once. `:is()` lets you group selectors to kill repetition and keep stylesheets readable. `:where()` gives you zero specificity so you can set soft defaults that any simple class can override. Together they tidy your code and tame the cascade. Clean mental model, fewer selector wars, and a gentler path to scalable design systems. I admit I never used `:where()` yet, but after reading this, I am starting to see a few opportunities to introduce it in my CSS code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Writing alt text with AI",
        "url": "https://jaredcunha.com/blog/writing-alt-text-with-ai",
        "description": "Confession time: I have been using LLMs to write alt text for at least the last six months, but I kind of took it for granted and never discussed it with anyone. This read was a super useful reality check. It lays out a clear way to think about context, subject, function, and audience, then gives you a simple template you can adopt to get more predictable and accurate results. I loved comparing my loose, vibes based workflow with a more structured approach, and I am definitely stealing a few moves for my next batch of images.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Observability Engineering: Achieving Production Excellence",
      "author": "Charity Majors, Liz Fong-Jones, and George Miranda",
      "description": "Observability is critical for building, changing, and understanding the software that powers complex modern systems. Teams that adopt observability are much better equipped to ship code swiftly and confidently, identify outliers and aberrant behaviors, and understand the experience of each and every user. This practical book explains the value of observable systems and shows you how to practice observability-driven development.\nAuthors Charity Majors, Liz Fong-Jones, and George Miranda from Honeycomb explain what constitutes good observability, show you how to improve upon what you're doing today, and provide practical dos and don'ts for migrating from legacy tooling, such as metrics, monitoring, and log management. You'll also learn the impact observability has on organizational culture (and vice versa).\nYou'll explore:",
      "coverImageUrl": "./dc851164b38a230a774ecc7edf7b3cf051dd502090aa6aba53ea2fb65ff7c3e6.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492076449",
      "amazonUk": "https://www.amazon.co.uk/dp/1492076449"
    },
    "additionalLinks": [
      {
        "title": "One Year with Next.js App Router: Why We're Moving On",
        "url": "https://paperclover.net/blog/webdev/next-js.png"
      },
      {
        "title": "React Server Components: Do They Really Improve Performance?",
        "url": "https://developerway.com/posts/react-server-components-performance"
      },
      {
        "title": "The killer feature of Web Components",
        "url": "https://daverupert.com/2025/10/custom-elements-manifest-killer-feature"
      },
      {
        "title": "CSS Grid: A helpful mental model and the power of grid lines",
        "url": "https://webkit.org/blog/17474/css-grid-a-helpful-mental-model-and-the-power-of-grid-lines"
      },
      {
        "title": "Stop Prop Drilling: The Ultimate Guide to React’s useContext Hook with TypeScript",
        "url": "https://karan51ngh.medium.com/stop-prop-drilling-the-ultimate-guide-to-reacts-usecontext-hook-with-typescript-6b98821870ee"
      },
      {
        "title": "Context Inheritance in TanStack Router",
        "url": "https://tkdodo.eu/blog/context-inheritance-in-tan-stack-router"
      },
      {
        "title": "Is it Time to Regulate React?",
        "url": "https://dbushell.com/2025/10/23/react-regulation"
      },
      {
        "title": "The missing link in JavaScript tools",
        "url": "https://marvinh.dev/blog/unifying-js-tools"
      },
      {
        "title": "Tried React 19’s Activity Component , here’s What I Learned",
        "url": "https://javascript.plainenglish.io/tried-react-19s-activity-component-here-s-what-i-learned-b0f714003a65"
      },
      {
        "title": "Solved By Modern CSS: Section Layout",
        "url": "https://ishadeed.com/article/modern-css-section-layout"
      },
      {
        "title": "Reading and Writing Files in Node.js - The Complete Modern Guide",
        "url": "https://nodejsdesignpatterns.com/blog/reading-writing-files-nodejs/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 441,
    "title": "Reading and Writing Files in Node.js (The Complete Modern Guide)",
    "slug": "2025-10-13-421-reading-and-writing-files-in-node-js-the-complete-modern-gui",
    "date": "2025-10-13",
    "templateType": "buttondown-markdown",
    "intro": "Hey there,\n\nAfter a tiny break last week we are back in full swing: caffeinated, curious, and ready to ship. To make up for the pause I brought not one but two extra feature picks: one of them is a 45 minute in depth guide I wrote on reading and writing files in Node.js the modern way (promises, top level await, ESM, streams). I packed this issue with pieces to sharpen your craft and spark ideas: I hope you enjoy the ride and keep staying inspired and curious!\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Technology is best when it brings people together",
      "author": "Matt Mullenweg",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Matt_Mullenweg?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=441-reading-and-writing-files-in-node"
    },
    "links": [
      {
        "title": "Reading and Writing Files in Node.js (The Complete Modern Guide)",
        "url": "https://nodejsdesignpatterns.com/blog/reading-writing-files-nodejs/",
        "description": "I wrote this one because the same Node.js question kept popping up: *how do you read and write files in Node.js without old baggage?* Many guides skip modern JavaScript, so I leaned into async and await, top level await, and ESM, then built a friendly walkthrough that starts simple and ramps up with purpose. We begin exploring `node:fs/promises`: `readFile()` and `writeFile()` for text. Then we jump into binary by hand: we generate a tiny WAV file from a plain Node.js script with zero dependencies, and we parse its header to see what is really going on. From there we shift to real world speed: read many files at once, write many at once, work with directories, and resolve paths relative to your script without guesswork. I also explain when async beats sync and why. Next we tackle large files and memory, then move to file handles for incremental writes: open files, keep them around, and understand why this API feels low level and when that is a good thing. We close with Streams, my favorite Node.js feature: how to read, how to write, how to compose tidy pipelines, and when they are the right tool. I finish with best practices and a short FAQ that covers the usual suspects: sync or async, handling big files, streams versus promises, the error codes that matter, top level await, and safe concurrency. I wrote it to be concise, current, and example driven: hit reply and tell me what you think and what you would like me to explore next.",
        "imageUrl": "./d3205201cc638a379a2351b95b9e8031a6694c7cfef7355ff8e955658c0b984e.jpeg",
        "featured": true
      },
      {
        "title": "Vite: The Documentary",
        "url": "https://www.youtube.com/watch?v=bmWQqAKLgT4%3Futm_source%3Dfullstackbulletin.com",
        "description": "Vite is one of my favorite web technologies of the last few years: it has supercharged productivity for everyday web devs and for the folks who build frameworks. It still blows my mind to say this out loud: almost every major framework ships with Vite out of the box today, with Next.js as the big exception. This documentary is a joyful origin story: you watch Vite grow from spark to staple through the eyes of Evan You (also the creator of Vue), alongside core contributors and familiar community voices. You see the pain points that started it, the design bets that made feedback instant, and the moment the ecosystem rallied around speed and simplicity. Here is what makes it even more compelling to me: Vite is still evolving fast and expanding its reach. I honestly feel we are at the very beginning of what Vite will mean for the future of web development, which makes this story even more exciting in my eyes. I loved watching it: if you care about fast feedback, great ergonomics, and how the best tools come to life, I think you will enjoy it too!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing the React Foundation",
        "url": "https://react.dev/blog/2025/10/07/introducing-the-react-foundation",
        "description": "Huge news for open source: the React team just announced a new React Foundation and a shift to independent technical governance. React and React Native will move out of Meta into a neutral home under the Linux Foundation, with the goal of widening stewardship and supporting the whole ecosystem, not just one company’s priorities. Why I like this move right now: React has been taking plenty of criticism lately, and this feels like a timely way to make React even more of a community tool than a corporate flagship. The foundation will handle core infrastructure and community programs like React Conf, while technical direction is set by maintainers across companies, with early founding members including Amazon, Callstack, Expo, Meta, Microsoft, Software Mansion, and Vercel. That is a strong signal of shared ownership and long term health. Big picture: this is a win for developers who want React to keep evolving in the open with transparent governance and durable support. I am excited to see where it goes next.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React 19.2 is out!",
        "url": "https://react.dev/blog/2025/10/01/react-19-2",
        "description": "Another big one for React: 19.2 lands with real features and real polish. You get `<Activity />` (which we covered a few weeks ago!) to hide or keep parts of the UI warm for instant switches, `useEffectEvent` to separate event logic from effects so you stop fighting reruns, and `cacheSignal` for server components to abort or clean up work when cached renders no longer matter. Debugging gets nicer too: new React Performance Tracks show Scheduler and Components activity right inside Chrome profiles.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to detect Safari and iOS versions with ease in 2025",
        "url": "https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease",
        "description": "I wish the web were perfect and we never had to detect browsers or operating systems again like the Internet Explorer 6 days: yet every now and then reality taps you on the shoulder and you need a precise check. This guide shows a sane way to detect Safari and iOS versions without playing guess the user agent: lean on WebKit feature checks and tiny behavior tests, then use user agent hints only when you truly must. On iPhone and iPad the Safari version maps to the iOS major version, so once you confirm the Safari build you can infer the OS and gate features with confidence. The piece walks through practical moves with clear examples: narrow to Safari with engine signals, detect release specific features with CSS supports, combine presence and absence to isolate tricky cases, and test on real devices because strings lie and even Firefox on iPad can masquerade as Safari. It is current, pragmatic, and immediately useful: if Safari quirks have ever bitten you, this one belongs in your toolkit.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Size Matters - Fluid Type Scale Generator",
        "url": "https://sizematters.netlify.app/",
        "description": "If you struggle to generate responsive type scales for your web projects, you might really enjoy this one: a small tool that helps you build a scale that fits your design and configure it to your needs. Pick a base size and a ratio, set the min and max viewport you care about, preview headings and paragraphs across sizes, then copy the CSS it produces. It turns typography math into a friendly workflow, and the result is a consistent rhythm without trial and error.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Coinbase Design System",
        "url": "https://cds.coinbase.com/",
        "description": "Last week Coinbase opened up its design system as open source: a sizable set of React and React Native components, patterns, hooks, and docs with accessibility and theming baked in. That is great to see, and it gives us one more solid reference to study and borrow from for our own projects. If you want to break free from the usual Bootstrap and maybe try something different from Shadcn, this is worth a look.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Development gets better with Age",
        "url": "https://allthingsdistributed.com/2025/10/better-with-age.html",
        "description": "An inspiration piece from Werner Vogels, CTO at Amazon: a short and uplifting reminder that experience really does sharpen builders. He talks about the value of battle scars, pattern recognition, and a healthy dose of skepticism in a moment where generative AI hype can drown out clear thinking. The takeaway is simple and powerful: pause the FOMO, understand real customer problems first, then pick the right tools, which might include gen AI when it truly fits. I found it grounded and energizing. I think you will too.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What's new in view transitions",
        "url": "https://developer.chrome.com/blog/view-transitions-in-2025",
        "description": "View Transitions keep maturing: broader cross browser support, nicer DevTools, and nested groups that fix clipping and 3D transform quirks. Frameworks are moving support forward, and more is on the way: scoped transitions, document.activeViewTransition, and a waitUntil method to control when a transition finishes. If you care about polished UI, this is a great moment to try them and start baking them into your design system.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Software Engineering at Google: Lessons Learned from Programming Over Time",
      "author": "Titus Winters, Tom Manshreck, and Hyrum Wright",
      "description": "Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.\nHow can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world's leading practitioners construct and maintain software. This book covers Google's unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.\nYou'll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code:",
      "coverImageUrl": "./0838555b72ae57f88c0eecc9e3fef9fca26d88f2b59865afb1f073409aff4f26.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492082791",
      "amazonUk": "https://www.amazon.co.uk/dp/1492082791"
    },
    "additionalLinks": [
      {
        "title": "11ty Hacks for Fun and Performance",
        "url": "https://infrequently.org/2025/10/11ty-hacks-for-fun-and-performance"
      },
      {
        "title": "Cap'n Web: A new RPC system for browsers and web servers",
        "url": "https://blog.cloudflare.com/capnweb-javascript-rpc-library"
      },
      {
        "title": "I want to intercept Boolean Coercion for Objects in JavaScript",
        "url": "https://zachleat.com/web/boolean-coercion"
      },
      {
        "title": "e18e (Ecosystem Performance) - Best Practices on Publishing npm Packages",
        "url": "https://e18e.dev/docs/publishing.html"
      },
      {
        "title": "itty - Ultra-small, powerful tools for modern web development",
        "url": "https://itty.dev/"
      },
      {
        "title": "The least amount of CSS for a decent looking site",
        "url": "https://thecascade.dev/article/least-amount-of-css"
      },
      {
        "title": "Harmonizer Web Palette Generator",
        "url": "https://harmonizer.evilmartians.com/"
      },
      {
        "title": "How to Optimize Viewport for Mobile for Faster Interactions",
        "url": "https://debugbear.com/blog/optimize-viewport-for-mobile"
      },
      {
        "title": "A pragmatic guide to modern CSS colours",
        "url": "https://piccalil.li/blog/a-pragmatic-guide-to-modern-css-colours-part-one"
      },
      {
        "title": "The History of Core Web Vitals",
        "url": "https://addyosmani.com/blog/core-web-vitals"
      },
      {
        "title": "Nine HTTP Edge Cases Every API Developer Should Understand",
        "url": "https://dochia.dev/blog/http_edge_cases"
      },
      {
        "title": "Building My New Website with Astro, GitHub Copilot, and AWS Amplify",
        "url": "https://www.emanuelebartolesi.com/blog/building-my-new-website-with-astro-github-copilot-and-aws-amplify-3eoc"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 440,
    "title": "Node.js Design Patterns 4th edition is out!",
    "slug": "2025-09-29-420-node-js-design-patterns-4th-edition-is-out",
    "date": "2025-09-29",
    "templateType": "buttondown-markdown",
    "intro": "Hello,\n\nLast week was truly special for me for TWO BIG REASONS.\n\nFirst, after a year of hard work, the new edition of [Node.js Design Patterns](https://nodejsdesignpatterns.com/) is finally out. I cannot wait to hear what you think. And, to make it worth your while, I left a small gift waiting for you, so start with the first piece below to find out more. 🎁\n\nSecond, on a very personal note, I became a dad. I will spare you the whirlwind of emotions, fears, and sense of responsibility I am going through right now, and I will just keep this editorial intro short... So, enjoy the fresh batch of hand picked full-stack reads waiting for you below!\n\nP.S. I have some paternity leave to enjoy now, so I might decide to skip next week's issue. I hope you will understand and forgive me... 😜\n\nSee you soon, space cowgirl/cowboy! 👋🤠 \n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "It's supposed to be automatic, but actually you have to push this button",
      "author": "John Brunner",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Brunner?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=440-nodejs-design-patterns-4th-ed-is-out"
    },
    "links": [
      {
        "title": "Node.js Design Patterns 4th edition is out!",
        "url": "https://nodejsdesignpatterns.com/",
        "description": "Quick heads up. this is a bit of personal prop since I am one of the authors, but it is absolutely relevant to the world of full stack development: the 4th edition of Node.js Design Patterns is out as of last week. The goal of this book has always been to help JavaScript developers master the intricacies of server side development so they can build reliable and efficient applications with confidence. In other words, we wanted to take readers on a journey so that they can feel real senior when working on Node projects. When the first edition arrived 11 years ago, Node felt like the new kid. Since then the ecosystem has grown up with us, we got async and await, a move to ESM, a stronger standard library, better tooling, and a culture that values testing, performance, and reliability. This new edition is our love letter to that evolution. To achieve that, we rebuilt the book from the ground up with modern JavaScript throughout, clearer guidance on scalability and distributed systems, practical patterns for resilience performance and security, and a full chapter on testing with the built in Node test runner plus Playwright for E2E. There is also a nice perk. an **entirely free chapter** on **streams** that you can grab from the website. It is about 80 pages of hands on insight that helps you write faster leaner and more scalable Node.js code. [**Check the website**](https://nodejsdesignpatterns.com/)",
        "imageUrl": "./cba1bb8e2bf9499689d0ce39adc3eb120046489b1948787da8d9f0d6121e6a71.jpg",
        "featured": true
      },
      {
        "title": "What You Need to Know about Modern CSS (2025 Edition)",
        "url": "https://frontendmasters.com/blog/what-you-need-to-know-about-modern-css-2025-edition",
        "description": "If you thought 2024 was packed with amazing new CSS, you are right. But 2025 keeps the momentum and the payoff is bigger than pretty visuals. Modern CSS is changing the frontend game by letting us drop a lot of JavaScript we used to need for UI polish. Think container queries, subgrid, the has selector, view transitions, scroll driven animations, and richer color tools. These features cover layout, state based styling, and motion right in the stylesheet. This post gives quick examples you can scan and copy, plus sensible notes on when to reach for each feature. The result is a cleaner separation of concerns. HTML is for content, JavaScript is for interaction, CSS is for look and feel. Finally, this separation of concerns is starting to feel right!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pulling strings at Ruby Central: forcing Bundler and RubyGems takeover",
        "url": "https://joel.drapper.me/p/rubygems-takeover",
        "description": "If Ruby is not your daily driver, a quick primer helps: **RubyGems** is the package manager and public registry for gems (libraries), and **Bundler** is the dependency manager that locks and installs exact versions for an app. If you work in JavaScript, think npm plus the npm registry. A command line tool plus a central service that hosts packages and metadata. The post alleges that Ruby Central, under financial pressure and sponsor scrutiny, moved to centralize control over the RubyGems and Bundler codebases by removing community maintainers and collapsing the boundary between the open source projects and the rubygems.org service. It frames this as governance overreach, with supply chain security offered as a later justification. Ruby Central’s public stance is that, as the nonprofit steward, it has a duty to tighten governance and production access. The organization presents these moves as part of a security minded restructuring and a clearer stewardship model. Why this matters is simple. RubyGems and Bundler sit at the heart of Ruby, much like npm does for Node.js. Questions about who controls the code versus who runs the hosted service cut to the core of open source legitimacy. Even if the goal is stronger security, how authority is asserted, and by whom, sets precedents for trust and transparency across the ecosystem. The situation is still evolving, so reading both the investigation and [Ruby Central’s statement](https://rubycentral.org/news/strengthening-the-stewardship-of-rubygems-and-bundler/) helps you form a balanced view.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Python-style kwargs in TypeScript",
        "url": "https://xavd.id/blog/post/python-kwargs-in-typescript",
        "description": "I often hit this point with TypeScript functions: once I cross three or four arguments, I prefer to pass a single well typed object with key and value pairs. It lets me provide parameters in any order, gives me clear labels at the call site, and makes optional arguments painless. It also gives me Python vibes making me think of `kwargs`: a Python feature that lets you pass arguments in any order as long as you provide them as key and value pairs. This post shows how to bring that spirit to TypeScript without losing type safety or autocomplete. You get object parameters with strong typing, sensible defaults, and tidy patterns that keep your intent obvious and your APIs easy to evolve.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "AI Is Redefining the Concept of a Programming Language's Popularity",
        "url": "https://spectrum.ieee.org/top-programming-languages-2025",
        "description": "IEEE Spectrum’s 2025 language rankings are out with a few clean takeaways. Python holds the top spot by far this year and also leads the Jobs view. SQL remains a hiring magnet. JavaScript slips to sixth in the main Spectrum list, which reflects shifting web work and the AI pull on tooling. One personal note. the ranking treats TypeScript and JavaScript as separate languages. That feels a little unfair. If you bundle them together they would easily land in the top three on every chart. The index blends signals from searches, Q&A sites, jobs, and repos, so treat it as directional not gospel. For full-stack folks the moves are practical. Python stays a safe bet for data and automation. SQL is still table stakes. If you are invested in the JS ecosystem this is still a very safe bet (IMHO), but you should consider that the industry seems to be moving to TypeScript by default, so if that is not your bread and butter you should consider exploring it and adopting it more to stay relevant.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Designing NotebookLM",
        "url": "https://jasonspielman.com/notebooklm",
        "description": "This one is going to be fun if you enjoy UX and UI and want a serious case study to chew on. Getting to see how top players approach a real product is always a goldmine for new lessons. NotebookLM is an AI powered research notebook from Google that builds a tailored model from your own sources so you can summarize, ask questions, and spin up outlines with context. The piece walks through the thinking behind NotebookLM with admirable clarity. you get problem framing, constraints, information architecture, prototyping, and how the team iterated toward something that feels simple over a complex AI core. It also touches the messy parts that full stack folks care about. component states, tokens, accessibility choices, performance trade offs, and how design and engineering synced during handoff. Read it to steal patterns for data heavy flows, to see how UX principles guide micro decisions, and to sharpen the way you explain design rationale to your team.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How AWS S3 serves 1 petabyte per second on top of slow HDDs",
        "url": "https://bigdata.2minutestreaming.com/p/how-aws-s3-scales-with-tens-of-millions-of-hard-drives",
        "description": "And let us close this issue with a piece dedicated to those of you who love to get their hands dirty in designing highly scalable architectures. This deep dive into how S3 operates at the scale of tens of millions of hard drives is packed with concrete lessons. Think failure as the default, strict limits on blast radius, erasure coding for durability, background repair and scrubbing, smart partition keys, and ruthless automation across the control plane and the data plane. You get a clear view of how requests are routed, how hot spots are avoided, how metadata is protected, and how the system heals itself while serving global traffic. Why it matters for full stack builders: the playbook is portable. Design for immutable writes where you can, pick partition schemes that spread load, build idempotent operations, measure everything and shed load early, and treat capacity and repair as first class features. Even if you never manage a fleet this large, the mindset will make your own services sturdier and kinder to your future self.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Secure Coding: Defending Against Command Injection Vulnerabilities",
      "author": "Liran Tal",
      "description": "Master Node.js security through hands-on learning and best practices. Learn secure coding conventions in Node.js by executing command injection attacks on real-world npm packages and analyzing vulnerable code. The book features 33 self-assessment yes-no, fill-the-blank, and multiple answer questions to help you evaluate and test your knowledge of Node.js secure coding. You'll analyze the code of 6 vulnerable npm packages found vulnerable via CVE reports to learn best practices on command injection vulnerabilities. With 6 additional references to vulnerable npm packages, you'll strengthen your skills in secure coding. This book takes an adventure-based approach to application security learning, where you will be playing detective who unravels the mysteries of common security vulnerabilities. Through these exercises you will learn about secure coding practices, and how to avoid security pitfalls that software developers and open-source maintainers get caught with. Senior software engineers often recite how one of the most critical skills you should have as an engineer is the ability to read code. The more you read, the easier it becomes for you to understand code and the more context you gain. This book focuses exactly on that - reading vulnerable code, so we can learn from it. This activity creates patterns that our brain learns to identify and that later quickly turn into red flags that we detect and apply in our day-to-day programming and code review routines. Through insecure coding practices found in vulnerable open-source npm packages, this book examines the security aspects affecting JavaScript and Node.js applications. Developers of other languages such as Python will find references to insecure code and best practices relatively easy to transfer to other server-side languages and software ecosystems. By completing this book, you gain:",
      "coverImageUrl": "./2b3b3725282770834765e8607c18ebb0103d108093fcf0fe45cba35921e93e0d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1446725057",
      "amazonUk": "https://www.amazon.co.uk/dp/1446725057"
    },
    "additionalLinks": [
      {
        "title": "eslint-plugin-react-you-might-not-need-an-effect: Catch unnecessary React useEffect hooks to make your code simpler, faster, and safer",
        "url": "https://github.com/NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect"
      },
      {
        "title": "You may be looking for a useSyncExternalStore",
        "url": "https://swizec.com/blog/you-may-be-looking-for-a-useSyncExternalStore"
      },
      {
        "title": "The nuances of base64 encoding strings in JavaScript | Articles",
        "url": "https://web.dev/articles/base64-encoding"
      },
      {
        "title": "TanStack Start v1 Release Candidate",
        "url": "https://tanstack.com/blog/announcing-tanstack-start-v1"
      },
      {
        "title": "Your Images Are (Probably) Oversized",
        "url": "https://reasonunderpressure.com/blog/posts/your-images-are-probably-oversized"
      },
      {
        "title": "Integrating CSS Cascade Layers To An Existing Project",
        "url": "https://smashingmagazine.com/2025/09/integrating-css-cascade-layers-existing-project"
      },
      {
        "title": "Bundler belongs to the Ruby community",
        "url": "https://andre.arko.net/2025/09/25/bundler-belongs-to-the-ruby-community"
      },
      {
        "title": "Self hosted Google Analytics alternatives and why you should use them",
        "url": "https://daniel.es/blog/google-analytics-alternatives"
      },
      {
        "title": "Migrating to TanStack Start",
        "url": "https://catalins.tech/migrating-to-tanstack-start"
      },
      {
        "title": "How to Use Rive App to Animate Your Web and Mobile Interfaces",
        "url": "https://premieroctet.com/blog/comment-utiliser-rive-app-pour-animer-vos-interfaces-web-et-mobiles"
      },
      {
        "title": "State in the url in React (the right way)",
        "url": "https://medium.com/@meric.emmanuel/state-in-the-url-in-react-the-right-way-3b031a3b183a"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 439,
    "title": "A deep dive into the latest Cloudflare’s outage",
    "slug": "2025-09-22-419-a-deep-dive-into-the-latest-cloudflare-s-outage",
    "date": "2025-09-22",
    "templateType": "buttondown-markdown",
    "intro": "Ciao,\n\nThis week reminded me how easy it is for small bugs to scale into massive problems, and how the tiniest bit of clever engineering can completely flip your perspective.\n\nFrom Cloudflare's real-world `useEffect` drama, to Bun’s relentless pursuit of speed, to the question of whether S3 is about to eat vector databases for breakfast... this issue is packed with sharp lessons, curious experiments, and more than one “huh, that’s actually brilliant” moment.\n\nAlso, a confession: I spent way too long nerding out over UTF-8 and queue delivery semantics. You’ve been warned.\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=439-a-deep-dive-into-cloudflare-s-september-12-2025-dashboard-and-api-outage"
    },
    "links": [
      {
        "title": "A deep dive into the latest Cloudflare’s outage",
        "url": "https://blog.cloudflare.com/deep-dive-into-cloudflares-sept-12-dashboard-and-api-outage",
        "description": "React’s `useEffect` hook is well known for causing developers all sorts of headaches. It’s a useful and powerful API, but also easy to misuse. It hooks into the lifecycle of a React component and is often used to load data from a remote source when that component is mounted in the DOM. One of the confusing parts about `useEffect` is the dependency array. This array tells React when to re-run the effect. If you want the effect to *never* re-run, you MUST pass an **empty** array. But what if you leave it out entirely? Well, here’s the kicker: the effect will re-run **on every single render**. If your effect is fetching data from an API, this means you're potentially generating tons of unnecessary requests! Now imagine this mistake happening on a heavily used dashboard. Suddenly, you’ve unintentionally turned your well-meaning users into a distributed denial-of-service army! That’s exactly what happened to Cloudflare. A small frontend mistake, compounded at scale, created a serious production outage. Fair play to Cloudflare for fixing it fast and sharing the full story so openly. If you enjoy learning from real-world postmortems as much as I do, this one is well worth a read.",
        "imageUrl": "./4bd3c21a876966f35bf94bb905e948a65bbc5cbc617d08d48b3c31e549d5d041.jpg",
        "featured": true
      },
      {
        "title": "Behind The Scenes of Bun Install",
        "url": "https://bun.com/blog/behind-the-scenes-of-bun-install",
        "description": "Have you ever used different JavaScript package managers (npm, pnpm, yarn, bun) and noticed how some of them feel way faster than others, even when running on the exact same big project? That’s not a fluke. Some of them are consistently faster. Installing a complex graph of dependencies is no trivial task, and there are a lot of different ways to tackle it. Some are... fine. Others are blazing fast. And that’s exactly what the team at Bun is aiming for. In this deep technical dive, they break down the secret sauce behind bun install and how it’s become one of the fastest installers on the landscape. We’re talking low-level optimizations, parallelism, smart compression, even skipping the tar step entirely. It’s geeky in the best way. If you love detailed engineering breakdowns and want to understand what makes dev tools really fast, this one’s a treat.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Move files and directories to the trash",
        "url": "https://github.com/sindresorhus/trash",
        "description": "A quick mention for a lovely little JavaScript library I stumbled across last week: `trash`. It lets you move files to the system trash. Sounds simple enough that you wouldn’t need a library for it, right? Well... not quite. Turns out the trash bin is very OS-dependent, and if your app needs to work across macOS, Windows, and Linux, this library saves you from dealing with all the subtle differences. Clean API, cross-platform, and does exactly what it says. Take a peek at the code if you're curious how file deletion *should* be done properly. [**Check Repo**](https://github.com/sindresorhus/trash)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "You no longer need JavaScript",
        "url": "https://lyra.horse/blog/2025/08/you-dont-need-js",
        "description": "Before you think I’ve turned against my beloved JavaScript... let me explain. This article isn’t calling for a total JS ban. It’s more of a thoughtful reflection on how much modern CSS can handle on its own. Things that used to need custom JavaScript are now possible with native CSS features. And that’s a win in my book. The more you can push into declarative styling, the better. JavaScript should be reserved for actual business logic, interactivity, and anything that truly needs code behind it. Everything else? CSS has it covered. A solid reminder that writing less JavaScript doesn't mean building less.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "UTF-8 is a Brilliant Design",
        "url": "https://iamvishnu.com/posts/utf8-is-brilliant-design",
        "description": "Another one for the information nerds! And if you’ve been reading this newsletter for a while, you know I’m a sucker for anything that dives into emoji encoding and other text-related oddities. Well, here’s a great post that breaks down the brilliance behind UTF-8, the most common text encoding in use today. It explains why its design is so clever and why it’s still holding up decades later. If you’ve ever wondered why a single emoji might count as \"2\" or \"7\" characters (depending on who you ask... looking at you, JavaScript), this article clears things up. Also super useful if you’ve ever streamed Unicode text and ended up with the occasional garbled character. Chances are, you split a multi-byte character right down the middle! Fascinating stuff, and a great read if you enjoy peeking under the hood of how text actually works.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How I solved a distributed queue problem after 15 years",
        "url": "https://dbos.dev/blog/durable-queues",
        "description": "If you ever needed a queue system to process background tasks (sending emails, generating reports, scaling images, etc), you’ve probably used an external service like Kafka, RabbitMQ, or a SaaS like SQS. Well, you can also host your own queues if you’re brave enough! This article explores how to build durable, crash-safe queues directly on top of a database transaction log. No external broker, no extra services, just smart engineering layered on top of Postgres. It also does a great job explaining why queueing systems are not as simple as they seem. You’ll learn about different delivery guarantees (like at-most-once, at-least-once, and exactly-once), why they matter, and what it takes to get them right. While I think I’ll still prefer using SQS for the foreseeable future, this read felt like a love letter to simplicity, reliability, and the kind of backend architecture that quietly does the job right.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Will Amazon S3 Vectors Kill Vector Databases—or Save Them?",
        "url": "https://zilliz.com/blog/will-amazon-s3-vectors-kill-vector-databases-or-save-them",
        "description": "Last week I was working on a blog and adding a “related articles” feature. I had this moment: *Blimey, that’s a perfect use case for vector databases!* Then I remembered [an article](https://awsfundamentals.com/blog/building-related-posts-with-bedrock-knowledgebase-and-s3-vectors) I’d read recently showing exactly that—using AWS S3’s new vector indexing features to power related content. Super clever stuff. So when I came across this new post, it had my full attention. The author digs into a big question: will S3’s built-in vector storage and indexing kill the rising market of vector databases... or actually boost it? If you’ve been following the whole vector DB hype and wondering where it’s headed, this is a thoughtful take that’s absolutely worth a read.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Accelerate: The Science of Lean Software and DevOps",
      "author": "Nicole Forsgren  PhD, Jez Humble, and Gene Kim",
      "description": "How can we apply technology to drive real business value?",
      "coverImageUrl": "./6b5ab82690c0fa63fdb4caae4cdb292135e7df49400c1359a2d67d56a100a1d1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1942788339",
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "How To Set Up Express 5 For Production In 2025",
        "url": "https://reactsquad.io/blog/how-to-set-up-express-5-in-2025"
      },
      {
        "title": "Keeping Secrets Out of Logs",
        "url": "https://allan.reyes.sh/posts/keeping-secrets-out-of-logs"
      },
      {
        "title": "The Discipline of Constraints: What Elm Taught Me About React's useReducer",
        "url": "https://cekrem.github.io/posts/the-discipline-of-constraints-elm-usereducer-lessons"
      },
      {
        "title": "Quick SEO Guidelines for Your Next.js App",
        "url": "https://playfulprogramming.com/posts/seo-nextjs-guide"
      },
      {
        "title": "A tiny bit-o-CSS for Stable Scrollbar Gutters",
        "url": "https://zachleat.com/web/stable-scrollbar-gutters"
      },
      {
        "title": "Fetch streams are great, but not for measuring upload/download progress",
        "url": "https://jakearchibald.com/2025/fetch-streams-not-for-progress"
      },
      {
        "title": "Strapi: Headless CMS on AWS (AWS Bites Podcast)",
        "url": "https://awsbites.com/149-headless-cms-on-aws"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 438,
    "title": "Interactive Animations That Actually Feel Fun to Build",
    "slug": "2025-09-15-418-interactive-animations-that-actually-feel-fun-to-build",
    "date": "2025-09-15",
    "templateType": "buttondown-markdown",
    "intro": "Welcome back,\n\nI promised myself to keep this intro short, mostly because I already spent too much time crafting the animation you will see below. I hope it makes you smile, and I hope the related picks keep that energy going.\n\nI also spent a bit of time refining the automation behind this newsletter. You should notice even more links than usual at the bottom. Take a minute to explore them all, I am pretty sure there is something for everyone.\n\nEnjoy, and happy coding! \n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=438-interactive-animations"
    },
    "links": [
      {
        "title": "Interactive Animations That Actually Feel Fun to Build",
        "url": "https://rive.app/use-cases/websites",
        "description": "Last week I stumbled across this little gem called [Rive](https://rive.app/) and... I’m kind of hooked. It’s a design and animation tool that lets you create interactive animations and export them straight into your web pages (React, plain JS, Flutter, Unity, you name it). You can pass props into the animations, listen to events from them, and really treat them like proper interactive UI elements. Not just lifeless GIFs. In fact, the FullStackBulletin logo above was made with Rive, but the exported GIF sadly butchered the frame rate. So if you want to see it in its full buttery glory, check out [the real thing](https://rive.app/community/files/23586-44122-fullstack-bulletin-animated-logo/), you can also fork it and make it yours if you want! If you’ve used [Lottie](https://airbnb.io/lottie) before, Rive feels like its grown-up sibling. More refined, more capable, and just... more fun. My favorite use cases so far? Hero sections that react to user interaction in clever, delightful ways. And yes, while Rive is mostly open source, it does have a few commercial bits. This isn’t an ad. I just think it’s genuinely cool and worth a look. [**Check Out the Web Showcase**](https://rive.app/use-cases/websites)",
        "imageUrl": "./55fa66d0939d4cbd684e4d87a2451dcd2491579c2699714690ad91f42c332d66.gif",
        "featured": true
      },
      {
        "title": "Compromised npm Packages: chalk, debug and More!",
        "url": "https://aikido.dev/blog/npm-debug-and-chalk-packages-compromised",
        "description": "We are switching to a less fun but absolutely important read. Multiple npm packages including `chalk` and `debug` briefly shipped malicious code that runs in the browser and silently intercepts wallet interactions, rewriting crypto transactions to attacker addresses. The breach began with a very convincing phishing email that pretended to be from npm support and triggered a two factor reset on a maintainer account. Since these packages see roughly 2 billion (with a *\"B\"*!) downloads per week, there is a real chance one of your projects pulled a bad release. So open the article and check the full list of affected packages and versions. Then verify the exact versions in your lock file, clean your npm cache, reinstall everything from a clean state, and make sure you are using a lock file with pinned versions going forward.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Gardenind Your Dependencies",
        "url": "https://blog.val.town/gardening-dependencies",
        "description": "Speaking of `package.json`, have you ever watched `node_modules` balloon into the heaviest object in the universe? You know [the meme](https://www.reddit.com/r/ProgrammerHumor/comments/6s0wov/heaviest_objects_in_the_universe/). This piece shares practical tactics to map what you actually use, prune stowaways, prefer built in Node.js and Web APIs, swap bulky toolkits for smaller focused ones, and set guardrails with pinned versions and regular reviews. The advice comes from a complex real-world codebase, so you get honest lessons learned. If dependency drift and slow installs are wearing you down, this read can be a satisfying reset.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Writing Code Is Easy. Reading It Is Hard!",
        "url": "https://idiallo.com/blog/writing-code-is-easy-reading-is-hard",
        "description": "Wow. How did we get this far without talking about AI? Quick reality check. This opinion piece argues that writing code is not the hard part anymore. Reading and changing it is where the real cost lives. The analogies land, the point is clear, and the timing feels perfect. If you are hyped about AI models that can spray out dozens of functions in seconds, this will nudge you back toward the work that actually matters: clarity of intent, naming, structure, and the patience to write less code so your future self and your teammates can read it without pain. A short read that might make you want to refactor something today.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "mdream: Make your docs AI friendly",
        "url": "https://github.com/harlan-zw/mdream",
        "description": "I found a neat helper for maintainers who want AI to use their libraries correctly. `mdream` (clever name, BTW!) converts any site into clean Markdown and into an `llms.txt` guide, which boosts AI discoverability and gives users a simple way to generate fresh context for your project. It runs as a CLI and has a crawler which includes a custom HTML to Markdown converter tuned for LLMs that often cuts tokens by about fifty percent, outputs minimal GitHub Flavored Markdown with frontmatter and nested and HTML markup support. You do not need to be an open source maintainer to benefit. If a site or project you rely on does not publish an `llms.txt` yet, this is a quick way to generate more effective AI documentation and context. [**Check Repo**](https://github.com/harlan-zw/mdream)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Liquid Glass in CSS and SVG",
        "url": "https://kube.io/blog/liquid-glass-css-svg",
        "description": "Are you one of those people who got hyped for last week’s iPhone launch? No judgment. I peeked too, and Apple’s marketing tricks still impress me. But I digress, because what I really want to talk about is *Liquid Glass*. I have not used it yet on any of my devices, but I keep seeing folks try to recreate the effect on the web and it is genuinely impressive. This article is a standout. it walks through the actual physics behind the look, then ties it to practical CSS and SVG with beautiful interactive visuals that make everything crystal clear. If you are into graphics, this one is a treat.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Continuous accessibility checks",
        "url": "https://github.com/be-lenka/be-a11y",
        "description": "Here is another delightful and useful open source CLI. How do you know if your websites are accessible? Sure, there are plenty of tools that give you a one off report, but `be-a11y` is one that fits in your CI and checks every page on every build. Open a pull request, get a merge check, and stop accessibility from regressing before it ships. I plan to use it on my site and a few static sites I maintain. [**Check Repo**](https://github.com/be-lenka/be-a11y)",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Rust Atomics and Locks: Low-Level Concurrency in Practice",
      "author": "Mara Bos",
      "description": "The Rust programming language is extremely well suited for concurrency, and its ecosystem has many libraries that include lots of concurrent data structures, locks, and more. But implementing those structures correctly can be very difficult. Even in the most well-used libraries, memory ordering bugs are not uncommon. In this practical book, Mara Bos, leader of the Rust library team, helps Rust programmers of all levels gain a clear understanding of low-level concurrency. You'll learn everything about atomics and memory ordering and how they're combined with basic operating system APIs to build common primitives like mutexes and condition variables. Once you're done, you'll have a firm grasp of how Rust's memory model, the processor, and the role of the operating system all fit together. With this guide, you'll learn:",
      "coverImageUrl": "./1566045a33c77ea1ce7eca0115427209e37bdbeb7506b863d34c3ec98a6978e7.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098119444",
      "amazonUk": "https://www.amazon.co.uk/dp/1098119444"
    },
    "additionalLinks": [
      {
        "title": "Engineering an AI App",
        "url": "https://resend.com/blog/engineering-an-ai-app"
      },
      {
        "title": "Physically Based Rendering From First Principles",
        "url": "https://imadr.me/pbr"
      },
      {
        "title": "YAML Quiz",
        "url": "https://ohyaml.wtf/"
      },
      {
        "title": "Visual Effect: Interactive Effect Playground",
        "url": "https://effect.kitlangton.com/"
      },
      {
        "title": "Lessons Learned From Building a Sync Engine and Reactivity System With SQLite",
        "url": "https://finkelstein.fr/sqlite-sync-engine-with-reactivity"
      },
      {
        "title": "“Your” vs “My” in User Interfaces",
        "url": "https://adamsilver.io/blog/your-vs-my-in-user-interfaces"
      },
      {
        "title": "The Fundamentals of CSS Alignment",
        "url": "https://css-tip.com/explore/alignment"
      },
      {
        "title": "TypeScript Coverage Report: Node Command Tool to Generate TypeScript Coverage Report",
        "url": "https://github.com/alexcanessa/typescript-coverage-report"
      },
      {
        "title": "React Form Builder: Drag and Drop Form Builder With JSON Schema",
        "url": "https://builder.coltorapps.com/"
      },
      {
        "title": "15 React Anti Patterns (and Fixes) You’ll Actually Use",
        "url": "https://jsdev.space/react-anti-patterns-2025"
      },
      {
        "title": "Feedsmith: Feed Parser and Generator Library",
        "url": "https://feedsmith.dev/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 437,
    "title": "Modern Background Patterns & Gradients Snippets",
    "slug": "2025-09-08-417-modern-background-patterns-gradients-snippets",
    "date": "2025-09-08",
    "templateType": "buttondown-markdown",
    "intro": "Hi there,\n\nAnother week, another issue full of hand picked nuggets of full-stack knowledge and inspiration (and admittedly, a little bit of AI too, because we cannot escape it these days).\n\nThis one mixes quick wins with deep dives. Fresh CSS and Tailwind patterns you can paste straight in. A reality check on what AI can do for product design. A slick gallery for UI inspiration when your brain is out of juice. RSC without a framework for the brave. OKLCH colors that make palettes feel sane. A price per token dashboard for anyone shipping with models. And a practical look at the new React's `<Activity>` boundary to hide views while keeping state.\n\nGrab a coffee, pick your lane, and let your curiosity drive. If something sparks an idea or a rant, hit reply and tell me about it.\n\nHappy reading and coding!\n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg",
      "author": "Bjarne Stroustrup",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Bjarne_Stroustrup?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=437-pattern-craft-modern-background-patterns-gradients-snippets"
    },
    "links": [
      {
        "title": "Modern Background Patterns & Gradients Snippets",
        "url": "https://patterncraft.fun/",
        "description": "**PatternCraft** is a neat little resource I discovered last week. I love tiny utilities that help you spice up a site fast, and this one delivers. It generates background patterns in geometric, gradient, decorative, and other styles. Every pattern is built with modern CSS and Tailwind, no images required. Copy any pattern with one click and drop it into your HTML. Want to go further? Plug it into your theme and swap colors on the fly, perfect for light versus dark mode or brand palettes. It is totally free and a smart pick if you are building a new site or giving an old one a fresh coat of paint CSS!",
        "imageUrl": "./3cec880996e8f74a0868de9c52f84c2f21220c761cd03e3e297938f2c7960b63.jpg",
        "featured": true
      },
      {
        "title": "Beyond The Hype: What AI Can Really Do For Product Design",
        "url": "https://smashingmagazine.com/2025/08/beyond-hype-what-ai-can-do-product-design",
        "description": "Lately I have become more and more interested in finding a good balance between using AI and doing it all myself. I am convinced that today AI cannot finish big ambitious projects on its own (at least not to an acceptable level of quality). It needs a lot of steering. I call it AI assisted development. You keep both hands on the wheel, and a very capable assistant handles the boring bits. That is for development. So what can AI really do for product design? Let us find out.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Viewport UI: UI curated experiences for you inspiration.",
        "url": "https://viewport-ui.design/",
        "description": "Viewport UI is another neat resource that helps you find great inspiration for interactions and all kinds of UI moments across platforms. The gallery is curated and easy to browse, with categories for web, desktop, mobile, watch, iOS, Android, icons, and motion. Check it out if you want an alternative to Dribbble for design inspiration and a faster way to spark ideas for your next build.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React Server Components support without a framework",
        "url": "https://krasimirtsonev.com/blog/article/vanilla-react-server-components-with-no-framework",
        "description": "I have to admit I am still not entirely sold on React Server Components (RSC), although I do see the appeal. I cannot quite explain why, but the setups I have seen feel too complicated, half baked or brittle, or too dependent on a framework. Yes, I am looking at you Next.js! This article introduces Forket, a tool that splits your code into client and server so you can run RSC without a framework. I have not used it yet, but it looks extremely promising.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What are OKLCH colors?",
        "url": "https://jakub.kr/components/oklch-colors",
        "description": "We have covered OKLCH colors before, but I feel we have not covered them enough. So what is special about them? OKLCH is a perceptual color model. Tweaks map to how we actually see color, which makes everyday work a lot more predictable. The killer move is consistent brightness. Pick a base color, keep lightness steady, then slide hue to spin the wheel and you get a balanced palette without surprises. This piece shows the idea with clear visuals and plenty of practical notes. CSS `oklch()`, contrast tips, and how to swap palettes for light versus dark mode. I am already experimenting and enjoying the results. Are you? Let me know!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Compare LLM API Prices For Over 300 Models",
        "url": "https://pricepertoken.com/",
        "description": "We are back for more AI info. This one is an incredibly practical resource. There are so many models out there, and if you are building an LLM powered application it can be tough to pick the right one. Fit to your use case matters most, but price deserves serious attention. **Price per Token** gives you a handy dynamic table that shows the actual cost across models. input and output dollar cost per million tokens. It also lists context length and the potential cost for caching when supported. Check it out if you are comparing providers or planning your runway.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Using Activity with Suspenseful data",
        "url": "https://simeongriggs.dev/use-the-activity-boundary-to-hide-suspenseful-components",
        "description": "Here is the key value of [`<Activity>`](https://react.dev/reference/react/Activity) (still experimental). It lets you hide parts of the UI while preserving each component’s internal state. Set its mode to `visible` or `hidden`. When `hidden`, React applies `display: none`, preserves the children’s state, and cleans up their Effects. Reveal it and React restores the previous state so the view pops back instantly. Perfect for tabs, drawers, and sidebars where you do not want to lose input or scroll position. The demo in this article uses a table that fetches course rows from a CMS. The parent controls visibility with radio filters while each row decides whether it should show. You get snappy filters with preserved row state and suspenseful fetches that keep preloading in the background. There is also a [handy video](https://x.com/simeonGriggs/status/1961811173747155047) that explains the main ideas in about three minutes, plus a concise demo of `<Activity>` with suspenseful data.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "AI as a Service: Serverless machine learning with AWS",
      "author": "Peter Elger, and Eoin Shanaghy",
      "description": "AI as a Service is a practical handbook to building and implementing serverless AI applications, without bogging you down with a lot of theory. Instead, you'll find easy-to-digest instruction and two complete hands-on serverless AI builds in this must-have guide! Companies everywhere are moving everyday business processes over to the cloud, and AI is increasingly being given the reins in these tasks. As this massive digital transformation continues, the combination of serverless computing and AI promises to become the de facto standard for business-to-consumer platform development—and developers who can design, develop, implement, and maintain these systems will be in high demand! AI as a Service is a practical handbook to building and implementing serverless AI applications, without bogging you down with a lot of theory. Instead, you'll find easy-to-digest instruction and two complete hands-on serverless AI builds in this must-have guide!",
      "coverImageUrl": "./d637fe618e8c70eeba6ca88f491ee31fe303dcb57911af292be3f66c988281f5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617296155",
      "amazonUk": "https://www.amazon.co.uk/dp/1617296155"
    },
    "additionalLinks": [
      {
        "title": "Designing a Clickable Card with Semantic HTML in Mind",
        "url": "https://shuvo.dev/blogs/designing-a-clickable-card-designing-with-semantic-html-in-mind"
      },
      {
        "title": "You no longer need JavaScript (for most things)",
        "url": "https://lyra.horse/blog/2025/08/you-dont-need-js"
      },
      {
        "title": "Elements of Rust: Core Types and Traits",
        "url": "https://rustcurious.com/elements"
      },
      {
        "title": "CSS boilerplate",
        "url": "https://matuzo.at/"
      },
      {
        "title": "i18n-check: Validate i18n translation files",
        "url": "https://github.com/lingualdev/i18n-check"
      },
      {
        "title": "Speeding up the JavaScript ecosystem: Semver",
        "url": "https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-12"
      },
      {
        "title": "Eliminating JavaScript cold starts on AWS Lambda",
        "url": "https://goose.icu/lambda"
      },
      {
        "title": "Lambda and Java with Mark Sailes (AWS Bites podcast)",
        "url": "https://awsbites.com/148-lambda-and-java-with-mark-sailes/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 436,
    "title": "The Crazy History of Themeable User Interfaces",
    "slug": "2025-09-01-416-the-crazy-history-of-themeable-user-interfaces",
    "date": "2025-09-01",
    "templateType": "buttondown-markdown",
    "intro": "Hey,\n\nThis issue opens with a delightful trip through the history of themeable interfaces that sneaks in a reference to my favorite game ever, **Super Mario**. I could not ask for a better start. Have you ever played that game and wondered why clouds and bushes look exactly the same, with just different colors. Yes, it is a hack, and I promise you, it is totally related to the world of full-stack!\n\nFrom there we feature a lovely new monospace called **Maple Mono** that already lives in my terminal. We peek at **LiftKit** for golden ratio polish that makes layouts feel quietly premium. We get hands on with a clear guide to **self hosting Next.js** at scale. We play with **Blot**, a clever way to turn a plain folder into a living static site. We roll the dice with real randomness in CSS. Then we wrap with quick tricks to flip color preferences and test your dark mode like a pro. And, as always, there is a book recommendation and some extra content at the bottom for the more content hungry among you!\n\nLet's grab a coffee and dive in! \n\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell?utm_source=fullstackbulletin&utm_medium=email&utm_campaign=the-crazy-history-of-themeable-user-interfaces"
    },
    "links": [
      {
        "title": "The Crazy History of Themeable User Interfaces",
        "url": "https://bradfrost.com/blog/post/the-history-of-themeable-user-interfaces",
        "description": "Oh dear. This article sent me straight down history lane. I even stumbled on my favourite side scrolling game of all times and grinned like a kid. Wait, before you think I drifted into a tangent that has nothing to do with full-stack life, let me pull it back. **Themes**. Yes, themes. The Tailwind palettes we tweak; the beloved light and dark switch we cannot live without. Where did all that start? Did we have themes back in the day? Turns out this has always been a theme. Pun absolutely intended. This piece shows how folks have been bending system limits for ages to make software feel personal, from apps to operating systems to even games. If you are a little mature you will enjoy this one as much as I did. And if you are new to the full-stack world I am sure you'll learn a ton and have fun too.",
        "imageUrl": "./4da35bcca61e2c00074e5b24ae9620d78a6d0fdf79a88b181001fddabd0519bc.jpg",
        "featured": true
      },
      {
        "title": "Maple Mono: a Lovely Open-Source Monospace Font",
        "url": "https://github.com/subframe7536/maple-font",
        "description": "Maple Mono is my new font crush. I swapped it into my beloved terminal on the spot. The rounded corners make it feel cute and less serious, yet it stays super readable and it supports all the usual Nerd Font goodies you would expect from a modern monospace. I am tempted to use it for code snippets on my site too. My take, if you have a coding blog, you should consider doing that too. It adds personality without losing clarity. And the best part? It's FREE and open-source! [**Check Repo**](https://github.com/subframe7536/maple-font)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "LiftKit: UI Framework for Perfectionists",
        "url": "https://chainlift.io/liftkit",
        "description": "When I try a new UI framework, I go straight to the list of components and check whether they provide a DateTime picker (or a Calendar) and how good it is. That is my smell test. If a team can design a good DateTime picker, they can handle anything. LiftKit does not have a DateTime picker (at least not yet). But what it does have is an obsessive eye for spacing, optical balance, and golden ratio rhythm that makes every layout feel quietly premium without extra fiddling. If you want interfaces that look crisp, balanced, and pleasing to the eye, this might be your next pick. [**Check Project**](https://chainlift.io/liftkit)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Complete Guide to Self-Hosting Next.js at Scale",
        "url": "https://dlhck.com/thoughts/the-complete-guide-to-self-hosting-nextjs-at-scale",
        "description": "Confession time. I use Next.js a lot and I still do not know whether I like it or not. My biggest gripe is simple. it feels good on Vercel, then the moment you do not want Vercel you are in for a painful ride. This guide can be the antidote. It walks through everything you need to self host Next.js at real scale, including horizontal scaling, smart caching, image optimization, and the wiring that keeps it all stable in production. If you are looking to escape Vercel, this is a very practical read. At some point, I would love to see a ready made CDK or CloudFormation template that follows this approach on AWS. If you build one, please tell me.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Blot: Turns a folder into a website",
        "url": "https://github.com/davidmerfield/blot",
        "description": "You know I am a huge fan of static sites. This one feels fresh. **Blot** turns a plain folder into a living website. Drop markdown, images, HTML, or even Word docs into Dropbox, Git, Google Drive, or iCloud, and your site updates almost instantly. There is a hosted service if you want convenience, but the whole thing is open source so you can self host. What I love here is the lowered barrier for less technical folks. Writers can just save files, you keep your usual tools, and everyone gets a fast simple publishing flow. I can see this powering a team blog, a notes garden, or a lightweight docs site without dragging in a full CMS. [**Check Repo**](https://github.com/davidmerfield/blot)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Rolling the Dice with CSS random()",
        "url": "https://webkit.org/blog/17285/rolling-the-dice-with-css-random",
        "description": "CSS keeps creeping toward full featured programming language territory. One day, it might even run Doom! And with native randomness landing, that day feels a little closer. This post shows the new `random(min, max, step)` function in action, plus clever ways to share randomness with named idents and the `element-shared` option. Think star fields, shuffled grid layouts, playful spins, and color jitter. All done in pure CSS, no JavaScript in sight.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Quick Dark Mode Toggles",
        "url": "https://frontendmasters.com/blog/quick-dark-mode-toggles",
        "description": "I often struggle to test auto toggles between dark and light based on browser or OS settings. This article was a gem. It shows quick ways to flip your preference on the fly and confirm your site reacts to prefers color scheme correctly. Short, practical, and full of tiny tricks. Check it out if you want to learn a tip or two.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Tao of Microservices",
      "author": "Richard Rodger",
      "description": "The Tao of Microservices guides you on the path to understanding how to apply microservice architectures to your own real-world projects. This high-level book offers a conceptual view of microservice design, along with core concepts and their application. An application, even a complex one, can be designed as a system of independent components, each of which handles a single responsibility. Individual microservices are easy for small teams without extensive knowledge of the entire system design to build and maintain. Microservice applications rely on modern patterns like asynchronous, message-based communication, and they can be optimized to work well in cloud and container-centric environments. What's Inside:",
      "coverImageUrl": "./dfcbc3d9c0fe9c8ba1f5410bec57905d5a767840a2455c1f166080db93b8af34.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617293148",
      "amazonUk": "https://www.amazon.co.uk/dp/1617293148"
    },
    "additionalLinks": [
      {
        "title": "You’re loading fonts wrong (and it’s crippling your performance)",
        "url": "https://jonoalderson.com/performance/youre-loading-fonts-wrong"
      },
      {
        "title": "How to Build a Modern Blog with React 19 and Strapi 5",
        "url": "https://strapi.io/blog/how-to-build-a-modern-blog-with-react-19-and-strapi-5"
      },
      {
        "title": "Why designing terrible solutions makes you a better designer",
        "url": "https://uxdesign.cc/why-designing-terrible-solutions-makes-you-a-better-designer-76b2f0f59956"
      },
      {
        "title": "A Clock That Doesn't Snap (with React)",
        "url": "https://ethanniser.dev/blog/a-clock-that-doesnt-snap"
      },
      {
        "title": "Redefining ‘human in the loop’",
        "url": "https://teybannerman.github.io/ai/2025/08/25/human-in-the-loop-framework.html"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 435,
    "title": "An Interactive Guide to SVG Paths",
    "slug": "2025-08-25-415-an-interactive-guide-to-svg-paths",
    "date": "2025-08-25",
    "templateType": "buttondown-markdown",
    "intro": "Hello, \n\nBig milestone this week: this is our first issue sent via [Buttondown](https://buttondown.com/)! 🎉\n\nSwitching away from Mailchimp is something I’ve wanted to do for a long time. Don’t get me wrong... Mailchimp served us well over the years (all previous 434 issues, in fact!), but it’s been getting pricey, and honestly... I was never fully happy with their content editor and the email layout. Some of you even told me the emails weren’t super readable on mobile. Fair feedback!\n\nSo, Buttondown! I’m hoping this move helps us keep costs a bit more under control, but more importantly, that it gives you a smoother, cleaner experience as a reader.\n\nThe migration itself went fairly smoothly (altough I still need to migrate some of my beloved [automation](https://github.com/FullStackBulletin/automation) and part of the [website](https://fullstackbulletin.com/)), but you know how these things go... If you spot a broken link, weird formatting, or — worst-case — you unsubscribed recently and somehow ended up back here, I’m really sorry for that. You can unsubscribe again easily (link in the footer), and I promise I’m not trying to spam anyone. Just an honest hiccup in the switch.\n\nAs always, I’d love to hear your thoughts. If anything’s broken (or awesome), hit reply and let me know. Feedback is gold.\n\nNow! Let’s dive into this week’s hand-picked full-stack goodness, curated with love, as always 💛\n\nHappy reading and coding!  \n\n— [Luciano](https://loige.co/)",
    "quote": null,
    "links": [
      {
        "title": "An Interactive Guide to SVG Paths",
        "url": "https://joshwcomeau.com/svg/interactive-guide-to-paths",
        "description": "I’ve always had a bit of a thing for vector graphics. There’s something deeply satisfying about how SVGs are just… text. That’s right, pure markup magic. And once you wrap your head around the syntax, it opens the door to dynamically generating shapes, animations, and interactive artwork with code. It’s like programming meets drawing, and it scratches that creative itch in a way few things do. What makes SVGs even cooler? You can poke at them through the DOM and sprinkle in JavaScript to make them dance. So if you’ve ever been even a little curious about how `<path>` works in SVG, this interactive guide is pure gold. It’s visual, hands-on, and honestly a joy to go through. Let your creative side out to play!",
        "imageUrl": "./cf0139fcf049887c999ae3760af32024d4b861e7bfbe78fb15a8edbf5257adac.png",
        "featured": true
      },
      {
        "title": "Closer to the Metal: Leaving Playwright for CDP",
        "url": "https://browser-use.com/posts/playwright-to-cdp",
        "description": "Let’s switch gears... but not completely. We’re still talking about automation through code, only this time we’re steering it straight into the world of browsers! Have you ever used **Playwright**? It’s one of the best E2E testing tools out there, giving you the power to script real browser behavior like clicking buttons, filling forms, or navigating between pages. But here’s the twist: Playwright isn’t magic! Under the hood, it talks to browsers using something called **CDP (Chrome DevTools Protocol)**, a lower-level interface that gives you even more control. This article is a solid deep dive into how Playwright builds on top of CDP, and why you might want to explore CDP directly if you’re looking for performance, flexibility, or just want to know how the *puppeteering* actually works (pun intended... if you got it).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Can We Use Local Storage Instead of Context-Redux-Zustand?",
        "url": "https://developerway.com/posts/local-storage-instead-of-context",
        "description": "This is a question I’ve found myself circling back to a few times, especially after discovering **signals** in **SolidJS**. They opened my eyes to a whole new way of thinking about state, reactivity, and where (and how) data should live. This article dives right into that same curiosity. It explores when using `LocalStorage` might actually be a better fit than React Context. Think global state that needs to persist across sessions but doesn’t necessarily need to trigger re-renders every time it changes... It’s a thought-provoking read that’ll challenge some default assumptions about app architecture and possibly nudge you toward simpler, more efficient patterns.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Next.js 15.5",
        "url": "https://nextjs.org/blog/next-15-5",
        "description": "Let’s be honest, Next.js is probably the most widely used full-stack framework in web development right now. Whether you love it, tolerate it, or secretly grumble about it while using it anyway (like I do), it’s become the default choice for a huge chunk of the ecosystem. Even LLMs seem to default to it when asked how to build a web app! So like it or not, having some level of Next.js fluency is becoming table stakes. And guess what? There’s a new version out. Next.js 15.5 brings some solid updates to caching, partial pre-rendering, and the app router. If you’re working on production-grade apps (or plan to), it’s worth skimming this changelog to see what’s evolving under the hood.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "QuickJS Sandbox: Execute JavaScript and TypeScript code safe and secure",
        "url": "https://sebastianwessel.github.io/quickjs/index.html",
        "description": "This project is absolutely bonkers in the best way. It runs QuickJS (a tiny, embeddable JavaScript engine written in C) right in the browser, via WebAssembly. Yep, that means you can fire up a fully separate JavaScript runtime inside your browser tab and start executing code in a completely isolated context. Why would you want this? Well, for one: sandboxing. For another: curiosity. And also because it’s just really cool to see stuff like this working entirely client-side. Think interactive REPLs, teaching tools, plugin systems, or even experiments with running multiple JS runtimes side-by-side. [**Check out project**](https://sebastianwessel.github.io/quickjs/index.html)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "npm Adopts OIDC for Trusted Publishing in CI/CD Workflows",
        "url": "https://socket.dev/blog/npm-trusted-publishing",
        "description": "I’m a huge fan of **OIDC**. I’ve implemented it in all sorts of business contexts, and one of my favorite use cases is letting GitHub Actions deploy to AWS using short-lived credentials. No more static secrets, no more long-lived tokens... just clean, secure, on-demand access that disappears when the job's done. And for the longest time, I wished I could do the same thing when publishing packages to npm. Well... now we finally can! This post dives into npm's new *Trusted Publishing* feature, which brings first-class OIDC support to the registry. That means you can authorize your GitHub repo to publish directly with no access tokens and therefore no secret leakage risk!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What Learning React Won't Teach You: Image Formats",
        "url": "https://idiallo.com/blog/react-and-image-format",
        "description": "We started this issue with a solid deep dive into SVGs, so it only feels right to close it with a nod to their pixel-powered cousins: **JPG** and **PNG**, the two most widely used raster image formats on the web. What I loved about this article is how clearly it lays out a truth that’s easy to overlook: JPG and PNG are not truly interchangeable. They each have specific strengths and trade-offs, and mixing them up can lead to seriously suboptimal results. Think bloated file sizes, blurry compression artifacts, or sharp edges that suddenly go fuzzy. If you’ve ever found yourself exporting assets without thinking too hard about the format, this is your friendly wake-up call.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "As organizations shift from monolithic applications to smaller, self-contained microservices, distributed systems have become more fine-grained. But developing these new systems brings its own host of problems. This expanded second edition takes a holistic view of topics that you need to consider when building, managing, and scaling microservices architectures. Through clear examples and practical advice, author Sam Newman gives everyone from architects and developers to testers and IT operators a firm grounding in the concepts. You'll dive into the latest solutions for modeling, integrating, testing, deploying, and monitoring your own autonomous services. Real-world cases reveal how organizations today manage to get the most out of these architectures. Microservices technologies continue to move quickly. This book brings you up to speed.",
      "coverImageUrl": "./357c19aebbd32079fe61584581b8d78910ea6d463a7601e7042a222025c8ef96.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492034029?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492034029?tag=loige-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 434,
    "title": "Why LLMs Can't Really Build Software",
    "slug": "2025-08-18-414-why-llms-can-t-really-build-software",
    "date": "2025-08-18",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, \n... here from a sizzling Rome. I spent last week working here, with the thermometer flirting with 40 degrees most afternoons. So I hope this issue brings you a breath of fresh air, purely metaphorical, plus a big blast of full stack inspiration.\n\nYou will notice I am indulging more in AI topics. The industry keeps marching that way, so I picked pieces that feel useful, not hypey. We start with a sharp read on why LLMs still struggle to truly build software, then swing to a very practical guide for a fully local AI workspace where code runs safely in a sandbox on macOS. On the front end, give your CSS muscles a workout with interview style questions that expose gaps you did not know you had. For a visual reset, wander through One Million Screenshots, a zoomable map of homepages that is oddly inspiring. React fans get both sides of the coin. a thoughtful reflection on where the community is at, a set of real world case studies from a React and Next.js shop, and a long, spicy critique called “React is Awful” that is worth skimming even if you love it.\n\nGrab a cold drink, find some shade, and dive in. Let me know what sparks for you!\n\n— Your editor, Luciano",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice“",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Why LLMs Can't Really Build Software",
        "url": "https://zed.dev/blog/why-llms-cant-build-software",
        "description": "I have been leaning into AI assisted coding with Kiro, Claude Code, and Copilot in agent mode. Collaborating with an AI at that level is fun and sometimes impressive, but I only sometimes got the outcome I hoped for, and I kept wondering if I was the problem. This piece clarified why. Great engineers run a tight loop. Build a mental model of the goal, write code, build a model of what the code actually does, then reconcile the two. LLMs can write, run tests, and add logs, but they struggle to hold that evolving mental model, so they guess or thrash. Until they can juggle context with durable memory, humans drive and the LLM stays a tool. That might be a good thing. Are our full stack jobs safe? I bet yes, at least for a while. But I am certain there is no going back from AI-assisted coding, so we will have to see how much better these tools get. What is your take?",
        "imageUrl": "./8a73bc6665118eefb85f754119daf8721c2a8bdb6f95c3cf40a69cf31e12e8df.png",
        "featured": true
      },
      {
        "title": "How to Prepare for CSS-Specific Interviews",
        "url": "https://css-tricks.com/how-to-prepare-for-css-specific-interview-questions",
        "description": "One thing AI is not going to replace is our knowledge, and how we can bend and mix what we know to imagine and create new designs, apps, and solutions. When it comes to CSS, it is wild how easy it is to underestimate how powerful solid fundamentals are. Even if you like to think you just use Tailwind, you still need a good amount of CSS to do a decent job. So **how is your CSS doing?** What if you got an interview focused on CSS tomorrow? Would you be ready for it? I admit I went through the questions in this article and I am not sure I would have hired myself... I think I would be barely sufficient to pass... Let me know how you do!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "One Million Screenshots",
        "url": "https://onemillionscreenshots.com/",
        "description": "I found a nifty utility last week. One Million Screenshots is a giant, zoomable canvas of more than a million top homepages, and you can pan and click around like Google Maps. I was surprised to spot [my own site](https://onemillionscreenshots.com/?q=loige.co) in there, and the [Node.js Design Patterns site](https://onemillionscreenshots.com/?q=nodejsdesignpatterns.com) too. Why is this useful? I am not fully sure, but it is fun to explore, it sparked a few design ideas, and it feels like a good place to discover famous sites and learn from their layouts.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building an Offline AI Workspace",
        "url": "https://instavm.io/blog/building-my-offline-ai-workspace",
        "description": "I found this one pretty cool. It is a hands on pipeline for a fully local AI workspace, where a local LLM does the planning, then code runs inside a sandboxed VM, and a headless browser can fetch fresh info when needed. Concretely, they wire up Ollama for models, Assistant-UI for the chat front end, a “coderunner” MCP tool that executes code inside an isolated VM, and Playwright for browsing. So you can ask it to research, generate charts from a CSV, trim a video with ffmpeg, or install tools, all inside the sandbox and without touching the host. What surprised me most. They lean on Apple’s new [container](https://github.com/apple/container) tool on macOS to get one VM per container, which is a neat fit for executing AI generated code safely.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Reflections on the React community",
        "url": "https://leerob.com/reflections",
        "description": "I stumbled on Lee Robinson’s “Reflections on the React community” and it is a thoughtful read if you build for the web. His core take is simple. React has become boring tech in the best way. Composition and stability keep winning, which is why the ecosystem keeps growing. Where it gets tricky is people and incentives. React itself is non-commercial, so community engagement ebbs and flows. Frameworks on top have different pressures, which shaped how features like React Server Components rolled out. Lee even notes the App Router was marked stable too soon. The good news. RSC, Actions, and Transitions are now stable, and support is spreading beyond Next.js with things like the official Vite plugin and Parcel. The closer is about culture. Remember there are humans on the other side, treat OSS as a gift, and try to be the optimistic change you want to see. Worth the read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "15 Real-World React Examples In 2025",
        "url": "https://netguru.com/blog/react-app-examples",
        "description": "This is a practical roundup from a company that builds web apps with React and Next.js, and they showcase a bunch of their recent case studies. Each one spells out the requirements, the solution they chose, and where React actually helped, which makes it easy to steal a few patterns for your own work. I liked how specific they get about goals, trade offs, and stack choices, not just screenshots. If you work in consulting, you can borrow a lot from the way they frame problems and justify decisions. Handy as an idea bank for proposals and architecture docs.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React-is-Awful!",
        "url": "https://github.com/cloudstreet-dev/React-is-Awful",
        "description": "After all those React friendly pieces, let’s swing to a totally different take. React is bad. Actually worse. It is awful. This is a big read, almost book length, split into twenty one markdown chapters on GitHub, free to browse. It is obviously critical of React, but it is also well written and packed with reflection points. Even if you use React every day and love it, it is healthy to study the weak spots, learn a few anti patterns to avoid, and pressure test your own defaults. Worth a skim, or a full read if you are in the mood for a spicy rethink.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Accelerating Server-Side Development with Fastify: A comprehensive guide to API development for building a scalable backend for your web apps",
      "author": "Manuel Spigolon, Maksim Sinik, and Matteo Collina",
      "description": "Learn to build faster web applications by implementing maintainable and pluggable APIs with Fastify. Key Features:",
      "coverImageUrl": "./cd5cb111065f6947f6bf6fb1a455b80aa01ffe437d1ad424269f5c8aa2866f9b.jpg",
      "amazonUs": "https://www.amazon.com/dp/1800563582?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1800563582?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Programming with AI: You're Probably Doing It Wrong",
        "url": "https://devroom.io/2025/08/08/programming-with-ai-youre-probably-doing-it-wrong"
      },
      {
        "title": "5 Useful CSS functions using the new @function rule",
        "url": "https://una.im/5-css-functions"
      },
      {
        "title": "Checking for focus in an element using CSS in your JavaScript",
        "url": "https://gomakethings.com/checking-for-focus-in-an-element-using-css-in-your-javascript"
      },
      {
        "title": "Better CSS layouts: Time.com Hero Section",
        "url": "https://ishadeed.com/article/time-layout"
      },
      {
        "title": "Beyond Vibe Coding - Part 0: From Instinct to System",
        "url": "https://backend.cafe/beyond-vibe-coding"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 433,
    "title": "Why semantic HTML still matters",
    "slug": "2025-08-11-413-why-semantic-html-still-matters",
    "date": "2025-08-11",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nReady to dive into some hand-picked full-stack goodness? I thought so. But before we get there, I have a bit of personal news to share. As some of you know, I have been working on a new edition of [Node.js Design Patterns](https://www.nodejsdesignpatterns.com/) over the past year. It has been a huge amount of work, but we are almost there. Our publisher, Packt, will soon release a preview of the new edition with a few chapters available completely free. If you are interested, just [fill out this form](https://forms.office.com/e/c2TRRWyZJy). I would really value your feedback once you have had a read.\n\nNow, let’s jump into this week’s selection of full-stack gems. I hope you enjoy them as much as I did picking them.\n\nCheers,\n— Luciano",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer“",
      "author": "Paul Ehrlich",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Why semantic HTML still matters",
        "url": "https://jonoalderson.com/conjecture/why-semantic-html-still-matters",
        "description": "I still remember when HTML5 became mainstream around 2014 and everyone was buzzing about semantic markup. We swapped out walls of meaningless `<div>`s for shiny new `<nav>`, `<main>`, and `<section>` tags. Some folks even slapped the bright orange “[HTML5 badge](https://commons.wikimedia.org/wiki/File:HTML5_Badge.svg)” on their sites like it was a superhero emblem. But here we are in 2025, and I find myself wondering... do we still care? Should we still care? The answer is a resounding yes, and this article lays out some excellent, concrete reasons why semantic HTML is just as important today as it was back then.",
        "imageUrl": "./d08571af3db03ce58d29646b343a50a94c8e468cf2b4dda968f8098db00ee1d9.png",
        "featured": true
      },
      {
        "title": "I Know When You're Vibe Coding",
        "url": "https://alexkondov.com/i-know-when-youre-vibe-coding",
        "description": "I vibe code, you vibe code, your friends are vibe coding, everyone is vibe coding! No… it’s not quite like everyone is on cocaine, but it’s not exactly healthy either. This short piece explores the idea that while vibe coding can be great for moving fast and riding the momentum, it also tempts us to switch off our brains, hit “accept” without thinking, and lose sight of what makes our work ours. The real takeaway? Speed is fine, but keep your critical thinking (and above all your creativity) in the mix, because coding should still be a craft shaped with art and love.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Bluefish: The missing diagramming framework",
        "url": "https://bluefishjs.org/",
        "description": "I’m pretty excited about this one. I’ve used tools like Mermaid to make diagramming faster and more standardized, but honestly, I always end up struggling to learn and remember their syntax. What should be a speed boost often turns into a time sink, and when I want to generate diagrams programmatically, the last thing I want is to build yet another Mermaid compiler. That’s why Bluefish caught my attention. It takes a programmatic approach to creating diagrams and strikes a nice balance between simplicity and control. It’s written in TypeScript, works with vanilla JS, and (drum roll) even supports SolidJS, which makes it even more exciting for me. I haven’t used it in anger yet, but it looks promising. Give it a try!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Writing a good design document",
        "url": "https://grantslatton.com/how-to-design-document",
        "description": "OK… documentation! Raise your hand if you like writing it… no hands? What a surprise! Nobody loves writing docs, and to be fair, it’s hard work. Writing design docs is even harder. A design document is a technical report that explains the implementation strategy for a system, framed around trade-offs and constraints. We often forget about them, yet they’re among the most important documents a project can have. If you want to get better at writing docs (and you should), this article offers a solid strategy for crafting clear and genuinely useful design docs. PS: remember the AI documentation tool we mentioned [last week](https://us15.campaign-archive.com/?u=b015626aa6028495fe77c75ea&id=a46ec69e32)? You could combine the two ideas for an AI-assisted workflow. Just don’t let the AI take the wheel… you’re still the driver! :)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Unlocking Web Workers with React",
        "url": "https://rahuljuliato.com/posts/react-workers",
        "description": "You thought you’d get away with a FullStack Bulletin issue that didn’t mention React? WRONG! OK… bear with me, because this one is both nerdy and exciting. It combines the still underappreciated power of Web Workers with React. So if you ever need to run a CPU-heavy task in the UI, you’ll know exactly how to hand it off to a worker thread, keeping your interface smooth and your users happy... because freezing the UI is the last thing you want!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "I tried React Compiler today, and guess what...",
        "url": "https://developerway.com/posts/i-tried-react-compiler",
        "description": "OK… one more React piece :) I’ll admit it, I like SolidJS more than React. YES, I said it! But React is so widespread that you can’t just ignore it and move everything to SolidJS. I’d love to, but that’s simply not realistic. So I’ve kept React as my go-to for most serious or commercial projects, quietly hoping it would start picking up some of SolidJS’s best ideas. And now it is, with the newly announced React Compiler. But is it all good news? Let’s see what the author of this piece has to say!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What’s New in ViteLand: July 2025 Recap",
        "url": "https://voidzero.dev/posts/whats-new-jul-2025",
        "description": "Let’s stick to frontend-land and talk about Vite, one of my favorite frontend technologies of the last few years (and yes, I don’t miss Webpack). This piece rounds up the latest advancements in Vite and its growing ecosystem of tools. My favorite part? All the Rust-powered magic happening with Rolldown and Oxc that’s set to make builds much faster. But that’s just one highlight, so check it out if you want a glimpse of what Vite could look like in the years ahead!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations",
      "author": "Gene Kim, Jez Humble, Patrick Debois, John Willis, and Nicole Forsgren",
      "description": "This award-winning and bestselling business handbook for digital transformation is now fully updated and expanded with the latest research and new case studies! “[The DevOps Handbook] remains a must-read for any organization seeking to scale up its IT capability and expand DevOps practices across multiple departments or lines of business.” ―Mike Perrow, TechBeacon For years, The DevOps Handbook has been the definitive guide for taking the successes laid out in the bestselling The Phoenix Project and applying them in any organization. Now, with this fully updated and expanded edition, it's time to take DevOps out of the IT department and apply it across the full business. Technology is now at the core of every company, no matter the business model or product. The theories and practices laid out in The DevOps Handbook are tools to be used by anyone from across the organization to create joy and succeed in the marketplace.",
      "coverImageUrl": "./14920457583ff6df9cc24a78e77b4f2ab4fb187f779a523cfcf43040ea54dfec.jpg",
      "amazonUs": "https://www.amazon.com/dp/1950508404?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1950508404?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "What we learned from creating PostCSS",
        "url": "https://evilmartians.com/chronicles/what-we-learned-from-creating-postcss"
      },
      {
        "title": "Building a typed fetch in TypeScript with conditional types and infer",
        "url": "https://piccalil.li/blog/building-a-typed-fetch-in-typescript-with-conditional-types-and-infer"
      },
      {
        "title": "It’s incredible how many bad user experiences are still out there in 2025",
        "url": "https://uxdesign.cc/its-incredible-how-many-bad-user-experiences-are-still-out-there-in-2025-212b0e7e8d3c"
      },
      {
        "title": "We Are Still the Web",
        "url": "https://thehistoryoftheweb.com/we-are-still-the-web"
      },
      {
        "title": "React Query Selectors, Supercharged",
        "url": "https://tkdodo.eu/blog/react-query-selectors-supercharged"
      },
      {
        "title": "ilamy Calendar: Interactive React Calendar Component",
        "url": "https://calendar.ilamy.io/"
      },
      {
        "title": "Thinking Deeply About Theming and Color Naming",
        "url": "https://css-tricks.com/thinking-deeply-about-theming-and-color-naming"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 432,
    "title": "What Evangelion can teach us about AI",
    "slug": "2025-08-04-412-what-evangelion-can-teach-us-about-ai",
    "date": "2025-08-04",
    "templateType": "mce-mailchimp",
    "intro": "Bonjour, \npardon my French, but I’m writing this issue from beautiful Paris and getting a little carried away! 😛\n\nAnd since I’m in the mood for something a bit more thought-provoking, we’re kicking things off with a piece about AI and the idea that maybe the smartest systems are the ones that can argue with themselves. Doubt and self-questioning are deeply human traits, and sometimes they lead to our biggest discoveries. Maybe the future of AI could use a bit of that too.\n\nFrom there, it’s back to our usual full-stack adventures: date parsing quirks in Eleventy, the slow march toward native CSS Masonry, a look at the ever-growing zoo of JavaScript runtimes, and more.\n\nHope you enjoy the ride. And if something sparks a thought, makes you smile, or gets you yelling at your screen, hit reply. I’d love to hear what you think, suggest something for the next issue, or just say salut. Or maybe, if you’ve been to Paris, reply with your favorite restaurant and what dish I should try here. Food might just be one of the few things I love more than full-stack web development.\n\nÀ bientôt !\n— Luciano",
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible“",
      "author": "Alvin Toffler",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "What Evangelion can teach us about AI",
        "url": "https://medium.com/@danny.tlc/the-magi-model-what-evangelion-can-teach-us-about-building-a-safer-agi-9ac83c30acdc",
        "description": "This week’s off-script pick leans more into philosophy than frameworks, but stay with me. It’s the kind of read that stretches your imagination and offers a fresh perspective on how the bigger themes in tech might shape the future of full-stack development. A few days ago, Eleftheria posed a question on X: ***[\"could a country be governed by AI?\"](https://x.com/BatsouElef/status/1950432920927416653)*** That instantly brought back memories of an anime I watched nearly 20 years ago: **Neon Genesis Evangelion**. In the story, critical decisions are handled by the **MAGI**, a system made of three computers that don’t just crunch numbers but debate with one another first. Each one embodies a different facet of the same scientist: her logical mind, her maternal instincts, and her inner doubts. Only when all three agree does the system act. This article offers a clear and fascinating explanation of the MAGI, and raises an important question: could we ever build something like it? Today’s conversations around AGI mostly focus on a single, all-knowing intelligence. But what if the safest form of AI is one that questions itself? Would you trust a system that argues with itself before making a decision? Or does that idea make it even harder to sleep at night? And more to the point: should AI ever be allowed to govern, with or without an inner debate?.",
        "imageUrl": "./aa8d320928a61d0b7b1a709a53ae264db5515e5ea18b1e7c279dbfe4c3a043b1.png",
        "featured": true
      },
      {
        "title": "Never write your own Date Parsing Library",
        "url": "https://zachleat.com/web/adventures-in-date-parsing",
        "description": "Two topics I somehow keep circling back to in this newsletter: **Eleventy** (a beautiful static site generator I can’t help but love) and the many, many headaches of dealing with **dates** and **timezones**. If you’re into both, this is your dream post. And even if you’re not, it’s still a fascinating case study in how hard it is to make technical decisions when you’re constantly juggling trade-offs, edge cases, and real-world limitations. Zach, the creator and main contributor of Eleventy, is working to make the project run on more environments than just Node.js. That means stripping away as many dependencies as possible, including date parsing libraries. But replacing those with homegrown logic isn’t exactly straightforward...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Let AI agents take care of your project docs",
        "url": "https://github.com/divar-ir/ai-doc-gen",
        "description": "Here’s another one for the AI lovers... I admit I haven’t had the chance to give this one a proper spin yet, but I’m definitely intrigued... if also a bit skeptical! I’ve tried a handful of AI agent systems before, and to be honest, none of them have fully delivered that “aha!” moment for me. Maybe I’m using them wrong. Maybe they’re just not there yet. Still, this one feels promising. It is an open-source multi-agent system designed to crawl through your codebase and generate comprehensive documentation automatically. It supports multiple LLMs, runs tasks concurrently for speed, and even hooks into GitLab. If it works well, this could be one of those rare use cases where AI actually shines: improving developer onboarding, easing the pain of legacy code spelunking, and generating useful docs with minimal effort or risk. I’ve got high hopes. Let’s see if they get rewarded this time.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Design Guidelines For Better Notifications UX",
        "url": "https://smashingmagazine.com/2025/07/design-guidelines-better-notifications-ux",
        "description": "This one covers a topic I’ll admit I hadn’t given much thought to. Until now. Notifications are everywhere, but how often do we actually step back and think about how to design them well? This article does a great job setting the stage and offering practical guidance on a subject that definitely deserves more attention. How do we craft user notifications that are clear, useful, and timely without being annoying? And how do we coordinate across all the layers: custom toasts on a web page, browser prompts, operating system notifications, mobile apps. emails? How do we make them work together instead of overwhelming users? It’s a surprisingly deep dive that’s made me reflect on my own assumptions. If you’ve ever shipped a feature that needed to \"just notify the user,\" this is absolutely worth a read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "It's time for modern CSS to kill the SPA",
        "url": "https://jonoalderson.com/conjecture/its-time-for-modern-css-to-kill-the-spa",
        "description": "I started working on the web even before jQuery was a thing. Back then, we were still using tables for layout and some truly terrible JavaScript to sprinkle in the occasional interaction. Nothing remotely close to the kind of rich, dynamic apps we can build today with just a fraction of the effort. But the web is still evolving. This article dives into one of its more recent advancements: native CSS transitions. The central thesis? That this one feature quietly eliminates the strongest argument for client-side routing. I’m not totally convinced, at least not across the board. But it’s a compelling idea. Especially now, as multi-page applications are making a serious comeback. Just look at how much traction tools like Astro are getting. If you care about the direction of the web platform, and how much JavaScript we really need, this is one worth reading.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making a Masonry Layout That Works Today",
        "url": "https://css-tricks.com/making-a-masonry-layout-that-works-today",
        "description": "I’ve been looking into Masonry layouts recently. You know, those nicely packed element walls you see on Pinterest and similar apps. I wanted to use one in the reviews section of a website and quickly realized it’s not as simple as it seems. Turns out I’m not alone. This layout pattern is getting a lot of attention lately, with several proposals aiming to make it a native CSS feature. There are three competing syntaxes being discussed: `display: masonry`, `grid-template-rows: masonry`, and `item-pack: collapse`. Firefox already supports the second one, while Chrome is experimenting with the first. But with no clear winner and inconsistent support, we’re still not quite there yet. This article gives a solid overview of the situation and shares a simple, reliable JavaScript implementation you can use today. BTW, for my current use case, since I am using Astro, I ended up using this excellent library: [astro-masonry](https://github.com/OlivierEstevez/astro-masonry).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The many, many, many JavaScript runtimes of the last decade",
        "url": "https://buttondown.com/whatever_jamie/archive/the-many-many-many-javascript-runtimes-of-the-last-decade",
        "description": "Lately, I’ve been joking that the era of *“a new JavaScript framework every other day”* is over. We’ve now entered the era of *“a new JavaScript runtime every other day.”* Just think of **Deno**, **Bun**, [**LLRT**](https://github.com/awslabs/llrt), [**Bare**](https://bare.pears.com/), and the growing list of others popping up everywhere. Of course, it’s a silly joke... I’m not bashing these efforts. In fact, I’m genuinely excited. It’s great to see so many teams exploring how to make JavaScript and TypeScript faster, lighter, and more portable across platforms. That kind of innovation is exactly what full-stack developers need. This article is a great reminder that this isn’t entirely new. The race for better runtimes has been happening for decades. It walks through the many, many (many!) attempts to improve how we run JavaScript, from well-known contenders to more obscure experiments. If you’re curious about what the future of running JavaScript might look like, it’s worth taking a look back.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Secrets of the JavaScript Ninja",
      "author": "John Resig, Bear Bibeault, and Josip Maras",
      "description": "More than ever, the web is a universal platform for all types of applications, and JavaScript is the language of the web. If you're serious about web development, it's not enough to be a decent JavaScript coder. You need to be ninja-stealthy, efficient, and ready for anything. This book shows you how. Secrets of the JavaScript Ninja, Second Edition uses practical examples to clearly illustrate each core concept and technique. This completely revised edition shows you how to master key JavaScript concepts such as functions, closures, objects, prototypes, and promises. It covers APIs such as the DOM, events, and timers. You'll discover best practice techniques such as testing, and cross-browser development, all taught from the perspective of skilled JavaScript practitioners.What's Inside",
      "coverImageUrl": "./79896bf6926e76cfec46f452c1c26cb952fba8807739d55d73021744efbf7b5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292850?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292850?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Carousel Gallery (CSS-only carousel options)",
        "url": "https://chrome.dev/carousel"
      },
      {
        "title": "Stop Re-Rendering with TanStack DB",
        "url": "https://tanstack.com/blog/tanstack-db-0.1-the-embedded-client-database-for-tanstack-query"
      },
      {
        "title": "The Useless useCallback in React",
        "url": "https://tkdodo.eu/blog/the-useless-use-callback"
      },
      {
        "title": "The Fastest Node 22 Lambda Coldstart Configuration",
        "url": "https://speedrun.nobackspacecrew.com/blog/2025/07/21/the-fastest-node-22-lambda-coldstart-configuration.html"
      },
      {
        "title": "Better Upload - Simple and easy file uploads for React",
        "url": "https://better-upload.com/"
      },
      {
        "title": "So many ranges, so little time: A cheatsheet of animation-ranges for your next scroll-driven animation",
        "url": "https://webkit.org/blog/17184/so-many-ranges-so-little-time-a-cheatsheet-of-animation-ranges-for-your-next-scroll-driven-animation"
      },
      {
        "title": "A Windows 7-alike component system!",
        "url": "https://khang-nd.github.io/7.css"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 431,
    "title": "How does a screen work?",
    "slug": "2025-07-28-411-how-does-a-screen-work",
    "date": "2025-07-28",
    "templateType": "mce-mailchimp",
    "intro": "Yo, I was on holiday last week too... or at least that’s what I told my calendar.\n\nIn reality, it was one of *those* breaks. The kind where you step away from work to catch up on all the personal stuff you’ve been putting off for months. You know, life admin, overdue errands, maybe a bit of DIY chaos. So now I’m back at my desk thinking... I could really use a holiday to recover from my holiday.\n\nAnyway, enough rambling. Let’s get back to the fullstack love!\n\nSince I wasn’t knee-deep in debugging or working through specific technical problems, my reading pattern went a bit off-script. I wandered, explored, and clicked on whatever looked fun or intriguing in the moment. So this week’s issue might feel a little more eclectic than usual... think of it as a mix-tape of curiosities that happened to grab my attention. Hopefully, you’ll find something unexpected that inspires you too.\n\nEnjoy!\n— Luciano\n\nPS: A few readers mentioned that the current email layout isn’t super readable on mobile Gmail (Android). This kind of feedback is incredibly helpful. If you’re having trouble reading the newsletter on your device too, please reply to this email and include a screenshot along with your device details. I’ll do my best to cook up a layout that works better for everyone!",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human“",
      "author": "Alan Turing",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "How does a screen work?",
        "url": "https://makingsoftware.com/chapters/how-a-screen-works",
        "description": "Okay, so this one’s a little off-script for FullStack Bulletin. It’s not your typical deep dive into a JavaScript quirk or a shiny new backend tool. But I loved it. I’ve been working with screens for as long as I can remember, and somehow I never stopped to ask... how do these things actually work? Maybe it resonated more because I’m not really a hardware person, but this beautifully illustrated piece opened up a whole new corner of curiosity for me. It walks through the magic behind cathode rays, liquid crystals, and pixels with clarity and charm. If you’re up for a brief detour from code and want to come back with a new layer of awe for the folks who make our hardware hum, this is a must-read.",
        "imageUrl": "./01ef6ed6a175fd3d84d348e8ba8a23039c8a409cd6eb7aa15681c702f4408a86.png",
        "featured": true
      },
      {
        "title": "Tooooools.app",
        "url": "https://tooooools.app/",
        "description": "If you just finished reading about how CRT screens work and thought, “Wow, I kinda miss that fuzzy scanline glow”, you're going to love this next one. Tooooools is not your typical image generator. There’s no AI here, no prompts, no diffusion models. Instead, it’s a delightful playground of pure image processing algorithms. Think: stippling, dithering, edge detection, cellular automata, and my personal favorite, a CRT filter that looks like it was plucked straight from a dusty arcade cabinet. The best part? Many of the effects can be exported as SVG, which makes this a surprisingly useful tool for web design. Whether you're crafting hero backgrounds, textures, or weird generative art, this one's worth bookmarking.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "shadcn/ui Theme Editor & Generator",
        "url": "https://tweakcn.com/",
        "description": "If you’ve been living under a rock (or just away from the React scene), **shadcn/ui** is the wildly popular component library that pairs beautifully with **Tailwind** and **Radix**. It’s clean, accessible, and ridiculously nice to work with. But lately, I can’t help noticing a certain… sameness creeping across the web. **Shadcn** is starting to feel a bit like the new **Bootstrap**. Every other site looks kinda the same. Now, I’m not here to bash it. I use it too and love it. But if you want your site to stand out just a little more, **Tweakcn** is your new best friend. It’s a visual theme editor for shadcn that lets you customize colors, fonts, radius, shadows, and more. No digging through config files. Just click, tweak, and copy your theme. A perfect way to stay in the ecosystem while giving your site a bit more personality.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Think About Time in Programming",
        "url": "https://shanrauf.com/archive/how-to-think-about-time-in-programming",
        "description": "Ah, time. The bane of every programmer's existence! Don’t tell me you’ve never been burned by a timezone bug or watched a test fail because of daylight saving. We’ve all been there, squinting at logs and wondering why “tomorrow” starts two hours early... or in the past. This piece is a thoughtful breakdown of why handling time is way messier than it looks. It challenges the usual advice like “just use UTC” and explains why you can’t make general assumptions about how civil time works. Timezone offsets can change at any moment, leap seconds throw off your long-term math, and every region plays by its own arbitrary rules. If you want to reason about time without losing sleep (literally), this guide offers the mental model you need. Clear, grounded, and full of insights that can save you from nasty surprises.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "We migrated our site to Eleventy and increased performance by 24%",
        "url": "https://etch.co/blog/we-migrated-our-site-to-eleventy-and-increased-performance-by-24-percent",
        "description": "You know me... I’m a sucker for static sites and static site generators. **Astro** has been my go-to lately, but **Eleventy** held the crown for a long time, and it still has a cozy little spot in my heart. It’s simple, powerful, and I still reach for it when I want something lightweight and no-fuss. If you're looking for a reason to give Eleventy a spin, this team’s migration story delivers. They moved their site from **Next.js** to Eleventy and saw a huge improvement in performance and maintainability... without removing a single feature! Their Lighthouse score jumped from 76 to 97, JavaScript payload shrank from over 2MB to just 11KB, and they dropped from 1,115 npm dependencies to only 13. If you care about speed, simplicity, and sanity, this one’s worth a read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Friendly Introduction to SVG",
        "url": "https://joshwcomeau.com/svg/friendly-introduction-to-svg",
        "description": "SVGs are hands down one of the most exciting technologies we have in the browser toolbox. You can use them for crisp illustrations, snappy animations, and interactive graphics, all sweetly packed into a compact, scalable format that looks great on any screen. This friendly guide is the perfect way to level up your SVG game. It walks you through the basics like shapes, lines, and polygons, then builds up to powerful techniques like animated strokes and presentational attributes. You’ll also learn how to make your SVGs truly scalable and visually sharp in any context.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Kigen Color Generator",
        "url": "https://kigen.design/color",
        "description": "If you’re into **Tailwind** (guilty as charged), you’re going to love this one. And even if you’re not, it’s still a pretty slick little tool. Kigen Color makes it super easy to build and tweak your own color palettes. It’s perfect if you want to create a custom Tailwind-compatible scale, but you can also export the colors however you like. I’ve been playing with it just for fun, and honestly, it’s kind of addictive. A great way to bring a bit more harmony (and personality) to your UIs.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Acing the System Design Interview",
      "author": "Zhiyong Tan",
      "description": "The system design interview is one of the hardest challenges you'll face in the software engineering hiring process. This practical book gives you the insights, the skills, and the hands-on practice you need to ace the toughest system design interview questions and land the job and salary you want.In Acing the System Design Interview you will master a structured and organized approach to present system design ideas like:",
      "coverImageUrl": "./38fc8052a2cdf798f78e170cf99975eb733b08c8db3c6d3ce136023436bea275.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633439100?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633439100?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "1KB JS Numbers Station",
        "url": "https://shkspr.mobi/blog/2025/07/1kb-js-numbers-station"
      },
      {
        "title": "A Better Promise.all() — Utility Types and Functions",
        "url": "https://spin.atomicobject.com/better-promise-all"
      },
      {
        "title": "Artisanal Handcrafted Git Repositories",
        "url": "https://drew.silcock.dev/blog/artisanal-git"
      },
      {
        "title": "Algorithms for making interesting organic simulations",
        "url": "https://bleuje.com/physarum-explanation"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 430,
    "title": "To be a better programmer, write little proofs in your head",
    "slug": "2025-07-21-410-to-be-a-better-programmer-write-little-proofs-in-your-head",
    "date": "2025-07-21",
    "templateType": "mce-mailchimp",
    "intro": "Hey folks,\n\nSorry for missing an issue last week. I was on holiday in the mountains, taking a much-needed break from screens and schedulers. It was glorious. And yes, if you're one of those wild Geoguessr people, [here’s a pic](https://postimg.cc/1VySmZg7). See if you can figure out where I was 😛\n\nSince I wasn't solving real-world bugs or wrestling with infrastructure, my reading pattern went a bit off the rails. More exploratory, a little chaotic. I also found myself diving deeper into the world of agentic AI tools, probably thanks to the buzz around [AWS Kiro](https://kiro.dev/). I’m still not totally sold on the whole thing, maybe because I haven’t found a workflow where they consistently deliver value, but my curiosity is definitely growing.\n\nSo, this issue might feel a little weirder than usual, but hopefully in a good way. It’s still packed with full-stack goodness, and my goal remains the same: to keep you informed, inspired, and motivated in this ever-shifting world of web development.\n\nEnjoy the ride,\n— Luciano",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it's money wasted, because none of these measures address the weakest link in the security chain“",
      "author": "Kevin Mitnick",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "To be a better programmer, write little proofs in your head",
        "url": "https://the-nerve-blog.ghost.io/to-be-a-better-programmer-write-little-proofs-in-your-head",
        "description": "Last week I stumbled across this illuminating piece that felt too good not to share. I often find myself reflecting on what it really takes to grow as a software engineer (I have written [an article on this topic](https://loige.co/the-senior-dev/)). It's a tough question with a thousand possible answers, but this article offers a refreshingly practical one: to become a better programmer, start writing little proofs in your head as you code. Not formal, mathematical proofs. Just the habit of mentally stepping through your logic. What’s true before this function runs? What needs to be true after? Are you maintaining the structure or invariants your system relies on? It’s a quiet but powerful discipline that can turn a mess of code into something you can reason about with clarity and confidence. Combine this mindset with the ability to break down your code into small, discrete units and back it all with solid automated tests, and you'll likely see a dramatic boost in both your code quality and your confidence as a developer.",
        "imageUrl": "./4ec83f72f8a550071e7365db77955b5f87e48df1d50312050cc890564b25e8c2.png",
        "featured": true
      },
      {
        "title": "Thinking in Rust: Ownership, Access, and Memory Safety",
        "url": "https://cocoindex.io/blogs/rust-ownership-access",
        "description": "If you know me, you know I’m quite the fan of the Rust programming language. I have to admit, when I started learning it around five or six years ago, I struggled a bit to get going and fully embrace some of its more innovative and characteristic concepts. Well, I wish I had this article back then. It explains Rust’s access model in a way that feels intuitive and approachable, without glossing over the hard stuff. Ownership, references, lifetimes, and mutability are all broken down with clear and well-thought-out code examples that help build real understanding. Rather than just repeating the official docs, it offers a way of thinking about Rust that actually sticks and translates to real projects. I’ve always believed Rust is an excellent language for building web backends, especially when correctness and performance are paramount. And this kind of resource is exactly what helps developers cross that initial learning curve and start using Rust with confidence.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Modern async iteration in JavaScript with Array.fromAsync()",
        "url": "https://allthingssmitty.com/2025/07/14/modern-async-iteration-in-javascript-with-array-fromasync",
        "description": "Here’s a little gem for anyone who enjoys modern JavaScript features and clean async code. This post dives into `Array.fromAsync`, a recent addition to the language that makes it easier to consume async iterables and collect their values into an array, without boilerplate, helper utilities, or awkward loops. If you’ve taken one of my FREE [Node.js Streams workshops](https://github.com/lmammino/streams-workshop) or explored [JavaScript Iteration Protocols](https://github.com/lmammino/iteration-protocols-workshop) with me, you’ll know how much I enjoy digging into these low-level abstractions and showing how they power so many things behind the scenes. These workshops still need to be updated to include `Array.fromAsync`, but this article gives a great preview of why that addition is such a big deal.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Encrypting Files with Passkeys and age",
        "url": "https://words.filippo.io/passkey-encryption",
        "description": "Last week, during a hike in the mountains, I found myself chatting with a friend about Passkeys and the tech behind them. Now, this might be slightly off-topic for a fullstack newsletter (although I’d argue it’s something you might have to integrate with if you work on login systems for the web), but that conversation stuck with me. Later that evening, I ended up reading more about passkeys and stumbled across this fascinating article. What really blew my mind is the idea of using passkeys not for authentication, but for encryption. That was a first for me. I had always thought of passkeys as a login replacement, not as a tool for secure, user-scoped encryption. But it turns out this is not only possible, it’s also surprisingly practical.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ReactJS From Zero To Hero (Free Online Book)",
        "url": "https://reactz2h.com/",
        "description": "This one’s a great pick if you’re trying to learn React or if you already know the basics and want to go a little further. React Zero to Hero is a full-length course that covers core concepts in a clear and structured way, without assuming too much or overwhelming you with edge cases. The best part? It’s completely free and fully readable on the web. No signups, no paywalls, just solid React content from start to finish.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "An MCP server boilerplate",
        "url": "https://github.com/iannuttall/mcp-boilerplate",
        "description": "MCP (Model Context Protocol) is quickly becoming one of the hottest patterns in the AI/dev tooling space. It’s a protocol that lets agents or AI tools communicate with your backend in a predictable and structured way, often by exposing models and operations via a schema. Think of it as a spec for building smart, context-aware APIs that can be consumed by LLMs or other agents. Now, MCP is all the rage right now, but building one? Not so easy. It looks simple on the surface, but there are a lot of decisions to make and little details that can trip you up. Should you go with a local or a remote server? How do you handle authentication? What if you need to support payments or private access? This boilerplate project gives you a solid starting point that covers some of those tricky advanced features out of the box. It also makes it easy to deploy your MCP server to Cloudflare, so you don’t have to spend hours fiddling with infra.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JavaScript scope hoisting is broken",
        "url": "https://devongovett.me/blog/scope-hoisting.html",
        "description": "This one is definitely on the niche side and probably most appealing to JavaScript bundling nerds (you know who you are). But even if that’s not your usual rabbit hole, it’s worth a quick skim. The post dives into a subtle issue with scope hoisting in modern bundlers. It’s something you might have run into without realizing. If you’ve ever had a module behave strangely after bundling and couldn’t quite pin down why, this might connect the dots. It’s a great reminder that even mature tools have sharp edges, and understanding what’s going on under the hood can save you hours of head-scratching.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python",
      "author": "Ryan Mitchell",
      "description": "If programming is magic, then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. This thoroughly updated third edition not only introduces you to web scraping but also serves as a comprehensive guide to scraping almost every type of data from the modern web. Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server's response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you're likely to encounter.",
      "coverImageUrl": "./9df60f3b2fb2c15777f1a49eaee86ac4a4e454131a9f9e7fc79d9f6921c788b2.jpg",
      "amazonUs": "https://www.amazon.com/dp/B0CVP964KM?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B0CVP964KM?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Typed Query Builders: Kysely vs. Drizzle",
        "url": "https://marmelab.com/blog/2025/06/26/kysely-vs-drizzle.html"
      },
      {
        "title": "Scroll-Driven Sticky Heading",
        "url": "https://css-tricks.com/scroll-driven-sticky-heading"
      },
      {
        "title": "A practical playbook for working with AI code assistants",
        "url": "https://lucamezzalira.medium.com/a-practical-playbook-for-working-with-ai-code-assistants-6cd5127946cd"
      },
      {
        "title": "Agentic AI Prompting: Best Practices for Smarter Vibe Coding",
        "url": "https://www.ranthebuilder.cloud/post/agentic-ai-prompting-best-practices-for-smarter-vibe-coding"
      },
      {
        "title": "Tools: Code Is All You Need",
        "url": "https://lucumr.pocoo.org/2025/6/21/my-first-ai-library/"
      },
      {
        "title": "The AWS Product Lifecycle page (podcast)",
        "url": "https://awsbites.com/146-the-aws-product-lifecycle-page"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 429,
    "title": "RSS is Not Dead",
    "slug": "2025-07-07-409-rss-is-not-dead",
    "date": "2025-07-07",
    "templateType": "mce-mailchimp",
    "intro": "Hey there, \nThis week’s collection ended up orbiting around one of my favorite fullstack themes: rediscovery. Not just discovering new tools or frameworks (though there’s plenty of that), but rediscovering old, brilliant ideas and looking at them with fresh eyes.\n\nRSS is a perfect example. It’s been around forever, quietly doing its thing in the background. But lately, I’ve been seeing developers breathe new life into it, turning it into something more personal, more expressive, even more community-driven. Like using RSS to share a reading list instead of just your own blog. Or mixing in a static site generator to build your own lightweight feed reader. It's a reminder that the web is full of foundational ideas that still have so much to give... if we’re willing to look again and reimagine.\n\nI think that’s the real magic of fullstack work. It's not always about chasing the newest thing. Sometimes it’s about pulling an old thread and seeing where it leads you.\n\nEnjoy this week’s picks. I hope something in here sparks a bit of that same curiosity for you.\n\nKeep exploring,\n—Luciano",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years“",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "RSS Server Side Reader",
        "url": "https://matklad.github.io/2025/06/26/rssssr.html",
        "description": "I friggin love the idea of the **RSS format**. It's simple, open, and honestly kind of beautiful. But we’ve been neglecting it. That needs to change. Every site that publishes content should support RSS. No excuses. Quick aside. Did you know **Aaron Swartz** helped define the RSS spec? And he was just a teenager at the time. If you don’t know his story, go watch The [Internet’s Own Boy](https://www.youtube.com/watch?v=9vz06QO3UkQ). It’s sad but inspiring and absolutely worth your time. Now back to the piece. What really got me excited is how the author uses RSS in a new way. Not just to share their own posts but to publish a public reading list of all the blogs they follow. It brings back the vibe of those old *blog circles* or *blog rolls* that made the early web feel like a real community. And the implementation? Super clean. The feed aggregation happens server-side during a nightly build. No CORS headaches. Just a rolling list of fresh content from around the blogosphere in a simple static page! PS. If you’re into this kind of thing, check out [JSON Feed](https://www.jsonfeed.org/) too. It’s like RSS with a modern twist.",
        "imageUrl": "./142790b0c01906a18d84fe767a9b5203654433f760bfed2dcf78aceeca353f33.jpg",
        "featured": true
      },
      {
        "title": "Tuono: a fullstack React/Rust web framework",
        "url": "https://tuono.dev/",
        "description": "Who doesn't need a new fullstack web framework, right? Jokes aside, this one actually looks promising. Not just because we desperately need an alternative to Next.js, but because it takes a bold and very different approach. It mixes TypeScript on the frontend with Rust on the backend. This isn't your typical fullstack JS or TS framework. It's trying something new. It leans hard into performance and stability, and if you’re the kind of dev who enjoys both React and Rust, this might hit a sweet spot you didn’t know you were missing. Definitely worth a look.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Kelp: a new UI library",
        "url": "https://kelpui.com/",
        "description": "Kelp is a UI library for people who love HTML. It’s powered by modern CSS and Web Components, with zero build step, vanilla JavaScript, and easy customization. No dependencies. No fuss. Just clean, expressive markup. Lately, I’ve been deep-diving into how to organize CSS colors in a more semantic way. I’m not a big fan of Tailwind-style class names like `text-red-500` or `text-blue-600`. I prefer something more abstract and flexible like `text-primary` or `text-accent`, so I can swap out themes like light and dark without hunting down color values scattered across my markup. While researching options, I looked into [DaisyUI](https://daisyui.com/) (which is also great), and that’s when I stumbled across Kelp. And wow, they really nailed the color story, IMHO. Kelp promotes a thoughtful, semantic approach to theming and even includes a [built-in theme builder](https://kelpui.com/docs/tools/theme-builder/) to play around with your palette. It’s still early days for the project, but it’s already full of smart ideas. If you love HTML and want a lightweight, semantic-first UI toolkit, Kelp is worth checking out.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Running a million-board chess MMO in a single process",
        "url": "https://eieio.games/blog/a-million-realtime-chess-boards-in-a-single-process",
        "description": "This one blew my mind. A million real-time chess boards running in a single backend process. Yes, you read that right. **One. Million.**It’s an absolutely wild scale, and the author walks through exactly how it’s done. The secret sauce? A backend written in Go, tuned for extreme performance. No magic. Just smart use of memory, concurrency, and a language that doesn’t get in your way when every millisecond counts. If you're into backend engineering or just love seeing real-world performance pushed to the edge, this is a must-read. It’s also a perfect reminder that choosing the right language and architecture can make all the difference. Oh, and as a fun bonus, this article introduced me to the fascinating world of [Rollback netcode](https://en.wikipedia.org/wiki/Netcode#Rollback): a clever networking technique from the gaming world that’s totally worth learning about.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Give footnotes the boot",
        "url": "https://jakearchibald.com/2025/give-footnotes-the-boot",
        "description": "I’ve always found footnotes on web pages a bit weird. I get why they exist in books. Print needs a place to stash those extra thoughts. But on the web? We’ve got better tools. Why make readers scroll up and down just to read a side note? This piece puts that frustration into words beautifully. It argues that traditional footnotes just don’t belong in modern web content. Instead, we can use interactive patterns that make the experience smoother and less jarring. Think hover popovers, inline reveals, and smarter mobile behavior. It’s a short read, but it’ll absolutely make you rethink how you handle footnotes in your own digital writing.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Gap Strikes Back: Now Stylable",
        "url": "https://css-tricks.com/the-gap-strikes-back-now-stylable",
        "description": "From time to time I see this debate pop up. Should components include margins by default? It never felt quite right to me, but I hadn’t landed on a good alternative until I came across [this piece](https://kyleshevlin.com/prefer-gaps-to-margins) last week. The idea is simple but powerful. Instead of scattering margins across components, treat spacing as the parent’s job and use gap instead. It keeps components cleaner and more reusable. Works great with flex and grid layouts... And now there’s even more reason to do it: because CSS is making gaps stylable. Yep, that means you can draw actual lines between columns or rows using the gap itself. You get cleaner layout control, better theming, and a much more flexible way to design space and structure.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What's new in ECMAScript 2025",
        "url": "https://pawelgrzybek.com/whats-new-in-ecmascript-2025",
        "description": "Keeping up with JavaScript’s evolution can feel like a full-time job, but I always enjoy these deep dives into what’s new in ECMAScript. This roundup of ECMAScript 2025 changes is clear, well-organized, and super practical. You’ll find some neat additions like **Duplicate named capturing groups**, **Set methods**, **Import Attributes**, **RegExp pattern modifiers**, and **`Promise.try()`**. But my personal favorite? The new **Iterator Helpers**. I often ended up creating my own helpers, and now I look forward to having a standard toolkit available by default. If you’re curious about how iterators and generators actually work under the hood, I also have a [free GitHub workshop on JavaScript iteration protocols](https://github.com/lmammino/iteration-protocols-workshop). Check it out!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "WebAssembly: The Definitive Guide",
      "author": "Brian Sletten",
      "description": "WebAssembly: The Definitive Guide is a thorough and accessible introduction to one of the most transformative technologies hitting our industry. What started as a way to use languages other than JavaScript in the browser has evolved into a comprehensive path toward portability, performance, increased security, and greater code reuse across an impressive collection of deployment targets. Author Brian Sletten introduces elements of this technology incrementally while building to several concrete, code-driven examples of practical, cutting-edge WebAssembly uses. Whether you work with enterprise software or embedded systems, or in entertainment, scientific computing, or startup environments, you'll learn how WebAssembly can have a positive impact on the way you develop software.",
      "coverImageUrl": "./a43876aec27571b23a44a7fad53f8d087bb85e49f0f43cb0a4135dc5d0c90093.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492089842?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492089842?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "JavaScript™ Trademark Update",
        "url": "https://deno.com/blog/deno-v-oracle4"
      },
      {
        "title": "js1024: Annual JavaScript Golfing Competition",
        "url": "https://js1024.fun/"
      },
      {
        "title": "Build Your Own Color Search Engine",
        "url": "https://lui.ie/guides/semantic-search-colors"
      },
      {
        "title": "Building a Lightweight Reactive State Manager with JavaScript Proxies",
        "url": "http://lorenstew.art/blog/reactive-state-manager-with-proxies"
      },
      {
        "title": "Spectral.js: a paint like color mixing library utilizing the Kubelka-Munk theory",
        "url": "https://github.com/rvanwijnen/spectral.js"
      },
      {
        "title": "4 Untranslatable Words Behind Patreon’s Internationalization Overhaul",
        "url": "https://www.patreon.com/posts/133137028"
      },
      {
        "title": "Can Good UX Protect Older Users From Digital Scams?",
        "url": "https://www.smashingmagazine.com/2025/06/can-good-ux-protect-older-users-digital-scams/"
      },
      {
        "title": "Why I Choose Rust to Build a Full-Stack Admin System",
        "url": "https://idaibin-blog.vercel.app/blog/why-rust-admin"
      },
      {
        "title": "Study guide: Data fetching in React",
        "url": "https://reactpractice.dev/articles/study-guide-data-fetching-in-react/"
      },
      {
        "title": "Reactylon: Build Immersive XR Experiences with React and Babylon.js",
        "url": "https://github.com/simonedevit/reactylon"
      },
      {
        "title": "Take Screenshots of Your Statically Exported Next.js Site in a GitHub Actions Workflow",
        "url": "https://www.nico.fyi/blog/how-to-take-screenshots-in-github-actions-workflow"
      },
      {
        "title": "React Still Feels Insane And No One Is Talking About It",
        "url": "https://mbrizic.com/blog/react-is-insane/"
      },
      {
        "title": "A simple website",
        "url": "https://simplesite.ayra.ch/"
      },
      {
        "title": "12 Factor Agents",
        "url": "https://github.com/humanlayer/12-factor-agents"
      },
      {
        "title": "How People Jailbreak AI – and How Developers Are Fighting Back",
        "url": "https://blog.risingstack.com/ai-jailbreak/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 428,
    "title": "Announcing Vite 7",
    "slug": "2025-06-30-408-announcing-vite-7",
    "date": "2025-06-30",
    "templateType": "mce-mailchimp",
    "intro": "Howdy, This week’s collection feels like a proper developer mixtape. We’ve got high-performance bundlers, noir-style SQL mysteries, clever logging tricks, and even a splash of Apple-style liquid glass with CSS... all stitched together with a healthy dose of curiosity and pragmatism.\n\nOne thing that struck me while putting this issue together is how full-stack development constantly dances between the very practical (like taming worker threads or dealing with spam bots) and the wildly creative (like making your UI ripple like a highly dynamic interface). It’s technical. It’s visual. It’s somewhat logical. It’s weird. And that’s what makes it such a fun space to work in... I am sure you can relate!\n\nI hope this issue gives you something new to play with, or at least think about differently.\n\nHappy coding and exploring,\n— [Luciano](https://loige.co/)\n\nP.S. If you end up solving a fake crime scene with SQL or adding chromatic aberration to your navbar this week, please reply to this email and let me know. Maybe even send me a screenshot... I live for that kind of stuff!",
    "quote": {
      "text": "I think computer viruses should count as life. I think it says something about human nature that the only form of life we have created so far is purely destructive. We've created life in our own image“",
      "author": "Stephen Hawking",
      "authorTitle": "Physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "Announcing Vite 7",
        "url": "https://vite.dev/blog/announcing-vite7",
        "description": "Last week we shared Vitest 3.2, and now the Vite ecosystem is back with another banger: Vite 7 is out and packed with exciting updates. Momentum is clearly growing, and Vite is reshaping how we build frontends in all the right ways. This release introduces early access to **Rolldown**, a new Rust-powered bundler built for speed and compatibility with Rollup. It’s designed to make even massive projects build insanely fast. You’ll also get shiny new DevTools and smarter, safer defaults across the board. Vitest already supports it too. There’s plenty more, so if you’re on team Vite, go check out the full announcement. I personally look forward to starting upgrading all my projects and giving Rolldown a spin!",
        "imageUrl": "./f87b203029fd81668c624688755f3c2d1f171b02fd7bf514556e29ab9572178c.png",
        "featured": true
      },
      {
        "title": "Learn SQL by Solving Crimes",
        "url": "https://sqlnoir.com/",
        "description": "Lately I’ve been hopping between projects using MySQL, Postgres, and even the new Amazon DSQL. Different tech, same core: SQL is still the common language. And since I hadn’t written a proper SQL query in a while, I figured it was time to sharpen the old skills. That’s when I stumbled on **SQL Noir**: a free, browser-based game that turns SQL practice into a detective mystery. You play an investigator in a smoky, 1980s film-noir world solving crimes with… you guessed it, SQL. The first case? The Vanishing Briefcase. A man in a trench coat. A lounge called the Blue Note. A list of suspects and transcripts to sift through. If that doesn’t get your inner nerd fired up, I don’t know what will. And hey, if someone catches you mid-case at work, just say, *“Hey, I’m training. In SQL.”* Go solve some crimes and level up your queries! Oh, by the way, if you enjoy learning full-stack skills through games like this, I’ve put together a [whole repository full of games](https://github.com/lmammino/awesome-learn-by-playing). Have fun! [**Play the game**](https://sqlnoir.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "LogTape: a modern JavaScript logging library",
        "url": "https://logtape.org/",
        "description": "When it comes to logging in JavaScript, I’m usually all-in on **[Pino](https://getpino.io/)**. It’s fast, flexible, and has served me well across tons of projects. So what could possibly make room for yet another logger? Enter **LogTape**. What caught my eye is its truly universal design: it works everywhere: Node, Deno, Bun, the browser, you name it. That’s rare and super useful for modern full-stack or edge-first workflows. But the real hook for me is its clever use of hierarchical categories. Think [debug](https://www.npmjs.com/package/debug) module meets structured log levels. You define categories as arrays like `[\"my-app\", \"module\"]`, and logs cascade through matching parent categories. It gives you precise, contextual control over verbosity without the usual config headaches. Definitely worth a look! [**Check the project**](https://logtape.org/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Worker Threads in Node.js: A Complete Guide for Multithreading in JavaScript",
        "url": "http://nodesource.com/blog/worker-threads-nodejs-multithreading-in-javascript",
        "description": "Did you know JavaScript isn’t strictly single-threaded anymore? Yup, worker threads have been around for a while now... quietly giving Node.js real multithreading superpowers. But wait... isn’t async I/O already good enough? It is, for most things. That’s why the real question isn’t why use threads, but when. This article lays it out clearly, showing the strengths of worker threads in CPU-bound scenarios where async just doesn’t cut it. If you’ve ever been a bit fuzzy on where threads fit into the JavaScript picture, this is a great deep dive. It’ll help you decide when to go full async and when to spin up a worker instead.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making regular expressions easier to use in JavaScript",
        "url": "https://2ality.com/2025/06/javascript-regexp-tips.html",
        "description": "I’ll admit it... I usually avoid regexes like the plague. As the old joke goes: *“Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.”* But sometimes, regex is exactly what you need. So how do you get the best out of it while avoiding the foot guns? This guide is a goldmine of practical tips. It walks through modern features like the `/v` flag, named capture groups, and even a trick to add inline comments. The syntax isn’t the cleanest, but it’s surprisingly helpful when your pattern gets hairy. Add in testing, clear formatting, and pattern reuse with template strings, and regex starts to feel almost… manageable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A short history of web bots and bot detection techniques",
        "url": "https://sinja.io/blog/bot-or-not",
        "description": "In my last project, I had to wrestle with spam bots again, integrating **reCAPTCHA** and a **WAF** to protect a couple of forms. A few weeks ago, we also featured [Cap](https://capjs.js.org/), a slick proof-of-work captcha. So naturally, I’ve been thinking a lot about how we actually fight bots. Turns out, it’s always a bit of a best-effort game. This article is a brilliant recap of the cat-and-mouse history behind anti-bot tech. From simple tricks to more sophisticated verification methods, it traces what’s worked, what failed, and how we got here. If you're curious about the mechanics behind the madness, this one’s a fun and thoughtful read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Liquid Glass, but in CSS",
        "url": "https://atlaspuplabs.com/blog/liquid-glass-but-in-css",
        "description": "Apple is always ahead when it comes to setting UI and UX trends. Whether liquid glass is actually a good UX trend... well, I’m still on the fence. But it sure looks amazing. Want that same slick, glossy vibe on your site? You can pull it off with a bit of CSS. OK, maybe not *just a bit* of CSS... but still, it’s all doable! This article walks you through the steps to recreate the liquid glass effect on the web. The clever twist? It uses SVG filters for ripple displacement, edge distortion, and chromatic aberration. These subtle touches make the whole thing feel surprisingly real.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Programming Phoenix 1.4: Productive |> Reliable |> Fast",
      "author": "Chris McCord, Bruce Tate, and Jose Valim",
      "description": "Don't accept the compromise between fast and beautiful: you can have it all. Phoenix creator Chris McCord, Elixir creator Jose Valim, and award-winning author Bruce Tate walk you through building an application that's fast and reliable. At every step, you'll learn from the Phoenix creators not just what to do, but why. Packed with insider insights and completely updated for Phoenix 1.3, this definitive guide will be your constant companion in your journey from Phoenix novice to expert, as you build the next generation of web applications. Phoenix is the long-awaited web framework based on Elixir, the highly concurrent language that combines a beautiful syntax with rich metaprogramming. The best way to learn Phoenix is to code, and you'll get to attack some interesting problems. Start working with controllers, views, and templates within the first few pages. Build an in-memory context, and then back it with an Ecto database layer, complete with changesets and constraints that keep readers informed and your database integrity intact. Craft your own interactive application based on the channels API for the real-time applications that this ecosystem made famous. Write your own authentication plugs, and use the OTP layer for supervised services. Organize code with modular umbrella projects.",
      "coverImageUrl": "./24ba614da2f54bb7dd60d148a47d161b7e2957fa1da389105c33e80b14b3b75b.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680502263?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680502263?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "tstyche: Everything You Need for Type Testing.",
        "url": "https://github.com/tstyche/tstyche"
      },
      {
        "title": "A guide to Scroll-driven Animations with just CSS",
        "url": "https://webkit.org/blog/17101/a-guide-to-scroll-driven-animations-with-just-css"
      },
      {
        "title": "<syntax-highlight> element",
        "url": "https://andreruffert.github.io/syntax-highlight-element"
      },
      {
        "title": "CSS Color Functions",
        "url": "https://css-tricks.com/css-color-functions"
      },
      {
        "title": "Inverse text-sizing based on text-length with attr()",
        "url": "https://daverupert.com/2025/06/fittext-too-attr-boogaloo"
      },
      {
        "title": "Prefer Gaps To Margins",
        "url": "https://kyleshevlin.com/prefer-gaps-to-margins"
      },
      {
        "title": "JSON evolution in Go: from v1 to v2",
        "url": "https://antonz.org/go-json-v2"
      },
      {
        "title": "We Tried Amazon DSQL So You Don’t Have To (podcast)",
        "url": "https://awsbites.com/145-we-tried-amazon-dsql-so-you-don-t-have-to-but-you-might-want-to/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 427,
    "title": "Farewall Mikael",
    "slug": "2025-06-23-407-farewall-mikael",
    "date": "2025-06-23",
    "templateType": "mce-mailchimp",
    "intro": "Hey everyone,\n\nSorry for skipping last week’s issue. I was knocked out with a nasty sinus infection and spent most of the time horizontal. Thankfully I’m finally on the mend and back at the keyboard.\n\nThis week’s issue carries a bit of a heavier tone than usual. We’ve lost [Mikael Rogers](https://github.com/mikeal): an incredibly influential voice in the Node.js and broader web development world. Whether you knew him by name or not, his work likely touched your projects in some way. It’s a sad moment, but also a reminder of how much impact one person can have on this ever-growing, ever-connected ecosystem of ours.\n\nOn a brighter note, a big thank you to **Murf AI** for sponsoring this issue. If you’ve been curious about voice generation, or you have an idea for an app that could use it, they’re running [a contest](https://lu.ma/0dzhcc01) right now that might be worth your time. Go check it out!\n\nAs always, thanks for reading—and for being part of this curious and passionate community. Let’s keep building.\n\nHappy coding!\n— [Luciano](https://loige.co/)\n\nThis issue is kindly sponsored by:",
    "quote": {
      "text": "Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration“",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "Farewell Mikael",
        "url": "https://github.com/mikeal/cancer-diaries",
        "description": "**Mikael Rogers**, a true pillar of the Node.js and open source communities, has passed away at just 42, after a fierce battle with cancer. I never met Mikael personally, but he influenced me more than he’ll ever know. If you’ve heard of [io.js](https://github.com/nodejs/iojs.org) or used the popular [request](https://www.npmjs.com/package/request) package, then you’ve already crossed paths with his work, even if unknowingly. Mikael wasn’t just a builder. He was a bridge between worlds, a fierce advocate for openness and community, and someone who helped shape how we write code today. It feels like losing a mentor from afar, a quiet guiding voice. So rather than despair, I want to invite you to celebrate him. [Isaac](https://blog.izs.me/2025/06/mikeal-rogers/) and [John](https://b.h4x.zip/mikeal/) both wrote moving tributes that I recommend reading. You can also sign a [guestbook](https://www.legacy.com/us/obituaries/nytimes/name/mikeal-rogers-obituary) for his family. And if you want to dive deeper, here's a GitHub repo started by Mikael himself where people are sharing memories in the form of issues. Let’s remember Mikael by doing what he championed best: building things that matter, together. *Farewell Mikael!*",
        "imageUrl": "./18ed2100d8ea03ef806657c40ba017ddbe1f6271b677785ce449e1ca9e04aa90.jpg",
        "featured": true
      },
      {
        "title": "Aceternity UI",
        "url": "https://ui.aceternity.com/",
        "description": "Last week I accidentally bumped into Aceternity UI… and honestly, it kind of blew my mind. This isn’t your typical component library with the usual suspects like buttons, date pickers, or input fields. Nope. Aceternity is all about vibes. It's a collection of animated, interactive, delight-driven components designed to make your site feel alive. Think gooey cursors, magnetic buttons, parallax backgrounds, hero sections that actually feel heroic… you get the idea.It’s built with React, Tailwind CSS, and Framer Motion, and all the available components are free to use, so you can just drop them into your project and go wild. There’s even a live playground where you can tweak things in real time before you copy the code. This might be the secret sauce your website might be missing. [**Visit project**](https://ui.aceternity.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing Vitest 3.2",
        "url": "https://vitest.dev/blog/vitest-3-2",
        "description": "Vitest has quickly become my favorite test runner (when I’m not using the [built-in Node.js one](https://nodejs.org/api/test.html), that is). It’s fast, full of useful features, and genuinely enjoyable to work with. Always great to see the community keeping the momentum strong. So what’s new in version 3.2? Quite a bit—and you can check out the full list in the release post if you're curious. My personal highlights? Two stand out. First, a much-improved coverage implementation. Second, the new ability to extend built-in matchers with your own custom ones. Love that kind of flexibility.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Historical Tech Tree",
        "url": "https://historicaltechtree.com/",
        "description": "This might seem a bit off-topic... but is it, really? The Historical Tech Tree is an interactive map that showcases humanity's most important technological inventions... starting all the way back with stone tools from 3 million years ago. That’s even before Homo sapiens entered the scene! And from those primitive beginnings, you can trace a mind-blowing acceleration of innovation leading all the way to things like... **Reflective LLMs**. If you want to keep it close to home, you can filter by ***Computing*** and follow the path from mechanical calculators to microchips to modern AI. It’s fascinating to see how every breakthrough stands on the shoulders of countless others. For us developers, it's a powerful reminder. What we build today doesn't live in a vacuum. We're part of a long, incredible chain of invention. And maybe... just maybe... something we write this week ends up as a tiny node on this tree someday. [**Visit website**](https://historicaltechtree.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Obra Icons",
        "url": "https://icons.obra.studio/",
        "description": "I haven’t featured an icon pack in a while. Probably because I got into the lazy habit of defaulting to [Lucide](https://lucide.dev/icons/), just because it’s so easy to use with React. But last week I discovered a nice alternative worth checking out. **Obra Icons** is a clean, consistent set of UI-friendly icons with both stroke and fill variants. They feel carefully designed and cover a wide range of use cases without getting too flashy. It also comes with convenient **React** and **Svelte** libraries, so you can drop icons into your project with minimal setup. Just install and go. There's even a [Figma plugin](https://www.figma.com/community/file/1511878363179181235/obra-icons-1-23-1) and a smart search to help you find what you need quickly. If your UI needs a little visual polish, this might be the perfect upgrade.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pushing docker images directly to remote servers",
        "url": "https://github.com/psviderski/unregistry",
        "description": "For small side projects, I often skip setting up (and paying for) a Docker registry (I know... I am a cheap lazy bastard). I just push images from my machine or CI directly to a remote server. Usually that means saving the image to a tar and loading it over SSH. It works, but it’s not ideal. Docker ends up transferring the full image every time... no caching, no layer reuse! That’s where **Unregistry** comes in. It acts as a temporary registry over SSH, letting Docker push images while taking full advantage of layer caching. Only the new or changed layers get transferred, making deploys faster and way more efficient. If you’re tired of re-sending hundreds of MBs on every deploy, this little tool could save you a lot of time and bandwidth.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Partial Keyframes",
        "url": "https://joshwcomeau.com/animation/partial-keyframes",
        "description": "If you're the kind of person who loves crafting UI animations from scratch, not just copy-pasting them from Aceternity, this is a trick you’ll want in your toolbox. CSS keyframe animations are way more powerful than most developers realize. With partial keyframes, you don’t need to define both from and to. Just specify one end and the browser fills in the rest based on the current state. It sounds simple, but it opens the door to dynamic, reusable animations that layer beautifully without duplication. It completely changed how I think about writing animations. If you're serious about building elegant, maintainable motion in your UI, you'll love this pick.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Hacking APIs: Breaking Web Application Programming Interfaces",
      "author": "Corey J. Ball",
      "description": "Hacking APIs is a crash course in web API security testing that will prepare you to penetration-test APIs, reap high rewards on bug bounty programs, and make your own APIs more secure. You'll learn how REST and GraphQL APIs work in the wild and set up a streamlined API testing lab with Burp Suite and Postman. Then you'll master tools useful for reconnaissance, endpoint analysis, and fuzzing, such as Kiterunner and OWASP Amass. Next, you'll learn to perform common attacks, like those targeting an API's authentication mechanisms and the injection vulnerabilities commonly found in web applications. You'll also learn techniques for bypassing protections against these attacks.",
      "coverImageUrl": "./b3f0d1842f9d322702bad2d24580f2f381ab8a8dbc9683b9c1e07dce63db4083.jpg",
      "amazonUs": "https://www.amazon.com/dp/1718502443?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1718502443?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "How JavaScript Was Written Back In the Day",
        "url": "https://trevorlasn.com/blog/revisiting-legacy-javascript"
      },
      {
        "title": "SmoothUI: React UI with TailwindCSS & Motion Animations",
        "url": "https://smoothui.dev/"
      },
      {
        "title": "Liquid Glass",
        "url": "https://hvpandya.com/liquid-glass"
      },
      {
        "title": "Glassmorphism CSS Generator",
        "url": "https://ui.glass/generator"
      },
      {
        "title": "Node.js v24.2.0",
        "url": "https://nodejs.org/en/blog/release/v24.2.0"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 426,
    "title": "The (Lost?) Art of Reinventing the Wheel",
    "slug": "2025-06-09-406-the-lost-art-of-reinventing-the-wheel",
    "date": "2025-06-09",
    "templateType": "mce-mailchimp",
    "intro": "Hello,  👋\nThis week’s issue came together with a theme I didn’t plan... but absolutely love! It’s all about **reinvention**. Not just of the wheel, but of frameworks, engines, runtimes, mental models... you name it. We’ve got a brand new JavaScript engine written in Rust, yet another story about moving away from Next.js, a CSS experiment that nobody asked for but secretly teaches us something, and a wild tool that runs PHP and Node.js together. Yes, really.\n\nIt’s a great reminder that our field is in constant motion. The tools we use today might be gone or significantly change tomorrow. The patterns we follow might get flipped on their heads. And that’s not always easy... it can be frustrating, even exhausting. But it can also be inspiring and fun, because when you embrace this mindset, software development stops being repetitive and becomes an adventure.\n\nThat’s what FullStack Bulletin is here for. A little weekly dose of curiosity and clarity. To help you stay sharp, stay playful, and maybe even feel a little less alone in the chaos.\n\nHappy reading and reinventing!\n\n—Luciano\n\nP.S. And speaking of reinvention... I’ve just announced the new edition of my book [Node.js Design Patterns](https://www.nodejsdesignpatterns.com/)! Hard to believe we’re hitting the 4th edition, 11 years after the first one. If you want to know what’s new, here’s the [announcement post](https://bsky.app/profile/did:plc:567st5nby2tokcv2kyy5ofzh/post/3lqmhhjrwbc22). I’d love to hear what you think, so feel free to reply here or to reach me on socials to have a chat!",
    "quote": {
      "text": "UNIX is simple. It just takes a genius to understand its simplicity“",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "The (Lost?) Art of Reinventing the Wheel",
        "url": "https://endler.dev/2025/reinvent-the-wheel",
        "description": "How many times have you looked at a new trending library on GitHub and said *“yet another validation library”* (or ORM, or framework, or JavaScript runtime... you name it)? This article makes a strong case for why that reaction might be short-sighted. Instead of dismissing repeated efforts, it argues that reinventing the wheel is often where real innovation happens. By rebuilding familiar tools like a custom web server or a new string library, you gain insight into the trade-offs, constraints, and hidden complexities that polished tools usually hide. Sometimes, doing the obvious thing again is exactly how we get better, more refined approaches. And hey, even if your project doesn’t turn into the next big thing or an earth-shattering breakthrough, there’s still huge value in the effort. Just by trying to rebuild something that interests you, you’ll sharpen your skills, deepen your understanding, and maybe even help others learn too. Sometimes the win isn't the thing you built. It's everything you learned building it.",
        "imageUrl": "./17de66cfce01e4959fc2c2a6cc177acde6005c9a2a7e37a877115652e01142e5.jpg",
        "featured": true
      },
      {
        "title": "Reinventing... Remix!",
        "url": "https://remix.run/blog/wake-up-remix",
        "description": "And speaking of reinventing the wheel, the Remix team is doing just that with their latest announcement. After integrating much of Remix's functionality into React Router v7, they've decided to reimagine Remix from the ground up. This new iteration, Remix v3, aims to be a full-stack framework that's lighter, faster, and more aligned with modern web development practices. They're starting with a fork of **Preact**, moving away from React, and focusing on principles like model-first development, building on Web APIs, and minimizing dependencies. It's a bold move that challenges conventional approaches and invites developers to think differently about building for the web. Whether or not it becomes the next big thing, the educational value and fresh perspective it offers are undeniable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Search Params Are State",
        "url": "https://tanstack.com/blog/search-params-are-state",
        "description": "How many times have you built some kind of sortable or filterable data table where you passed query string parameters to control things like sorting or filtering? Now imagine if changes to that table (like clicking a column header to re-sort) automatically updated the URL too. No extra glue code. Just clean, bidirectional sync between the UI and the query string. That would make your “state” not only persistent, but also shareable. Copy the URL, send it to a teammate, and boom, they see the exact same view. This article lays out a compelling case for treating search params as first-class state. Instead of wrangling them with hand-rolled utils, you define schemas right in your routes. You get type safety, validation, and a better mental model for your app. It’s the kind of idea that sounds obvious once you see it, and one you’ll want to adopt the next time you’re juggling filters, pagination, or search.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Nova",
        "url": "https://trynova.dev/",
        "description": "Yes, once again we are reinventing something... and this time, guess what? **Yet another JavaScript engine!** Nova is a new JavaScript and WebAssembly engine written in Rust, designed around data-oriented principles instead of traditional object-oriented patterns. It stores data in type-specific vectors for better memory efficiency and cache performance, more like a game engine than a JS runtime. It’s still in early development, passing about 66% of the Test262 suite, but already shows promise. Nova’s architecture is built for minimal overhead and maximum control. If you're curious about [their design principles](https://trynova.dev/blog/working-for-the-internet) or want to peek inside their custom [garbage collector](https://trynova.dev/blog/guide-to-nova-gc), their blog is full of thoughtful posts on the design. It’s not production-ready, but it’s a bold and geeky take on what a JS engine of the future can be. Definitely one to watch.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS Spotlight Effect",
        "url": "https://frontendmasters.com/blog/css-spotlight-effect",
        "description": "Ever seen a CSS spotlight effect that follows your mouse like you're on stage? This post shows you exactly how to build one using a clever combo of JavaScript for mouse tracking and CSS custom properties, gradients, and filters to pull off a glowing, animated trail. Now, I’m not entirely sure where or when this particular effect would actually make sense (probably never), but the underlying techniques are genuinely intriguing. Things like dynamic gradients, layered masks, and blend modes could absolutely be reused in more practical, subtle UI moments. Think hover effects, focus states, or delightful interactions that make your site feel more alive.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Migrate from Next.js to TanStack Start",
        "url": "https://tanstack.com/start/latest/docs/framework/react/migrate-from-next-js",
        "description": "Another Week, Another Story on Moving Away from Next.js... I swear, I don't hate Next.js. I've used it extensively and have generally been happy with it. But I can't deny that it has its quirks, and I'm always on the lookout for something that could potentially be more ergonomic while still being powerful and performant. TanStack Start, although not 100% ready for production, is absolutely promising. This guide provides a step-by-step process to migrate a project from the Next.js App Router to TanStack Start, aiming to make the transition as smooth as possible.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "PHP and Node.js: Together at Last?",
        "url": "https://github.com/platformatic/php-node",
        "description": "Our friends at Platformatic have unveiled another intriguing open-source project. After introducing [Watt](https://docs.platformatic.dev/docs/watt/overview) (a Node.js application web server designed for multi-threaded request handling) they're now venturing into PHP territory. Yes, you read that right: PHP! With `@platformatic/php-node`, you can run PHP applications within the same process as a Node.js application, enabling direct communication between Node.js and PHP without any network connection in between. This opens up fascinating possibilities, such as running WordPress with a Next.js frontend on the same web server. The project is written in Rust, so if you've been curious about Rust, this could be an excellent repository to explore and contribute to.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "React: Up & Running",
      "author": "Stoyan Stefanov",
      "description": "Hit the ground running with React, the open source technology from Facebook for building rich web applications fast. Updated for the latest React release, the second edition of this hands-on guide shows you how to build React components and organize them into maintainable large-scale apps. If you're familiar with JavaScript syntax, you're ready to get started. Through the course of this book, author Stoyan Stefanov helps web developers and programmers build a complete single-page application. You'll quickly learn why some developers consider React the key to the web app development puzzle.",
      "coverImageUrl": "./fbf70d6d0a64a42b8e5b476c3e0c99072fcc314ee45b7df68c948d1d1569d2a4.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492051462?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492051462?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Cap: Modern, Open-source PoW CAPTCHA for JavaScript",
        "url": "https://capjs.js.org/"
      },
      {
        "title": "On JavaScript Errors",
        "url": "https://haydenbleasel.com/blog/on-javascript-errors"
      },
      {
        "title": "The 3 Ways JavaScript Frameworks Render the DOM (video)",
        "url": "https://youtube.com/watch?v=0C-y59betmY"
      },
      {
        "title": "Iterator helpers have become Baseline Newly available",
        "url": "https://web.dev/blog/baseline-iterator-helpers"
      },
      {
        "title": "Announcing Angular v20",
        "url": "https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301"
      },
      {
        "title": "Multithreading in JavaScript with Web Workers",
        "url": "https://honeybadger.io/blog/javascript-web-workers-multithreading"
      },
      {
        "title": "Pope Francis’ Tomb: A Type Tragedy",
        "url": "https://pimpmytype.com/pope-francis"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 423,
    "title": "React, from the Ground Up and Where the Web Is Headed",
    "slug": "2025-05-26-405-react-from-the-ground-up-and-where-the-web-is-headed",
    "date": "2025-05-26",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nToday’s issue is, in many ways, about the future of the web. Yes, it’s been on my mind quite a bit lately. From deep dives into the fundamentals of React, to Mozilla’s latest push to protect browser competition, to fresh updates from Google I/O that aren’t (only) about AI, this week’s collection feels like it forms a narrative of its own: from the early days of the web to what’s coming next. It’s a reminder that the web is still evolving in meaningful ways, and that we, as developers, have a role in shaping where it goes. So don’t be afraid to form your own opinions and get involved in whatever way makes sense to you. Your voice matters.\n\nYou’ll also find a few picks that lean more into the practical side of things: keeping React apps secure, using React components to build actual hardware (yes, really), and seeing React Server Components take shape outside of Next.js. There’s plenty to chew on, like a juicy, crunchy pizza slice. Sorry, I had a great one yesterday and it’s still living rent-free in my brain.\n\nAs always, thanks for reading and for being part of this curious, thoughtful corner of the web. It's great to have you here! And feel free to reply to this email to just say hello, I am always happy to connect more directly with each and every one of you!\n\nHappy reading and coding,\n— Luciano",
    "quote": {
      "text": "Never trust a computer you can't throw out a window“",
      "author": "Steve Wozniak",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "React, from the ground up",
        "url": "https://react.gg/visualized",
        "description": "I’ve been building for the web for almost 20 years. In that time, I’ve seen frameworks come and go, paradigms rise and fall. But through all the noise, one thing has stayed constant: the fundamentals. How browsers render pages, how the DOM works, how events flow through the system. These are the roots. That’s why **React Visualized** immediately stood out to me. It doesn’t just teach React. It starts with where the web began and walks forward from there, showing how React builds on the core ideas that have been around for decades. The visual approach makes the concepts click, but it’s the framing that makes it powerful. React isn’t magic. It’s a smart abstraction over what browsers have always done. This resource helps you see that clearly.",
        "imageUrl": "./bbb96385cc769e5b7be7383fad2bbee4992d009366faf6f6b0a37de7768b7552.jpg",
        "featured": true
      },
      {
        "title": "You can design Electronics with React Components",
        "url": "https://tscircuit.com/",
        "description": "I’ve never been big on electronics. I dabbled now and then, but it always felt like a foreign world. One I wasn’t really part of. That might be why **TSCircuit** caught my attention. It brings electronics into the realm of React, which suddenly made the whole thing feel less alien. With this free, open-source tool, you can design circuits using actual React components. You build schematics, generate PCB layouts, and even prep for manufacturing, all inside a setup that feels oddly familiar if you come from the web world. If you’ve been curious about electronics but never quite found the right doorway in, this might be the perfect excuse to take the first step.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Are HTML Emails Accessible in 2025?",
        "url": "https://css-tricks.com/html-email-accessibility-report-2025",
        "description": "If you’ve ever felt like HTML emails live in their own frustrating little world, the 2025 accessibility report from the Email Markup Consortium will feel very familiar. Released just after Global Accessibility Awareness Day, the study looked at over 443,000 real-world emails. **Only 21 passed all automated accessibility checks!** ... and all of those came from the same author! Isn't this crazy and worrying? The most common issues were things like missing language and direction attributes, poor contrast, unhelpful link text, and alt text that technically exists but doesn’t add meaningful context. It’s the third year with nearly identical results, reflecting the same stagnation seen in WebAIM’s broader accessibility findings. This article is an opinionated summary, so if you want to know all the details, check out the [full report](https://emailmarkup.org/en/reports/accessibility/2025/) goes which goes deeper, especially into which email clients support which accessibility features.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React Router RSC Preview",
        "url": "https://remix.run/blog/rsc-preview",
        "description": "I’ve been deep in React lately, especially trying to wrap my head around the client and server boundary. So if I sound like a broken record, bear with me. This one is genuinely exciting. React Router (previously Remix) just released preview support for React Server Components. You can load RSCs through existing loaders and actions, or try out new server-first routes. It also supports `\"use client\"` and `\"use server\"`, along with middleware for batching and caching. It’s still early and running on Parcel for now, since Vite doesn’t support RSC yet. But it’s a promising step toward something a lot of us have been hoping for: more concrete alternatives to Next.js for running React on the server.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Security practices for React + TypeScript",
        "url": "https://snyk.io/blog/best-practices-react-typescript-security",
        "description": "I’ve been using **DomPurify** recently to sanitize markdown content coming from a CMS, so security has been on my mind. That’s why I appreciated this article. It’s a solid reminder of the kinds of issues that can slip through the cracks when working with React and TypeScript. It covers things like the risks of using `any`, how prop validation can affect safety, and why escaping content properly is essential to avoid **XSS**. There’s also mention of SSR and safe handling of data between client and server. Nothing too advanced here, but it reinforces a simple point. Security should not be an afterthought. It should be part of how we build, how we think, and how we work every day.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Google I/O 2025 was not just about AI!",
        "url": "https://web.dev/blog/whats-new-in-web-io2025",
        "description": "Google I/O was packed with wild announcements this year, most of them orbiting around AI in one form or another. But in the middle of all that noise, I wanted to call out this update that focuses squarely on the web platform itself. The latest roundup from the Chrome team covers improvements in performance tooling, new CSS features, progress on baseline compatibility, and updates to WebAssembly and WebGPU. It’s a solid look at where the web is headed, beyond just AI hype.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The future of the web depends on getting this right",
        "url": "https://blog.mozilla.org/en/mozilla/internet-policy/amicus_brief",
        "description": "And speaking of the future of the web, as the U.S. vs. Google search antitrust case wraps up, Mozilla is urging the court not to adopt remedies that could accidentally harm browser competition. One proposal would ban Google from sharing search revenue with independent browsers like Firefox. Mozilla argues this would cripple their ability to fund development of Firefox and the Gecko engine, the only real alternative to Apple and Google’s browser stacks (yes, commendable alternatives such as [Ladybird](https://ladybird.org/) exist, but it will take quite a few years before they are ready for prime time). It would hurt innovation and user choice, while doing almost nothing to shift Google’s market share. Supporting search competition is important, but not at the cost of wiping out browser diversity.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Grokking Web Application Security",
      "author": "Malcolm McDonald",
      "description": "When you launch an application on the web, every hacker in the world has access to it. Are you sure your web apps can stand up to the most sophisticated attacks? Grokking Web Application Security is a brilliantly illustrated and clearly written guide that delivers detailed coverage on:",
      "coverImageUrl": "./481058b0c8479a8d0fca54fd719223f5cc41a2226b5d2a66266f059bf67d0107.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633438260?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633438260?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Finding the Joy in Alt Text",
        "url": "https://bryn.codes/writing/the-joy-in-alt-text/"
      },
      {
        "title": "Surviving the Structured Clone algorithm",
        "url": "https://webreflection.medium.com/surviving-the-structured-clone-algorithm-130608b69f47"
      },
      {
        "title": "React Chrono",
        "url": "https://react-chrono.prabhumurthy.com/"
      },
      {
        "title": "ESLint can now lint HTML using the html-eslint language plugin",
        "url": "https://eslint.org/blog/2025/05/eslint-html-plugin"
      },
      {
        "title": "AWS Lambda Billing Changes, Cold Start Costs, and Log Savings: What You Need to Know (AWS Bites podcast)",
        "url": "https://awsbites.com/144-lambda-billing-changes-cold-start-costs-and-log-savings-what-you-need-to-know"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 423,
    "title": "I thought I understood CSS height… for 15 years. I didn’t!",
    "slug": "2025-05-19-404-i-thought-i-understood-css-height-for-15-years-i-didn-t",
    "date": "2025-05-19",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nI’m still pretty excited about the recent Node.js 24 release, and you’ll probably notice that energy in some of this week’s picks. It’s always great to see meaningful improvements land in the platform, and this release in particular comes with a few additions that I think will make a real difference for day-to-day development.\n\nIf you care about Node.js and its future, there’s something else you should know: the Node.js team is running a survey to better understand who’s using the platform and what they need next. It only takes five minutes, and your input could genuinely help shape the priorities for upcoming releases. So take 5 minutes and fill the [Node.js Next 10 Survey - 2025](https://linuxfoundation.research.net/r/2025nodenext10)!\n\nAs always, this issue brings together a mix of practical tools, deep dives, and thoughtful reads that sparked my curiosity this week. I hope they do the same for you. Staying curious and always learning is still the best way I know to thrive in this fast-moving field.\n\nAnd hey, if you want to **support FullStackBulletin**, one simple thing you can do is **let me know what you like about it**. What topics or types of content do you enjoy most? That kind of feedback really helps me focus on what matters to you.\n\nYou know what else helps? **Sharing the newsletter with your friends and colleagues**. Help us reach more passionate full-stack web devs like you!\n\nThanks for being here.\n\nHappy reading and coding,\n— Luciano",
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation“",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "I thought I understood CSS height… for 15 years. I didn’t!",
        "url": "https://www.joshwcomeau.com/css/height-enigma/",
        "description": "Josh Comeau finally explained it in a way that made sense. This article breaks down why `height: 100%` so often seems broken, and how CSS layout actually works when it comes to parent-child height relationships. If you've ever piled on height rules out of desperation, this will feel painfully familiar, and incredibly clarifying. Trust me, this is the article I wish I’d read 15 years ago. You probably should read it too.",
        "imageUrl": "./6e47ed4ef51ad874239ba3babedde530a7a46399fd647155ca40f02d0b9a4bd8.png",
        "featured": true
      },
      {
        "title": "Vibe Coding is not an excuse for low-quality work",
        "url": "https://addyo.substack.com/p/vibe-coding-is-not-an-excuse-for",
        "description": "Everyone is talking about \"vibe coding\". I know you might be sick of it, but this perspective is really important, IMHO. A lot of people think AI-assisted development is a magic bullet that will solve all your tech problems fast and cheap. But the truth is, it's just another tool. And like any tool, there are good and bad use cases. Either way, we have to use it responsibly. Addy Osmani puts it perfectly: AI is like having a very eager junior dev on your team. Fast, helpful, and wildly overconfident. This piece lays out exactly why blindly trusting AI code can lead to massive tech debt, brittle systems, and poor security. But it’s not all doom and gloom. Addy also shows how to actually integrate AI into your workflow with the care and discipline of real engineering.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Concurrent Optimistic Updates in React Query",
        "url": "https://tkdodo.eu/blog/concurrent-optimistic-updates-in-react-query",
        "description": "Optimistic rendering is a technique where the UI reflects changes immediately, before the server confirms them. It reduces perceived latency and creates a smoother experience, especially for actions that take time. But while it works well for simple cases, complexity grows fast when multiple updates interact or fail out of order. This post dives into concurrent optimistic updates in React Query, showing how to handle overlapping mutations without breaking your cache or confusing the user. It's a sharp, practical guide for anyone building high-interaction UIs. Also, this is post #29 in a massive React Query series. So even if this topic isn’t your focus today, the full collection is a treasure trove for anyone using React Query seriously.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Error.isError(): A Better Way to Check Error Types in JavaScript",
        "url": "https://trevorlasn.com/blog/error-iserror-javascript",
        "description": "When Node 24 dropped (which we covered [last issue](https://us15.campaign-archive.com/?u=b015626aa6028495fe77c75ea&id=d53b4db555)), I got curious about the new `Error.isError()` method. This article helped me see why it’s a big deal, especially if you’ve ever dealt with weird cross-context errors or unhelpful error checks. Unlike `instanceof`, which breaks when errors come from other realms (like iframes or separate VM modules), `Error.isError()` works reliably across contexts and even filters out “fake” error-like objects. It gives you a much more robust way to handle unknown exceptions. Even better: it’s already integrated with TypeScript. So when you wrap an unknown in an `if (Error.isError(e))` block, TypeScript knows e is a real `Error`, and you get full type safety right there.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Basecoat",
        "url": "https://basecoatui.com/",
        "description": "If you love the structure of shadcn/ui but don’t want to be tied to React, Basecoat is worth a look. It gives you clean, accessible UI components using simple Tailwind classes, without the usual mess of utility class soup. No React. No complex setup. Just drop it into whatever you're building, whether that's plain HTML, Rails, Flask, or something else. You get a real design system that stays readable and easy to maintain. It even supports shadcn-style theming and uses a small touch of Alpine.js for interactivity when needed. I'm excited to give this a shot in my next Astro project or the next time I'm working with Solid.js.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How V8 JavaScript Engine Works Behind the Scenes",
        "url": "https://deepintodev.com/blog/how-v8-javascript-engine-works-behind-the-scenes",
        "description": "We’ve been talking a lot about V8 lately, the JavaScript engine behind Chrome and Node.js, so if you’re curious about how it actually works, this is a great place to start. This article explains what V8 does behind the scenes when it runs your code. It walks through parsing, interpretation, compilation, and runtime optimization, touching on concepts like hidden classes and inline caching in a way that’s clear and approachable. You don’t need to be deep into compilers to get value from this. It’s written for developers who want to understand how JavaScript performance really works. If you’ve ever wondered why some patterns run faster than others, this will help you connect the dots.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "I think the ergonomics of generators is growing on me",
        "url": "https://macarthur.me/posts/generators",
        "description": "If JavaScript generators still feel a bit mysterious, this article is a great way to make them click. Generators let you pause and resume execution, making them perfect for building lazy, stateful, or incremental logic. BTW, I’m a big fan of iterators and generators in JavaScript, and I’ve even published a totally [free iterator protocols workshop on GitHub](https://github.com/lmammino/iteration-protocols-workshop) if you want to go deeper. This post is another great resource. It walks through how generators work with yield, why they matter, and how they fit into the bigger picture of JavaScript’s iteration protocol. It’s clear, practical, and might just convince you to use them more often in real projects.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Application Security: Exploitation and Countermeasures for Modern Web Applications",
      "author": "Andrew Hoffman",
      "description": "In the first edition of this critically acclaimed book, Andrew Hoffman defined the three pillars of application security: reconnaissance, offense, and defense. In this revised and updated second edition, he examines dozens of related topics, from the latest types of attacks and mitigations to threat modeling, the secure software development lifecycle (SSDL/SDLC), and more. Hoffman, senior staff security engineer at Ripple, also provides information regarding exploits and mitigations for several additional web application technologies such as GraphQL, cloud-based deployments, content delivery networks (CDN) and server-side rendering (SSR). Following the curriculum from the first book, this second edition is split into three distinct pillars comprising three separate skill sets:",
      "coverImageUrl": "./2b56346aeb48fd20a324178798c739445e5379d724b406a52fbb825ce7a8982a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098143930?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1098143930?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "AI Native Developer Tools Landscape",
        "url": "https://landscape.ainativedev.io/"
      },
      {
        "title": "No, react context is not causing too many renders",
        "url": "https://blacksheepcode.com/posts/no_react_context_is_not_causing_too_many_renders"
      },
      {
        "title": "ESLint plugin to catch unnecessary React useEffect hooks",
        "url": "https://github.com/NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect"
      },
      {
        "title": "The power of the spread and rest syntax in JavaScript",
        "url": "https://allthingssmitty.com/2025/05/05/the-power-of-spread-and-rest-patterns-in-javascript.md"
      },
      {
        "title": "Getting to Staff Engineer",
        "url": "https://medium.com/one-to-n/getting-to-staff-engineer-5af6ff3236a6"
      },
      {
        "title": "Node.js 24 Is Here: What You Need to Know",
        "url": "https://www.nodesource.com/blog/Node.js-version-24"
      },
      {
        "title": "JavaScript's New Superpower: Explicit Resource Management",
        "url": "https://v8.dev/features/explicit-resource-management"
      },
      {
        "title": "Share your dev server (and more) over P2P",
        "url": "https://malai.sh/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 422,
    "title": "Supercharged and Ready: Node.js 24 is Here!",
    "slug": "2025-05-12-403-supercharged-and-ready-node-js-24-is-here",
    "date": "2025-05-12",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nI’ve been writing JavaScript for nearly two decades, and I’ve used all kinds of languages on the backend. When Node.js first came out, I remember thinking, *“This is it. I can finally write full-stack JavaScript applications.”* A dream come true.\n\nAlmost 15 years later, while there are still some practical differences between client-side and server-side JavaScript, one thing is certain: Node.js keeps improving with every release, and the whole JavaScript ecosystem continues to grow with it. That’s why I was especially excited last week to see the release of Node.js 24, another big milestone for the web platform.\n\nOf course, this newsletter doesn’t stop at Node. As always, I’ve curated a mix of articles, tools, and ideas that I found genuinely inspiring. Some are hands-on and practical, others are a bit more philosophical, but all of them reminded me why I love working in tech.\n\nIn a field where everything moves fast and we’re constantly catching up, the only way to thrive is to stay curious. If we don’t enjoy learning and experimenting, this can easily become one of the most frustrating jobs out there. So let’s keep it fun, and let’s keep learning together.\n\nIf you’ve discovered something interesting lately, [hit reply](mailto:luciano@fullstackbulletin.com?subject=Something%20cool%20I%20learned%20recently) and tell me about it. I always love hearing from readers.\n\nEnjoy this week’s picks,\n— Luciano",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute“",
      "author": "Gerald Jay Sussman",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "Supercharged and Ready: Node.js 24 is Here",
        "url": "https://nodejs.org/en/blog/release/v24.0.0",
        "description": "I’m genuinely excited about this one. Node.js 24 just dropped, and it’s packed with features that make full-stack dev feel faster, smoother, safer, and more modern. First off, it brings the latest V8 engine, unlocking goodies like [**explicit resource management**](https://github.com/tc39/proposal-explicit-resource-management) with the new `using` keyword. Also, you can now use emojis in your regexes... Because of course you should be able to! But what really stands out is the new [**stable permission model**](https://nodejs.org/api/permissions.html). For now you can only control access to the filesystem, but I am sure this will be expanded to other system resources such as network access. That is a big win for security-minded developers. There are other nice quality-of-life improvements too, so it is worth checking out the full announcement. I cannot wait to see this version to land as a managed runtime in AWS Lambda too.",
        "imageUrl": "./b3ce2046f73e81bb33c05f732acbbdc66621d5d53ba19723956793026f8be0e8.png",
        "featured": true
      },
      {
        "title": "Passkeys Explained Like You’re a Normal Human",
        "url": "https://troyhunt.com/passkeys-for-normal-people",
        "description": "I have so much appreciation for the work Troy Hunt does to make security not just understandable, but actually useful for real people. In this post, he demystifies passkeys by walking through how phishing attacks actually work. He shows how even with typical OTP two-factor authentication (those pesky six-digit codes we have to type), you are still vulnerable. Passkeys, on the other hand, would stop these attacks cold. Once you understand how passkeys work, wouldn’t it be fun to take the challenge and implement support for them in one of your projects? 😏",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What Do Garlic and Design Systems Have in Common? Bias!",
        "url": "https://bencallahan.com/bias-in-design-systems",
        "description": "This article talks about... garlic. Yes, you read that right. Garlic. But it doesn't stop there (thankfully). Garlic is used to introduce the concept of bias, in a surprisingly powerful way, and how it shows up in the design systems we build and maintain. The author dives into the invisible decisions baked into every component library. Things like spacing, color, typography, even the names we give components. Behind each of those choices is a team, and behind each team are assumptions that may or may not work for the next team using the system. It is a thoughtful read that will have you rethinking what it means to build \"neutral\" or \"flexible\" systems. And it might just make you hungry for better defaults (and maybe a little pasta).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Tiny Details That Make UI Animations Feel Great",
        "url": "https://emilkowal.ski/ui/good-vs-great-animations",
        "description": "This post is quick, but it hits hard. The author walks through subtle component-level animations. Not the flashy stuff you see on landing pages, but the tiny motions that happen when you open a popup, switch tabs, or expand a menu. These are the kinds of details that make a UI feel natural and pleasant to use, when done right. What’s amazing is how clearly the article makes this point. With just a few interactive widgets, it shows how small changes in easing, timing, and movement can turn a clunky interface into something that feels effortless. It is the kind of read that only takes a minute but will change how you think about every interaction in your app.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Goodbye Prettier and ESLint, Hello Biome",
        "url": "https://blog.appsignal.com/2025/05/07/migrating-a-javascript-project-from-prettier-and-eslint-to-biomejs.html",
        "description": "[Biome](https://biomejs.dev/) is becoming my default. I never liked having two tools (ESLint and Prettier) for linting and formatting. For a long time I tried to do everything with ESLint, but it never really felt great, and it was slow on big projects. Now Biome has changed the rules of the game, and seeing it grow rapidly in features and adoption makes me really happy. If you want to make the switch like I did, this article is a great starting point. The team at AppSignal walks through how they migrated a JavaScript project from Prettier and ESLint to Biome. They cover the reasoning behind the move, the migration steps, and how it felt to work with Biome day to day.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "When JavaScript Breaks the Web but It Might Be Actually Useful",
        "url": "https://dbushell.com/2025/05/02/progressive-dehancement",
        "description": "You know how we all say we’re building progressively enhanced websites? Turns out, a lot of us are unintentionally doing the opposite. This tongue-in-cheek post introduces the idea of progressive dehancement, where JavaScript ends up removing basic functionality instead of enhancing it. The author shares a clever real-world example involving his contact form. He set up two different behaviors: one for the basic version of the form and one for the enhanced, JavaScript-powered version. Since the enhanced version is mostly used by real humans, he uses that difference to help flag and categorize incoming messages. It is a smart trick with real benefits. It is a fun read with a serious takeaway. If you care about robustness, accessibility, or just not breaking the web for users with flaky scripts, this one is worth your time. And while you are there, take a look around the blog. There are some real gems tucked away.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Finally Understanding React Server Components (Thanks to Astro)",
        "url": "https://overreacted.io/rsc-for-astro-developers",
        "description": "If you ask me to explain the difference between React client components and server components, sorry but I will give you some half-assed vague answer. And I am sure I am not alone in that. Then ask me about the difference between Astro components and client islands and I promise you, I will ace that question (I love Astro, BTW). This is exactly the point of this article. And fun fact, it is written by one of the most influential folks in React-land: **Dan Abramov**. But more importantly, it is a genuinely great article that helped me fully grasp the concepts behind React Server Components by comparing them to something I already understood well. If you have been struggling to build a solid mental model for how RSCs work, this is the kind of read that will make things finally click. And if you want more, you should also check out [Functional HTML](https://overreacted.io/functional-html/) and [Static as a Server](https://overreacted.io/static-as-a-server/) from the same author.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript for impatient programmers",
      "author": "Dr. Axel Rauschmayer",
      "description": "This book makes JavaScript less challenging to learn for newcomers, by offering a modern view that is as consistent as possible. Highlights:",
      "coverImageUrl": "./67c53ec7d9f570f760b2ed64aecfa613b5162f44c336e6545272a53ad23a0c32.jpg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "When You Might Need to Override the Defaults in TanStack Query",
        "url": "https://kxlaa.com/articles/when-you-might-need-to-override-the-defaults-in-tanstack-query"
      },
      {
        "title": "Understanding and implementing Base64",
        "url": "https://sunshine2k.de/articles/coding/base64/understanding_base64.html"
      },
      {
        "title": "Robust Data Fetching Architecture For Complex React/Next.js Apps",
        "url": "https://trevorlasn.com/blog/fetching-data-for-complex-next-and-react-apps"
      },
      {
        "title": "A command-line utility to explore and visualize all routes in your Next.js application",
        "url": "https://github.com/pablolizardo/next-list"
      },
      {
        "title": "Learn the Rust programming language in 1 FREE video (Course for beginners)",
        "url": "https://youtube.com/watch?v=gAX3Zj-JGE0"
      },
      {
        "title": "Is App Runner better than Fargate? (AWS Bites podcast)",
        "url": "https://awsbites.com/143-is-app-runner-better-than-fargate"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 421,
    "title": "Why Doesn’t HTML Have an <include> Tag?",
    "slug": "2025-05-05-402-why-doesn-t-html-have-an-include-tag",
    "date": "2025-05-05",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nThis week’s issue is a handpicked collection of the things that genuinely sparked my curiosity over the past few days. Some are deeply technical, some a bit philosophical, and a few just made me smile, but all of them reminded me why I love building for the web. From clever backend tricks to unexpectedly thoughtful takes on HTML and UI design, each piece in this issue has something that made me stop and think, “Huh, I hadn’t looked at it that way before.” That, to me, is the mark of truly good content. So whether you’re here to sharpen your tools, shift your perspective, or just enjoy the craft a little more, I hope you find something in this issue that lights a similar spark for you.\n\nThanks as always for reading, and feel free to reply if you want to share something cool, ask a question, or just say hi (I always reply to everyone!)\n\nHappy reading and coding\n—Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important“",
      "author": "Bill Gates",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "Why Doesn’t HTML Have an <include> Tag?",
        "url": "https://frontendmasters.com/blog/seeking-an-answer-why-cant-html-alone-do-includes",
        "description": "Ever wished you could just drop a `<include>` into your HTML and call it a day? Unfortunately, that tag doesn’t exist, and it never has. So why has HTML, after decades of evolution, still not added such a seemingly obvious feature? The author of this piece takes that innocent question and pulls the thread all the way back to the roots of how the web was designed. It's a surprisingly layered story: one that touches on simplicity versus power, content versus logic, and why HTML still insists on staying \"dumb.\" For full-stack devs juggling templates, build systems, and component-driven UIs, it's a compelling reminder that some of our daily workarounds aren't just technical gaps; they're philosophical choices baked into the web itself.",
        "imageUrl": "./015d467eb40724a9577ac32de44ddb2093d52430417260532da783cf208bb8fd.jpg",
        "featured": true
      },
      {
        "title": "I use Zip Bombs to Protect my Server",
        "url": "https://idiallo.com/blog/zipbomb-protection",
        "description": "This one really caught my eye. It's a bit outside the usual full-stack territory, but it's a fascinating story: the author uses zip bombs (yes, those malicious files designed to crash systems) as a form of server defense. By handing these files to suspicious bots, the server essentially tricks them into self-destruction. It’s a clever use of a dangerous concept for a protective purpose, and a reminder of how creativity and a deep understanding of system behavior can lead to surprising solutions.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Canvas: use it for snow effects, not for text",
        "url": "https://heydonworks.com/article/the-canvas-element",
        "description": "Here’s some more HTML goodness, this time packaged in a hilarious and unique writing style (you can't expect anything less from the awesome Heydon Pickering). What starts as a roast of the `<canvas>` element quickly becomes a thoughtful reflection on semantics, accessibility, and the true purpose of HTML. The piece pokes fun at canvas-powered UIs and pixel-rendered text, all while making a solid case for sticking with semantic markup and scalable SVGs. For full-stack developers, it’s a refreshing reminder that good HTML still matters—and that `<canvas>` might be best reserved for animating snowflakes.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Motion-Primitives",
        "url": "https://motion-primitives.com/",
        "description": "Animating elements on the web is tough… or at least it is for me! And sometimes I find that having a finely crafted UI kit with lots of built-in effects can be a lifesaver. If you're like me, you might like Motion Primitives, an open source animation kit built with Framer Motion and Tailwind CSS, designed for developers who want slick, modern UI without the tedium. It’s packed with beautifully executed components like Text Scramble, Text Shimmer, Tilt, Image Comparison, and Morphing Dialog. All are easily customizable, and all just a copy-paste away. Whether you're prototyping, polishing, or trying to impress the team, this kit makes your UI feel premium with minimal effort. [**Read the docs**](https://motion-primitives.com/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Which useEffect runs first in a React component tree?",
        "url": "https://frontendmasters.com/blog/react-internals-which-useeffect-runs-first",
        "description": "Here’s one for the React lovers. If you’ve ever stacked up multiple `useEffect` hooks and found yourself wondering which one fires first, this article breaks it down with clarity. Spoiler: a child’s `useEffect` runs before its parent’s, thanks to React’s depth-first traversal during the commit phase. If `useEffect` has ever confused you (I admit it’s tripped me up more than once), this is a great opportunity to understand what’s really happening under the hood. And while you're at it, check out the official React docs’ excellent piece [\"You Might Not Need an Effect\"](https://react.dev/learn/you-might-not-need-an-effect). It gives some great tips on how to skip `useEffect` entirely by using simpler and more declarative patterns, and honestly, in a lot of cases that is the better move.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How JavaScript Works Behind the Scenes",
        "url": "https://deepintodev.com/blog/how-javascript-works-behind-the-scenes",
        "description": "Have you ever wondered how a scripting language like JavaScript can be so efficient in many real-life situations? It is single threaded, yet it can handle multiple tasks at once, which makes it a great fit for applications that deal with lots of I/O. But how does this magic actually work under the hood? This article breaks it all down in a clear and accessible way. You will learn how the call stack, event loop, task queues, and web APIs work together to make JavaScript feel asynchronous and responsive. Understanding these concepts is not just a nice to have, it is one of those key shifts that helps you move from junior to senior level when working with JavaScript.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making a small JavaScript blog static site generator",
        "url": "https://jan.miksovsky.com/posts/2025/04-23-async-tree.html",
        "description": "If you have been following me for a while, you probably noticed how much I love static websites and even [static APIs](https://loige.link/static-a). So naturally, I was fascinated by this article, which explores a minimalist approach to building static sites using a JavaScript utility called [async-tree](https://www.npmjs.com/package/@weborigami/async-tree). The idea is simple but powerful: structure your site as an asynchronous tree of content and transformations. It makes tasks like reading markdown, generating pages, and organizing files feel way more intuitive, without the overhead of a full framework. If you enjoy tinkering with lightweight, fast static setups, this is well worth a read.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Full Stack Serverless: Modern Application Development with React, AWS, and GraphQL",
      "author": "Nader Dabit",
      "description": "Cloud computing is typically associated with backend development and DevOps. But with the rise of serverless technologies and a new generation of services and frameworks, frontend and mobile developers can build robust applications with production-ready features such as authentication and authorization, API gateways, chatbots, augmented reality scenes, and more. This hands-on guide shows you how.",
      "coverImageUrl": "./6389aaf153818e165fc179563fd629c944cbabe8ddc94df00c542d3989bf4d51.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492059897?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492059897?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Polishing your typography with line height units",
        "url": "https://webkit.org/blog/16831/line-height-units"
      },
      {
        "title": "How to write error messages that actually help users rather than frustrate them",
        "url": "https://piccalil.li/blog/how-to-write-error-messages-that-actually-help-users-rather-than-frustrate-them"
      },
      {
        "title": "What is CSS Owl Selector (* + *)?",
        "url": "https://youtube.com/watch?v=0O0ssm70g1g"
      },
      {
        "title": "Blob shape with hover effect",
        "url": "https://css-tip.com/blob-hover"
      },
      {
        "title": "What Does \"use client\" Do?",
        "url": "https://overreacted.io/what-does-use-client-do"
      },
      {
        "title": "Refactoring Gone Wild: Avoiding code smells and cleaning up the mess",
        "url": "https://techhub.iodigital.com/articles/refactoring-gone-wild-avoiding-code-smells-and-cleaning-up-the-mess"
      },
      {
        "title": "srvx - Universal Server API",
        "url": "https://srvx.h3.dev/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 420,
    "title": "Let's go with the item-flow! Rethinking web layouts",
    "slug": "2025-04-28-401-let-s-go-with-the-item-flow-rethinking-web-layouts",
    "date": "2025-04-28",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nThis week, you will find, as always, a nice mix of handpicked resources: from pure **CSS** experiments to deeper architectural insights and, yes, quite a few **Node.js** articles too! Why so much Node.js this time? Well, your editor (that’s me!) has a soft spot for it… and this issue is a little special.\n\nI am beyond excited to finally share a project that has been keeping me busy since November last year: A brand-new edition of **Node.js Design Patterns** (the book I co-authored with [Mario Casciaro](https://mario.fyi/)) is on its way!\n\nAnd this is not just a simple update. Over the years, we have received tons of feedback from readers all over the world, and we took that feedback very seriously. This new, revamped, and improved edition does not just bring the content up to date with the latest and greatest features of Node.js.\n\nWe have added more real-life stories from our own experience, practical lessons learned, TypeScript references where they make sense, and even a completely new chapter (almost 100 pages!) dedicated entirely to the art of testing.\n\nYou can already [pre-order your copy](https://www.packtpub.com/en-us/product/nodejs-design-patterns-9781803235431) if you are curious. I truly look forward to hearing your feedback. Hopefully, this new edition will help you bridge the gap from junior to senior, and push you to the next level in your Node.js journey!\n\nBut back to the newsletter... I hope you enjoy this week's collection, and as always, feel free to reply to this email if you have suggestions, feedback, or just want to say hi! I always love getting to know you a bit better and learning what makes this newsletter worth your time.\n\nHappy reading and coding!\n—Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all“",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Go with the item-flow! Rethinking web layouts",
        "url": "https://ishadeed.com/article/item-flow",
        "description": "Have you ever wondered how to recreate a dense, brick-like grid layout like Pinterest? That kind of layout is often called \"masonry\" — and today it usually requires a bit of hacky CSS or heavy JavaScript. This article introduces a fascinating proposal called *\"Item Flow\"* that could change that. It aims to unify `flex-flow` and `grid-auto-flow` into a single, more powerful syntax, making complex layouts (like masonry) a first-class citizen in CSS.",
        "imageUrl": "./3fef872a5e807d27c06f4052f4d5526a3cb28875520fbe4595f593d9fbef7e8b.jpg",
        "featured": true
      },
      {
        "title": "The Hidden Cost of AI Coding",
        "url": "https://terriblesoftware.org/2025/04/23/the-hidden-cost-of-ai-coding",
        "description": "Are you someone who loves the idea of **vibe coding** and believes it is the future of full-stack web development? Or are you still a bit skeptical, wondering what might be lost along the way? This thoughtful article invites you to take a step back and reflect. It questions whether, in our rush toward AI-assisted coding, we might be trading away something essential (that deep sense of flow, focus, and fulfillment that makes crafting software so satisfying in the first place). What do I think? AI can be a wonderful assistant and definitely boost our productivity, but as with everything, the real secret lies in finding the right balance.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "When Do Retry, Backoff, and Jitter Work?",
        "url": "https://thenewstack.io/when-do-retry-backoff-and-jitter-work",
        "description": "As **Werner Vogels** (CTO of Amazon) so eloquently put it, *\"Everything fails all the time.\"* And what do we do when we fail? We stand up and retry! But when it comes to complex web applications and distributed systems, retrying blindly can sometimes cause more harm than good. This piece breaks it all down. It explores when retry strategies like **backoff** and **jitter** actually help (and when they might not). Understanding these patterns is key if you want to build systems that are truly resilient, not just stubborn.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Under the Hood of React Query",
        "url": "https://medium.com/@janardhan.roh/under-the-hood-of-react-query-a-deep-dive-into-its-internal-mechanics-ee51c0ce076e",
        "description": "I have been using **React Query** a lot in my latest **React** project, and I am really loving it. It is such a great way to handle HTTP requests in React while taking care of all the tricky parts: loading states, failures, caching, refreshing, and more. If you have ever wondered how React Query works under the hood, this deep dive is a fantastic resource. It explores how React Query manages data, retries, background updates, cache invalidation, and even garbage collection. A great read if you want to understand the magic behind the DX we sometimes take for granted!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Understanding Hydration Errors by building a SSR React Project",
        "url": "https://propelauth.com/post/understanding-hydration-errors",
        "description": "Hydration errors are one of those things that always bite me (and annoy me) every time I use Next.js to build something... But why are these errors happening and what can we actually do to avoid them? This great tutorial takes a very practical approach: instead of just theorizing, it walks you through building a simple server-rendered React app and shows exactly how (and why) hydration mismatches happen. It is packed with examples where you can see real errors happen and learn how to fix them properly. If you want a much clearer mental model for React, server-side rendering, and hydration, this is absolutely worth your time!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dependency-free Command-Line Apps in Node.js",
        "url": "https://lirantal.com/blog/dependency-free-command-line-apps-powered-by-node-js-core-modules",
        "description": "What do you do when you need to build a simple CLI utility to automate some mundane task? I often start by just installing **[commander](https://www.npmjs.com/package/commander)** or **[yargs](https://www.npmjs.com/package/yargs)**... but not anymore! This great tutorial shows how you can build powerful **command-line apps using only Node.js core modules**, with no third-party dependencies needed. From colorful console output with `styleText()`, to parsing arguments with `util.parseArgs()`, to adding debug logs via `util.debuglog()`, Node.js now gives you everything you need out of the box. Less is better — and sometimes it is also more secure, more maintainable, and simply more satisfying.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Best Node.js Observability Tools",
        "url": "http://nodesource.com/blog/nodejs-observability-tools-2025",
        "description": "Let's stick with **Node.js** and the topic of resilient applications for this last curated resource, and let's talk about **observability**. Which tool is the best? This article from the NodeSource team (yes, the folks behind N|Solid) does a great job at comparing observability solutions without being overly biased. It covers tools like **New Relic**, **Datadog**, **AppDynamics**, **Dynatrace**, **OpenTelemetry**, **Clinic.js**, and of course **N|Solid** itself. If you care about performance profiling, security visibility, and deep Node.js runtime insights, this is a must-read. Picking the right observability tool can save you from countless hours of debugging and keep your systems running smoothly.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Serverless Development on AWS: Building Enterprise-Scale Serverless Solutions",
      "author": "Sheen Brisals, and Luke Hedger",
      "description": "The adoption of serverless is on the rise, but until now, little guidance has been available for development teams that want to apply this technology on AWS. This definitive guide is packed with architectural, security, and data best practices and patterns for architects and engineers who want to build reliable enterprise-scale serverless solutions. Sheen Brisals, an AWS Serverless Hero, and Luke Hedger, an AWS Community Builder, outline the serverless adoption requirements for an enterprise, examine the development tools your team needs, and explain in depth the nuances of testing event-driven and distributed serverless services. You'll gain practical guidance for keeping up with change and learn how to build serverless solutions with sustainability in mind.",
      "coverImageUrl": "./64f288176c4311f8980a1a8b2dc5b8e3dc7531e27802c59e8659210f67bc18b6.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098141938?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1098141938?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Inclusive Dark Mode: Designing Accessible Dark Themes For All Users",
        "url": "https://smashingmagazine.com/2025/04/inclusive-dark-mode-designing-accessible-dark-themes"
      },
      {
        "title": "Building An Offline-Friendly Image Upload System",
        "url": "https://smashingmagazine.com/2025/04/building-offline-friendly-image-upload-system"
      },
      {
        "title": "Magick images",
        "url": "https://ethanmarcotte.com/wrote/magick-images"
      },
      {
        "title": "Frimousse: An emoji picker for React",
        "url": "https://frimousse.liveblocks.io/"
      },
      {
        "title": "Build a Fullstack App with Vanilla JS and Go",
        "url": "https://firt.dev/vanillajs-go/"
      },
      {
        "title": "Advanced TypeScript manipulation features for the real world",
        "url": "https://piccalil.li/blog/advanced-typescript-manipulation-features-for-the-real-world/"
      },
      {
        "title": "The Lost CSS Tricks of Cohost.org",
        "url": "https://css-tricks.com/the-lost-css-tricks-of-cohost-org/"
      },
      {
        "title": "Custom CSS Functions in the Browser",
        "url": "https://www.oddbird.net/2025/04/11/custom-functions/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 419,
    "title": "Code, Creativity, and Curious Experiments",
    "slug": "2025-04-21-400-code-creativity-and-curious-experiments",
    "date": "2025-04-21",
    "templateType": "mce-mailchimp",
    "intro": "Hey folks 👋\n\nThis week’s edition is a weird one... in the best possible way, of course!\n\nWe’ve got a mix of deep technical content (think: building your own analytics engine or coding an AI agent from scratch), alongside some visually striking, graphics-heavy inspiration, like dreamy WebGL gradients and clever CSS scroll effects that’ll make your layouts pop.\n\nI hope you enjoy the ride!\n\nBut hey, if you feel like taking a breather from code, I’ve got something a little different for you too. It’s a short novel I recently stumbled across — strange, unique, and unexpectedly philosophical. *[A conversation between a flip-flopped philosopher and a sarcastic machine](https://write.as/nullbeam/conversations-between-a-flip-flopped-philosopher-and-a-sarcastic-machine)*. It’s funny, thoughtful, and might even make you question the meaning of life… or at least why you put your pants on every day in these weird times that we are living in.\n\nEnjoy this week’s picks — and as always, feel free to reply with any feedback, suggestions, or cool links worth sharing. Also, let me know if you liked (or didn’t like) the short story — so I’ll know whether to dig up more of these next time!\n\nYour editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway“",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Roll your own blog analytics in 130 lines of code",
        "url": "https://orjpap.github.io/valtown/http/analytics/blog/jekyll/2025/04/15/blog-analytics.html",
        "description": "This week's top pick is a brilliant example of DIY ingenuity. Why rely on Google Analytics or Plausible when you can craft a lightweight, privacy-friendly analytics solution yourself? In just under 130 lines of JavaScript, [Orestis Papadopoulos](https://www.linkedin.com/in/orestis-papadopoulos-38612b358/) shows how to set up a serverless analytics system using [Val town](https://www.val.town/) (a collaborative code editor for writing and hosting serverless APIs). OK, maybe you don’t care too much about building your analytics, but I’m personally tinkering with using Val Town to add some engaging interactive stuff to my own website… it feels like a simpler and possibly a more fun alternative to AWS Lambda!",
        "imageUrl": "./93f5fcf4095cb92485e27fc303d6890667e7f52d3e42d1ea02002f6ac5b9ae53.png",
        "featured": true
      },
      {
        "title": "A flowing WebGL gradient, deconstructed",
        "url": "https://alexharri.com/blog/webgl-gradients",
        "description": "We need more articles like this one. WebGL has been on my “want to learn” list for a while, but finding approachable, well-explained content is… tough. That’s why I was so impressed with this piece! It dives into creating smooth, interactive gradients using WebGL and GLSL, and it’s packed with beautifully crafted interactive widgets that make each step easy to follow. What makes this especially cool is that once you start to master WebGL, you unlock endless possibilities to bring virtually any kind of visual or graphic effect to your websites — no limits, just creativity and shaders. BTW, if you like this topic, another cool resource we featured before is [WebGL Fundamentals](https://webgl2fundamentals.org/).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Best Programmers I Know",
        "url": "https://endler.dev/2025/best-programmers",
        "description": "Have you ever wondered what it takes to get better at the art of software engineering? What if you want to become one of the very best? In this thoughtful post, the author reflects on the traits that truly set great developers apart — things like mastering your tools, simplifying problems, reading docs like a pro, and staying endlessly curious. It is not about genius-level breakthroughs, but consistency, clarity, and care. This really resonated with me because it is very much in line with the mission of this very newsletter, where we try to curate content that keeps you curious and informed.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How To Build An Agent",
        "url": "https://ampcode.com/how-to-build-an-agent",
        "description": "If you are not sick of AI and agents yet, and are actually intrigued by the idea of building one yourself, here is a solid pick. This post walks you through creating a code-editing terminal agent powered by Claude, in under 400 lines of Go. It reads, writes, and modifies files, and it is all orchestrated through a surprisingly simple feedback loop. Sure, this might feel like it lives outside the usual full-stack web dev space, but the truth is, AI is quickly becoming part of every field in software engineering. A few years from now, having a solid grasp of how these systems work might not just be a bonus… it might be expected.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What if we sent JSX over the wire?",
        "url": "https://overreacted.io/jsx-over-the-wire",
        "description": "In his latest post, Mr. React himself (Dan Abramov) explores what it might look like to send JSX over the network and treat it as a real data format (i.e. an alternative to JSON!), not just a compile-time convenience. It is thought-provoking, a bit wild, and full of those classic Dan moments that make you question how the web even works. I have to admit — I am not fully convinced this is a good idea… but then again, I felt the same way the first time I saw JSX. And well, I ended up using it every day. So who knows? Maybe this is one of those ideas that just needs to grow on you.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Advanced React in the Wild",
        "url": "https://largeapps.dev/case-studies/advanced",
        "description": "If you are thirsting for more React content… here is a biggie! This case study dives deep into advanced patterns for scaling React in large applications — think context boundaries, co-location, smart versus dumb components, and more. I have been working myself on a Next.js project over the last 6 months that is starting to grow bigger and will soon need to power five different websites… so I am pretty sure I will be using some of these learnings very soon!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Holographic masks experiment",
        "url": "https://codepen.io/HejChristian/full/YPzLbYX",
        "description": "We saved the best for last! This is another one’s for those of you who are constantly hunting for unique, creative touches that make a website feel truly special... especially in an age where everything is starting to look a bit too Vercel or shadcn-flavored! This CodePen experiment recreates a stunning scroll-based holographic effect using CSS masks and `background-attachment: fixed`. Scroll through it, be amazed, and don’t forget to click the button to peek under the hood and see how the effect is built. There’s even a link to the [original article](https://robbowen.digital/wrote-about/css-blend-mode-shaders/) that inspired it, in case you want to dive deeper!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Building Micro-Frontends: Scaling Teams and Projects, Empowering Developers",
      "author": "Luca Mezzalira",
      "description": "What's the answer to today's increasingly complex web applications? Micro-frontends. Inspired by the microservices model, this approach lets you break interfaces into separate features managed by different teams of developers. With this practical guide, Luca Mezzalira shows software architects, tech leads, and software developers how to build and deliver artifacts atomically rather than use a big bang deployment. You'll learn how micro-frontends enable your team to choose any library or framework. This gives your organization technical flexibility and allows you to hire and retain a broad spectrum of talent. Micro-frontends also support distributed or colocated teams more efficiently. Pick up this book and learn how to get started with this technological breakthrough right away.",
      "coverImageUrl": "./806c9e86ca8151e590b609e28c816dae7e97eef441efaf81e0a4d1415f0a0b19.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492082996?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492082996?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Hako (yet another JavaScript runtime...)",
        "url": "https://andrews.substack.com/p/hako"
      },
      {
        "title": "Deploying TypeScript: recent advances and possible future directions",
        "url": "https://2ality.com/2025/04/deploying-typescript-present-future.html"
      },
      {
        "title": "The State of Authorization in 2025",
        "url": "https://permit.io/blog/state-of-authorization-2025"
      },
      {
        "title": "Mastering default values in JavaScript with the nullish coalescing (??) operator",
        "url": "https://allthingssmitty.com/2025/04/10/mastering-default-values-in-javascript-with-the-nullish-coalescing-operator"
      },
      {
        "title": "Skip links: what, why, and how",
        "url": "https://tempertemper.net/blog/skip-links-what-why-and-how"
      },
      {
        "title": "We Put a Distributed Database In the Browser – And Made a Game of It!",
        "url": "https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser"
      },
      {
        "title": "CSS Custom Properties vs. Sass Variables: A Pragmatic Guide",
        "url": "https://piccalil.li/links/css-custom-properties-vs-sass-variables-a-pragmatic-guide"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 418,
    "title": "Not Gonna Lie… Anime.js Looks Seriously Cool",
    "slug": "2025-04-14-399-not-gonna-lie-anime-js-looks-seriously-cool",
    "date": "2025-04-14",
    "templateType": "mce-mailchimp",
    "intro": "Hey folks 👋\n\nNo big personal updates this week — just your regularly scheduled dose of full-stack inspiration, handpicked with care to keep you curious, motivated, and maybe even a little surprised. I truly enjoy digging up these gems each week, and I hope that comes through.\n\nYou know, full-stack development has always reminded me of jazz. It’s part improvisation, part mastery, and part just knowing which notes not to play. It’s what makes this work both challenging and incredibly fun — the mix of backend logic, frontend finesse, and all the glue in between.\n\nSo dive in, explore the links, and don’t miss the bonus picks at the bottom! And if you ever have suggestions, content you think deserves a mention, or just want to say hi — hit reply. I’d love to hear from you and make this newsletter even more useful for you.\n\nUntil next time — happy coding!\n\n—Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind“",
      "author": "Donald Knuth",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "Anime.js",
        "url": "https://animejs.com/",
        "description": "Smooth animations and seamless transitions are more than just aesthetic details—they make modern web experiences feel alive. Over the years, I’ve tried a bunch of animation libraries, but **Anime.js** keeps standing out as one of the most complete and versatile ones I’ve worked with. It gives you a solid timeline API to choreograph complex sequences, supports SVG animations, and has great tools like stagger effects, spring physics, draggable interactions, and scroll-based triggers. If you care about building polished, interactive frontends, this is one of those tools you’ll be glad to have in your stack. Their landing page itself is such a wonder, so just checking that out can provide tons of inspiration! [**Check out the library**](https://animejs.com/)",
        "imageUrl": "./02d7c6250c1ff27a2cae1be93f2a39b1907684952c6732c27200beee77670254.png",
        "featured": true
      },
      {
        "title": "Git turns 20 🎂",
        "url": "https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds",
        "description": "Git just turned 20, and GitHub marked the occasion with a rare interview with **Linus Torvalds** himself. If you’ve ever been curious about the origin story of Git—how it was hacked together in just 10 days to replace BitKeeper, why it feels more like a file system than a traditional VCS, or what Linus thinks about SHA-1—this is an absolute must-read. I found it fascinating how pragmatic and unceremonious his approach was: “I wrote it for my own issues,” he says. Yet somehow, that personal tool ended up redefining how the entire software world collaborates. It's a great reminder that sometimes the best tools are the ones built out of frustration and necessity—not grand vision.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "“Just use Vite”… with the Workers runtime",
        "url": "https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin",
        "description": "Every week, I’m more and more impressed by how deeply Vite is permeating the web development ecosystem. No surprises last week: Vite showed up with a big bang in the **Cloudflare Workers** world, too. Cloudflare just dropped an official Vite plugin that streamlines deploying Workers and Pages functions. It supports local dev with wrangler, smart routing for functions, environment variable injection, and more. If you’re already using Vite for your frontend and curious about bringing that same smooth DX to the edge, this might be your next favorite tool. Fun fact: the article makes a serious effort not to mention Next.js... I wonder why that is! 😛",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Tailwind's @apply feature is better than it sounds",
        "url": "https://css-tricks.com/tailwinds-apply-feature-is-better-than-it-sounds",
        "description": "I’ve said it before and I’ll say it again — I like Tailwind. But not always the vanilla flavor. That’s why this post really resonated with me. In it, the author makes a strong case for Tailwind’s much-maligned `@apply` directive — comparing it to Sass mixins, showing how it brings clarity and reusability to your layouts, and making a compelling argument that using Tailwind doesn’t have to mean abandoning CSS altogether. If you’ve ever felt torn between utility-first and traditional CSS, this one’s a great read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JekyllPad - Markdown Editor for GitHub Pages",
        "url": "https://jekyllpad.com/",
        "description": "I have tons of static websites — seriously, tons. Most are powered by Markdown content managed through GitHub, which works great for developers like me. But the moment a non-technical content editor enters the picture, things can get... messy. Markdown? Git commits? PRs? Most folks just want the simplicity of WordPress — and I get that — but if you’re anything like me, you'd still rather avoid WordPress like the plague. That’s why I was intrigued by Jekyllpad. It connects to your GitHub repo and gives editors a clean, modern CMS interface to create and update Markdown content — no setup, no local dev, no technical hurdles. Just sign in with GitHub, write in a WYSIWYG-like editor, and it pushes commits straight to your repo. The only downside? It's not open source (yet), so you can't self-host — but there's a free plan for non-commercial use, which makes it easy to try out. Then if you are looking for similar ideas, [Tina](https://tina.io/) is another one that I think is really promising (and it's more a of a fully featured CMS); and it's also open!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Cover Flow with Modern CSS: Scroll-Driven Animations in Action",
        "url": "https://addyosmani.com/blog/coverflow",
        "description": "Addy Osmani is, without question, one of my absolute favorite people in the web dev space. Everything he publishes feels like it pushes the boundaries of what the web can do — and often lands way beyond expectations. His latest article? Pure gold once again. This time, he dives into how you can recreate Apple’s iconic Cover Flow using nothing but HTML and modern CSS. Yep, no JavaScript needed. Thanks to scroll-driven animations, scroll snap, and a sprinkle of view timelines, you get silky smooth, performant, 3D-style transitions that feel native. It's one of those examples that reminds you how far CSS has come — and how fun frontend work can be.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building a toast library from scratch in just 30 minutes",
        "url": "https://gomakethings.com/building-a-toast-library-from-scratch-in-just-30-minutes",
        "description": "I always appreciate when a content creator or educator takes on the challenge of building something from scratch — live and unfiltered. There’s something kind of magical about seeing someone else’s thought process unfold in real time. You pick up on little things: the way they structure their code, how they debug, the tools they reach for without thinking. It’s a million little learning opportunities packed into 30 minutes. [Chris Ferdinandi](https://mastodon.social/@cferdinandi) does exactly that in his latest video, where he builds a complete toast notification library using just vanilla JavaScript. From HTML structure to styling, to a clean API and even custom events for extensibility [**Watch the Video**](https://gomakethings.com/building-a-toast-library-from-scratch-in-just-30-minutes)",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Learning Vue",
      "author": "Maya Shavin",
      "description": "Learn the core concepts of Vue.js, the modern JavaScript framework for building frontend applications and interfaces from scratch. With concise, practical, and clear examples, this book takes web developers step-by-step through the tools and libraries in the Vue.js ecosystem and shows them how to create complete applications for real-world web projects. You'll learn how to handle data communication between components with Pinia architecture, develop a manageable routing system for a frontend project to control the application flow, and produce basic animation effects to create a better user experience.",
      "coverImageUrl": "./79a6f84dad1644dcaaf3d604b333c1fa334a0232fb27a01952e2d78da6b5cf4c.jpg",
      "amazonUs": "https://www.amazon.com/dp/B0CPB9KRCG?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B0CPB9KRCG?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Bare: a bare-bone JavaScript runtime",
        "url": "https://bare.pears.com/"
      },
      {
        "title": "Zod v4 (beta)",
        "url": "https://v4.zod.dev/v4"
      },
      {
        "title": "Do more with SVG (SVG Art)",
        "url": "https://fuma-nama.vercel.app/blog/svg-art"
      },
      {
        "title": "Fumadocs (documentation website with OpenAPI support)",
        "url": "https://fumadocs.vercel.app/"
      },
      {
        "title": "First Look at The Modern CSS attr()",
        "url": "https://ishadeed.com/article/modern-attr/"
      },
      {
        "title": "I guess some request headers are more trustworthy than others",
        "url": "https://macarthur.me/posts/forbidden-request-headers/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 417,
    "title": "Is it time to write E2E tests using AI?",
    "slug": "2025-04-07-398-is-it-time-to-write-e2e-tests-using-ai",
    "date": "2025-04-07",
    "templateType": "mce-mailchimp",
    "intro": "Hey folks! 👋\n\nThis week’s selection is packed with exciting content—and yes, there’s a bit of a recurring theme: **AI** and how it’s shaping the way we work as full-stack web developers. Not too surprising, right? It’s definitely something we’ll all need to live with (and ideally, leverage). Personally, I find this kind of content fascinating, and I hope you do too. And don’t worry—AI won’t be taking our jobs anytime soon. Probably...\n\nOn a personal note, last week I had the pleasure of attending **AWS Community Day Italy** in Milan, where I gave a talk on some advanced Serverless techniques for building secure and cost-efficient multi-tenant architectures. If that sounds up your alley, feel free to [check out the slides](https://fth.link/saas-it).\n\nAlso, I’m excited to share that the **podcast** I recorded with **Solomon Eseme** on using Rust for Serverless is finally out! If you’re curious about that intersection, you can [watch it here](https://www.youtube.com/watch?v=Zqi-zRoTErI).\n\nNow, let’s dive into some full-stack goodness!\n\nHave a great week!\n\nYour editor,\nLuciano",
    "quote": {
      "text": "To iterate is human, to recurse divine“",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "Is it time to let AI write our E2E tests?",
        "url": "https://github.com/microsoft/playwright-mcp",
        "description": "Imagine an AI that doesn’t just understand your UI, but can interact with it—click buttons, fill forms, and verify outcomes—all by reading structured accessibility data instead of staring at pixels. That’s what Microsoft’s new **Playwright MCP** is aiming for. By exposing a Model Context Protocol (MCP) server, it gives large language models the power to drive Playwright in a more semantic, accessible, and reliable way. And it’s not just for testing. This opens the door to a whole new class of automated workflows—think smart form fillers, assistants that navigate the web for you, or bots that perform repetitive UI tasks with context awareness. Of course, this isn’t going to remove the human from the loop (at least not anytime soon), but it might just take the edge off some of the boring bits of test automation. I’m definitely looking forward to giving this a spin the next time I have to write an E2E test that needs browser automation.",
        "imageUrl": "./2d974bb5fc486114bc3487c008350bbf93bfb7ff2d01af10cfe21ae0fc60480a.png",
        "featured": true
      },
      {
        "title": "React Email 4.0",
        "url": "https://resend.com/blog/react-email-4",
        "description": "I’ve been using React Email in my latest work project, and honestly—it’s become my favorite way of crafting emails for web products. It gives you the flexibility of React, the power of components, and takes away a lot of the pain that usually comes with building HTML emails. It even automatically generates the plain text version for you, so you don’t have to worry about duplicating content or doing extra work for proper email client support. The new v4 release brings a bunch of solid improvements, especially around making sure your emails render reliably across the wild jungle of email clients and platforms. There’s a clear focus on polish and stability here, which makes it even easier to ship professional-looking emails without battling inconsistent styles and broken layouts. If you’re already building React apps, bringing that same mindset to email just feels... right.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "There is no \"Vibe Engineering\"",
        "url": "https://serce.me/posts/2025-31-03-there-is-no-vibe-engineering",
        "description": "Coding and engineering are often used interchangeably—but they’re not the same thing. Not even close. This article is a timely reminder that while writing code is a key part of building software, engineering is something else entirely. It’s about understanding constraints, making trade-offs, designing systems that are maintainable, reliable, and scalable—and communicating all of that clearly within a team. That’s why AI, no matter how good it gets at generating code, isn’t doing real engineering work. Not yet, anyway. It doesn’t understand context, business needs, user goals, or the long-term impact of architectural decisions. Which is why blindly handing over the reins to AI isn’t a clever shortcut—it’s a recipe for disaster. Instead, this is our chance to double down on what we, as humans, bring to the table: judgment, empathy, experience. And yes, we can use AI as an assistant—just not as a replacement.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The case against conversational interfaces",
        "url": "https://julian.digital/2025/03/27/the-case-against-conversational-interfaces",
        "description": "As conversational interfaces become more common—even for coding—not every problem needs to be solved with a blinking cursor and a vaguely helpful AI. In this sharp take, the author argues that chat-based UIs are often a poor substitute for clear, reliable, well-designed UX. They can feel vague, unpredictable, and—ironically—less human when what users really want is clarity and control. This isn’t an anti-AI rant, but a call for thoughtful design. Before adding a chatbot, ask yourself: is it actually improving the experience—or just adding friction disguised as friendliness?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Fancy React Components",
        "url": "https://fancycomponents.dev/",
        "description": "If you’re tired of building UI components from scratch but still want your app to look polished and original, Fancy Components might become your new favorite playground. It’s a collection of beautifully crafted, copy-paste-ready pieces built with Tailwind CSS and Radix UI primitives—so they’re not just stylish, they’re also accessible and composable. Two of my favorite touches? The satisfying underline animations on hover and those snappy typing effects you often see in hero sections. Small details, big vibes.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why (even) Documenso moved off Next.js",
        "url": "https://documenso.com/blog/why-we-moved-off-next-js",
        "description": "Following on from last week’s featured article about switching from Next.js to React Router, here’s another thoughtful take—this time from the team at Documenso. They explain why they decided to leave Next.js behind, citing everything from dev experience quirks to framework complexity and performance trade-offs. Now, don’t get me wrong—I’m not anti-Next.js. I use it almost every day at work. But I do agree with many of these takes, and I’d really love to see Vercel take an honest look at these concerns. There’s a real opportunity here to make Next.js better for everyone—and at the same time, there are a few other frameworks that are perfectly capable of competing with it and definitely deserve a bit more spotlight (React Router, Astro, and TanStack being among my favourites).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Overengineered anchor links",
        "url": "https://thirty-five.com/overengineered-anchoring",
        "description": "Anchor links seem simple—click, scroll, done. But if you’ve ever implemented them, you might’ve hit the active anchor problem: headings near the bottom that can’t scroll into view properly. In this fun and slightly overengineered post, the author explores a range of solutions—from quick fixes to architecture-level madness. What really stands out, though, is the format: the blog pairs text on the right with synchronized animations on the left, making the whole experience incredibly interactive. Even if you’re not obsessed with anchor behavior, it’s worth a look just to get inspired by how effectively it teaches through motion.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Fullstack Vue: The Complete Guide to Vue.js",
      "author": "Hassan Djirdeh, Nate Murray, and Ari Lerner",
      "description": "Ready to Master Vue.js? What if you could master the entire framework - with solid foundations - in less time without beating your head against a wall? Imagine how quickly you could work if you knew the best practices and the best tools? Stop wasting your time searching and have everything you need to be productive in one, well-organized place, with complete examples to get your project up without needing to resort to endless hours of research.",
      "coverImageUrl": "./0e54f571e116ea50414cbe86c8dcda9117c58b39514b241661d11bc6f84da15b.jpg",
      "amazonUs": "https://www.amazon.com/dp/1987595297?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1987595297?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Web SVG",
        "url": "https://websvg.com/"
      },
      {
        "title": "Senior Developer Skills in the AI Age: Leveraging Experience for Better Results",
        "url": "https://manuel.kiessling.net/2025/03/31/how-seasoned-developers-can-achieve-great-results-with-ai-coding-agents"
      },
      {
        "title": "What is Local-first Web Development?",
        "url": "https://alexop.dev/posts/what-is-local-first-web-development"
      },
      {
        "title": "Building Resilient Payment Systems",
        "url": "https://medium.com/ssense-tech/building-resilient-payment-systems-at-ssense-our-journey-towards-asynchronous-processing-56d46dc2b348"
      },
      {
        "title": "Five Things AI Will Not Change",
        "url": "https://metastable.org/five"
      },
      {
        "title": "How to set up TypeScript with Node.js and Express",
        "url": "https://blog.logrocket.com/express-typescript-node"
      },
      {
        "title": "The (FREE) Node.js Book for Enterprise",
        "url": "https://www.platformatichq.com/reports/the-node-book"
      },
      {
        "title": "Moving data between S3-compatible storage (podcast)",
        "url": "https://awsbites.com/142-escape-from-s3/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 416,
    "title": "Why One Developer Chose Remix Over Next.js",
    "slug": "2025-03-31-397-why-one-developer-chose-remix-over-next-js",
    "date": "2025-03-31",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nThis week, I want to shine a spotlight on a newsletter that’s earned a permanent spot in my inbox: [Web Weekly](https://webweekly.email/) by **Stefan Judis**. Stefan is one of those web devs who just oozes passion (seriously, peek at [his blog](https://www.stefanjudis.com/) and you’ll see what I mean), and his newsletter is a goldmine of hand-picked links, tips, and curiosities. Confession time: I’ve definitely “borrowed” a few links from Web Weekly for this very newsletter — it’s that good. If you think there’s no such thing as too many awesome web dev newsletters (same), then go check it out. You won’t regret it.\n\nIn the meantime, I hope this week’s collection of hand-curated content helps you stay motivated, sharp, and maybe even a little inspired.\n\nHave fun — and happy full-stack coding!\n\n—Your editor, Luciano",
    "quote": {
      "text": "Standards are always out of date. That's what makes them standards“",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Why One Developer Chose Remix Over Next.js",
        "url": "https://epicweb.dev/why-i-wont-use-nextjs",
        "description": "Lately, I’ve been hearing more and more devs share their frustrations with Next.js. And to be honest, I’ve had my own share of grudges too — which is why I’m always curious when someone lays out a thoughtful critique and suggests an alternative. This article by Kent C. Dodds isn’t exactly new (fun fact: the framework he recommends has since changed its name 😅), but revisiting it was a surprisingly relevant experience. Kent lays out 9 reasons why he moved away from Next.js — touching on everything from web fundamentals and DX tradeoffs to the platform lock-in that quietly shapes our stack decisions. He also brings in voices from across the community, making it feel more like a conversation than a hot take. And while he’s clearly opinionated, Kent closes with a refreshingly grounded reminder: **“Whatever you use is probably fine!”**",
        "imageUrl": "./cdb43a1ef0a7ea9d7d2d9dc8a2976d9f37305a99872ff4423ac1efa058e185e7.png",
        "featured": true
      },
      {
        "title": "MCP: What It Is and Why It Matters",
        "url": "https://addyo.substack.com/p/mcp-what-it-is-and-why-it-matters",
        "description": "In his recent article, \"MCP: What It Is and Why It Matters,\" Addy Osmani introduces the Model Context Protocol (MCP), a standard designed to facilitate seamless communication between AI assistants and various software tools. By providing a unified language, MCP enables AI systems to interact with multiple applications without the need for tool-specific integrations, thereby enhancing extensibility and interoperability. Osmani illustrates how MCP functions similarly to a GraphQL supergraph, connecting multiple endpoints under a unified API. This approach has the potential to significantly advance AI engineering practices by simplifying the integration process and fostering a more cohesive ecosystem.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The <select> element can now be customized with CSS",
        "url": "https://developer.chrome.com/blog/a-customizable-select",
        "description": "For years, customizing the native `<select>` element has been a thorn in the side of web developers. The lack of styling options forced many of us to reinvent the wheel, crafting custom dropdown components from scratch—often at the expense of accessibility and performance. But now, with the introduction of `appearance: base-select` in Chrome 135, there's a light at the end of the tunnel. This new CSS property unlocks a world of customization possibilities, allowing for rich content, consistent styling, and a more streamlined development process. It's exciting to think that in the near future, we might finally bid farewell to those cumbersome custom components and embrace a more standardized approach. For a deep dive into these new capabilities and how to implement them, check out this insightful article.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A new way to draw separators in CSS",
        "url": "https://blogs.windows.com/msedgedev/2025/03/19/minding-the-gaps-a-new-way-to-draw-separators-in-css",
        "description": "Here’s another CSS-related gem! Drawing separator lines between different sections of a webpage is such a common design need — yet doing it cleanly in modern layouts like Flexbox or Grid has always felt a bit hacky. This post from the Edge team dives into a new proposal that could change that: gap-based separators. Think of it like column-rule, but for rows and across more layout types. It’s still early days, but the direction looks super promising. If you’ve ever had to wrangle `::before` elements just to get a nice dividing line, this one’s worth a read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "NaN Glyph Filters fonts",
        "url": "https://generativefonts.xyz/",
        "description": "I’m a huge font nerd and this collection instantly grabbed me. **NaN Glyph Filters** is a wild and wonderful set of procedurally generated display fonts, along with the actual codebase used to design them. Each typeface feels alive, experimental, and full of personality. I genuinely love how unique they are — and I’m already dreaming up ways to use them in a future design… maybe even in this very newsletter! If you’re into creative coding, generative design, or just love a good typeface, go explore this one. Oh yeah... did I tell you that these fonts are fully open-source?!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js will stop distributing Corepack",
        "url": "https://socket.dev/blog/node-js-tsc-votes-to-stop-distributing-corepack",
        "description": "This one made me a bit sad. The Node.js TSC has voted to stop distributing Corepack by default — and as someone who’s been using it for the past year, I have to say: I really liked it! Corepack acts as a bridge between Node and package managers like Yarn and pnpm, letting you pin and automatically install the right version without asking users to do it manually. Super handy. That said, the decision makes sense. The post breaks down the reasoning clearly — from maintenance concerns to the broader conversation around what belongs in Node core. If you’ve relied on Corepack or are just curious what this means going forward, it’s a good one to catch up on.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Unspoken Git secrets",
        "url": "https://read.highgrowthengineer.com/p/unspoken-git-secrets",
        "description": "Raise your hand if you consider yourself a Git master! …I definitely wouldn’t raise mine — especially after reading this post. This isn’t your usual “git basics” refresher. It’s packed with lesser-known commands, deep explanations of how Git actually works under the hood, and tips that’ll make you feel both smarter and slightly embarrassed you didn’t know them already. If Git still feels like a bit of a black box (or you just want to level up your mental model), this one’s a goldmine.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Fundamentals of Software Architecture: An Engineering Approach",
      "author": "Mark Richards, and Neal Ford",
      "description": "Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture's many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics. Mark Richards and Neal Ford—hands-on practitioners who have taught software architecture classes professionally for years—focus on architecture principles that apply across all technology stacks. You'll explore software architecture in a modern light, taking into account all the innovations of the past decade.",
      "coverImageUrl": "./ef2c5ae990ce035a13c2749dd507692c42cf9b0267033911320d028377b6e293.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492043451?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492043451?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "The JavaScript Oxidation Compiler",
        "url": "https://github.com/oxc-project"
      },
      {
        "title": "String Tune",
        "url": "https://tune-demo.fiddle.digital/"
      },
      {
        "title": "You should know this before choosing Next.js",
        "url": "https://eduardoboucas.com/posts/2025-03-25-you-should-know-this-before-choosing-nextjs"
      },
      {
        "title": "Authorization in Next.js",
        "url": "https://robinwieruch.de/next-authorization"
      },
      {
        "title": "Design Systems and Legos",
        "url": "https://gomakethings.com/design-systems-and-legos"
      },
      {
        "title": "Dark mode for SVG",
        "url": "https://fullystacked.net/dark-mode-svg"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 415,
    "title": "IO devices and latency",
    "slug": "2025-03-24-396-io-devices-and-latency",
    "date": "2025-03-24",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nThis week’s edition is a true full-stack buffet: we’ve got IO performance deep-dives, JavaScript/SQL puzzles to sharpen your skills, a spicy critique of Go’s `return (T, error)` pattern, and even a dead-simple GitHub Actions workflow for deploying static sites. Whether you’re debugging a legacy monolith or tinkering with greenfield code, there’s something here to fuel your next “aha!” moment.\n\nPS: I’ll be at [AWS Community Day Italy](https://www.awscommunityday.it/) in Milan on April 2nd! If you’re there, come say *Ciao*, I’d love to connect!\n\nStay curious & keep learning ✌️\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "A year spent in artificial intelligence is enough to make one believe in God.“",
      "author": "Alan Perlis",
      "authorTitle": null,
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Perlis"
    },
    "links": [
      {
        "title": "IO devices and latency",
        "url": "https://planetscale.com/blog/io-devices-and-latency",
        "description": "Damn! I love those articles with tons of interactive widgets that allow you to play around with the concepts that are being presented to you. This is one of those and it's an excellent one to understand different types of IO devices and their tradeoffs truly.  OK, this is maybe not out usual bread and butter as full-stack web devs, but I'd argue that understanding how storage works will make us more well-rounded software engineers, so I'd recommend having a peek at this one!",
        "imageUrl": "./8c7196f68c5b62901c28c4c0ab72d3403bea453e5cce7a9ee2bc449745151d7f.png",
        "featured": true
      },
      {
        "title": "Design by Decision Fatigue",
        "url": "https://questdb.com/blog/design-by-decision-fatigue",
        "description": "Last week, I bumped into this article and really enjoyed it! The author unpacks how early technical choices (frameworks, code structure, etc.) in greenfield projects seed future tech debt. They share battle-tested strategies (prototyping, documenting decisions, leveraging opinionated tools, etc.) to combat decision fatigue. Full-stack devs juggle layered decisions daily; this is a playbook that can help you balance speed of delivery and long-term maintainability.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Rsdoctor hits v1.0",
        "url": "https://rsdoctor.dev/",
        "description": "Last week, the team behind **Rsdoctor** announce the release of their first stable version. If you never heard of Rsdoctor, it is a build analyzer for the Rspack/webpack ecosystems, that offers visualized build insights, bottleneck detection, and custom optimization rules to understand what happens behind the scenes of complex builds. You can think of it like a \"CT scan\" for your build process. It pinpoints slow plugins, debug Rspack’s built-in loaders, and auto-scan for warnings. As a bonus, being written in Rust (in case you didn't guess that from the name!), it's supposedly super fast!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Perplexing Javascript Parsing Puzzle",
        "url": "https://hillelwayne.com/post/javascript-puzzle",
        "description": "OK, I admit that even with more than 15 years of JavaScript experience I failed at this one... So, are you ready for a little intriguing challenge? You'll need to look at some seemingly simple piece of JavaScript code and guess what is the value that the script is going to be evaluated to...  I'll give you just one spoiler: you'll be learning something new and unexpected about some legacy characteristics of the language. Also, I have a strong recommendation: please don't use this challenge in a technical interview!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building and deploying a custom site using GitHub Actions and GitHub Pages",
        "url": "https://til.simonwillison.net/github-actions/github-pages",
        "description": "GitHub actions and GitHub pages are my favourite way to deploy static websites (and I have loads of them!) so I couldn't pass on this article :). This article showcases a minimal pattern for building a completely custom website using GitHub Actions and deploying the result to GitHub Pages. If you use something not custom (e.g. Next.js, VuePress, Docusaurus, or Astro) you can easily swap that `echo '<h1>Hello, world!</h1>' > _site/index.html` with your framework specific build step and off you go!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "SQL Squid Game",
        "url": "https://datalemur.com/sql-game",
        "description": "Here we go with another challenge. This is actually more than a single challenge. It's an entire game where you can test and improve your SQL skills while competing for rounds of Squid game (Yeah the same one of the TV Show). So, is your SQL good enough for you to survive through these challenges? A funny little way to get better a SQL. Check it out! [**Play the game**](https://datalemur.com/sql-game)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Were multiple return values Go's biggest mistake?",
        "url": "https://herecomesthemoon.net/2025/03/multiple-return-values-in-go",
        "description": "Whenever I use JavaScript, Python, C#, Java, or other exception-based languages I always find myself trying to avoid exceptions. There are many reasons for that and I should eventually write a blog post about it, but in short, it comes down to the \"action at distance\" problem. Your `catch` blocks often end up very far away from the exceptions you are handling, which is something that makes the code hard to read and maintain in the long term. That's why I have always appreciated different approaches based on plain value types like the ones adopted by Go and Rust. This article is actually a bit critical on some details of the Go implementation, but if you are a languages nerd like me, I am sure you'll enjoy this perspective.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices",
      "author": "Harry Percival, and Bob Gregory",
      "description": "As Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are taking an interest in high-level software design patterns such as hexagonal/clean architecture, event-driven architecture, and the strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward. With this hands-on guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity―and get the most value out of their test suites. Each pattern is illustrated with concrete examples in beautiful, idiomatic Python, avoiding some of the verbosity of Java and C# syntax",
      "coverImageUrl": "./4ee9931f96171d4406198c8adde436c24b12f19c28feacfdea0d70b01c0df640.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492052205?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492052205?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Handling billions of invocations – best practices from AWS Lambda",
        "url": "https://aws.amazon.com/blogs/compute/handling-billions-of-invocations-best-practices-from-aws-lambda"
      },
      {
        "title": "Beyond React.memo: Smarter Ways to Optimize Performance",
        "url": "https://cekrem.github.io/posts/beyond-react-memo-smarter-performance-optimization"
      },
      {
        "title": "The JavaScript Oxidation Compiler",
        "url": "https://github.com/oxc-project"
      },
      {
        "title": "Next.js vs TanStack",
        "url": "https://kylegill.com/essays/next-vs-tanstack"
      },
      {
        "title": "Common React libraries architecture",
        "url": "https://felgus.dev/blog/common-react-lib-architecture"
      },
      {
        "title": "Writing static websites with Vite and React",
        "url": "https://blog.carlosn.com.br/post/writing-static-websites-with-vite-and-react"
      },
      {
        "title": "What Makes Code Hard To Read: Visual Patterns of Complexity",
        "url": "https://seeinglogic.com/posts/visual-readability-patterns"
      },
      {
        "title": "AWS Step Functions with JSONata and Variables (AWS Bites Podcast)",
        "url": "https://awsbites.com/141-step-functions-with-jsonata-and-variables/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 414,
    "title": "#414: Lynx, the new Flutter and React Native killer?",
    "slug": "2025-03-17-395-414-lynx-the-new-flutter-and-react-native-killer",
    "date": "2025-03-17",
    "templateType": "mce-mailchimp",
    "intro": "Hello,  and Happy St. Patrick's day! ☘️\nApologies for the radio silence the last couple of weeks! I took a much-needed holiday, hit the road, and even dared to leave the laptop at home. Pure bliss! If you're curious, check out [this picture](https://postimg.cc/NKSyzTkK) and reply to this email if you can guess where I was. 😉\n\nWhile I was off recharging my batteries, the full-stack web dev world, as always, didn't stop spinning. I'm especially excited about **Lynx** as a potential replacement for React Native and Flutter, and **TypeScript (compiler and tools) being ported to Go** for a 10x performance improvement, but I stumbled across some other killer content, too.\n\nCheck out this week's selection below! And promise me you won't miss the special MUST READ link at the very end... trust me, you'll thank me later.\n\n— *Your editor, Luciano*",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple“",
      "author": "Grady Booch",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Lynx, the new Flutter and React Native killer?",
        "url": "https://lynxjs.org/",
        "description": "A couple of weeks ago, ByteDance (TikTok) launched **Lynx**, a JavaScript framework for building cross-platform apps (mobile and web), pitching itself as an alternative to React Native/Flutter. It uses a fork of QuickJS on Android and JavaScriptCore on iOS, plus an interesting multi-threaded architecture for better performance and to enable smooth animations. The potential is there, and new options are always welcome to challenge the status quo. That being said, it's early days. Building a serious project now might be... adventurous, to say the least! Worth a look at the [launch post](https://lynxjs.org/blog/lynx-unlock-native-for-more.html) and the project web page, though!",
        "imageUrl": "./1e9e64111150ed1980be0fcc6288f387055836c0822dbfbb5760ae8db9af0ae6.png",
        "featured": true
      },
      {
        "title": "How to make web videos smaller with AV1",
        "url": "https://evilmartians.com/chronicles/better-web-video-with-av1-codec",
        "description": "YouTube and Netflix are doing it, and now you can too! This post shares a practical guide to using **AV1**, the next-gen video codec, to dramatically reduce file sizes (up to 50%!) while maintaining quality. The catch? Not all browsers support it natively yet (iPhone 15+ and M3 macs do). But the article walks you through creating fallback **H.264** versions using **FFmpeg**, ensuring everyone gets a smooth experience. Plus, they even show you how to ditch those bloated GIFs for smaller, more efficient AV1 video loops. If you work with media-heavy websites, this might be a great read!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Using & Styling the Details Element",
        "url": "https://css-tricks.com/using-styling-the-details-element",
        "description": "The `<details>` element is one of my favorites new-ish HTML elements, especially for creating those neat foldable sections like FAQ lists! This article is a goldmine, covering everything from basic markup and styling that little triangle to animating open/close states with cool new CSS (check out `interpolate-size`!). Plus, it dives into browser inconsistencies and unusual-but-awesome use cases like implementing floating footnotes.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dithering in Colour",
        "url": "https://obrhubr.org/dithering-in-colour",
        "description": "Heard of dithering? It's how you fake more colors than you have. And it's not just for nostalgic throwbacks! This article dives into dithering colored images into custom palettes, perfect for that Game Boy vibe. Learn the tricks: linearizing for accurate colors, avoiding common pitfalls, and why PNGs are a must. Ready to give your next web project a unique, retro-punk touch?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dive Into WebGPU",
        "url": "https://okaydev.co/articles/dive-into-webgpu-part-1",
        "description": "Okay, **WebGPU** might be outside your everyday webdev, BUT if you love computer graphics or dream of building the next award-winning stunning website (or just want to make your site truly unique), this 4-part series is gold! It's a hands-on introduction to WebGPU using the lightweight GPU-Curtains library. Learn everything from basic shaders and DOM-synced planes to a GLTF loader and particle systems animated with compute shaders! Time to explore the cutting edge of web graphics and impress everyone.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Powering Search With Astro Actions and Fuse.js",
        "url": "https://css-tricks.com/powering-search-with-astro-actions-and-fuse-js",
        "description": "I'm all about static sites (simple, cheap hosting!), but sometimes dynamic features are unavoidable. For search, I usually reach for [Orama](https://github.com/oramasearch/orama) (might've mentioned it before 😉), but this article pleasantly surprised me by showcasing [Fuse.js](https://www.fusejs.io/)! It's a lightweight, open-source alternative, demonstrated using Astro Actions. If you're already using Astro server actions, this might be a clever technique to get real-time search on your static core.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node just added TypeScript support. What does that mean for Deno?",
        "url": "https://deno.com/blog/typescript-in-node-vs-deno",
        "description": "Node.js finally added native TypeScript! But how does it really stack up to Deno? This article (from Deno's perspective!) compares their TypeScript implementation to Node's new support. They make a case for Deno being more complete... for now. While I'm a Node.js diehard, I think Deno (and Bun) have been amazing for the ecosystem, even if the VC backing feels a bit unfair to Node's nonprofit, open-source heart. Node's TypeScript support is still young... will it eventually surpass Deno? My prediction: maybe!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Networking: How the Internet Works",
      "author": "Dr. Charles R Severance",
      "description": "This book demystifies the amazing architecture and protocols of computers as they communicate over the Internet. While very complex, the Internet operates on a few relatively simple concepts that anyone can understand. Networks and networked applications are embedded in our lives. Understanding how these technologies work is invaluable. This book was written for everyone - no technical knowledge is required! While this book is not specifically about the Network+ or CCNA certifications, it as a way to give students interested in these certifications a starting point.",
      "coverImageUrl": "./2390672034ad58acb1c8a0a782e44271f4fcd590e619908838a15fa94eeb169e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1511654945?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1511654945?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "🤯 MUST READ: A Million Little Secrets (Deconstructing the “Whimsical Animations” landing page)",
        "url": "https://www.joshwcomeau.com/blog/whimsical-animations/"
      },
      {
        "title": "A 10x Faster TypeScript",
        "url": "https://devblogs.microsoft.com/typescript/typescript-native-port/"
      },
      {
        "title": "How to make your open source popular",
        "url": "https://evilmartians.com/chronicles/how-to-make-your-open-source-popular"
      },
      {
        "title": "Async, Sync, in Between",
        "url": "https://antfu.me/posts/async-sync-in-between"
      },
      {
        "title": "The URL is a great place to store state in React",
        "url": "https://iamsahaj.xyz/blog/react-state-in-the-url"
      },
      {
        "title": "CSS Relative Colors",
        "url": "https://ishadeed.com/article/css-relative-colors"
      },
      {
        "title": "Prompt Engineering for Web Development",
        "url": "https://sitepoint.com/prompt-engineering-for-web-development"
      },
      {
        "title": "Async Rust for Dummies",
        "url": "https://blog.veeso.dev/blog/en/async-rust-for-dummies"
      },
      {
        "title": "Authority and Accountability",
        "url": "https://cadienvan.github.io/blog/en/authority-and-accountability"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 413,
    "title": "OKLCH in CSS: why we moved from RGB and HSL",
    "slug": "2025-02-24-394-oklch-in-css-why-we-moved-from-rgb-and-hsl",
    "date": "2025-02-24",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nNot much to report on the personal front, except for one exciting bit: I was in London last week for Rust Global! James Eastham and I delivered a talk about adopting Rust and serverless – arguing why that combo can be a game-changer for companies looking to start using Rust. If you're curious about the slides, you can check out [my speaking page](https://loige.co/speaking) (and I'll add a link to the video as soon as it's available!).\n\nNow, enough about me! Let's dive into the cool full-stack (and more!) content that I've hand-picked for this week. I hope it keeps you informed, and – perhaps most importantly – inspired to keep walking this endless path of full-stack mastery!\n\nYour passionate editor,\n— Luciano",
    "quote": {
      "text": "That's been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple“",
      "author": "Steve Jobs",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "OKLCH in CSS: why we moved from RGB and HSL",
        "url": "https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl",
        "description": "Ready to ditch RGB and HSL? This article makes a strong case for adopting **OKLCH** as the go-to color notation in CSS. It explains why OKLCH is superior for readability, color modifications, accessibility, and wide-gamut (P3) colors and comes with its own [interactive tool](https://oklch.com/) to visualize the OKLCH color space! I also want to throw in the mix an extra resource: a crazy cool OKLCH [color palette](https://uchu.style/simple.html) that I discovered last week and that I am currently loving!",
        "imageUrl": "./ea710a5d1105c1deed15931230a439b11bb107447e6e91db2196c519e15f7de2.png",
        "featured": true
      },
      {
        "title": "create-tsrouter-app",
        "url": "https://github.com/TanStack/create-tsrouter-app",
        "description": "Given the recent 'official' deprecation of the Create React App CLI tool, you might be looking for a replacement... **create-tsrouter-app** is a CLI tool that builds [TanStack Router](https://tanstack.com/router)-based SPA applications. It's designed as a drop-in replacement for CRA, making it easy to get started with a more flexible and powerful routing solution. With interactive setup, **TypeScript** support, and **Tailwind** CSS integration, it streamlines the creation of new React projects.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "My LLM codegen workflow atm",
        "url": "https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm",
        "description": "I admit, I'm starting to give AI a bit more credit than I used to when it comes to speeding up mundane programming tasks (and, to be fair, even the non-programming ones 😉). So, I'm becoming more receptive to content showcasing how other developers are leveraging AI... like this blog post, which offers a deep dive into Harper Reed's personal LLM-assisted workflow. It's a detailed account of his approach to both greenfield projects and legacy code, using tools like Claude, Aider, and Repomix. It's not just about the tools, but more about a new way of working as a software engineer. Will you try to use AI as much as possible to build your next website? I am personally starting to think I should give it a serious try!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React Team Updates CRA Migration Guidance After Community Pushback",
        "url": "https://socket.dev/blog/react-team-updates-cra-migration-guidance-after-community-pushback",
        "description": "To continue our conversation on the deprecation of Create React App (CRA), the React team's decision to sunset CRA wasn't controversial, but their initial recommendation of frameworks over standalone build tools certainly was. To me, this felt a bit like someone saying they stopped producing the model of bicycle you really like but rather than offering you the option of a new model, they told you *\"F*** off and go buy a race car\"* 😅. This article explores the community's strong pushback, including Vue.js creator Evan You's critique and the React team's surprisingly quick response. It's honestly a fascinating example of community dialogue shaping the direction of a major ecosystem and ultimately I am really happy with how things turned out. What's your take?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How To Use Chrome's Developer Tools",
        "url": "https://debugbear.com/blog/use-chrome-devtools",
        "description": "I use the Chrome DevTools quite a bit during my daily job and my various side projects, but it's such a huge ecosystem of tools and features that I'm always wary of something important that I don't know about... If you're like me, you might enjoy this article, which provides a very comprehensive overview of Chrome DevTools. It covers everything from basic inspection and debugging to advanced features like performance profiling, memory analysis, and security auditing. It explains how to troubleshoot websites, test features, and find new opportunities to improve performance and accessibility.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Ruby on Rails on WebAssembly",
        "url": "https://evilmartians.com/chronicles/ruby-on-rails-on-webassembly-a-guide-to-full-stack-in-browser-action",
        "description": "Another crazy-good piece of content from Evil Martians! Now, I don't often feature Ruby content here (sorry, Rubyists! 😅) but this article is too cool to pass up. It explores the seemingly impossible: running a full-stack Ruby on Rails application entirely inside the browser using WebAssembly! It's an insane demonstration of how WebAssembly is opening up the frontend to much more than just JavaScript, breaking down all you need to know about such advanced topic. From running a monolithic server-side application within the browser sandbox to the opportunities that WebAssembly brings. Even if you don't write a line of Ruby, this will blow your mind and give you a glimpse into the future of web development.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Handwriting An SVG Heart, With Our Hearts",
        "url": "https://css-tricks.com/handwriting-an-svg-heart-with-our-hearts",
        "description": "This tutorial takes you on a charming journey of building an SVG heart from scratch. And seriously, if you have ever tried to figure out how SVG works, this article should be your gateway pill. The author teaches how you can come up with all sorts of cool shapes and designs with just XML (no fancy vector tools needed!). You'll learn about the <path> element, coordinates, strokes, and more. A fun, hands-on way to learn about SVG, so you can code the love into your websites... or maybe this will be the starting point for you to create crazy cool animated or interactive SVGs by just sprinkling a bit of clever JavaScript on top!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Think Python: How to Think Like a Computer Scientist",
      "author": "Allen B. Downey",
      "description": "Python is an excellent way to get started in programming, and this clear, concise guide walks you through Python a step at a time—beginning with basic programming concepts before moving on to functions, data structures, and object-oriented design. This revised third edition reflects the growing role of large language models (LLMs) in programming and includes exercises on effective LLM prompts, testing code, and debugging skills.",
      "coverImageUrl": "./6942def41ec746c86529461f26dca74c3f9535ea9c0cf22e90d9b3b7c62df793.jpg",
      "amazonUs": "https://www.amazon.com/dp/1098155432?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1098155432?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Rethinking Find-in-Page Accessibility: Making Hidden Text Work for Everyone",
        "url": "https://schepp.dev/posts/rethinking-find-in-page-accessibility-making-hidden-text-work-for-everyone"
      },
      {
        "title": "False Promises of WebP Support",
        "url": "https://cloudfour.com/thinks/false-promises-of-webp-support"
      },
      {
        "title": "Lazy loading hidden images",
        "url": "https://cloudfour.com/thinks/lazy-loading-hidden-images"
      },
      {
        "title": "TypeScript in a Node.js Project",
        "url": "https://robinwieruch.de/typescript-node-js"
      },
      {
        "title": "Gradient borders in CSS",
        "url": "https://fullystacked.net/gradient-borders"
      },
      {
        "title": "Aspect Ratio Changes With CSS View Transitions",
        "url": "https://blog.jim-nielsen.com/2025/aspect-ratio-in-css-view-transitions"
      },
      {
        "title": "Developing Statically Typed Programming Language",
        "url": "https://blog.mgechev.com/2017/08/05/typed-lambda-calculus-create-type-checker-transpiler-compiler-javascript"
      },
      {
        "title": "DuckDB Meets AWS: A Match Made in Cloud (AWS Bites Podcast)",
        "url": "https://awsbites.com/140-duckdb-meets-aws-a-match-made-in-cloud"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 412,
    "title": "Use the Index, Luke",
    "slug": "2025-02-17-393-use-the-index-luke",
    "date": "2025-02-17",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nSome personal news first: after two and a half months (yes, really!), I finally managed to carve out the time to write my [annual year-end reflection post](https://loige.co/2024-a-year-in-review/)! If you're curious about what I've been up to professionally and personally (and what I'll be focusing on this year) you can [check it out](https://loige.co/2024-a-year-in-review/).\n\nAlso, this week, I'll be in London for [Rust Global](https://www.eventbrite.com/e/rust-global-2025-london-tickets-1106701787839), where I'm looking forward to delivering a keynote on why I believe serverless is the perfect use case for Rust. If you're around, give me a shout... I'd love to meet you!\n\nNow, let's dive into the content for this newsletter! This week is a big one. There was so much interesting stuff that it massively overflowed the usual 7 featured pieces, so be sure to check all the extra links at the bottom if you want more!\n\nYour editor,\n— [Luciano](https://loige.co/)\n\nP.S. Full Stack Bulletin is currently looking for sponsors (yep, we also have bills to pay). If you have a product that could appeal to a wide, international audience of full-stack developers, [give me a shout](mailto:luciano@fullstackbulletin.com)! I even have a slide deck ready with most of the questions you'd probably want to ask me 🙂",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works“",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Use The Index, Luke",
        "url": "https://use-the-index-luke.com/",
        "description": "The main pick of this week is for those who truly want to understand how relational databases work and master the art of fine-tuning them. It's a big one! *'Use The Index, Luke'* is a free e-book and website that explains SQL indexing from the ground up, focusing on what developers need to know – no database admin jargon here. You'll learn about everything from the anatomy of an index and how to optimize `WHERE` clauses to understanding the impact of indexing on `INSERT`, `DELETE`, and `UPDATE` statements. It cuts through the noise and dives straight into practical techniques, going far beyond basic ORM usage. If you're looking to get serious about SQL performance, this is an invaluable resource. And if you like what you see here, please consider supporting the author by buying a copy of the book in print or PDF format! [**Read the Book**](https://use-the-index-luke.com/)",
        "imageUrl": "./eb37a27acba1f946d93447ecd9a0d1120df164661f6e6ecbb52b6c0f9561949b.png",
        "featured": true
      },
      {
        "title": "Dexie.js - Minimalistic IndexedDB Wrapper",
        "url": "https://dexie.org/",
        "description": "And speaking of databases, here's Dexie.js, a minimalistic wrapper for IndexedDB that helps with client-side data management directly in the browser. It provides a clean, intuitive API for building local-first web applications and idiomatic framework-specific wrappers for React, Svelte, Vue, and Angular. [**Check out the project**](https://dexie.org/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Transitioning Top-Layer Entries And The Display Property In CSS",
        "url": "https://smashingmagazine.com/2025/01/transitioning-top-layer-entries-display-property-css",
        "description": "This article dives into two new CSS features – `transition-behavior: allow-discrete` and `@starting-style` and shows you how to use them for smooth transitions when working with the display property and the top layer. With these techniques, you'll be able to improve accessibility and create more engaging user experiences. So if you have a user interface, a dialog or popover to animate, or if you just want to add subtle, smooth animations to your projects, keep on reading!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Move on to ESM-only",
        "url": "https://antfu.me/posts/move-on-to-esm-only",
        "description": "Should JavaScript packages finally ditch CommonJS (CJS) and embrace ESM-only? This article, by Anthony Fu (of Vite, Vitest, Vue, and Nuxt fame), makes a compelling case for why the time has come. More than just an opinion piece, it takes a very practical stance, providing clear insights and even a tool – [node-modules-inspector](https://node-modules.dev/) – to help you decide whether you should transition your projects to ESM or not. The author explores the ecosystem's evolution, highlights the power of modern tools, and dives into the challenges of maintaining dual CJS/ESM formats. If you're a full-stack JavaScript developer, you've likely wrestled with module formats at some point. This article is an excellent summary of the issues, as well as a must read piece of content to get an overview of the javascript ecosystem.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Ohm: a user-friendly parsing toolkit for JavaScript",
        "url": "https://ohmjs.org/",
        "description": "Want to build your own language or easily parse complex data formats? Ohm is a JavaScript library and DSL that lets you create parsers, interpreters, and compilers with ease. It provides a powerful grammar language with full support for left recursion and object-oriented grammar extension. Plus, its modular semantic actions and [online editor](https://ohmjs.org/editor/) make it a breeze to experiment and debug.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building an easy web application",
        "url": "https://rudyfaile.com/2020/07/06/building-an-easy-web-application",
        "description": "I don't necessarily agree with everything in this blog post (especially the author's, let's say passionate, feelings about Node.js and JavaScript 😅), but they definitely have a point about the dangers of over-engineering! This article is a hilarious account of one developer's quest to build an 'easy' web app that went hilariously wrong. What started as a 30-minute PHP script quickly spiraled into a three-day odyssey involving Python, Flask, Bottle, JavaScript, CORS, Node.js, and a REST API... Read it with light-hearted expectations, but be ready to be surprised – some of the ideas and frustrations might really resonate with you!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Quicky - Self host Next.js websites",
        "url": "https://quicky.dev/",
        "description": "Lately, on a decently sized Next.js project, I've found the Vercel experience a bit too constrained. It feels like a very opinionated approach that doesn't always play nicely with more complex architectures where you might be hosting bits and pieces on AWS and integrating external systems. So, during my search for self-hosting alternatives, I stumbled upon Quicky: a CLI tool designed to streamline the entire process, from initialization and GitHub integration to automated domain configuration and SSL certificates. I haven't had a chance to try it yet, so I'm not endorsing it, but it looks well-documented and is worth a look if you're also aiming to break free from Vercel.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Learn Python the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code (Zed Shaw's Hard Way Series)",
      "author": "Zed Shaw",
      "description": "You Will Learn Python! Zed Shaw has perfected the world's best system for learning Python. Follow it and you will succeed-just like the hundreds of thousands of beginners Zed has taught to date! You bring the discipline, commitment, and persistence; the author supplies everything else. In Learn Python the Hard Way, Third Edition, you'll learn Python by working through 52 brilliantly crafted exercises. Read them. Type their code precisely. (No copying and pasting!) Fix your mistakes. Watch the programs run. As you do, you'll learn how software works; what good programs look like; how to read, write, and think about code; and how to find and fix your mistakes using tricks professional programmers use.",
      "coverImageUrl": "./e7a1c7c52a446f8a9386894c88a9acd8ab18b1a04a7236bf3a730fcc06c664fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321884914?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321884914?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "There are a lot of ways to break up long tasks in JavaScript.",
        "url": "https://macarthur.me/posts/long-tasks"
      },
      {
        "title": "Which rich text editor framework should you choose in 2025?",
        "url": "https://liveblocks.io/blog/which-rich-text-editor-framework-should-you-choose-in-2025"
      },
      {
        "title": "Publishing ESM-based npm packages with TypeScript",
        "url": "https://2ality.com/2025/02/typescript-esm-packages.html"
      },
      {
        "title": "The Popover API is now Baseline Newly available",
        "url": "https://web.dev/blog/popover-baseline"
      },
      {
        "title": "How to Create Wavy Boxes Using CSS",
        "url": "https://verpex.com/blog/website-tips/how-to-create-wavy-boxes-using-css"
      },
      {
        "title": "How to declare your page’s language",
        "url": "https://blog.pope.tech/2025/02/05/how-to-declare-your-pages-language"
      },
      {
        "title": "daviddarnes/share-button: A Web Component to share web pages using the native OS sharing options",
        "url": "https://github.com/daviddarnes/share-button"
      },
      {
        "title": "The Art of Making Websites",
        "url": "https://blog.jim-nielsen.com/2025/the-art-of-making-websites/"
      },
      {
        "title": "Reimagining Fluid Typography",
        "url": "https://www.oddbird.net/2025/02/12/fluid-type/"
      },
      {
        "title": "nodejs/import-in-the-middle: module loading interceptor",
        "url": "https://github.com/nodejs/import-in-the-middle"
      },
      {
        "title": "Hyperlegible™ Fonts",
        "url": "https://www.brailleinstitute.org/freefont/"
      },
      {
        "title": "Fluid Triangle (impressive canvas rendering demo)",
        "url": "https://github.com/javierbyte/fluid-triangle"
      },
      {
        "title": "Kubb: The ultimate toolkit for working with APIs",
        "url": "https://kubb.dev/"
      },
      {
        "title": "The ultimate guide to Rust newtypes",
        "url": "https://www.howtocodeit.com/articles/ultimate-guide-rust-newtypes"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 411,
    "title": "Expressive Code",
    "slug": "2025-02-10-392-expressive-code",
    "date": "2025-02-10",
    "templateType": "mce-mailchimp",
    "intro": "Whassup ?!\nSome personal news this week! As you might know, I'm co-authoring a book about Rust and Lambda functions with [James](https://jameseastham.co.uk/), and we're taking a pretty unique self-publishing approach: releasing it to readers as soon as possible! The idea is that you get it at a discounted price (it's not a complete book yet!), we get awesome feedback and suggestions, and you get access to all future versions and new chapters for free. It's a win-win! Well, last week [we released a new version packed with improvements](https://news.rust-lambda.com/p/crabby-lambda-book-back-with-cdk) (thanks to reader suggestions!) and a brand new appendix showcasing how to use [CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html) (as an alternative to SAM) to manage your infrastructure as code, including those rusty Lambda functions! If you're curious about this side project of mine (and intrigued by Lambda and Rust as much as I am), definitely check out [*Crafting Lambda Functions in Rust*](https://rust-lambda.com/)! 🦀\n\nNow, let's get into some awesome full-stack content. I think this week's selection is particularly juicy! I really like how the content selection came out... and don't forget to check out the extra links at the bottom! There was just so much good stuff this week that I couldn't fit it all into the top 7! Enjoy!\n\nYour passionate editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack“",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "Expressive Code",
        "url": "https://expressive-code.com/",
        "description": "Want to make your code snippets really pop on your blog or training site? Expressive Code is a web component that lets you showcase your code in visually stunning ways. One of the coolest features I've seen is the ability to use any VSCode theme (even with an automatic dark/light mode switcher!), while automatically adjusting the theme colors for optimal readability following accessibility standards. It's framework-agnostic, fully featured (syntax highlighting, code markers, etc.), and plugin-based. In fact, I'm planning to spend some time with it to see if I can easily embed it into my Astro site to replace the default renderer for markdown code blocks – that would give an extra lift to my personal blog!",
        "imageUrl": "./2ac265b59e4de15cdfa26b9855aa981e773843bb40b80e5ee5ea80f735111834.png",
        "featured": true
      },
      {
        "title": "Oracle justified its JavaScript trademark",
        "url": "https://deno.com/blog/deno-v-oracle2",
        "description": "This week, Ryan Dahl (of Node.js and Deno) has written about the ongoing issue of Oracle's \"JavaScript\" trademark. It seems that Oracle continues to claim ownership despite having limited involvement with the language's development and evolution. It's certainly a situation that raises some questions about the role of trademarks in open source, and it questions who should control the future of JavaScript. To get the full details, I suggest you read his article and sign the open letter at [javascript.tm](https://javascript.tm/). I have already signed it myself, because this isn't just about a name, it's about what values we, as a community, want to stand for.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS Easing Editor and Generator",
        "url": "https://easingwizard.com/",
        "description": "**Easing Wizard** is an interactive tool that makes crafting astonishing CSS easing functions a breeze! Visually design custom Bézier curves, experiment with realistic Spring physics, create playful Bounce effects, and add quirky Wiggle and Overshoot animations to your web projects. Plus, you can copy the code directly as plain CSS or Tailwind classes, drop them into your website items and see your animations come alive!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CRA needs deprecation notices",
        "url": "https://github.com/facebook/create-react-app/issues/17004",
        "description": "React 19 has sparked a long-overdue discussion about deprecating Create React App (CRA) and this GitHub issue captures the complexities of it. As that discussion goes on, the question of whether to always adopt a meta-framework like Next.js or stick with React alone inevitably comes up. I personally believe there's still huge value in React by itself. Nothing wrong with Next.js, but I worry about it becoming the default recommendation when there are so many other great frameworks out there (Astro, TanStack, etc.)! What do you think? Do you like meta-frameworks? What are you using as a CRA alternative?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What Sits And What Fits",
        "url": "https://cadienvan.github.io/blog/en/what-sits-and-what-fits",
        "description": "There are textbook best practices... and then there's the unique, imperfect reality your project lives in. So what do we do with those best practices? This article dives into the crucial balance between established principles (\"sits\") and context-specific adaptations (\"fits\") in software architecture. It argues that knowing when to break the rules is as important as understanding them in the first place. It explores common examples (polymorphism, unit testing, event-driven architecture) and provides a pragmatic framework for decision-making. If you're a full-stack developer making architectural choices, this is a must-read for its approach to pragmatism over dogma, so you can apply the correct pattern to your project while being mindful of technical debt. It's a vital reminder that real-world development often requires nuance and trade-offs.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A \"section\" without an accessible name is nothing but a \"div\"",
        "url": "https://stefanjudis.com/today-i-learned/section-accessible-name",
        "description": "providing no semantic value for screen readers or other assistive technologies. As full-stack developers, it's important that we understand the practical implication of our code for all users of the web, not just some, and this article does a fantastic job to make us all more aware of such details!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS nesting: use with caution",
        "url": "https://piccalil.li/blog/css-nesting-use-with-caution",
        "description": "Native CSS nesting is finally here... but is it actually a good thing? This article presents a contrarian view on the highly anticipated feature, explaining why native CSS nesting fills the author with \"dread.\" Drawing from 15+ years of CSS experience, the author dives into issues of complexity, specificity, and code maintainability.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Learn You a Haskell for Great Good!: A Beginner's Guide",
      "author": "Miran Lipovaca",
      "description": "It's all in the name: Learn You a Haskell for Great Good! is a hilarious, illustrated guide to this complex functional language. Packed with the author's original artwork, pop culture references, and most importantly, useful example code, this book teaches functional fundamentals in a way you never thought possible. You'll start with the kid stuff: basic syntax, recursion, types and type classes. Then once you've got the basics down, the real black belt master-class begins: you'll learn to use applicative functors, monads, zippers, and all the other mythical Haskell constructs you've only read about in storybooks.",
      "coverImageUrl": "./5655f47df47ed8e3f6882bdef387d2799d0bc0434aa7b76d68259cda007ed3ab.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593272839?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593272839?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Building a QR Code HTML Web Component",
        "url": "https://scottjehl.com/posts/q-r"
      },
      {
        "title": "How to gif (2025 edition)",
        "url": "https://fullystacked.net/how-to-gif-2025"
      },
      {
        "title": "Pino: Node.js logger",
        "url": "https://getpino.io/"
      },
      {
        "title": "You should not use URLPattern to route HTTP requests on the server",
        "url": "https://fullystacked.net/how-to-gif-2025"
      },
      {
        "title": "Load the default OS font with CSS",
        "url": "https://www.stefanjudis.com/blog/load-the-default-os-font-with-css/"
      },
      {
        "title": "git-marge (not a typo 😜)",
        "url": "https://github.com/mcdwayne/git-marge"
      },
      {
        "title": "An alt (attribute) Decision Tree",
        "url": "https://www.w3.org/WAI/tutorials/images/decision-tree/"
      },
      {
        "title": "Build for the Web, Build on the Web, Build with the Web",
        "url": "https://csswizardry.com/2025/01/build-for-the-web-build-on-the-web-build-with-the-web/"
      },
      {
        "title": "Some Things You Might Not Know About Custom Counter Styles",
        "url": "https://css-tricks.com/some-things-you-might-not-know-about-custom-counter-styles/"
      },
      {
        "title": "Do JavaScript frameworks still need portals?",
        "url": "https://fullystacked.net/portal/"
      },
      {
        "title": "CSS margin-trim and line height units",
        "url": "https://12daysofweb.dev/2024/css-margin-trim-line-height-units/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 410,
    "title": "The Illustrated DeepSeek-R1",
    "slug": "2025-02-03-391-the-illustrated-deepseek-r1",
    "date": "2025-02-03",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, \nNot much exciting personal news to share this week, it's been a pretty quiet one on my end. However, I definitely couldn't escape the Deepseek buzz this past week! Like many of you, I found myself drawn in, and as a result, I ended up diving into some interesting content related to it (which, of course, you'll see in this week's selection 😉).\n\nHonestly, the more I explore these advancements in AI, the more convinced I become that it's quickly becoming a fundamental tool for us as developers. This isn't just hype— it’s a genuine shift. So, I believe it's in our best interest to really deep dive into the core concepts, understanding both the strengths and limitations of AI so that we can leverage it most effectively in our day-to-day work.\n\nOk, enough with my AI musings! Without further ado, let's jump into this week's handpicked content. As always, I've carefully selected a mix of articles, tutorials, and resources that I hope will keep you inspired, informed, and ready for whatever challenges or innovations this wonderful, but endless, full-stack journey throws our way.\n\nYour passionate editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case“",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "The Illustrated DeepSeek-R1",
        "url": "https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1",
        "description": "Have you ever caught yourself wondering, 'How do those crazy-smart AI models actually think through complex problems?' This article gets into the nitty-gritty of [DeepSeek-R1](https://www.deepseek.com/), a new, super-powerful LLM that's causing a stir in the AI world. It breaks down how they trained this thing using techniques like supervised fine-tuning and reinforcement learning to get it crushing reasoning tasks. Now, I know this sounds like hardcore AI research, but hear me out – it's actually super valuable for us full-stack devs. Why did I pick this? Because I believe that AI is quickly becoming a fundamental part of our lives as developers. I know, I know, there's a lot of hype, and maybe you're feeling a little burnt out by it, but it's important to understand the basics, like how these models work. This knowledge will be key to using AI effectively, becoming more productive, and understanding where our industry is heading!",
        "imageUrl": "./218be0b76042233865864bed4827302a79178505a92fe0023faf884d1d69e0da.png",
        "featured": true
      },
      {
        "title": "A WebAssembly compiler that fits in a tweet",
        "url": "https://wasmgroundup.com/blog/wasm-compiler-in-a-tweet",
        "description": "Ever thought about how compilers actually work? This article takes you on a wild ride into the depths of WebAssembly, exploring a mind-bending concept: a complete compiler that fits into a single tweet! Seriously, the initial version was just 192 bytes. The author walks us through a step-by-step process of 'de-obfuscating' the code, which involves a ton of clever JavaScript tricks. It might sound a bit intimidating at first, but it's a fantastic exercise in understanding WebAssembly's low-level structure and how it all comes together. I chose this piece because it's a fun, unusual take on a fundamental topic. As full-stack developers, understanding these foundational technologies helps us build more optimized, performant apps. This article is also a great example of pushing the limits of what is possible.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why my Node.js Docker image has Python!?",
        "url": "https://labs.iximiuz.com/tutorials/how-to-choose-nodejs-container-image",
        "description": "Choosing the right Docker image for your Node.js app can feel complex, and this article is here to help. It provides a comprehensive guide to the many options available, from the 'official' images to distroless and everything in between. You'll learn why your default Node.js image might be surprisingly bloated with things you don't need (like Python!), the security implications of different image choices, and when to use which image for development, build, or production. This is not just a boring list of options: the author explains the pros and cons of each, providing clear guidelines, and challenging common (and often wrong!) assumptions about these images.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ECMAScript proposal: RegExp escaping",
        "url": "https://2ality.com/2025/01/regexp-escape.html",
        "description": "Dealing with user-generated content in web applications? Then you've likely run into the headache of escaping strings for use in regular expressions. This article explores the details of the upcoming `RegExp.escape()` function, a new addition to JavaScript that will make this process much easier. The author dives into how the function works, explains various use cases, and goes over the many considerations needed for proper escaping within regular expressions, making it a fundamental tool for string manipulation.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What's OAuth2 Anyway?",
        "url": "https://romaglushko.com/blog/whats-aouth2",
        "description": "Have you ever wondered how *'Sign in with Google'* actually works? This article takes a deep dive into **OAuth2**, the protocol that powers most modern authorization flows. It goes way beyond the basic 'click the button' understanding, explaining the 'whys' behind its design and exploring the different authorization grants in detail, from the classic authorization code to device code and more. The article also tackles a wide range of important topics such as token handling, security measures, best practices and other relevant concepts related to this framework.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Solid.js Creator on Web Framework Complexity",
        "url": "https://thenewstack.io/solidjs-creator-on-confronting-web-framework-complexity",
        "description": "This article features [Ryan Carniato](https://dev.to/ryansolid), the creator of Solid.js (a framework I'm a big fan of!), sharing his thoughts on the complexity we've created in our quest for simplicity. He delves into the divide between isomorphic SPAs and split-execution MPAs, discusses the role of compilers in dealing with this complexity, and even makes some interesting predictions about the future of frontend development. Ryan's insights are always spot-on, and this article is no exception, IMHO.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Build Container Images Like a Pro",
        "url": "https://labs.iximiuz.com/skill-paths/build-container-images",
        "description": "A hands-on, interactive tutorial designed to take you from the basics to building production-ready images. You'll practice creating images, choosing the right base, mastering multi-stage Dockerfiles, and troubleshooting common issues through a series of engaging challenges.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Kafka: The Definitive Guide",
      "author": "Gwen Shapira, Todd Palino, Rajini Sivaram, and Krit Petty",
      "description": "Every enterprise application creates data, whether it consists of log messages, metrics, user activity, or outgoing messages. Moving all this data is just as important as the data itself. With this updated edition, application architects, developers, and production engineers new to the Kafka streaming platform will learn how to handle data in motion. Additional chapters cover Kafka's AdminClient API, transactions, new security features, and tooling changes.",
      "coverImageUrl": "./7ce186d4ac0bb4d214e5374a34dde91a20e59b75b9385e72f0f48de2c7d34e3f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492043087?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492043087?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "(Free) Vercel AI SDK (Video) Tutorial",
        "url": "https://www.aihero.dev/vercel-ai-sdk-tutorial"
      },
      {
        "title": "Build It Yourself",
        "url": "https://lucumr.pocoo.org/2025/1/24/build-it-yourself"
      },
      {
        "title": "You Probably Don't Need Query Builders",
        "url": "https://mattrighetti.com/2025/01/20/you-dont-need-sql-builders.html"
      },
      {
        "title": "What Are Evals?",
        "url": "https://aihero.dev/what-are-evals"
      },
      {
        "title": "Troubles with multipart form data and fetch in Node.js",
        "url": "https://philna.sh/blog/2025/01/14/troubles-with-multipart-form-data-fetch-node-js"
      },
      {
        "title": "Introducing Mentoss: The fetch mocker",
        "url": "https://humanwhocodes.com/blog/2025/01/introducing-mentoss-fetch-mocker"
      },
      {
        "title": "How we built an AI code reviewer with serverless and Bedrock",
        "url": "https://theburningmonk.com/2025/01/how-we-built-an-ai-code-reviewer-with-serverless-and-bedrock"
      },
      {
        "title": "Building Great APIs on Lambda with Powertools (podcast)",
        "url": "https://awsbites.com/139-building-great-apis-with-powertools/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 409,
    "title": "React Admin",
    "slug": "2025-01-27-390-react-admin",
    "date": "2025-01-27",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nI'm still buzzing from last week's experience at [Coderful](https://www.coderful.io/) in [Catania](https://en.wikipedia.org/wiki/Catania)! Attending and speaking at this amazing event was an absolute pleasure. What made it even more special is that Catania is my hometown, and believe it or not, this was the first time I've ever participated in a tech conference there. I'm incredibly proud to see the hard work the organizers put in to create not just a great tech conference, but a genuinely human and welcoming experience. It was truly something special! Keep an eye on it for future editions!\n\nI had the opportunity to talk about Static APIs and even showcased some of the tech that powers this very newsletter. If you’re curious about static APIs, you can [check out my slides](https://loige.link/static-a). I'm always excited to share my perspective on this topic!\n\nBeyond my talk, I also had the pleasure of assisting my friend [Gabriele Santomaggio](https://www.linkedin.com/in/santomaggio/) with his fantastic workshop about networking and binary protocols. It was eye-opening, and I truly believe it's a topic we should all make an effort to understand better, even if we're primarily working at a higher level. If you're interested in diving deeper into networking, check out the [workshop material](https://github.com/Gsantomaggio/chat). Trust me, it's well worth your time!\n\nNow that I've shared some of my personal highlights, let's get into some inspiring full-stack content for this week. I hope you find this week's curated content as interesting as I do!\n\nYour passionate editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "To iterate is human, to recurse divine“",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "React Admin",
        "url": "https://marmelab.com/react-admin",
        "description": "Let's be real, building admin panels and internal UIs is often a pain. We're usually under pressure to get them done fast, and that means cutting corners, which often leads to a not-so-great user experience. These types of projects can really eat up development time. So, I've been looking into React-admin. It's an open-source React framework that's specifically designed for building these types of interfaces. It says it can speed things up and give you a good base for B2B apps. I haven't tried it out myself yet, but it looks interesting. Have any of you used React-admin? If so, I'd like to know what you think.",
        "imageUrl": "./a44146f1fa9bacdf28630e325ebc608d48273f33d259ff7688fcf8b181921207.png",
        "featured": true
      },
      {
        "title": "6 CSS Snippets Every Front-End Developer Should Know",
        "url": "https://nerdy.dev/6-css-snippets-every-front-end-developer-should-know-in-2025",
        "description": "Looking beyond basic CSS? [Adam Argyle](https://nerdy.dev/), a content creator I deeply admire for his visionary approach to web design and CSS, recently dropped a blog post that I found fascinating. It's all about 6 CSS snippets every front-end developer should have in their toolkit by 2025. Think advanced transitions, animation easing, and even typed custom properties, all designed to meet the UI/UX demands of the future. Forget AI shortcuts; these are the skills you need to level up.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Bun 1.2",
        "url": "https://bun.sh/blog/bun-v1.2",
        "description": "Despite my deep appreciation for Node.js, I always keep an eye on competing projects like Bun. They just released version 1.2, and it's a major update. Bun is a complete toolkit for JavaScript/TypeScript development and this release includes big improvements in Node.js compatibility, built-in S3 and Postgres support (this one is very intriguing!), and performance boosts. I firmly believe that this competition will benefit us all, so let's explore the latest developments.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Moving on from React, a Year Later",
        "url": "https://kellysutton.com/2025/01/18/moving-on-from-react-a-year-later.html",
        "description": "We all know the pain of maintaining complex JavaScript frontends. This post, shares one team's perspective of switching from React to a server-rendered Rails application using [Stimulus](https://stimulus.hotwired.dev/) and [Turbo](https://turbo.hotwired.dev/), and how that drastically impacted their testing experience. The results? A more testable system, faster development, and a leaner application overall. While I personally love React, Solid, and other frontend JavaScript frameworks, I think it's crucial to understand different teams' approaches, their constraints, and their decision-making processes. Technology is often about finding the right compromises, and this article offers a valuable perspective on that.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "TypeScript enums: use cases and alternatives",
        "url": "https://2ality.com/2025/01/typescript-enum-patterns.html",
        "description": "Need a better understanding of TypeScript enums? This article is a go-to guide, covering use cases, alternatives like object literals and string unions, and practical advice. My take: enums can be problematic because they don't disappear at compile time like other TS features. Instead, they add generated code, which can be an issue with tools like Node.js, where types are erased, not fully transpiled. Therefore, understanding when to use enums, and when to use their alternatives, is key.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing ArkType 2.0",
        "url": "https://arktype.io/docs/blog/2.0",
        "description": "What if you could have the power of TypeScript at runtime? ArkType 2.0 delivers exactly that with a 100x faster validation than [Zod](https://zod.dev/), superior developer experience, and powerful features like deep introspectability and great errors. This release introduces a new approach to validating your JavaScript data, giving you type-level feedback directly in your editor. It's a glimpse into the future of runtime type safety, and it's available now. If you've been enjoying the likes of Zod or [Valibot](https://valibot.dev/), ArkType is definitely one to watch. I haven't tried it myself just yet (still finding Zod's larger ecosystem easier to leverage), but after skimming through the docs, I've been intrigued for a while, and this release makes me even more eager to take it for a spin.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Picking a state management library for a React app",
        "url": "https://photoroom.com/inside-photoroom/picking-a-state-management-library-why-we-went-with-mobx-",
        "description": "Been thinking about shaking up your React app's state management? I came across this really interesting article from the team at Photoroom where they share why they decided to switch to [MobX](https://mobx.js.org/), plus they explore the pros and cons of other popular options like [Redux](https://redux.js.org/) and [Zustand](https://zustand-demo.pmnd.rs/). They talk about how it made testing easier, state updates simpler, and their developers happier overall. It's a really valuable real-world look at how a team tackled complex state, and I thought you might find it insightful too.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Laravel: Up & Running; A Framework for Building Modern PHP Apps",
      "author": "Matt Stauffer",
      "description": "What sets Laravel apart from other PHP web frameworks? Speed and simplicity, for starters. This rapid application development framework and its ecosystem of tools let you quickly build new sites and applications with clean, readable code. Fully updated to include Laravel 10, the third edition of this practical guide provides the definitive introduction to one of today's most popular web frameworks.",
      "coverImageUrl": "./00aa0d0b4a46031fae9d8982d0c4ee7745531fbcb2d891197f7efe62ca4a66bb.jpg",
      "amazonUs": "https://www.amazon.com/dp/109815326X?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/109815326X?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "My website has been gaslighting you",
        "url": "https://daverupert.com/2025/01/color-hue-rotating-gaslight"
      },
      {
        "title": "Ryan Carniato (of Solid.js) had a band for 14 years! And you won't believe the name! 😱",
        "url": "https://x.com/RyanCarniato/status/1881808643026485262"
      },
      {
        "title": "React-in-HTML from a 21kb bundle",
        "url": "https://ssreact.com/"
      },
      {
        "title": "Styling with utility classes - Core concepts",
        "url": "https://tailwindcss.com/docs/styling-with-utility-classes"
      },
      {
        "title": "Avoiding `any`s with Linting and TypeScript | typescript-eslint",
        "url": "https://typescript-eslint.io/blog/avoiding-anys"
      },
      {
        "title": "JavaScript Temporal is coming",
        "url": "https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 408,
    "title": "AI Agents",
    "slug": "2025-01-20-389-ai-agents",
    "date": "2025-01-20",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, \nThis week is a big one for me! I'm excited to share that I'll be attending and speaking at [Coderful](https://www.coderful.io/), an amazing Italian conference for Full-Stack devs. What makes it extra special? It's happening in the beautiful [Catania](https://en.wikipedia.org/wiki/Catania), the city where I was born, and after years of public speaking, this will be my first talk in my city! Wish me luck... I might need it! 😉\n\nI’ll be diving into **Static APIs**, a way of developing APIs that I still feel is wildly underutilized. It's definitely not a silver bullet, and it does come with some constraints, but when those constraints are manageable, the benefits are huge. As always, I'll be sharing the slides after the talk, so stay tuned.\n\nIn other news, while preparing for Coderful, I created a Notion template to consolidate my tech talk ideas and streamline my slide creation process. I figured it could help other tech speakers, so I turned it into [a free Notion template](https://www.notion.com/templates/prepare-a-tech-talk). Feel free to grab it, and if you find it useful, please let me know and share it with your friends and colleagues!\n\nNow, let's dive into some awesome full-stack content, and let's keep ourselves inspired!\n\nYour editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "Standards are always out of date. That's what makes them standards“",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "AI Agents",
        "url": "https://huyenchip.com/2025/01/07/agents.html",
        "description": "You're probably hearing everyone talking about AI Agents, but what the heck are those? I admit, I've been a bit confused myself, and this article was a great resource to clarify my confusion. I suspect that in the future, our role as full-stack devs will require us to create APIs and websites that can easily integrate with the work of AI Agents, so this is a very relevant topic for 2025 and the years to come! [Chip Huyen](https://x.com/chipro)'s latest post dissects the inner workings of AI agents, revealing how they leverage tools and planning to tackle complex tasks. Forget passive models – this piece explores the active, autonomous world of agentic applications, offering insights into tool selection, planning strategies, and even the critical failure modes you need to watch out for. If you're looking to build the next generation of intelligent applications, this is a must-read to understand the fundamentals.",
        "imageUrl": "./55d1d65394095fa667898757e8500401c438301d4b14275221fdda68190c8dc2.png",
        "featured": true
      },
      {
        "title": "Bash has hashmaps",
        "url": "https://xeiaso.net/notes/2024/bash-hashmap",
        "description": "I have to admit, I kinda hate bash as a language. Although I totally recognize its value, every time I want to do something with it, I feel stuck. But this is probably because I never spent enough time properly learning the ins and outs of the language. So, last week I was hoping to learn a bit more, and I bumped into this interesting and well-written article. Turns out, bash has hashmaps! This article dives into how you can use associative arrays to manage key-value data directly in your scripts. If you've ever found yourself wrestling with complex bash logic and needing a better way to store mappings, this is a surprisingly helpful resource.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS text-box-trim",
        "url": "https://developer.chrome.com/blog/css-text-box-trim",
        "description": "CSS is becoming more and more powerful, and text styling is one of those areas where there are still lots of improvements that can happen. Recently, we got `text-box-trim`, a new CSS property that lets developers and designers tailor the space above and below text. Curious? Let's discover together what kinds of cool effects you can design with it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Learn Yjs",
        "url": "https://learn.yjs.dev/",
        "description": "Ever dreamed of building those super cool, interactive multiplayer web experiences? Imagine creating a browser-based card game where everyone's actions sync in real-time! This Learn Yjs tutorial series is your gateway to making that dream a reality. It introduces Yjs, a library that lets you build collaborative apps with ease. This very page is a live demo of its power! You can see other people's cursors moving around, and you can actually interact with it and change things for everyone else! This resource will teach you the fundamentals of Yjs, what CRDTs are, and how to handle state in distributed systems. Though still a work in progress, there are already enough chapters to get you started, with interactive demos and code exercises that will give you a feel for how Yjs really works.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A simple trick to understand Ruby’s lazy enumerator",
        "url": "https://joyofrails.com/articles/simple-trick-to-understand-ruby-lazy-enumerator",
        "description": "Streams and lazy iterators are a favorite of mine, and though I'm not a Ruby expert, this article clearly explained lazy enumerators vs. eager ones. It's a concept you can apply to any language for more performant, scalable code. The article uses a cool interactive demo to show how Ruby's `Enumerator::Lazy` avoids unnecessary work. If you want to optimize your code or handle big data, this is a great read, no matter what language you use.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why does Cloudflare Pages have such a generous Free tier?",
        "url": "https://mattsayar.com/why-does-cloudflare-pages-have-such-a-generous-free-tier",
        "description": "Static websites are one of my favorite topics in web development, and as I prepare a talk on static sites and APIs, this article came up during my research. It's a super interesting take on understanding how CDNs work, what the main players in this space are, and how their pricing models and features compare. Why does Cloudflare Pages offer unlimited bandwidth? This piece dives into that question, exploring the strategic reasons behind Cloudflare’s generous free tier for static sites, while also comparing its offering with GitHub Pages, Netlify, and more. If you're looking for a cheap place to host your next static site, or just want to understand how these platforms operate, this is a great read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React's experimental animations API",
        "url": "https://motion.dev/blog/reacts-experimental-view-transition-api",
        "description": "After 12 years, React gets its own animation API! This article explores the new `<ViewTransition/>` component, enabling powerful view animations using the browser's API. You'll learn how to use it in React/Next.js, the difference between view and layout animations, and how it fits into the render cycle. A major leap for React devs wanting a native solution! If you care about fluid, modern web apps, this is a must-read to see what's coming.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Alice Zhao",
      "description": "If you use SQL in your day-to-day work as a data analyst, data scientist, or data engineer, this popular pocket guide is your ideal on-the-job reference. You'll find many examples that address the language's complexities, along with key aspects of SQL used in Microsoft SQL Server, MySQL, Oracle Database, PostgreSQL, and SQLite. In this updated edition, author Alice Zhao describes how these database management systems implement SQL syntax for both querying and making changes to a database. You'll find details on data types and conversions, regular expression syntax, window functions, pivoting and unpivoting, and more.",
      "coverImageUrl": "./737b4ea5f199894518ccb4d5a72083943c6abad8e16ee1c49fd03408b8bb7d21.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492090409?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492090409?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Levels of Defensiveness",
        "url": "https://marcgg.com/blog/2025/01/06/levels-of-defensiveness"
      },
      {
        "title": "A couple CSS tricks for HTML Dialog elements",
        "url": "https://cassidoo.co/post/css-for-dialogs"
      },
      {
        "title": "Implementing Streaming SSR with React Relay and Vite",
        "url": "http://aqora.io/blog/AEJsb2dBcnRpY2xlAZRgyH4wdeKfFHS0yil0Fw/implementing-streaming-ssr-with-react-relay-and-vite"
      },
      {
        "title": "The future of htmx",
        "url": "https://htmx.org/essays/future"
      },
      {
        "title": "What is DevOps?",
        "url": "https://octopus.com/devops"
      },
      {
        "title": "Progressive Forms with React 19",
        "url": "https://rdrn.me/react-forms"
      },
      {
        "title": "You Might Not Have A Web Performance Problem",
        "url": "https://debugbear.com/blog/poor-performance-score-good-performance"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 407,
    "title": "TailwindCSS Motion",
    "slug": "2025-01-13-388-tailwindcss-motion",
    "date": "2025-01-13",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nAs we kick off 2025, it's a natural time to reflect on the past year and set our sights on what we want to accomplish in the year ahead. I always find this period of reflection to be very useful, giving me a clear vision of what's next.\n\nIt’s also a perfect moment to take stock of the constantly evolving landscape of tools and technologies we rely on daily. What new skills do we need to learn? What trends should we be preparing for? This issue is designed with that in mind. You'll find content aimed to help you form a vision for what you can achieve in 2025. I'm confident that you have the potential to achieve some incredible things this year!\n\nSo, what's one accomplishment you're particularly proud of from 2024? And what do you hope to achieve in 2025? I'm genuinely curious—hit reply and let me know!\n\nLet’s make 2025 a year of growth and impact!\n\nYour editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "I do not fear computers. I fear lack of them“",
      "author": "Isaac Asimov",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "Tailwind CSS Motion",
        "url": "https://rombo.co/tailwind/",
        "description": "a new library that makes adding stunning, performant animations to your Tailwind projects a breeze. With its intuitive syntax and a ton of built-in presets (fade, slide, pop, confetti, and more!), you'll be animating like a pro in minutes. Plus, check out the [Rombo Extension](https://www.google.com/url?sa=E&q=https%3A%2F%2Frombo.co%2Ftailwind%2F) for visual animation building and exporting.",
        "imageUrl": "./7dea5fd3b7b879595009a071d8b080b87a54452baed7702d99e3014027812470.png",
        "featured": true
      },
      {
        "title": "An Operating System in 1,000 Lines",
        "url": "https://operating-system-in-1000-lines.vercel.app/en",
        "description": "This resource walks you through building a miniature OS in C, exploring core concepts like context switching and device drivers, all within a manageable 1,000 lines of code. Now, I know this might seem a bit off-topic for our usual discussions, but if you're feeling adventurous, I'm sure you'll enjoy stepping out of your comfort zone. Even if you're not planning to build an OS professionally, the insights you'll gain are invaluable, and who knows? They might just come in handy the next time you're shipping an app to a production server somewhere!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Things we learned about LLMs in 2024",
        "url": "https://simonwillison.net/2024/Dec/31/llms-in-2024",
        "description": "As a full-stack developer, you're likely already using LLMs to boost your productivity (and if not, you probably should!). That's why this comprehensive recap of the most important developments in Large Language Models in 2024 is crucial. It's not just theory – this article covers real changes that directly impact your workflow, from local model deployment and cheaper inference to exciting new multimodal features. Learn what's now possible and plan your development strategies accordingly to prepare for the innovation coming in 2025.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Gradienty - Tailwind CSS Gradient Generator",
        "url": "https://gradienty.com/",
        "description": "Here's another juicy Tailwind-related resource... Say goodbye to tedious gradient configurations! This new tool allows you to effortlessly create stunning gradients with a visual interface, perfect for your Tailwind-powered websites.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "jsontr.ee: visualize JSON as a dynamic tree",
        "url": "https://github.com/xzitlou/jsontr.ee",
        "description": "If you've ever been lost in a sea of nested braces and brackets, a tool like this might come in handy. [jsontr.ee](https://jsontr.ee/) is a JavaScript library that takes the pain out of exploring complex JSON. It generates clear, interactive tree diagrams from your JSON data, letting you easily visualize the structure and contents. Perfect for debugging APIs and large data sets.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "2024 JavaScript Rising Stars",
        "url": "https://risingstars.js.org/2024/en",
        "description": "What are the projects that are making a buzz in the JS world? JavaScript Rising Stars 2024 is here to reveal the answer. This year's list shows the top projects that gained the most GitHub stars, and it's a great resource for keeping your finger on the pulse. I've been keeping a close eye on [Bruno](https://www.usebruno.com/), [Hono](https://hono.dev/), [NocoDB](https://nocodb.com/), [PgLite](https://pglite.dev/), [Astro](https://astro.build/), [Tailwind](https://tailwindcss.com/), [Biome](https://biomejs.dev/), [MagicUI](https://magicui.design/), [Payload CMS](https://payloadcms.com/), and [Zod](https://zod.dev/) myself. See what else has taken off this year!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node’s new built-in support for TypeScript",
        "url": "https://2ality.com/2025/01/nodejs-strip-type.html",
        "description": "Node.js can now run TypeScript files directly, and this is huge! While it sounds amazing (and it is), there are important things you need to know. Dr. Axel Rauschmayer's excellent article digs into the specifics, explaining how it's implemented, the current limitations, and crucial details developers should be aware of. This is not a \"drop-in replacement,\" so be sure to read this before jumping in head first!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Docker in Action, Second Edition",
      "author": "Jeff Nickoloff, and Stephen Kuenzli",
      "description": "Docker in Action, Second Edition teaches you the skills and knowledge you need to create, deploy, and manage applications hosted in Docker containers. This bestseller has been fully updated with new examples, best practices, and a number of entirely new chapters.",
      "coverImageUrl": "./8b0a4a7d5eab753658354495cf548b141db95146276f85433924c153a5607132.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617294764?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617294764?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Flexoki: inky color scheme",
        "url": "https://stephango.com/flexoki"
      },
      {
        "title": "TypeScript without Build Tools",
        "url": "https://frontendmasters.com/blog/typescript-without-build-tools"
      },
      {
        "title": "ECMAScript feature: import attributes",
        "url": "https://2ality.com/2025/01/import-attributes.html"
      },
      {
        "title": "How to Choose the Right Database in a System Design interview",
        "url": "https://swequiz.com/blog/how-to-choose-the-right-database-in-a-system-design-interview"
      },
      {
        "title": "You don't need Next.js",
        "url": "https://comfydeploy.com/blog/you-dont-need-nextjs"
      },
      {
        "title": "Enhance TypeScript with String Literals",
        "url": "https://benmarshall.me/improve-typescript-suggestions-using-string-literals"
      },
      {
        "title": "Eleventy Image optimization library",
        "url": "https://11ty.dev/docs/plugins/image"
      },
      {
        "title": "37 Tips from a Senior Frontend Developer",
        "url": "https://dev.to/_ndeyefatoudiop/37-tips-from-a-senior-frontend-developer-251b"
      },
      {
        "title": "How Do You Become A Cloud Architect? (podcast)",
        "url": "https://awsbites.com/138-how-do-you-become-a-cloud-architect/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 406,
    "title": "Rules for Writing Software Tutorials",
    "slug": "2025-01-06-387-rules-for-writing-software-tutorials",
    "date": "2025-01-06",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nHappy New Year! 🎉 I hope your 2025 is off to an inspiring start!\n\nThis year, let's focus on personal growth and improvement—whether that’s tackling new skills or mastering what we already know. A suggestion I [shared on social](https://www.linkedin.com/posts/lucianomammino_happy-2025-to-everyone-in-tech-wishing-activity-7280160635458355200-EqsO) media is to go deeper. Don’t just chase the latest framework or trend. Take the time to learn what truly powers the tech you use every day. Mastering the foundations will take you further than you think!\n\nSo, what’s your plan for this year? What do you want to achieve? I’d love to hear your thoughts—hit reply and let me know!\n\nLet’s make 2025 our year to grow! 🚀\n\nYour editor,\n— [Luciano](https://loige.co/)",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple“",
      "author": "Grady Booch",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Rules for Writing Software Tutorials",
        "url": "https://refactoringenglish.com/chapters/rules-for-software-tutorials/",
        "description": "Being able to write clear, effective documentation and tutorials is a critical skill for ramping up your career as a full-stack developer. Great tutorials don’t just teach, they demonstrate your ability to communicate complex ideas, a must-have at any company. Unfortunately, most tutorials fall short, frustrating readers with missing details and hidden assumptions. But with the right approach, you can stand out. This article outlines simple, actionable rules to create tutorials that deliver real value, clear goals, copy-pasteable code, and instructions that actually work.",
        "imageUrl": "./e7208f6e41d0b2f5cd80389b9a3ad79b97b43ac1f2c813e0ffddfce60ffe5606.jpg",
        "featured": true
      },
      {
        "title": "Why I don't do Domain Driven Design",
        "url": "https://tonymarston.net/php-mysql/dont-do-domain-driven-design.html",
        "description": "Domain-Driven Design (DDD) often gets hailed as a must-have methodology for managing complex software projects, but is it always the best choice? In this thought-provoking article, Tony Marston explains why he believes DDD is overcomplicated, unnecessary, and even counterproductive for many applications. Do you agree with this take? I am still on the fence but I enjoyed this article anyway (although it's a bit long).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why Every Clustering Algorithm Must Sacrifice Something",
        "url": "https://blog.codingconfessions.com/p/the-cap-theorem-of-clustering",
        "description": "This one’s a bit off-topic, but if you love data analysis or are tackling advanced problems that require deep data skills, you’ll find it fascinating. Clustering algorithms might seem straightforward—just group similar things, right? But here’s the kicker: every clustering algorithm is fundamentally flawed. In a 2002 paper, Jon Kleinberg proved that no algorithm can satisfy all three desirable properties—scale invariance, richness, and consistency. Much like the CAP theorem in distributed systems, you’re forced to make trade-offs.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building a Brag Document",
        "url": "https://www.codu.co/articles/building-a-brag-document-rllnfdad",
        "description": "New year, new goals? If one of your resolutions for 2025 is to give your career a boost, here’s a great place to start: building a brag document. This article from the awesome [Codu community](https://www.codu.co/) not only explains why tracking your achievements is a game-changer but also provides practical tips and examples to help you focus on what really makes your document shine with maximum *bragginess*. If you haven’t started one yet, now’s the perfect time to dive in and set the tone for a successful year ahead!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why Your Node.js Scanners Are Missing CVEs",
        "url": "https://linkedin.com/pulse/hidden-threats-lurking-your-eol-nodejs-why-scanners-baillio--rg2rc",
        "description": "Millions of apps are still running on end-of-life (EOL) versions of Node.js, and while scanners might show a clean bill of health, critical vulnerabilities are still lurking, especially in libraries like OpenSSL that Node.js depends on. This article dives into why CVE visibility around Node.js is broken, leaving developers in the dark about vulnerabilities that can compromise their apps. From false security to late patches, it outlines the hidden threats and gives you a game plan to mitigate them.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Novel Pattern for Documenting DynamoDB Access Patterns",
        "url": "https://dev.to/tyckofranklin/a-novel-pattern-for-documenting-dynamodb-access-patterns-2mp3",
        "description": "If you're a serverless and AWS lover like me, you'll like this one! Documenting DynamoDB access patterns traditionally involves spreadsheets, Confluence pages, or other text-based formats, but this article introduces a fresh approach using JSON format. This method makes it easier to update, refactor, and integrate directly with Node.js lambdas, offering a more code-centric workflow. While it doesn’t aim to replace spreadsheets or text-based documentation, it streamlines managing and evolving your access patterns, making your DynamoDB work smoother and more efficient. If you're already familiar with DynamoDB, this is a great way to level up your documentation and start 2025 on a more organized note!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "firew0rks: Fireworks in your terminal 🎆",
        "url": "https://github.com/addyosmani/firew0rks",
        "description": "Fireworks in your terminal 🎆. A delightful ASCII art on the CLI to celebrate the new year! Written in JavaScript, of course!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action, Third Edition",
      "author": "Saša Juric",
      "description": "Fully updated to Elixir 1.15, this authoritative bestseller reveals how Elixir tackles problems of scalability, fault tolerance, and high availability.Thousands of developers have learned to build applications in Elixir by using Saša Juric's Elixir in Action. You'll skip the programming basics or 101 introductions; this book builds on your existing knowledge to get you quickly writing real Elixir code. Along the way, you'll develop an appreciation for, and considerable skill in, functional and concurrent programming.",
      "coverImageUrl": "./357e8dc5d988fb8d8126c858857993fa8764cc2ff7c1523244aa940df691e4c5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633438511?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633438511?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Tiny Lottie",
        "url": "https://tiny-lottie-nextjs.vercel.app/"
      },
      {
        "title": "The Undeniable Utility Of CSS :has",
        "url": "https://www.joshwcomeau.com/css/has/"
      },
      {
        "title": "Solved By Modern CSS: Feature Image",
        "url": "https://ishadeed.com/article/modern-css-feature-image/"
      },
      {
        "title": "React Form Validation",
        "url": "https://www.robinwieruch.de/react-form-validation/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 405,
    "title": "Setting up a static blog with Zola",
    "slug": "2024-12-30-386-setting-up-a-static-blog-with-zola",
    "date": "2024-12-30",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, <<First Name>> 👋\n\nHappy festivities (if you celebrate)! 🥳\n\nI’m writing to you after indulging in way too much [panettone](https://it.wikipedia.org/wiki/Panettone) and finally taking a breather from work and my usual busy life. But of course, I couldn’t resist editing another issue of FSB, so here we are!\n\nThis week’s selection might feel a bit all over the place. Why? Because my research has been delightfully random too! Without any specific projects guiding me, I’ve been surfing the web, stumbling upon fascinating articles, videos, and ideas. It’s a bit like an internet treasure hunt, and I hope this issue gives you that same sense of discovery.\n\nSo, grab a cozy drink, dive in, and enjoy! As always, I’d love to hear your thoughts... what do you think of this more eclectic approach? Just hit reply and let me know.\n\nYour editor,\n— Luciano\n\nPS: Panettone, [Pandoro](https://it.wikipedia.org/wiki/Pandoro), [Barmbrack](https://it.wikipedia.org/wiki/Barmbrack), a flaming [Christmas pudding](https://it.wikipedia.org/wiki/Christmas_pudding), or something else? I feel like this could be the debate of the season. Which team are you on? Send me a picture of your favorite holiday season sweet!",
    "quote": {
      "text": "That's been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple“",
      "author": "Steve Jobs",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Setting up a static blog with Zola",
        "url": "https://blog.orhun.dev/setting-up-this-blog/",
        "description": "If you're a fan of static sites like I am, you'll love this! Orhun Parmaksız shares his journey of building a minimalist, terminal-inspired blog using Zola, a static site generator written in Rust. From customizing themes for a unique aesthetic to adding interactive features like GitHub-based comments and applause buttons, this piece is packed with inspiration and practical tips. I enjoyed this one, and I hope you will too!",
        "imageUrl": "./572519a6f30077dd1489f2d68c4515708a9745acd8d42b3f78736beb7e995fd4.png",
        "featured": true
      },
      {
        "title": "Server-Sent Events (SSE) Are Underrated",
        "url": "https://igorstechnoclub.com/server-sent-events-sse-are-underrated",
        "description": "I found Igor Wiwchar's article on Server-Sent Events (SSE) insightful and practical. He highlights how SSE offers a simpler alternative to WebSockets for real-time updates, seamlessly integrating with existing HTTP infrastructure. Igor also addresses potential limitations, such as browser connection limits when not using HTTP/2, and guides on implementing SSE effectively.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js Now Supports TypeScript By Default",
        "url": "https://totaltypescript.com/typescript-is-coming-to-node-23",
        "description": "I’ve been waiting for this for a long time, and I was thrilled to learn that Node.js 23 now supports running TypeScript files without extra configuration! Huge thanks to [Marco Ippolito](https://github.com/marco-ippolito) for being the main driver behind making this happen within the Node.js working group. It’s great to see this progress come relatively quickly, as more and more Node.js projects adopt TypeScript. This means you can execute .ts files directly with Node.js, streamlining development by removing the need for separate build steps. While Node.js won’t perform type checking at runtime, integrating `tsc --watch` into your workflow ensures code quality. This has the potential to be a big boost in the quality of life for backend developers, making the process more efficient and enjoyable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Lua is so underrated",
        "url": "https://nflatrea.bearblog.dev/lua-is-so-underrated",
        "description": "You know what else is underrated? Lua! I’ll admit, I’m not exactly a big fan (though to be fair, my experience with it has mostly been limited to Nginx scripting). That said, this article made some excellent points that got me to reconsider Lua from a fresh perspective. It highlights the language's clean design, minimalistic syntax, and support for multiple programming paradigms, making it a fantastic choice for embedding in applications. Yet, despite all these strengths, Lua tends to fly under the radar compared to more heavily marketed languages.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A new learning experience on MDN",
        "url": "https://developer.mozilla.org/en-US/blog/curriculum-learn-web-development",
        "description": "MDN has recently revamped its \"[Learn Web Development](https://developer.mozilla.org/en-US/docs/Learn_web_development)\" section, merging the MDN Curriculum into a unified learning pathway. This update offers a structured guide for beginners, emphasizing essential skills and best practices in front-end development. The curriculum covers topics such as web standards, environment setup, and core web technologies, aiming to take learners from \"beginner to comfortable.\" By consolidating resources, MDN provides a clearer and more efficient learning experience for aspiring web developers.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Full Stack Development: Complete Guide 2024",
        "url": "https://daily.dev/blog/full-stack-development-complete-guide-2024",
        "description": "If you’ve been looking for a solid take on what the full-stack developer path should look like or searching for resources to sharpen your skills, this article is a fantastic place to start. It defines full-stack development as covering front-end, back-end, and database management while highlighting the versatility that makes full-stack developers highly sought after. The guide outlines key technologies, from HTML, CSS, and JavaScript to React, Node.js, Python, and even DevOps tools like Docker and Jenkins. It also includes a practical learning path and addresses the challenges of staying updated with ever-evolving tech.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to create a simple agent for your Gmail inbox with Ollama and JS",
        "url": "https://dev.to/alagrede/how-to-create-a-simple-agent-for-your-gmail-inbox-with-ollama-and-js-4oh",
        "description": "I’m not sure if AI falls under the umbrella of full-stack development (a debate worth having!), but it’s becoming knowledge we can’t ignore. This article provides a step-by-step guide to creating an email agent using JavaScript and [Ollama](https://ollama.com/). You’ll learn to enable the Gmail API, set up OAuth credentials, and leverage Ollama’s local Large Language Models (like Llama 3.3 and Phi 3) to categorize emails, create labels, and update them dynamically.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Art of Scalability, The: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin Abbott, and Michael Fisher",
      "description": "The Comprehensive, Proven Approach to IT Scalability-Updated with New Strategies, Technologies, and Case Studies In The Art of Scalability, Second Edition, leading scalability consultants Martin L. Abbott and Michael T. Fisher cover everything you need to know to smoothly scale products and services for any requirement. This extensively revised edition reflects new technologies, strategies, and lessons, as well as new case studies from the authors' pioneering consulting practice, AKF Partners. Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You'll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide's tools and advice, you can systematically clear away obstacles to scalability-and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./f99465fdc79ff642c9ce3b619f4dfb52a83bd9938db017e47ec382c79041e05e.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "How I've been trying to improve mocking with Zod",
        "url": "https://dev.to/crbroughton/how-ive-been-trying-to-improve-mocking-with-zod-4j1a"
      },
      {
        "title": "39 Awesome CSS Animation Examples with Demos + Live Code",
        "url": "https://prismic.io/blog/css-animation-examples"
      },
      {
        "title": "The CAP Theorem of Clustering: Why Every Algorithm Must Sacrifice Something",
        "url": "https://blog.codingconfessions.com/p/the-cap-theorem-of-clustering"
      },
      {
        "title": "A Tour of WebAuthn",
        "url": "https://www.imperialviolet.org/tourofwebauthn/tourofwebauthn.html"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 404,
    "title": "Newsletter Found!",
    "slug": "2024-12-23-385-newsletter-found",
    "date": "2024-12-23",
    "templateType": "mce-mailchimp",
    "intro": "Ciao,  👋\n\nBig news this week: we’ve hit issue **404**! A quirky milestone, right? Someone asked me if I had a surprise in store for this occasion, so I thought, “Why not?” I wrote an entire article about it in which you can learn more about the past, present and future of this newsletter... with some juicy technical details too! check out the featured piece in this issue to see what I came up with.\n\nOn a more personal note, I want to take a moment to thank you for being part of this journey. Whether you’ve been here since issue #1 or just joined recently, your presence means a lot to me. 🥰\n\nI’d love to hear your thoughts—what do you enjoy most about this newsletter? What could I improve? Got an idea for future content? Just hit reply and let me know. Your feedback is the fuel that keeps this going!\n\nNow, let’s dive into this week’s curated content, packed as always with ideas and inspiration.\n\n— Your editor, [Luciano](https://loige.co/)\n\nPS: The irony of a milestone named after an error isn’t lost on me... didn't get it? Here are some of my favorite error code images: [http.cat](https://http.cat/status/404), [http.dog](https://http.dog/404), [httpraccoons.com](https://httpraccoons.com/404)... 🤣",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works“",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "#404: Newsletter found!",
        "url": "https://loige.co/404-newsletter-found/",
        "description": "We’ve reached a milestone that every nerdy heart can appreciate: 404 issues of FullStack Bulletin! To mark this delightfully serendipitous error code, I’ve put together a blog post exploring the origins of the newsletter, the tech that powers it, and what’s coming next. With the year drawing to a close, this feels like the perfect moment to celebrate. Check it out and join me in toasting this wonderfully geeky achievement! 🎉",
        "imageUrl": null,
        "featured": true
      },
      {
        "title": "OpenAuth",
        "url": "https://openauth.js.org/",
        "description": "I’ve always been a big fan of authentication protocols and solutions. Over the years, I’ve had my share of fun with hosted services like Clerk, Auth0, Okta, and Microsoft Entra ID. Each has pros and cons, but I’ll admit I have a soft spot for open-source, self-hosted approaches. That’s why I’m particularly excited about OpenAuth—a fully serverless authentication solution you can self-host! Even better, it comes from the same brilliant minds behind [SST](https://sst.dev/). For those living and breathing serverless, this feels like a game-changer. It's still early, but definitely worth checking out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing TanStack Start",
        "url": "https://frontendmasters.com/blog/introducing-tanstack-start",
        "description": "I’ve had the pleasure of using [TanStack Query](https://tanstack.com/query/latest) (a.k.a. React Query), [TanStack Router](https://tanstack.com/router/latest), and [TanStack Form](https://tanstack.com/form/latest), each an excellent library in its own right. So, I’m thrilled to see the team behind these tools take things to the next level with an entirely new full-stack web development framework: [TanStack Start](https://tanstack.com/start/latest)! Currently, in beta, this framework is already shaping up to be something special that has the potential to dethrone the likes of Next.js! If you’re curious, this article offers a fantastic introduction and a chance to dive in and start experimenting. Would you use it? Let me know... I’d love to hear your thoughts!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why TypeScript Doesn't Include a throws Keyword",
        "url": "https://learningtypescript.com/articles/why-typescript-doesnt-include-a-throws-keyword",
        "description": "Every time I find myself figuring out how to type functions that can throw errors in TypeScript, I can’t help but wonder if there’s a way to include exceptions in the type system. While this isn’t possible today, I came across a fantastic article last week that explains why. As for handling this limitation, I’m leaning more and more toward using something like [**neverthrow**](https://github.com/supermacro/neverthrow) (inspired by Rust’s error-handling approach), which focuses on returning error types rather than throwing exceptions. It’s no surprise I’m drawn to this method... 🦀",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A standard interface for TypeScript schema validation libraries",
        "url": "https://github.com/standard-schema/standard-schema",
        "description": "What happens when the creators of top validation libraries like [Zod](https://zod.dev/), [Valibot](https://valibot.dev/), and [ArkType](https://arktype.io/) join forces? They’re working on a common specification to make validation more interoperable—and the possibilities are incredibly exciting. While the current work in this repo already shows great promise, I can’t help but speculate: could this effort influence other areas, like OpenAPI integration, in the future? Just my wild guess, but it feels plausible!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "react-snow-overlay",
        "url": "https://c-o-d-e-c-o-w-b-o-y.github.io/react-snow-overlay",
        "description": "Want to give your site a festive vibe this season? Check out React Snow Overlay—it adds a stylish falling snow effect that’s perfect for this time of year! And here’s the cool part: it’s not just another React component. This library uses canvas and web workers to make the magic happen... Super efficient and super fun to explore, so make sure to look at the source code too, you might learn a trick or two!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Putting Performance in Relatable Terms",
        "url": "https://calendar.perfplanet.com/2024/putting-performance-in-relatable-terms",
        "description": "Putting performance in relatable terms\" is a fantastic article that tackles a common challenge in web optimization: making milliseconds feel meaningful. While a 300ms improvement might excite developers, it often falls flat with executives who don’t see its relevance. The article uses brilliant analogies, like Noah Lyles winning the 100m sprint by just 5ms, to show how relatable comparisons can bridge this gap. It’s a must-read for anyone who wants to communicate the real-world value of performance improvements effectively!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide",
      "author": "Jeff Carpenter, and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you'll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This revised third edition--updated for Cassandra 4.0 and new developments in the Cassandra ecosystem, including deployments in Kubernetes with K8ssandra--provides technical details and practical examples to help you put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra's nonrelational design, with special attention to data modeling. Developers, DBAs, and application architects looking to solve a database scaling issue or future-proof an application will learn how to harness Cassandra's speed and flexibility.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492097144?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492097144?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "AWS Cloud Development Kit (CDK) Explained in 5 mins (video)",
        "url": "https://www.youtube.com/watch?v=uo-sJN5xDB4"
      },
      {
        "title": "I Redesigned the ENTIRE YouTube UI from Scratch (video)",
        "url": "https://www.youtube.com/watch?v=OUM6XmhViN4"
      },
      {
        "title": "Map of GitHub projects",
        "url": "https://github.com/anvaka/map-of-github"
      },
      {
        "title": "10 new Git commands you should start using today",
        "url": "https://appwrite.io/blog/post/10-git-commands-you-should-start-using"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 403,
    "title": "React 19 is now stable!",
    "slug": "2024-12-16-384-react-19-is-now-stable",
    "date": "2024-12-16",
    "templateType": "mce-mailchimp",
    "intro": "Ciao,  👋\nI'm writing from beautiful (albeit rainy) Rome, where I just wrapped up Serverless Days Rome, my last conference for the year. As the holiday season approaches, we were gifted an early present: React 19 is now stable! I'm excited to dive in and see if the new compiler truly lives up to the hype. But enough about me—let's jump right into the curated content for this week, packed with resources that I hope will keep you informed and inspired, as always.\n\n— Your editor, [Luciano](https://loige.co/)\n\nPS: If you’re curious about [Rust and Lambda, check out my full-day workshop slide deck](https://loige.link/rust-lambda-ws), packed with over 100 slides and tons of examples. Let me know what you think!\n\nPPS: We are approaching issue 404... I should do something funny about it... what do you think? Any suggestion? Could you reply to this email and let me know?",
    "quote": {
      "text": "First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack“",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "React 19 is now stable!",
        "url": "https://react.dev/blog/2024/12/05/react-19",
        "description": "The latest release of React is here, and I couldn’t be more excited! React 19 is finally stable, and I’m really curious to see if it lives up to expectations. This version introduces the `use()` hook, which lets you effortlessly read resources like data from promises or contexts, and the `useOptimistic()` hook, making optimistic UI updates a breeze. I can’t wait to try these features and see what kind of effects the new React compiler will bring to my frontend game—this feels like a real turning point for React developers!",
        "imageUrl": "./a35b94c8f980064eb0f1956a014e4e7da2d2052dcff5692f4c118e69b293a632.png",
        "featured": true
      },
      {
        "title": "Limbo: A complete rewrite of SQLite (in Rust",
        "url": "https://turso.tech/blog/introducing-limbo-a-complete-rewrite-of-sqlite-in-rust",
        "description": "Did you know I really like Rust? I know that you know 😄 So, I was very excited to read about this new project from Turso: Limbo, a complete rewrite of SQLite in Rust. It’s not every day that a cornerstone of software like SQLite gets a ground-up rewrite, and the fact that it’s done in Rust makes it even cooler. I can’t wait to dig into how this reimagined database might push the boundaries of performance, safety, and modern database design. This one’s a must-read if you’re as passionate about Rust and databases as I am!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "jsesc: serialization",
        "url": "https://github.com/mathiasbynens/jsesc",
        "description": "Have you ever heard of jsesc? It’s a library that takes your data and returns the shortest possible stringified, ASCII-safe representation of it. Think of it as a supercharged alternative to `JSON.stringify()`. Unlike JSON, it outputs JavaScript by default, so it can handle ES6 data structures like maps and sets, and it offers a ton of customization options to tweak the output. While I doubt this will ever replace something as ubiquitous as JSON, Mathias Bynens’ work is always exceptional, and jsesc is no different. It even introduced me to the concept of [Mojibake](https://en.wikipedia.org/wiki/Mojibake), something I’d never heard of before 🤯. If serialization algorithms are your thing, diving into this source code is an absolute treat!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "State of Node.js Performance 2024",
        "url": "http://nodesource.com/blog/State-of-Nodejs-Performance-2024",
        "description": "When it comes to interpreted languages, it's hard to beat JavaScript and Node.js in terms of performance, and yet it’s great to see that some Node.js contributors are absolutely obsessed with performance. This article, gives us an inside look at how they benchmark different Node.js releases to track regressions and identify areas for further improvement.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pure CSS Halftone Effect in 3 Declarations",
        "url": "https://frontendmasters.com/blog/pure-css-halftone-effect-in-3-declarations",
        "description": "If you’re into creative CSS effects, you’ll love this deep dive on creating a **pure CSS halftone effect** in just three declarations. A halftone is a pattern of dots that vary in size and spacing, often used in printing but rarely seen in such a striking way. When blown up in size, it creates a really cool aesthetic. What’s even better is that this technique is achievable with CSS alone, and the article walks you through how to build it from a simple start.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Submit to the Quirks of HTML",
        "url": "https://htmhell.dev/adventcalendar/2024/10",
        "description": "HTML can be quirky at times, and this article highlights one of those oddities. When there’s only one single-line text input field in a form, the user agent should treat the Enter key as a request to submit the form. But what happens if you have two (or more) fields? Yeah, it gets interesting! If you’ve ever wondered how browsers handle this scenario or just want to learn about a quirky edge case, this post is a must-read. Check out how HTML handles this and what you can do about it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Publishing a simple client-side JavaScript package to npm with GitHub Actions",
        "url": "https://til.simonwillison.net/npm/npm-publish-github-actions",
        "description": "If you’re looking for an easy way to automate publishing a JavaScript package to NPM, Simon Willison’s post is a must-read. He walks through his experience with Prompts.js, a simple, single-file, client-side package, and shows how he used GitHub Actions to automate the whole process. The post breaks down the steps, from setting up a minimal package.json to automating the publishing with GitHub Actions—perfect for anyone looking to streamline their NPM publishing workflow!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide",
      "author": "Clinton Gormley, and Zachary Tong",
      "description": "Whether you need full-text search or real-time analytics of structured data or both the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you're a newcomer to both search and distributed systems, you'll quickly learn how to integrate Elasticsearch into your application. More experienced users will pick up lots of advanced techniques. Throughout the book, you'll follow a problem-based approach to learn why, when, and how to use Elasticsearch features.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Building an npm create package",
        "url": "https://alexchantastic.com/building-an-npm-create-package"
      },
      {
        "title": "Understanding the main thread in the browser",
        "url": "https://calendar.perfplanet.com/2024/understanding-the-main-thread-in-the-browser"
      },
      {
        "title": "Reflections on managing state",
        "url": "https://frontendundefined.com/posts/monthly/react-state-management-reflections"
      },
      {
        "title": "React 19 introduces full support for custom elements",
        "url": "https://aleks-elkin.github.io/posts/2024-12-06-react-19"
      },
      {
        "title": "What hath AWS wrought?",
        "url": "https://newsletter.goodtechthings.com/p/what-hath-aws-wrought"
      },
      {
        "title": "AWS Transit Gateway explained (AWS Bites Podcast)",
        "url": "https://awsbites.com/137-transit-gateway-explained/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 402,
    "title": "A framework for better documentation",
    "slug": "2024-12-09-383-a-framework-for-better-documentation",
    "date": "2024-12-09",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, \nI’m back from an unforgettable week at AWS re:Invent in Las Vegas! I am writing this after 30+ hrs with almost no sleep, so there might be a typo or two... consider them part of the charm. 😅\n\nThis year, I focused less on the hardcore technical deep dives and more on communication, networking (the people kind!), and soaking up all the wisdom from conversations and sessions. You’ll notice this issue reflects that shift, with some great resources on soft skills and collaboration to balance out the tech-heavy content. One thing that caught my eye at re:Invent was the new [Amazon Aurora DSQL](https://aws.amazon.com/rds/aurora/dsql/) database, a promising serverless distributed relational database. I’m curious to explore it more in the future, but what about you? If you’re into AWS or tuned into re:Invent (whether in person or virtually), let me know which announcements stood out to you. Just hit reply—I’d love to hear your thoughts!\n\nPS: If you don't care much about the cloud and AWS, don't worry, the rest of the content in this issue is not AWS-specific!\n\n- Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case“",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "A Framework for Better Documentation",
        "url": "https://diataxis.fr/",
        "description": "As a book author and someone who’s spent years teaching, training, and running workshops, I often wonder: is there a reliable way to write content that works for all kinds of audiences and situations? The **Diátaxis** framework might just have the answer. It breaks documentation into four clear types: tutorials, how-to guides, explanations, and references, helping you create effective and easy-to-use content... And let’s be honest: writing good documentation isn’t just a nice-to-have; it’s a core skill every full-stack developer should master.",
        "imageUrl": "./faf011e25c3b34fd9f5a834057be94778851683567ab139f48e6d78352fab102.png",
        "featured": true
      },
      {
        "title": "Inside Bluesky’s Engineering Culture",
        "url": "https://newsletter.pragmaticengineer.com/p/bluesky-engineering-culture",
        "description": "The BlueSky engineering culture offers fascinating insights into how a fully remote, open source-first tech company is building a challenger social media platform. The article explores how BlueSky fosters collaboration, prioritizes quality, and balances innovation with pragmatism—all while maintaining a lean team.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Skia Canvas",
        "url": "https://skia-canvas.org/",
        "description": "Need to create or edit images programmatically on the backend? Skia Canvas is a browser-less implementation of the HTML Canvas API for Node.js, powered by Google’s Skia engine. It’s fast, GPU-accelerated, and highly versatile—supporting raster (PNG, JPEG) and vector (PDF, SVG) formats, 3D transformations, advanced typography, and more. Perfect for server-side graphics, multi-page PDFs, and custom visualizations. I have been using [node-canvas](https://github.com/Automattic/node-canvas) to generate OpenGraph images for my blog, but this one seems more powerful and performant. I might consider switching over, meanwhile, let me know if you use it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Effective Multistep Forms",
        "url": "https://smashingmagazine.com/2024/12/creating-effective-multistep-form-better-user-experience",
        "description": "Forms are tricky enough to style, but creating a great user experience goes beyond just validation. In this article, Jima Victor dives into designing effective multi-step forms, with a focus on smooth navigation between sections.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JS Animations with Kinesis",
        "url": "https://kinesisjs.com/",
        "description": "Looking to add sleek, real-time animations to your web projects? Check out Kinesis, a lightweight JS library for creating parallax effects, cursor tracking, and scroll-based animations. Simple, fast, and perfect for full-stack devs who want to elevate their UIs without extra bulk. (No, it’s not Amazon Kinesis... this one’s about smooth animations, not streaming terabytes of data!)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Mapping Over Promises in JavaScript",
        "url": "https://telerik.com/blogs/mapping-promises-javascript",
        "description": "Ever run into the classic \"*why is my map returning promises instead of resolved values*\" problem? This article dives into the best ways to handle mapping promises, from using for...of loops to leveraging `Promise.all()` (or `Promise.allSettled()`). But there's more: `p-map`, a popular third-party library for keeping your async workflows clean and powerful.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Astro 5.0",
        "url": "https://astro.build/blog/astro-5/",
        "description": "This new release, among many things, introduces the **Content Layer API**, a game-changing way to manage content. It provides a unified, type-safe API to define, load, and access your content, no matter the source. Since my blog is built with Astro (still on an older version), I can’t wait to upgrade and try out the Content Layer API myself.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "How JavaScript Works",
      "author": "Douglas Crockford",
      "description": "Douglas Crockford starts by looking at the fundamentals: names, numbers, booleans, characters, and bottom values. JavaScript's number type is shown to be faulty and limiting, but then Crockford shows how to repair those problems. He then moves on to data structures and functions, exploring the underlying mechanisms and then uses higher order functions to achieve class-free object oriented programming. The book also looks at eventual programming, testing, and purity, all the while looking at the requirements of The Next Language. Most of our languages are deeply rooted in the paradigm that produced FORTRAN. Crockford attacks those roots, liberating us to consider the next paradigm. He also presents a strawman language and develops a complete transpiler to implement it. The book is deep, dense, full of code, and has moments when it is intentionally funny.",
      "coverImageUrl": "./15962fb5d3ae6174e8116cff85aa1b5155cb4cfe0889e72b477fc268122def1c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1949815005?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1949815005?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "How To Improve INP: React⚛️",
        "url": "https://kurtextrem.de/posts/improve-inp-react"
      },
      {
        "title": "React Bluesky Embed",
        "url": "https://react-bluesky-embed.vercel.app/"
      },
      {
        "title": "Working with JavaScript's Scheduler API",
        "url": "https://trevorlasn.com/blog/javascript-scheduler-api"
      },
      {
        "title": "Biome's Approach to Multi-File Analysis",
        "url": "https://arendjr.nl/blog/2024/11/biome_approach_to_multi_file_analysis"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 400,
    "title": "Ten years of Let’s Encrypt",
    "slug": "2024-11-25-382-ten-years-of-let-s-encrypt",
    "date": "2024-11-25",
    "templateType": "mce-mailchimp",
    "intro": "Howdy, \nDo you know what Let's Encrypt is? If you've ever browsed a website with that little padlock icon in the address bar in the last 10 years, chances are it’s thanks to Let's Encrypt. This free, automated, and open certificate authority has made it simple for websites to adopt HTTPS, ensuring secure connections for users everywhere.  \n\nExactly 10 years ago today, Let's Encrypt made its debut, introducing a game-changing idea that forever altered the web's security landscape. I still remember the days before Let's Encrypt (I am old!) and how this initiative democratized access to SSL and TLS certificates, which were once cumbersome, expensive, and out of reach for most website owners. For years, the prohibitive costs and technical hurdles made securing websites a luxury rather than a standard practice—something that, in hindsight, feels unjustifiable.  \n\nIMHO Let’s Encrypt not only made HTTPS accessible but also sparked a movement that raised the bar for internet safety, making the web a better place for all of us. It’s a shining example of how technology, when wielded with purpose, can create sweeping, positive change.  \n\nAs we celebrate this milestone, let’s also take a moment to honor [Peter Eckersley](https://en.wikipedia.org/wiki/Peter_Eckersley_(computer_scientist)), one of Let’s Encrypt’s co-founders, whose vision and efforts helped make this possible. Peter passed away in 2022, but his contributions live on, securing millions of websites worldwide.  \n\nHere’s to the kind of bold ideas that make technology a force for good, reminding us that a brighter, safer web is within reach when innovation meets generosity. I hope the rest of the curated content in this newsletter will keep you informed and inspired. Mastering the world of full-stack development and staying up-to-date with the infinite news in web development can feel daunting, but let’s tackle it together—with passion and purpose.\n\nYour editor, [Luciano](https://loige.co/) (who is also on [Bluesky](https://bsky.app/profile/loige.co), BTW)\n\nPS: one of my favourite [Programmer Humor jokes](https://www.reddit.com/r/ProgrammerHumor/comments/7x2ugb/lets_encrypt/) is relevant here! 🤣",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science“",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "10 years of Let’s Encrypt",
        "url": "https://letsencrypt.org/2014/11/18/announcing-lets-encrypt",
        "description": "If you are curious to see the post that, exactly 10 years ago, marked the debut of Let's Encrypt, here you have it!",
        "imageUrl": "./b8e39815016e0d2f55c6a79a778204c027473a95e9724d3b3cfcee54646467c5.png",
        "featured": true
      },
      {
        "title": "Revamping a Five-Year Old Node.js Project",
        "url": "https://dongdongzhang.me/blog/post-revamping-a-five-year-old-nodejs-project/",
        "description": "Last week, we featured this article on revamping a five-year-old Node.js project, but unfortunately, the link was broken—sorry about that! Big thanks to [David](https://bsky.app/profile/rootothez.bsky.social) for pointing it out. This time, it should work! The article dives into how small, focused updates and smart decisions can breathe new life into an aging codebase. You'll find some valuable insights here if you're currently wrestling with technical debt or modernizing old projects.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS Gets a New Logo",
        "url": "https://michaelcharl.es/aubrey/en/code/new-rebeccapurple-css-logo",
        "description": "If you're a fan of subtle yet meaningful design in tech, you’ll love Michael Charles' exploration of the new CSS logo inspired by the **rebeccapurple** color. This beautiful tribute to the late Eric Meyer’s daughter Rebecca goes beyond aesthetics—it’s a reminder of the human connections behind the technologies we use every day. The article unpacks the thought process behind the design, what \"rebeccapurple\" represents in the web community, and how logos can embody more than just branding.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What I Wish Someone Told Me About Postgres",
        "url": "https://challahscript.com/what_i_wish_someone_told_me_about_postgres",
        "description": "PostgreSQL has become my favorite SQL database—it’s powerful, versatile, and full of rewarding “aha” moments. This article dives into what the author wishes they had known sooner. Think secrets unlocked with `EXPLAIN`, the quirks of `jsonb` vs. `json`, and why embracing constraints can save you big headaches. If you’re working with Postgres, there’s a lot to like here.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "AWS Lambda turns 10",
        "url": "https://aws.amazon.com/blogs/aws/aws-lambda-turns-ten-the-first-decade-of-serverless-innovation",
        "description": "And guess what?! We have another 10th birthday: **happy birthday, AWS Lambda**! Lambda has been one of my favorite technologies ever since I started using it back in 2016. Its ability to simplify serverless development and scale effortlessly still amazes me today—and now, I’m even [writing a book about it](https://rust-lambda.com/)! This post from AWS reflects on a decade of serverless innovation, exploring how Lambda has transformed application design and opened up new possibilities for developers everywhere. It’s a great read if you want to dive into how far serverless has come and where it’s headed next. BTW, there's also a [lovely celebration video](https://www.youtube.com/watch?v=oubk8Au4o7c) interviewing some serverless heroes and experts that is also worth a watch!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Ordinary Puzzles",
        "url": "https://github.com/mmazzarolo/ordinary-puzzles-app",
        "description": "Last week, I stumbled across this gem: [Ordinary Puzzles](https://ordinarypuzzles.com/). It’s a fantastic, simple, yet very entertaining puzzle game built with React Native and fully open source. You can play it on your mobile or right in your browser—I tried a few sessions on the web, and it's very sleek... though fair warning, it’s a bit addictive 😄. The code is beautifully written and well-documented, making it a great source of inspiration if you’ve been thinking about using your web dev skills to build a game.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "7 Bit Encoding (Parody Music Video)",
        "url": "https://youtube.com/watch?v=gVeYtlk7IXc",
        "description": "The entertainment isn’t over! Last week, I stumbled upon this awesome song by the incredible [Dylan Beattie](https://www.youtube.com/@DylanBeattie)—basically Seven Nation Army reimagined for tech nerds. It’s clever, catchy, and the perfect way to unwind for five minutes. If you need a little break or just want to enjoy some tech-themed musical brilliance, you’ve got to check this out! 🎸",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./eb4eb48d11278709a229f070c8e01db1c013344399b2b7a0839c0353af8c0c0f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "High-Performance Serverless with Rust",
        "url": "https://infoq.com/news/2024/11/high-performance-serverless-rust"
      },
      {
        "title": "Making AWS News stupid fast with smart caching",
        "url": "https://lucvandonkersgoed.com/2024/11/16/making-aws-news-stupid-fast-with-smart-caching"
      },
      {
        "title": "Write collaborative web apps with Hocuspocus",
        "url": "https://tiptap.dev/docs/hocuspocus/introduction"
      },
      {
        "title": "Refactoring barrel files with codemods",
        "url": "https://mmazzarolo.com/blog/2024-11-10-removing-barrel-file-references-with-a-codemod"
      },
      {
        "title": "Dependencies vs. devDependencies for JavaScript apps",
        "url": "https://angelika.me/2024/11/11/dependencies-vs-dev-dependencies-javascript-apps"
      },
      {
        "title": "Managing Timezones in JavaScript Apps",
        "url": "https://nikgraf.com/blog/managing-timezones-in-javascript-apps"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 399,
    "title": "A frictionless API-first full-stack development workflow!",
    "slug": "2024-11-18-381-a-frictionless-api-first-full-stack-development-workflow",
    "date": "2024-11-18",
    "templateType": "mce-mailchimp",
    "intro": "Heya, \nFor the past few weeks, I've been deep into a new project packed with frontend components, using React and Next.js. As much as I love working with frontend, backend, and APIs, I’ve always felt there’s been a disconnect between these parts—lots of repetition and frustration when connecting them all together.\nBut guess what? I think I've finally cracked a decent workflow that ties everything together in a way that feels *really* smooth. The key? An API-first approach that lets me design my API upfront, keep everything in sync across the frontend and backend, and even spin up a mock dev server to test things out *before* diving into the backend work.\nHere’s how I’m doing it:[**TypeSpec**](https://typespec.io/) to define my OpenAPI specification—it's been a game-changer! TypeSpec is ridiculously simple to learn but powerful, making writing specs a breeze compared to manually working with OpenAPI YAML.[**Prism**](https://github.com/stoplightio/prism) to turn the OpenAPI spec generated by TypeSpec into a fully functional mock server. This way, I can get started on the frontend even when the backend isn't ready yet.[**ReactQuery**](https://tanstack.com/query/) to handle data fetching in the frontend app (even when using server-side rendering with Next.js!).[**OpenAPI React Query Codegen**](https://github.com/7nohe/openapi-react-query-codegen) to generate an abstraction layer for ReactQuery, covering all my endpoints and, importantly, keeping my types consistent across both frontend and backend.In short, I finally have an API-first full-stack workflow that feels frictionless and keeps everything in sync. I’m excited to share more about it with you. You’ll find references to these tools in this newsletter, along with lots of other curated content as usual. If this is a topic that interests you, just reply to this email—I might even write a more detailed post on [my blog](https://loige.co/) to dive deeper into this approach!\nNow, let's jump into this week's content and keep the inspiration flowing.\nSee you in the next one, awesome full-stack friend! 👋\n*— Your editor, Luciano*",
    "quote": {
      "text": "The science of today is the technology of tomorrow“",
      "author": "Edward Teller",
      "authorTitle": "Physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "Should masonry be part of CSS grid?",
        "url": "https://ishadeed.com/article/css-grid-masonry",
        "description": "If you've admired Pinterest-style layouts, [Ahmad Shadeed](https://ishadeed.com/)'s latest article is going to be a great read! It dives into how CSS Grid now supports native masonry layouts, eliminating the need for JavaScript hacks. While the feature is currently Firefox-exclusive (so some interactive previews might not work in your browser), the author includes handy videos as an alternative.",
        "imageUrl": "./751e0d42684b500e68bcd0936f4dbecd2004e408e1bf2687d34d39e71bc6cac2.png",
        "featured": true
      },
      {
        "title": "How to fetch data in React",
        "url": "https://robinwieruch.de/react-fetching-data",
        "description": "If you’ve used React, chances are you’ve fetched data from a component. While it seems simple (just use the `fetch` API), the devil is in the details—doing it right is more involved than you’d think! [Robin Wieruch](https://www.robinwieruch.de/) unpacks the nuances of data fetching in React, covering libraries and best practices to help you fetch not just correctly, but consistently and concisely. The article also explores fetching in the server VS fetching in the client... A great read to level up your React game!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "575 Million Hours Clicking Cookie Banners",
        "url": "https://legiscope.com/blog/hidden-productivity-drain-cookie-banners.html",
        "description": "Cookie banners are everywhere, but do they really improve privacy? Legiscope’s article dives into this controversial topic, examining the hidden costs of these pop-ups and whether they actually serve their intended purpose. Do you hate cookie banners, think they serve a good purpose, or have a different take altogether? I’d love to hear your thoughts: reply to this email and let me know what you think!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Prism: turn OpenAPI specs into a mock servers",
        "url": "https://github.com/stoplightio/prism",
        "description": "Working with APIs often involves testing and debugging, and that’s where **Prism** shines. This toolset simplifies API mocking and contract testing, supporting OpenAPI v2, v3.x, and even Postman Collections. It lets you spin up life-like mock servers directly from your API specs and serves as a validation proxy for ensuring contract compliance. I used it last week while working on a React frontend project and absolutely loved how easy and powerful it is—definitely worth a look!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "New CSS that can actually be used in 2024",
        "url": "https://thomasorus.com/new-css-that-can-actually-be-used-in-2024.html",
        "description": "CSS is always evolving, but which new features are worth using in 2024? [Thomas Orus](https://thomasorus.com/) cuts through the noise and highlights the CSS advancements that are practical and ready for real-world use. From better layout controls to powerful design utilities, this guide showcases features that will make your styling more efficient and your code cleaner. With plenty of practical examples, the article clearly shows why these features are quite cool.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pagefind — Static low-bandwidth search",
        "url": "https://pagefind.app/",
        "description": "Static low-bandwidth search](https://pagefind.app/) — If you're looking to improve search functionality on your website without relying on external services, **Pagefind** might be just what you need. This lightweight, client-side search engine is designed specifically for static sites, with a setup that's so minimal it’s almost too easy. While I’m a big fan of [OramaSearch](https://orama.com/) (another great open-source alternative), I’m really intrigued by how Pagefind targets static websites and simplifies the process. I’m looking forward to trying it out, possibly for my personal website...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Beautiful focus outlines",
        "url": "https://medienbaecker.com/articles/focus-outlines",
        "description": "Focus outlines are super important for accessibility, but they often get ignored or styled in ways that can actually hurt usability. This article breaks down why focus outlines matter and shows you how to style them right without messing with your design. With lots of practical examples, you’ll learn how to make your site easier to navigate for everyone while keeping it looking sharp.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt, and David Thomas",
      "description": "Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to Fight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced program.",
      "coverImageUrl": "./3f3ef6d1bb3be6c83ae2958bb5505dda3ca02d2fc5cbc5c0d0116ca167dc1ecb.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Revamping a Five-Year Old Node.js Project",
        "url": "https://example.com/blog/post-revamping-a-five-year-old-nodejs-project"
      },
      {
        "title": "Caching Astro fetch Requests",
        "url": "https://duffn.dev/caching-astro-fetch-requests"
      },
      {
        "title": "Essential tsconfig.json options you should use",
        "url": "https://tduyng.com/blog/tsconfig-options-you-should-use"
      },
      {
        "title": "Inline event handlers still fire when passed to React's dangerouslySetInnerHTML",
        "url": "https://macarthur.me/posts/safer-dangerouslysetinnerhtml"
      },
      {
        "title": "How to Set Up Next.js 15 for Production in 2024",
        "url": "https://reactsquad.io/blog/how-to-set-up-next-js-15-for-production"
      },
      {
        "title": "tiny-static-map",
        "url": "https://github.com/bopjesvla/tiny-static-map"
      },
      {
        "title": "TypeSpec: Describe APIs",
        "url": "https://typespec.io/"
      },
      {
        "title": "TanStack Query (React Query)",
        "url": "https://tanstack.com/query/"
      },
      {
        "title": "OpenAPI React Query Codegen",
        "url": "https://github.com/7nohe/openapi-react-query-codegen"
      },
      {
        "title": "Is Serverless making a comeback in the enterprise? (podcast)",
        "url": "https://awsbites.com/135-enterprise-serverless/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 398,
    "title": "11 HTML best practices for login & sign-up forms",
    "slug": "2024-11-11-380-11-html-best-practices-for-login-sign-up-forms",
    "date": "2024-11-11",
    "templateType": "mce-mailchimp",
    "intro": "Ciao, \nThis week’s hand-picked selection is inspired by the content that caught my attention last week. It’s a mix of fresh takes on web development, from HTML best practices for login forms to the magic of container queries, with a dash of animated UI fun and React tips. I’ve put this together with the hope that it keeps you inspired and informed on the latest trends in full-stack development. If you have been following along for the last few issues, you can probably tell that I have been working on React/frontend-heavy projects lately... But  I am curious to know what you’re working on! Reply to this email and let me know, I'd love to hear from you!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response“",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "11 HTML best practices for login & sign-up forms",
        "url": "https://evilmartians.com/chronicles/html-best-practices-for-login-and-signup-forms",
        "description": "Let’s be real, login and signup forms are everywhere, but they’re rarely done right. This guide from Evil Martians cuts through the noise with straightforward HTML tips to make your forms more accessible, secure, and user-friendly.",
        "imageUrl": "./35e7778f6c62bc09895081279bb0d7960e4f0fc10d8c8e8cd301f8776fca971e.png",
        "featured": true
      },
      {
        "title": "Why would anyone need JavaScript generator functions?",
        "url": "https://jrsinclair.com/articles/2022/why-would-anyone-need-javascript-generator-functions",
        "description": "Here’s an article I stumbled upon again and couldn't resist sharing, even though it's not brand new. Generators are one of my favorite JavaScript features, and James Sinclair’s piece is a clear, practical dive into why they’re more useful than you might think. Have you ever used generator functions for something meaningful in production? I’d love to hear about it—let me know! If you haven't, make sure to check this one out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Friendly Introduction to Container Queries",
        "url": "https://joshwcomeau.com/css/container-queries-introduction",
        "description": "We keep featuring Josh Comeau’s content because it’s consistently solid and a pleasure to read. His introduction to CSS container queries is no exception—it breaks down how to style elements based on their own size, not just the viewport, bringing a new level of responsiveness to your layouts.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "EldoraUI",
        "url": "https://eldoraui.site/",
        "description": "EldoraUI isn’t your typical toolkit—no standard buttons or modals here. Instead, it’s packed with animated elements that can bring your designs to life. If you're curious, check out their crazy tag component [here](https://www.eldoraui.site/components/special-animations/tag) for a taste (spoiler, it's 3D and uses [three.js](https://threejs.org/))... Definitely worth a look, even if just for a healthy dose of inspiration!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Component Composition in React",
        "url": "https://tkdodo.eu/blog/component-composition-is-great-btw",
        "description": "Component composition is one of the most interesting patterns I have seen lately in React and I often wondered how one could implement it. In my research, I discovered this article that explains the pattern really well and provides some excellent examples.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Fluid Everything Else",
        "url": "https://css-tricks.com/fluid-everything-else",
        "description": "We’ve already touched on container queries, which are gaining traction in responsive web design. Now, this CSS-Tricks article takes it a step further, showing how to make everything else in your design—like typography, images, and more—fluid, not just the layout. It's a great read for developers looking to create a truly responsive experience across all screen sizes.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The magic of keeping one level of abstraction per function",
        "url": "https://tymzap.com/blog/the-magic-of-keeping-one-abstraction-level-per-function",
        "description": "This article dives into the concept of keeping one abstraction level per function, a simple but powerful practice that can make your code easier to understand and maintain. This is a short read, but I liked the React-focused examples.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line, 2nd Edition: A Complete Introduction",
      "author": "William Shotts",
      "description": "You've experienced the shiny, point-and-click surface of your Linux computer—now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell (or command line). Along the way you'll learn the timeless skills handed down by generations of experienced, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./2324c9286f1eced27314fb1f6df2b46d6759657ce2fc7f8a82e1e4751499bc17.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593279523?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593279523?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "TanStack Form v0",
        "url": "https://tanstack.com/form"
      },
      {
        "title": "Exploring the browser rendering process",
        "url": "https://abhisaha.com/blog/exploring-browser-rendering-process"
      },
      {
        "title": "SVG Shaders",
        "url": "https://svg-shaders.vercel.app/"
      },
      {
        "title": "Maverick - Build & ship fast components with ease",
        "url": "https://github.com/maverick-js"
      },
      {
        "title": "Kevin Powell's top 5 most popular front-end tips (video)",
        "url": "https://youtube.com/watch?feature=youtu.be&v=DGOeyJjq80g"
      },
      {
        "title": "Ship faster with landing page templates",
        "url": "https://awesome-landingpages.vercel.app/"
      },
      {
        "title": "total-typescript/tsconfig: The simplest way to set up your tsconfig.json (genuinely a time-saver!)",
        "url": "https://github.com/total-typescript/tsconfig"
      },
      {
        "title": "time-flies (amazing JavaScript web-based clock visualization)",
        "url": "https://github.com/vnglst/time-flies"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 397,
    "title": "React Native's New Architecture",
    "slug": "2024-11-04-379-react-native-s-new-architecture",
    "date": "2024-11-04",
    "templateType": "mce-mailchimp",
    "intro": "Hey there, developers! 🎃\nWelcome to this week’s edition of the FullStack Bulletin! With Halloween behind us we don’t need to code any scary web experiences anymore! Instead, let’s focus on building amazing projects that impress and inspire.\nWe’ve curated some fantastic resources for you this week, from the exciting updates in React Native’s architecture to practical tips for shrinking your Git repository size. Each new insight you gain brings you one step closer to mastering your craft, so let’s embrace this journey together and keep pushing the boundaries of what we can create! 🚀Happy full-stack coding! 💻\n— Your scary editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art“",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "React Native's New Architecture",
        "url": "https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here",
        "description": "Exciting changes are rolling out in the React Native world, and if you’re a full-stack developer occasionally building mobile apps you might love this! The new React Native architecture (rolled out in v0.76) promises a more streamlined experience for both developers and users, focusing on a modular design that improves speed, adaptability, and scalability across platforms.",
        "imageUrl": "./1b5c88fbb8a5395b8bbf15235b9a42c2aa7089d56287c3b65a12976880810e67.jpg",
        "featured": true
      },
      {
        "title": "How we shrunk our Javascript monorepo git size by 94%",
        "url": "https://jonathancreamer.com/how-we-shrunk-our-git-repo-size-by-94-percent",
        "description": "Keeping your Git repository lightweight can be a real challenge, especially as projects scale and teams grow. Jonathan Creamer shares a practical, in-depth look at how his team managed to shrink their Git repo size by an impressive 94% (from 178GB to 5GB)! For full-stack developers dealing with bloated repos or long clone times, this post offers actionable techniques and tools for reducing repo size without sacrificing essential history.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Understanding npm audit and fixing vulnerabilities",
        "url": "https://niraj.life/blog/understanding-npm-audit-fixing-vulnerabilities-nodejs",
        "description": "Security vulnerabilities in Node.js applications can feel like an ever-present threat, but tools like `npm audit` offer ways to stay ahead. Niraj's guide dives into how to make the most of `npm audit` to identify and fix vulnerabilities, making it an invaluable read for anyone committed to secure, stable code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Headless, boneless, skinless & lifeless UI",
        "url": "https://nerdy.dev/headless-boneless-and-skinless-ui",
        "description": "UI abstractions are always evolving, and Nerdy Dev dives into some of the most interesting ones, even giving them playful names—think \"skinless,\" \"boneless,\" and \"lifeless\" components! This article explores how these lightweight, highly customizable abstractions differ from the \"fully loaded\" libraries (like Chakra, ShadCN, Radix, or MUI) and why they might make sense for developers wanting ultimate flexibility. I loved this read; it’s the first time I’ve seen UI toolkits categorized in such a unique way! It’s perfect for anyone aiming to build a modular design system that’s tailored to their own logic and style.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS Triggers",
        "url": "https://css-triggers.com/",
        "description": "CSS Triggers is a powerful piece of documentation that breaks down how different CSS properties interact with browser rendering, detailing their effects across the key rendering phases: Layout, Paint, and Composite. It’s a must-read for anyone looking to optimize their CSS. Did you know, for example, that changing `z-index` in WebKit can alter an element’s geometry, potentially shifting other elements and requiring a layout update? Covering Blink (Chromium), Gecko (Firefox), and WebKit (Safari), this resource offers a deep dive into performance considerations for all major browsers.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Nix explained from the ground up",
        "url": "https://youtube.com/watch?v=5D3nUU1OVx8",
        "description": "Are you curious about Nix and how it enables software to be built in a completely deterministic way? Lately, I’ve been trying to get into Nix myself, and let me tell you, it’s been a bit of a rocky journey. However, I’ve come across what I believe is the best video on the topic so far. It explains Nix from the ground up with clear and sensible examples, covering everything from its origins to core concepts like builtins, paths, derivations, and even NixOS. If you’re looking to learn Nix to automate your environments, standardize your deployments, or for countless other reasons, this video is a fantastic place to start!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "vizzu",
        "url": "https://lib.vizzuhq.com/latest",
        "description": "Vizzu is an exciting library packed with tools to help you create engaging interactive visualizations. If you’re dealing with complex datasets and want to present your information in a clear and dynamic way, this library is a fantastic option. It offers a user-friendly interface along with powerful features that can be tailored to fit your specific needs.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems",
      "author": "Martin Kleppmann",
      "description": "Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords? In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications.",
      "coverImageUrl": "./df3d8a2772fadc77d4a39343e02de90d990f2bd082e84cb971374cb38bb84a55.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449373321?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449373321?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "HTML Form Validation is heavily underused",
        "url": "https://expressionstatement.com/html-form-validation-is-heavily-underused"
      },
      {
        "title": "How to create a React Dropdown",
        "url": "https://robinwieruch.de/react-dropdown"
      },
      {
        "title": "Next.js 15 + React 19",
        "url": "https://ui.shadcn.com/docs/react-19"
      },
      {
        "title": "snow-fall: A web component to add snow to your web site (or to an element on your web site).",
        "url": "https://github.com/zachleat/snow-fall"
      },
      {
        "title": "Making content-aware components using CSS :has(), grid, and quantity queries",
        "url": "https://piccalil.li/blog/making-content-aware-components-using-css-has-grid-and-quantity-queries"
      },
      {
        "title": "Re-implementing JavaScript's == in JavaScript",
        "url": "https://evanhahn.com/re-implementing-javascript-double-equals-in-javascript"
      },
      {
        "title": "Eliminate the IAM User (AWS Bites podcast)",
        "url": "https://awsbites.com/134-eliminate-the-iam-user/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 396,
    "title": "Linking Directly to Web Page Content",
    "slug": "2024-10-28-378-linking-directly-to-web-page-content",
    "date": "2024-10-28",
    "templateType": "mce-mailchimp",
    "intro": "Hello and welcome to another issue where the love for the web and the thrill of learning new things await you! With our curated selection of content, we dive into a variety of topics that will inspire you to sharpen your skills and explore the vast world of full-stack development.\n\nJust last week at [Codemotion Milan](https://conferences.codemotion.com/milan2024/), I attended a very entertaining and provocative keynote by [Francesco Sciuti](https://www.francescosciuti.it/) and [Gabriele Santomaggio](https://x.com/gsantomaggio), where they claimed that the full-stack developer is only a mythological figure that does not exist in real life... While I deeply loved that talk, I am eager to show them that full-stack web development is a career worth pursuing! It's certainly not an easy one and it takes a lot of grind and passion to achieve proficiency in both frontend and backend... but with each new piece of knowledge, we’re proving that being a full-stack developer is not just a title, it’s a journey of continuous growth and discovery. So, let’s dive into this week's content and celebrate the excitement of learning together! Happy reading! 🤓\n\n*Your editor, [Luciano](https://loige.co/)*\n\nPS: if you are curious to see what I presented at Codemotion, you can check out my slides for my [talk about building SaaS platforms on AWS](https://fth.link/saas-mi) and the ones for my [workshop about Writing Lambda Functions in Rust](https://loige.link/rusty-sls). Let me know if you find them useful!",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner“",
      "author": "Omar Bradley",
      "authorTitle": "Military Officer",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "Linking Directly to Web Page Content",
        "url": "https://alfy.blog/2024/10/19/linking-directly-to-web-page-content.html",
        "description": "Ever wanted to create a link that highlights a specific piece of text on a long web page? Well, there's a web standard for that! It’s called **URL Fragment Text Directives** (yeah, quite the mouthful), and this article does a great job summarizing what you need to know if you’re too busy to dive into the [full spec](http://https//wicg.github.io/scroll-to-text-fragment/). By the way, this is the same feature Chrome uses when you select text, right-click, and choose \"Copy Link to Highlight.\" I always thought that was just a Chrome thing!",
        "imageUrl": "./22de2505842b2f3e55ecac9a8cacdf70acb38d2913bae7778e13bbff91723866.png",
        "featured": true
      },
      {
        "title": "The story of web framework Hono",
        "url": "https://blog.cloudflare.com/the-story-of-web-framework-hono-from-the-creator-of-hono",
        "description": "Hono is a lightweight framework designed with a \"standards-first\" approach, using the Request API and Web Streams. Because of this, Hono runs seamlessly across just about any platform: Node.js, Deno, Bun, Cloudflare Workers, Netlify, or AWS Lambda. If you’re interested in frameworks built for flexibility and performance, check out the story behind Hono from its creator, who shares the motivations and technical challenges that shaped it. I personally think this framework is not just another framework, we'll be hearing more about it! PS: do you know what the name Hono means? 🔥",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Radix Vue",
        "url": "https://radix-vue.com/",
        "description": "Radix is one of the best and most complete (unstyled) component libraries out there. With a strong focus on accessibility and a flexible, \"unstyled\" approach, it’s a perfect fit for almost any frontend project. In fact, it’s become the foundation for some other popular projects, like Shadcn! While Radix was originally built for React, Vue fans can now rejoice with this fantastic Radix port for Vue, all set for you (ba da tss 🥁).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Svelte 5 is alive",
        "url": "https://svelte.dev/blog/svelte-5-is-alive",
        "description": "And for the fans of Svelte, we also have very big news... Svelte 5 is here, packed with exciting updates! This release brings new features designed to push Svelte’s flexibility even further, like enhanced support for reactivity and some major compiler improvements. One of the most intriguing (and perhaps a bit controversial) additions is “**runes**,” which aim to strip away some of the \"magic\" behind how Svelte works, giving you more transparency and control. I heard opposing views on this feature. What do you think? Are runes making Svelte better or worse?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why I’m skeptical of rewriting JavaScript tools in “faster” languages",
        "url": "https://nolanlawson.com/2024/10/20/why-im-skeptical-of-rewriting-javascript-tools-in-faster-languages",
        "description": "This article brings a unique take on rewriting JavaScript tools in faster languages, like Rust or Go, challenging some widely held assumptions. The author raises points about potential maintenance issues, a steeper learning curve, and concerns over adding complexity for marginal gains, especially as JavaScript itself continues to evolve in speed and capability. While I’m not fully aligned with this perspective—having seen firsthand the benefits of high-performance tools like Vite and Biome—I think it’s a thought-provoking read. Are faster languages really worth the trade-offs for our beloved JavaScript tooling? It’s definitely a perspective worth exploring, so give it a read and let me know where you stand!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node v23.0.0",
        "url": "https://nodejs.org/en/blog/release/v23.0.0",
        "description": "Big news for Node.js users: version 23.0.0 is here, packed with powerful updates! This release brings impressive performance boosts with a new V8 engine, along with security upgrades and enhanced diagnostics to make debugging smoother and monitoring production applications easier. But here’s a reminder: as an odd-numbered release, Node 23 isn’t part of the long-term support (LTS) track. Think of it as an exciting preview of what’s to come in Node.js 24. If you’re keen on stability, you might want to wait for the LTS release, but if you’re ready to explore the latest and greatest, dive into Node 23 and see what’s new!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Best Testing Practices in Node.js",
        "url": "https://blog.appsignal.com/2024/10/16/best-testing-practices-in-nodejs.html",
        "description": "Sticking with Node.js content, this article on the best testing practices covers 15 suggestions for writing effective tests, including essential strategies for unit, integration, and end-to-end testing. Key highlights include the importance of setting up a solid testing framework with tools like Mocha, Jest, or Ava, writing isolated tests to focus on specific functionalities, and using descriptive test names to enhance clarity. The article also emphasizes automating testing with continuous integration to save time and catch issues early.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld, Peter Morville, and Jorge Arango",
      "description": "Information architecture (IA) is far more challenging―and necessary―than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond. To guide you through this broad ecosystem, this popular guide―now in its fourth edition―provides essential concepts, methods, and techniques for digital design that have withstood the test of time. UX designers, product managers, developers, and anyone involved in digital design will learn how to create semantic structures that will help people engage with your message.",
      "coverImageUrl": "./3e857576b1f6822b7f58f7f924b90808521bc509dd61ec08cb52b48db6696a20.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Next.js 15",
        "url": "https://nextjs.org/blog/next-15"
      },
      {
        "title": "Cacheable: Caching for Nodej.js",
        "url": "https://github.com/jaredwray/cacheable"
      },
      {
        "title": "5 differences between React server components and server-side rendering",
        "url": "https://tymzap.com/blog/5-differences-between-react-server-components-and-server-side-rendering"
      },
      {
        "title": "How to convert CommonJS to ESM",
        "url": "https://deno.com/blog/convert-cjs-to-esm"
      },
      {
        "title": "Node.js 23 Released - Here's What's Interesting",
        "url": "https://codu.co/articles/node-js-23-released-here-s-what-s-interesting-26j8irng"
      },
      {
        "title": "Hyper-responsive web components",
        "url": "https://trysmudford.com/blog/hyper-responsive-web-components"
      },
      {
        "title": "So, Your CMS Blew Up. Any Decent WordPress Alternatives Out There?",
        "url": "https://tedium.co/2024/10/20/wordpress-cms-alternatives-content-strategy-advice"
      },
      {
        "title": "How should <selectedoption> work?",
        "url": "https://jakearchibald.com/2024/how-should-selectedoption-work"
      },
      {
        "title": "Building Businesses in the Cloud (podcast)",
        "url": "https://awsbites.com/133-building-businesses-in-the-cloud-with-fiona-mckenna"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 395,
    "title": "Introducing Express v5: A New Era for Node.js Framework",
    "slug": "2024-10-21-377-introducing-express-v5-a-new-era-for-node-js-framework",
    "date": "2024-10-21",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nIn this edition, we’re diving into the latest Express.js v5 release, exploring new tools like the One React framework, and revisiting essential topics such as JavaScript fundamentals for React beginners. We’ve also got insights into the finer points of HTTP methods, tips on effective logging, and a roundup of the best free icon libraries to enhance your UI. From performance-focused alternatives like Ultimate Express to staying sharp on web standards, there’s something here to spark your curiosity and keep you at the top of your game. Let’s dig in and keep pushing the boundaries of what we can build on the web!\n\n— Your crazy editor, [Luciano](https://loige.co/)\nPS: I will be attending [Codemotion in Milan](https://conferences.codemotion.com/milan2024/) tomorrow and Wednesday! I will be delivering a workshop and a talk during these 2 days. If you are there too, come to say hello!",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers“",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Introducing Express v5: A New Era for Node.js Framework",
        "url": "https://expressjs.com/",
        "description": "Express.js has been a go-to framework for Node.js developers for years, and now, after a decade since its initial v5 announcement (yes, 10 years!), it’s finally here. This isn’t an overwhelming overhaul but more of a self-claimed \"*boring*\" release, focused on quality-of-life improvements and a promise of more frequent updates moving forward. While [Fastify](https://fastify.dev/) and other alternatives have gained popularity, Express.js is far from dead. If you want to know what’s new and why it’s still worth considering for your stack, this update is definitely worth a look.",
        "imageUrl": "./05402e12daa02eba0acace075b53084cbd7d54e0f2e2a9640e6232afd9da6c89.jpg",
        "featured": true
      },
      {
        "title": "JavaScript Refresher for React Beginners",
        "url": "https://freecodecamp.org/news/javascript-refresher-for-react-beginners",
        "description": "If you're diving into React or just need a quick JavaScript refresher, this article is a solid read. It covers the essential JavaScript concepts every React beginner should know, making sure you’re not tripped up by fundamentals while building components. Even if you’ve been coding in JavaScript for a while, it’s easy to overlook some of these key features in day-to-day development. This is a great way to brush up and get yourself ready to tackle React with confidence!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "One, a new React Framework",
        "url": "https://onestack.dev/",
        "description": "Built on Vite, One is a new React framework that simplifies development across web and native platforms with universal, typed routing that works seamlessly across static, server, and client pages. It also introduces an exciting new solution to handling data. The website features a quick video demo that showcases the strengths of this project (and they use [bun](https://bun.sh/), BTW).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The HTTP QUERY Method",
        "url": "https://ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-05.html",
        "description": "If you're into the finer details of HTTP protocols, this IETF draft will pique your interest. It dives into the use of \"safe\" HTTP methods with request bodies, addressing a key gap in current standards. This could have interesting implications for how APIs handle data and interactions, particularly around GET requests and the like. It's a technical read, but for those who love understanding the foundation of the web, this draft opens up some important discussions on evolving HTTP behavior. Definitely worth a look if you want to stay ahead of web standards development!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "21+ Best Free and Open-Source Icon Library for 2024",
        "url": "https://dev.to/icons/21-best-open-source-icon-libraries-o5n",
        "description": "Having a good set of icons can instantly elevate your design, making this resource essential for any developer or designer. This article covers 21 of the best open-source icon libraries, a topic we find ourselves returning to frequently because of its impact on UI/UX. Whether you're working on web or mobile projects, these libraries offer a wide range of options to fit your style and needs.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Fast http server with full Express compatibility",
        "url": "https://github.com/dimdenGD/ultimate-express",
        "description": "We already featured Express 5, but it's interesting to see new alternatives focused on performance continuing to emerge, like **Ultimate Express**. Built on µWebSockets, this library is a super-fast re-implementation of Express.js 4. It’s designed as a drop-in replacement with the same API and functionality, but it’s significantly faster. What's more, it's not a fork of Express but a complete rework aimed at maximum speed. The creators have ensured compatibility by running Express tests against it to match behavior. If performance is a top priority in your projects, this one’s worth checking out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "An Engineer’s Checklist of Logging Best Practices",
        "url": "https://honeycomb.io/blog/engineers-checklist-logging-best-practices",
        "description": "Logs are the lifeblood of debugging and monitoring, and getting them right can save you a lot of headaches. This checklist from the observability wizards at Honeycomb provides logging best practices that can help you write logs that are effective, clear, and actionable. From structuring logs to choosing what data to capture, this guide covers all the essentials to help you avoid common pitfalls and improve your system's observability.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.",
      "coverImageUrl": "./51701b382b61ac89a56f20e3ba8b153d2469e7d74c71e2312647e15f34f74184.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "A Whole Backend That Fits Into 1 YAML file",
        "url": "https://manifest.build/"
      },
      {
        "title": "Improving Application Availability: Redundancy and Persistence",
        "url": "https://medium.com/ssense-tech/improving-application-availability-redundancy-and-persistence-e68d1f891dc4"
      },
      {
        "title": "Glad I did it in Go",
        "url": "https://registerspill.thorstenball.com/p/glad-i-did-it-in-go"
      },
      {
        "title": "jiti: Runtime TypeScript and ESM support for Node.js",
        "url": "https://github.com/unjs/jiti"
      },
      {
        "title": "Types of React Components",
        "url": "https://robinwieruch.de/react-component-types"
      },
      {
        "title": "Eleventy v3.0.0 is now available",
        "url": "https://11ty.dev/blog/eleventy-v3"
      },
      {
        "title": "ESLint now officially supports linting of JSON and Markdown",
        "url": "https://eslint.org/blog/2024/10/eslint-json-markdown-support"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 394,
    "title": "How to make Product give a 💩 about your architecture proposal",
    "slug": "2024-10-14-376-how-to-make-product-give-a-about-your-architecture-proposal",
    "date": "2024-10-14",
    "templateType": "mce-mailchimp",
    "intro": "Hey, \nGet ready to supercharge your skills with this week’s newsletter! We’re diving into how to make your architecture proposals resonate with product teams, ensuring your tech voice is heard loud and clear. Plus, explore the exciting future of Vite and how void(0) will reshape JavaScript tooling with the power of Rust.\nDon’t miss our look at WebAssembly's game-changing potential for high-performance web apps, and check out Oops.js for adding seamless undo/redo functionality to your projects.\nAlso, be sure to explore the Online JWT Cracker for your security testing needs and SkellyCSS, the fun lightweight framework perfect for your Halloween-themed loading screens. Finally, TypeScript 5.7 Beta is out, packed with features to enhance your development experience.\nLet’s jump in and keep pushing the boundaries of what’s possible!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "This is the whole point of technology. It creates an appetite for immortality on the one hand. It threatens universal extinction on the other. Technology is lust removed from nature“",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "How to make Product give a 💩 about your architecture proposal",
        "url": "https://gieseanw.wordpress.com/2024/10/09/how-to-make-product-give-a-shit-about-your-architecture-proposal",
        "description": "In full stack development, mastering the art of working with product teams can be one of the most valuable skills in a technical team's toolkit. **Andrew Giesemann** addresses the often-overlooked challenge of aligning technical needs with product priorities. Giesemann provides practical strategies to help you navigate this critical skill—one that can influence not only technical outcomes but the overall success of your projects.",
        "imageUrl": "./af164462a003dfb8ba36e62e0e35fc0cd4b3c1d04883f1692b100ea759612d27.jpg",
        "featured": true
      },
      {
        "title": "Vite and the Future of JavaScript Tooling",
        "url": "https://youtube.com/watch?v=EKvvptbTx6k",
        "description": "I’m super excited to see this work happening! Not only does [Evan You](https://evanyou.me/) dive deep into the details of how [*void(0)*](https://voidzero.dev/) will evolve [Vite](https://vite.dev/), but this new tooling also involves a lot of Rust—one of my favorite languages lately. In this video, Evan explains how they’re addressing Vite’s current flaws and building it into the future engine for web development. If you’ve been following the announcement like I have, this video is packed with valuable insights directly from Evan, giving a clearer picture of the path forward.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Wasm is the new CGI",
        "url": "https://roborooter.com/post/wasm-is-the-new-cgi",
        "description": "This article dives into how WebAssembly (WASM) is changing the landscape of web development by enabling native-like performance and unlocking new possibilities for both frontend and backend work. Even though WASM adoption has been slow, I’m sure it will play a fundamental role in the future of the Web. The piece does a great job explaining why this technology is poised to become a game-changer, especially for high-performance applications and more complex web functionality.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🤭 Oops.js: undo/redo capabilities for your app",
        "url": "https://github.com/HeyPuter/Oops.js",
        "description": "Oops.js is a powerful library that brings industry-leading undo/redo capabilities to your applications, similar to what's found in software like Figma, Photoshop, and Visual Studio Code. For fullstack developers, this opens up exciting possibilities—whether you're building a simple text editor or a complex design tool, Oops.js makes it easy to add robust, intuitive undo/redo functionality. If you’re working on applications that require seamless user interactions and error correction, this library provides the tools you need to create a user experience that feels polished and professional.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Online JWT Cracker",
        "url": "https://jwt-cracker.online/",
        "description": "This web-based tool allows you to brute-force HS256, HS384, or HS512 JWT tokens directly from your browser—no software installation is needed. I'm super happy to see this project come to life, inspired by one of my open-source projects ([jwt-cracker](https://github.com/lmammino/jwt-cracker)). Beyond its practical use for developers needing to test the security of their JWT implementations, the website’s futuristic-techno design stands out. It feels like something straight out of a hacker movie, adding a fun edge to its functionality while offering a sleek user experience. If you're into security testing or love cool web tools, this is worth checking out.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "☠️ skellyCSS: A light-weight CSS framework to implement skeletons",
        "url": "https://github.com/ritterim/skellyCSS",
        "description": "SkellyCSS is a lightweight CSS framework that helps you quickly implement skeleton loading screens into your projects. These placeholder elements give users a visual indication that content is loading, improving the overall experience by reducing perceived wait times and layout shift after loading... And with Halloween around the corner, it’s the perfect time to bring out your inner skeleton — because nothing says \"*spook-tacular user experience*\" like a friendly skeleton loading screen!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "TypeScript 5.7 Beta",
        "url": "https://devblogs.microsoft.com/typescript/announcing-typescript-5-7-beta",
        "description": "This latest version introduces a host of features and improvements designed to enhance the developer experience and streamline code management. From catching never-initialized variables to supporting ES2024 and refining path handling for in-place imports, TypeScript 5.7 aims to empower developers with greater flexibility and efficiency in their projects. Check out this article if you are curious to see the full list of features and some code examples!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Hands-on Rust: Effective Learning through 2D Game Development and Play",
      "author": "Herbert Wolverson",
      "description": "Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters - and what better way to learn than by making games. Each chapter in this book presents hands-on, practical projects ranging from \"Hello, World\" to building a full dungeon crawler game. With this book, you'll learn game development skills applicable to other engines, including Unity and Unreal. Rust is an exciting programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters. With Rust, you have a shiny new playground where your game ideas can flourish. Each chapter in this book presents hands-on, practical projects that take you on a journey from \"Hello, World\" to building a full dungeon crawler game. Start by setting up Rust and getting comfortable with your development environment. Learn the language basics with practical examples as you make your own version of Flappy Bird. Discover what it takes to randomly generate dungeons and populate them with monsters as you build a complete dungeon crawl game. Run game systems concurrently for high-performance and fast game-play, while retaining the ability to debug your program. Unleash your creativity with magical items, tougher monsters, and intricate dungeon design. Add layered graphics and polish your game with style.",
      "coverImageUrl": "./fc839545e0ce9d054a8e5fd06bd9db03bc2c7e6cb606d0a346f712450d6b9bfd.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680508164?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680508164?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "HTML is for people",
        "url": "https://htmlforpeople.com/"
      },
      {
        "title": "Tenno: A live editable Markdown editor that lets you add cells like Excel!",
        "url": "https://tenno.app/"
      },
      {
        "title": "Visualize and process JSON in seconds",
        "url": "https://json4u.com/"
      },
      {
        "title": "sq: like jq but for databases",
        "url": "https://sq.io/"
      },
      {
        "title": "Avoiding the Lambda Doom Loop",
        "url": "https://aaronstuyvenberg.com/posts/lambda-timeout-doom-loop"
      },
      {
        "title": "Deno 2.0",
        "url": "https://deno.com/blog/v2.0"
      },
      {
        "title": "10+ ECMAScript Proposals",
        "url": "https://socket.dev/blog/tc39-advances-10-ecmascript-proposals-key-features-to-watch"
      },
      {
        "title": "Building a Single-Page App with htmx",
        "url": "https://jakelazaroff.com/words/building-a-single-page-app-with-htmx/"
      },
      {
        "title": "Node vs Bun: no backend performance difference",
        "url": "https://evertheylen.eu/p/node-vs-bun/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 393,
    "title": "void(0)",
    "slug": "2024-10-07-375-void-0",
    "date": "2024-10-07",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \n\nWelcome to this issue of our newsletter! I have some exciting topics lined up for you, starting with the announcement of VoidZero Inc., founded by Evan You, the creator of Vue and Vite. We’ll also explore developer happiness with insights from GitHub, practical strategies for reducing Docker image size, and how to incorporate the golden ratio into your CSS designs. Additionally, we’ll dive into TypeScript’s unknown type, the importance of TCP’s three-way handshake, and a fun QRCode library called QRFrame.\n\nAs always, we aim to inspire you to keep learning and exploring new concepts in full-stack development. So I hope you'll enjoy this curated selection for this week! Happy coding!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable“",
      "author": "Joseph Krutch",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "Announcing void(0)",
        "url": "https://voidzero.dev/posts/announcing-voidzero-inc",
        "description": "Last week, I bumped into this announcement from VoidZero Inc., and full stack developers should be excited. Founded by **Evan You**, the creator of Vue and Vite, this new venture promises scalable, developer-friendly tools like **Rolldown**, a powerful JavaScript bundler, and **Oxc**, a versatile linter, formatter, and more. Fun fact: most of these tools are written in Rust! 🦀 If you're looking for cutting-edge solutions that evolve with you, VoidZero Inc. is definitely one to watch.",
        "imageUrl": "./f07b6a4c23eab975fb1eab6d425e3bb0d1d1b31b60abf17561d4502951bf6ddc.jpg",
        "featured": true
      },
      {
        "title": "The ultimate guide to developer happiness",
        "url": "https://github.blog/engineering/engineering-principles/the-ultimate-guide-to-developer-happiness",
        "description": "This guide from GitHub breaks down the engineering principles that lead to happier, more productive developers, covering everything from better tooling to team culture. Packed with practical advice and actionable tips, it’s perfect for full stack developers and engineering leaders looking to create an environment where developers thrive and build better software.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Reduce Docker Image Size",
        "url": "https://dev.to/prodevopsguytech/how-to-reduce-docker-image-size-best-practices-and-tips-for-devops-engineers-1ahg",
        "description": "In this article, you'll learn practical strategies for minimizing image size, such as leveraging multi-stage builds, using smaller base images, and cleaning up unnecessary files. The article also highlights common pitfalls to avoid, making it easier to maintain efficient and performant Docker containers. If you're managing containerized applications, these actionable tips will help streamline your Docker process.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Golden Ratio in CSS",
        "url": "https://dev.to/madsstoumann/the-golden-ratio-in-css-53d0",
        "description": "This post will teach you about incorporating the golden ratio into your CSS design, and I found it super insightful! It dives into how this timeless principle can elevate your web projects by creating beautiful, balanced proportions. You'll pick up practical tips on applying the golden ratio to layout, spacing, and typography, which can really help enhance the overall user experience. If you’re looking to up your front-end game, this guide is worth checking out! Also, did you know that the golden ratio is based on the Fibonacci sequence? 🤯",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The unknown Type in TypeScript",
        "url": "https://mariusschulz.com/blog/the-unknown-type-in-typescript",
        "description": "I bumped into this well-written article on the `unknown` type in TypeScript while researching the topic, and I found it really complete. Although it’s not super recent, it dives deep into what the `unknown` type is, how it differs from any and never, and when to use it effectively. I also love that it incorporates the `Result` type a-la-Rust, which is something we mentioned in a previous newsletter! The explanations are clear, making it easy to grasp the nuances of this type. If you’re looking to deepen your understanding of TypeScript, this piece is definitely worth your time!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why TCP needs 3 handshakes",
        "url": "https://pixelstech.net/article/1727412048-Why-TCP-needs-3-handshakes",
        "description": "I came across this article on why TCP needs three handshakes, and it's a great read for anyone working on the web—no need to be a network nerd! After all, everything we do online goes over TCP, so it's essential to understand the technology we build upon. The article explains the three-way handshake process in an accessible way, making it easier to grasp how it establishes a reliable connection.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "qrframe: code-based qr code generator",
        "url": "https://github.com/zhengkyl/qrframe",
        "description": "I stumbled upon this GitHub repository for a library called QRFrame, and I couldn't help but feel excited—especially since I have a bit of a fixation with QRCodes (if you've been following this newsletter for a while, you might have picked that up). This library provides a simple way to create customizable QR code frames, making it easy to enhance your QR code designs. If you're looking to add a creative touch to your QR codes or simply to programmatically generate many cool QRCodes, definitely check it out!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Zero To Production In Rust: An introduction to backend development",
      "author": "Luca Palmieri",
      "description": "Zero To Production is the ideal starting point for your journey as a Rust backend developer. You will learn by doing: you will build a fully functional email newsletter API, starting from scratch. You'll learn how to:",
      "coverImageUrl": "./b5cf0046d51c250e66dbc458a337359201ce1bb52dd6391d606480d69e623211.jpg",
      "amazonUs": "https://www.amazon.com/dp/B0BHLDMFDQ?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B0BHLDMFDQ?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "better-auth: The most comprehensive authentication library for TypeScript",
        "url": "https://github.com/better-auth/better-auth"
      },
      {
        "title": "Web Components Are Not the Future",
        "url": "https://dev.to/ryansolid/web-components-are-not-the-future-48bh"
      },
      {
        "title": "The handleEvent() method is the absolute best way to handle events in Web Components",
        "url": "https://gomakethings.com/the-handleevent-method-is-the-absolute-best-way-to-handle-events-in-web-components"
      },
      {
        "title": "A guide to destructuring in JavaScript",
        "url": "https://piccalil.li/blog/a-guide-to-destructuring-in-javascript"
      },
      {
        "title": "Why Gumroad Didn't Choose htmx",
        "url": "https://htmx.org/essays/why-gumroad-didnt-choose-htmx"
      },
      {
        "title": "10 Tailwind techniques (Shadcn's thread on X)",
        "url": "https://x.com/shadcn/status/1842329158879420864"
      },
      {
        "title": "GitHub Action Runners on AWS (AWS Bites Podcast)",
        "url": "https://awsbites.com/132-github-action-runners-on-aws/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 392,
    "title": "How Discord Stores Trillions of Messages",
    "slug": "2024-09-30-374-how-discord-stores-trillions-of-messages",
    "date": "2024-09-30",
    "templateType": "mce-mailchimp",
    "intro": "Hey there !\nAs always, this week’s picks are designed to inspire and help you become a more informed full-stack web developer! Bo Ingram’s breakdown of how Discord handles trillions of messages offers a fascinating look at scaling systems. If you love fonts, check out Departure Mono—a free, lo-fi monospaced font perfect for adding a unique touch to your projects.\nFor benchmarking JavaScript, mitata is a tool you’ll want to explore. Josh W. Comeau also shares how he built his latest blog, packed with creativity and technical insights. Erik Bernhardsson’s take on writing code for humans really resonated with me, and it’s a must-read if you care about clean, maintainable code.\nAnd if you’ve ever fought with YAML in JavaScript, Phil Nash’s humorous piece will hit home!\nHappy coding and learning!\n— Your editor, [Luciano](https://loige.co/)!\n\nPS: Last week I had the pleasure to attend the AWS Community Day in Rome with a new talk about AWS organizations. If you are curious about this topic, you can [check out my slides online](https://loige.link/accounts).",
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works“",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "How Discord Stores Trillions of Messages",
        "url": "https://discord.com/blog/how-discord-stores-trillions-of-messages",
        "description": "Engineer Bo Ingram shares insight into how Discord shoulders its traffic and engineered its database to support an incredible number of chat messages. Your application probably doesn't need to scale to the same numbers, but I found these kinds of articles fascinating because you learn how things are designed incrementally. Discord didn't just build this architecture from day one, but they constantly revised it as they kept hitting limits. There are definitely a few lessons to be learned here! I hope you'll like it!",
        "imageUrl": "./b3f19d3478f46063dbf157f66f65d4e81f4f8fec786139ba74ce83dd0d26416c.jpg",
        "featured": true
      },
      {
        "title": "Departure Mono",
        "url": "https://departuremono.com/",
        "description": "If you have been following this newsletter for a while, you know I have a soft spot for fonts! Last week, I discovered Departure Mono, a FREE and open-source monospaced pixel font with a lo-fi, techy vibe. I think this could be a great choice to spice up your next web project!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "mitata: benchmark tooling that loves you",
        "url": "https://github.com/evanwashere/mitata",
        "description": "If you want to benchmark some JavaScript snippets, `mitata` seems like a very good option. It allows you to define a benchmark file (just a plain JavaScript file you can run with Node.js) where you can import the `mitata` library, execute your code (multiple times), and describe how to plot the resulting data.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How I Built My Blog (Josh W. Comeau)",
        "url": "https://joshwcomeau.com/blog/how-i-built-my-blog-v2",
        "description": "Josh is one of the most creative web developers you can find on the web (his work has been featured in this newsletter countless times)! Josh recently launched a brand new version of his blog, and in this post, he shares how it’s built! It examines the tech stack and describes how all of the pieces fit together, as well as dig into some of the more technical details.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "It's hard to write code for computers, but it's even harder to write code for humans",
        "url": "https://erikbern.com/2024/09/27/its-hard-to-write-code-for-humans.html",
        "description": "In this article, Erik Bernhardsson dives into the art (and struggle) of writing code that's not just for machines but for humans too. As someone who spends countless hours reading and maintaining code, I found Erik’s perspective really resonated with the challenges we all face—code readability, clarity, and maintainability. If you’ve ever found yourself wincing at the messiness of old codebases or battling to make your own code more understandable for others (and your future self), this is a must-read. Erik doesn’t just point out the problems, he also reflects on what we can do better. This piece will make you think twice the next time you type a line of code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "From Gatsby gridlock to Astro bliss: my personal site redesign",
        "url": "https://jwn.gr/posts/migrating-from-gatsby-to-astro",
        "description": "Earlier this year, I made the leap from Gatsby to Astro [for my own blog](https://loige.co/), so this article really hit home. The author walks us through their own migration process and sheds light on why Astro is becoming a go-to for developers who want faster, more streamlined websites. If you're thinking about switching or just curious about what Astro has to offer, this article is packed with insights on the benefits, challenges, and what it takes to make the move. It’s a compelling read that will resonate with anyone exploring modern web frameworks.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The yaml document from hell — JavaScript edition",
        "url": "https://philna.sh/blog/2023/02/02/yaml-document-from-hell-javascript-edition",
        "description": "JavaScript edition](https://philna.sh/blog/2023/02/02/yaml-document-from-hell-javascript-edition) — Phil Nash brings us a hilarious yet painfully relatable take on the chaos that can emerge when dealing with YAML in JavaScript. As someone who's had my share of YAML-induced headaches, this piece made me laugh and cringe in equal measure. Phil dives into some of the more obscure quirks of YAML, showing how something so seemingly simple can spiral into a nightmare. If you've ever battled with YAML files or are curious about its tricky nuances, this article will have you both entertained and enlightened. It’s a fun read that turns frustration into humor!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Rust in Action",
      "author": "Tim McNamara",
      "description": "Rust in Action introduces the Rust programming language by exploring numerous systems programming concepts and techniques. You'll be learning Rust by delving into how computers work under the hood. You'll find yourself playing with persistent storage, memory, networking and even tinkering with CPU instructions. The book takes you through using Rust to extend other applications and teaches you tricks to write blindingly fast code. You'll also discover parallel and concurrent programming. Filled to the brim with real-life use cases and scenarios, you'll go beyond the Rust syntax and see what Rust has to offer in real-world use cases.",
      "coverImageUrl": "./51562573cca9c54a31a7a7175255fc8f1d2b79b9d0cae795c0fe19d90020d0d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617294551?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617294551?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Web Components Are Not the Future",
        "url": "https://dev.to/ryansolid/web-components-are-not-the-future-48bh"
      },
      {
        "title": "The Frontend Treadmill",
        "url": "https://polotek.net/posts/the-frontend-treadmill"
      },
      {
        "title": "A Comprehensive Guide to Node.js Addons",
        "url": "https://www.mertcan.vercel.app/comprehensive-guide-to-nodejs-addons"
      },
      {
        "title": "New standards for a faster and more private Internet",
        "url": "https://blog.cloudflare.com/new-standards"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 391,
    "title": "The State of ES5 on the Web",
    "slug": "2024-09-23-373-the-state-of-es5-on-the-web",
    "date": "2024-09-23",
    "templateType": "mce-mailchimp",
    "intro": "Hello,  and welcome to issue #391!\nThis issue is packed with handpicked content curated just for you. We’re diving into whether you should still support ES5 in your JavaScript projects, why Rust’s error handling is so great (and how you can use it in JavaScript/TypeScript), and exploring a modern Next.js SaaS starter kit.\nYou’ll also find essential tips for running Node.js in production, a deep dive into FarmHash, and a guide to TanStack Router for type-safe navigation. Plus, Bun’s latest feature lets you compile and run C from JavaScript—opening up some fascinating possibilities.There’s even more great content waiting for you—enjoy!\n\n– Your editor, [Luciano](https://loige.co/)\n\nPS: last week I had the pleasure to speak at the AWS Community Day in beautiful Munich. If you want to learn more about [how to build secure and efficient SaaS platforms on AWS serverless](https://fth.link/aws-saas), you can check out our slides!",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers“",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "The State of ES5 on the Web",
        "url": "https://philipwalton.com/articles/the-state-of-es5-on-the-web",
        "description": "If you have recently authored a JavaScript library for the browser you probably asked yourself: \"Should I still support ES5?\". This post looks at what the data suggests based on what popular libraries, tools, and websites are doing.",
        "imageUrl": "./479a4076bfb5ec5ff6d17feb047a78fac26aa26f6ad758f10cda05e2ca48c385.jpg",
        "featured": true
      },
      {
        "title": "Rust error handling is perfect",
        "url": "https://bitfieldconsulting.com/posts/rust-errors-option-result",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Next.js SaaS starter",
        "url": "https://github.com/leerob/next-saas-starter",
        "description": "If you like Next.js, this repository provides a modern take on how to build your next SaaS venture using Postgres, Drizzle ORM, Stripe, shadcn/ui, and other cool tech.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Nine Node.js Pillars",
        "url": "https://platformatichq.com/node-principles",
        "description": "Our friends at Platformatic have published 9 Principles for Doing Node.js Right in Enterprise Environments. This includes how to avoid blocking the event loop, monitoring important metrics such as memory, CPU, and event loop utilization (ELU), and what to do about these metrics. It also covers automation (code quality, security, and testing), how to avoid dependency creep and so much more. An incredibly useful read if you run Node.js applications in production.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js implementation of FarmHash",
        "url": "https://github.com/lovell/farmhash",
        "description": "FarmHash is a relatively new high-performance hashing algorithm that came out of Google. This package provides binding for Node.js. This is a bit of a nerdy pick since it's probably something with very few niche practical use cases, but I am sure that if you like algorithms or if you want to learn more about what happens inside a hashing function, this can be the entrance to a very interesting rabbit hole! 🕳️🐇",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing TanStack Router",
        "url": "https://frontendmasters.com/blog/introducing-tanstack-router",
        "description": "TanStack Router is a comprehensive JavaScript framework for client-side applications, emphasizing type-safe routing and navigation. It includes nested layouts and efficient data loading. This article serves as a tutorial to get started quickly with TanStack Router by building a minimalistic project-planning application.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Compile and run C in JavaScript",
        "url": "https://bun.sh/blog/compile-and-run-c-in-js",
        "description": "Bun now supports compiling and running C from JavaScript to make using systems libraries easier. In the classic spirit of Bun, this article compares how this solution is so much better than Node.js N-API. Still, it's an interesting read and if you are using Bun or you have a niche use case like converting videos from JavaScript, this can be very useful.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Programming Rust: Fast, Safe Systems Development",
      "author": "Jim Blandy, Jason Orendorff, and Leonora Tindall",
      "description": "Systems programming provides the foundation for the world's computation. Writing performance-sensitive code requires a programming language that puts programmers in control of how memory, processor time, and other system resources are used. The Rust systems programming language combines that control with a modern type system that catches broad classes of common mistakes, from memory management errors to data races between threads. With this practical guide, experienced systems programmers will learn how to successfully bridge the gap between performance and safety using Rust. Jim Blandy, Jason Orendorff, and Leonora Tindall demonstrate how Rust's features put programmers in control over memory consumption and processor use by combining predictable performance with memory safety and trustworthy concurrency. You'll learn:",
      "coverImageUrl": "./dbe31bd7b95cec77ab0c7da3e88898bd123090331269de72db23f95bf7b77dd8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492052590?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492052590?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "React 19 Cheat Sheet",
        "url": "https://epicreact.dev/react-19-cheatsheet"
      },
      {
        "title": "React and FormData",
        "url": "https://reacttraining.com/blog/react-and-form-data"
      },
      {
        "title": "How Infinite Queries work",
        "url": "https://tkdodo.eu/blog/how-infinite-queries-work"
      },
      {
        "title": "SPA Lazy Loading Pitfalls",
        "url": "https://reacttraining.com/blog/spa-lazy-loading-pitfalls"
      },
      {
        "title": "The “Other” C in CSS (video)",
        "url": "https://youtube.com/watch?v=ob_M_qXeDVE"
      },
      {
        "title": "Zine: A Static Site Generator Written in Zig",
        "url": "https://kristoff.it/blog/zine-ssg-zig"
      },
      {
        "title": "Binary data in JavaScript (Bun)",
        "url": "https://bun.sh/docs/api/binary-data"
      },
      {
        "title": "CloudFormation Drift (podcast)",
        "url": "https://awsbites.com/131-what-do-you-do-about-cloudformation-drift/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 390,
    "title": "How does BlueSky work?",
    "slug": "2024-09-16-372-how-does-bluesky-work",
    "date": "2024-09-16",
    "templateType": "mce-mailchimp",
    "intro": null,
    "quote": {
      "text": "The great myth of our times is that technology is communication“",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "correct link",
        "url": "https://posthog.com/newsletter/engineers-do-support",
        "description": null,
        "imageUrl": "./4e572bbc2aa0230a50687a1a39accefb87d6cbe4602d14296d32cc0d13ac25ff.png",
        "featured": true
      },
      {
        "title": "How Does BlueSky Work?",
        "url": "https://steveklabnik.com/writing/how-does-bluesky-work/",
        "description": "Have you heard of [Bluesky](https://bsky.app/), a relatively new social network? I'm not here to convince you to join (although I have an [account](https://bsky.app/profile/loige.co) if you want to connect), but I wanted to share something interesting. The team behind Bluesky developed an innovative distributed protocol called the [AT Protocol](https://atproto.com/). In this article, we'll take a closer look at the AT Proto from the perspective of distributed backend engineering. If you're passionate about distributed systems or just curious to learn more, this is worth reading!",
        "imageUrl": "./9e1904486a5fd98246168bace95b84a25e12cacdb518fad66a0acdd80f745f11.jpg",
        "featured": false
      },
      {
        "title": "The web's clipboard, and how it stores data of different types",
        "url": "https://alexharri.com/blog/clipboard",
        "description": "Have you ever copied something from your browser and noticed that when you paste it into Word, it keeps all the formatting, but when you paste it into VSCode, it’s just plain text? This difference comes from how the Clipboard API handles various data types. In this article, you'll discover how the Clipboard API works behind the scenes, why these differences exist, and how to take advantage of it for building smarter, more interactive web experiences. Whether you're coding or just curious, this guide has you covered!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Rsbuild 1.0",
        "url": "https://rsbuild.dev/",
        "description": "**Rsbuild** is a build tool based on [**Rspack**](https://rspack.dev/), designed for lightning-fast build times without sacrificing compatibility with **Webpack** plugins and configurations. It’s a great fit for projects of any size, and with its 1.0 release, I’m excited to finally give it a try in one of my upcoming projects. Plus, as a fun bonus, Rsbuild has one of the cutest logos I’ve ever seen in an open-source project! If you're after a faster, scalable build tool, now is the perfect time to explore Rsbuild.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building the Same App Using Various Web Frameworks",
        "url": "https://eugeneyan.com/writing/web-frameworks",
        "description": "I recently came across this article comparing FastHTML, Next.js, and SvelteKit by building the same app with each, and I found it super insightful! If you’ve ever wondered how different frameworks stack up in real-world use, this breakdown will give you a clear picture of each one’s strengths and quirks. It’s a great read for anyone deciding on their next project framework or just curious about how these tools work in practice. I recommend checking it out—it’s a fun and informative experiment!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Setting up a production-ready VPS is a lot easier than I thought",
        "url": "https://youtube.com/watch?v=F-9KWQByeU0",
        "description": "If you’ve ever found setting up a production-ready VPS daunting, [Dreams of Code](https://www.youtube.com/@dreamsofcode)’s latest video is really helpful. It covers everything from SSH, domain setup, Docker, load balancing, TLS, and more, with a clear, step-by-step approach. I learned about WatchTower and gained deeper insights into Traefik from this video. Even as an AWS and cloud aficionado, I appreciate the hands-on approach of managing everything on a single server.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Features of your font you had no idea about",
        "url": "https://sinja.io/blog/get-maximum-out-of-your-font",
        "description": "If you’re passionate about improving your website’s look, I highly recommend checking out this article. It’s packed with practical tips for making the most out of your fonts, from choosing the right ones to implementing them effectively. As someone who loves refining design details, I found the advice on enhancing both aesthetics and readability particularly useful.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How I Added Maps to my Travel Posts",
        "url": "https://cyberb.space/notes/2024/how-i-added-maps-to-my-travel-posts/",
        "description": "If you’re interested in rendering maps on web pages, this article is a great resource. It shows how to use SVG images to add maps to your travel posts, without needing to rely on third-party services like Google Maps. The approach is both practical and easy to implement, making it a solid choice for enhancing your travel content with interactive visuals.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Rust for Rustaceans: Idiomatic Programming for Experienced Developers",
      "author": "Jon Gjengset",
      "description": "Master professional-level coding in Rust. For developers who've mastered the basics, this book is the next step on your way to professional-level programming in Rust. It covers everything you need to build and maintain larger code bases, write powerful and flexible applications and libraries, and confidently expand the scope and complexity of your projects. Author Jon Gjengset takes you deep into the Rust programming language, dissecting core topics like ownership, traits, concurrency, and unsafe code. You'll explore key concepts like type layout and trait coherence, delve into the inner workings of concurrent programming and asynchrony with async/await, and take a tour of the world of no_std programming. Gjengset also provides expert guidance on API design, testing strategies, and error handling, and will help develop your understanding of foreign function interfaces, object safety, procedural macros, and much more. You'll Learn:",
      "coverImageUrl": "./f574d3e0fa7dd88a2ac3f1de41c03ce528c80e23ea4ff8e44edcedb51a03f018.jpg",
      "amazonUs": "https://www.amazon.com/dp/1718501854?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1718501854?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Local, first, forever",
        "url": "https://tonsky.me/blog/crdt-filesync/"
      },
      {
        "title": "Exponential rate limiting",
        "url": "https://dotat.at/@/2024-09-02-ewma.html"
      },
      {
        "title": "Is JavaScript getting a safe assignment operator?",
        "url": "https://nalanj.dev/posts/safe-assignment/"
      },
      {
        "title": "Mocking ESM Without Loaders in Node.js",
        "url": "https://nalanj.dev/posts/mocking-without-loaders/"
      },
      {
        "title": "9 open-source gems to become the ultimate developer",
        "url": "https://dev.to/nevodavid/9-open-source-gems-to-become-the-ultimate-developer-2oj9"
      },
      {
        "title": "10 Things You Can Learn from Netflix’s Architecture",
        "url": "https://dev.to/somadevtoo/10-things-you-can-learn-from-netflixs-architecture-1bnn"
      },
      {
        "title": "The State of ES5 on the Web",
        "url": "https://philipwalton.com/articles/the-state-of-es5-on-the-web/"
      },
      {
        "title": "Look out, kids: PHP is the new JavaScript",
        "url": "https://www.mux.com/blog/php-is-the-new-javascript"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 389,
    "title": "Greppability is an underrated code metric",
    "slug": "2024-09-09-371-greppability-is-an-underrated-code-metric",
    "date": "2024-09-09",
    "templateType": "mce-mailchimp",
    "intro": "Hello, Welcome to this week’s newsletter, packed with essential insights for full-stack developers. Explore how \"*greppability*\" can enhance your code quality, dive into our comprehensive guide on automating tasks with cron jobs, and refresh your IDE with the unique Server Mono typeface. Discover a CSS tweak that can significantly boost your site’s performance, and learn how the Semantic Web and JSON-LD can improve your site's functionality.\nOf course, for those eager for more, we have more! In case you haven't noticed, we have been including a list of additional content at the end. I am sure this curation will help you to stay informed and inspired with the latest tools and techniques!\nYour editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "The human spirit must prevail over technology“",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "Greppability is an underrated code metric",
        "url": "https://morizbuesing.com/blog/greppability-code-metric",
        "description": "In a world of complex codebases, \"*greppability*\" offers a fresh way to measure how easily your code can be understood and searched. This article introduces the concept and explains why improving greppability can streamline your workflow and enhance code quality. If you've ever struggled to quickly locate code, this is a must-read if you care about code quality.",
        "imageUrl": "./fd30ea87e5a7e5c57f998172f9751581171f4501953b66e255a3471b8cf6edfd.png",
        "featured": true
      },
      {
        "title": "Comprehensive guide to Cron Jobs",
        "url": "https://ittavern.com/cron-jobs-on-linux-comprehensive-guide",
        "description": "Cron jobs are the backbone of automation on Linux, enabling you to schedule tasks like backups or generating reports with ease. This guide breaks down everything you need to know, from setting up basic cron jobs to mastering advanced configurations. Whether you're new to cron or looking to refine your skills, this resource will help you automate tasks efficiently.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Server Mono",
        "url": "https://servermono.com/",
        "description": "Server Mono is a typeface I came across last week, and I instantly fell in love with it. If you're thinking about refreshing the look of your IDE or terminal, you might like it too. Inspired by typewriters, Apple's San Francisco Mono, ASCII art, command-line interfaces, and programming tools, Server Mono has a unique charm. If you're a font enthusiast, it's definitely worth checking out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Two Lines of CSS That Tanked Performance (120fps to 40fps)",
        "url": "https://component-odyssey.com/articles/13-improving-performance-by-changing-two-lines-of-css",
        "description": "Sometimes, small changes can have a big impact on web performance. In this real case study, you'll discover how tweaking just two lines of CSS significantly boosted a site's speed. You'll also learn techniques to measure performance in terms of FPS, making this a must-read for developers looking to optimize front-end performance and enhance user experience.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Being on The Semantic Web is easy, and, frankly, well worth the bother",
        "url": "https://csvbase.com/blog/13",
        "description": "Curious about the Semantic Web’s impact on modern websites? This article explores how Web 3.0 has evolved from blockchain hype to enhancing machine readability with technologies like JSON-LD. Learn how simple metadata can improve your site's visibility and functionality with rich previews and better search results. Plus, discover alternative methods to JSON-LD for optimizing web content. Find out how the Semantic Web is already shaping the web, even if it’s not always in the spotlight.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Crazy CSS Using By Master CSS",
        "url": "https://youtube.com/watch?v=P80sM7ausCA",
        "description": "In this video, [LunDev](https://www.youtube.com/@lundeveloper) — an impressive tech YouTuber I recently discovered — guides us through achieving stunning CSS effects without JavaScript. The focus is on the fascinating `.item:has(+ * + * + *:hover)` selector, which creates unique hover effects affecting neighboring elements. LunDev’s content is consistently cool and engaging, showcasing advanced CSS techniques in an innovative way. We highly recommend this video for anyone looking to enhance their CSS skills and explore creative styling options.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "PlayCanvas Engine Hits 2.0.0",
        "url": "https://blog.playcanvas.com/playcanvas-engine-hits-2-0-0",
        "description": "PlayCanvas is a robust platform for creating interactive 3D web experiences, ideal for projects like product customizers. The latest blog post highlights the release of PlayCanvas Engine 2.0.0, showcasing its performance improvements and advanced features. This update simplifies the development of sophisticated 3D applications, making it a must-read for anyone looking to enhance their web-based 3D projects.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Rust Programming Language, 2nd Edition",
      "author": "Steve Klabnik, and Carol Nichols",
      "description": "With over 50,000 copies sold, The Rust Programming Language is the quintessential guide to programming in Rust. Thoroughly updated to Rust's latest version, this edition is considered the language's official documentation.The Rust Programming Language \"covers everything you could want to know about the language.\"—Stack Overflow Rust has been repeatedly voted \"Most Loved Language\" on the StackOverflow Developer Survey. The Rust Programming Language, 2nd Edition is the official guide to Rust 2021: an open source systems programming language that will help you write faster, more reliable software. Rust provides control of low-level details along with high-level ergonomics, allowing you to improve productivity and eliminate the hassle traditionally associated with low-level languages. Klabnik and Nichols, alumni of the Rust Core Team, share their knowledge to help you get the most out of Rust's features so that you can create robust and scalable programs. You'll begin with basics like creating functions, choosing data types, and binding variables, then move on to more advanced concepts, such as:",
      "coverImageUrl": "./777a1ca0193b25ccc0564d398f215d55c381fff4a46231c5188257f68fea1dd9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1718503105?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1718503105?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Reasonable Colors",
        "url": "https://reasonable.work/colors"
      },
      {
        "title": "Avatars - a list of free and fun avatars for your projects",
        "url": "https://alohe.github.io/avatars"
      },
      {
        "title": "Milkdown - A plugin driven framework to build WYSIWYG Markdown editor",
        "url": "https://milkdown.dev/"
      },
      {
        "title": "Generate a PDF in React",
        "url": "https://spacejelly.dev/posts/generate-a-pdf-from-html-in-javascript"
      },
      {
        "title": "Build-time React Components",
        "url": "https://codehike.org/blog/build-time-components"
      },
      {
        "title": "OAuth from First Principles",
        "url": "https://stack-auth.com/blog/oauth-from-first-principles"
      },
      {
        "title": "How to implement video streaming with Fastify",
        "url": "https://nearform.com/digital-community/how-to-implement-video-streaming-with-fastify"
      },
      {
        "title": "Growing in Tech with Farrah Campbell (podcast)",
        "url": "https://awsbites.com/130-growing-in-tech-with-farrah-campbell/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 388,
    "title": "CSS finally adds vertical centering",
    "slug": "2024-09-02-370-css-finally-adds-vertical-centering",
    "date": "2024-09-02",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nDear friend of FullStack Bulletin, I've carefully chosen each piece of content in this issue because they have the power to spark new ideas, reignite your passion for coding, or offer a fresh take on familiar challenges - from mastering regular expressions (because, yes, those two problems can still haunt us) to creating efficient strings in Rust. Will one of these articles finally help you break free from the curse of vertical DIV centering? Only time will tell. But what I do know is that they're all here to inspire and challenge you, so take a few minutes to explore what's inside... Have fun!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex“",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "CSS finally adds vertical centering in 2024",
        "url": "https://build-your-own.org/blog/20240813_css_vertical_center",
        "description": "If you've ever sweated bullets during a job interview, nervously fumbling for the right CSS magic to center a `<div>` vertically - fear no more! We're excited to share with you the long-awaited solution that's finally here. In this article, we'll dive into the history of vertical centering techniques and show you how to use the new and improved rule in just one simple line of code.",
        "imageUrl": "./8cb4b045b010a0b5de2cc230b19889c6367b5abafa255cde5c4d36d52ec5badc.png",
        "featured": true
      },
      {
        "title": "Free Public APIs",
        "url": "https://freepublicapis.com/",
        "description": "This incredible collection of over 200 free public APIs is the ultimate resource for anyone looking to fuel their next experiment. Not only does it provide easy access to these APIs, but it also takes the guesswork out of testing them. With daily checks and rigorous categorization, you can trust that every API on this list is accurate and ready to use - saving you precious time and effort in your development journey.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Small strings in Rust",
        "url": "https://fasterthanli.me/articles/small-strings-in-rust",
        "description": "If you're interested in fine-tuning your code for maximum performance or just enjoy working with Rust, this article is worth a read. It explores some interesting techniques and libraries to store strings in a memory-efficient way and improve performance. I found it to be a fascinating look at the trade-offs involved in optimizing string storage, and you might too.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How To Create An NPM Package",
        "url": "https://totaltypescript.com/how-to-create-an-npm-package",
        "description": "[Matt Pocock](https://x.com/mattpocockuk) has written an excellent article on publishing high-quality JavaScript packages to NPM. If you're planning to share your code with the world through NPM, you should definitely check out Matt's comprehensive guide. He covers everything from best practices for writing maintainable and efficient code, to setting up dual-mode support for both CommonJS and ESM, and even provides guidance on testing, linting, and automating the build process. It's one of the most thorough resources I've seen on this topic, and it's definitely worth reading if you're new to publishing packages or just want to improve your existing workflow.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Implementing React from scratch",
        "url": "https://www.rob.directory/blog/react-from-scratch",
        "description": "If you're curious about how React works under the hood, this article offers a unique perspective on its internal mechanics. By building a simplified version of React from scratch, you'll gain hands-on insight into the fundamental principles that drive its behavior. As physicist [Richard Feynman](https://en.wikipedia.org/wiki/Richard_Feynman) once said, *\"What I cannot create, I do not understand.\"* This mindset is exactly what drives the author's approach in this article - by trying to recreate React's core features, they aim to develop a deeper understanding of its inner workings.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The History And Future Of Regular Expressions In JavaScript",
        "url": "https://smashingmagazine.com/2024/08/history-future-regular-expressions-javascript",
        "description": "Regular expressions have come a long way since their early days as clunky, error-prone beasts. As [Jamie Zawinski](https://en.wikipedia.org/wiki/Jamie_Zawinski) once joked, using regular expressions can sometimes create two problems instead of solving one - but for the right situations, they're an incredibly powerful tool. [Steven Levithan](https://x.com/slevithan)'s article takes us on a journey through the history and evolution of regular expressions in JavaScript, highlighting their recent improvements and emerging trends that will shape their future. If you're curious about how regexes have transformed over time and want to gain a deeper understanding of these complex tools, this article is a great resource for anyone who wants to use them effectively when they really need to.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Algorithms we develop software by",
        "url": "https://grantslatton.com/software-pathfinding",
        "description": "A tech CEO and engineer shares his unconventional approach to solving complex problems in software development - starting each day from scratch on a feature, deleting it all if he doesn't finish by nightfall (except for unit tests). This method is just one of several creative heuristics discussed, including writing everything twice and challenging oneself with an unrealistically tight deadline (\"the gun to the head\" technique), which can help break anchors and biases, leading to new insights and better solutions. The article offers a unique perspective on how to become a more effective problem-solver as an engineer.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms",
      "author": "Cory Althoff",
      "description": "The follow-up to Cory Althoff's bestselling The Self-Taught Programmer, which inspired hundreds of thousands of professionals to learn to program outside of school! Fresh out of college and with just a year of self-study behind him, Cory Althoff was offered a dream first job as a software engineer for a well-known tech company, but he quickly found himself overwhelmed by the amount of things he needed to know, but hadn't learned yet. This experience combined with his personal journey learning to program inspired his widely praised guide, The Self-Taught Programmer. Now Cory's back with another guide for the self-taught community of learners focusing on the foundations of computer science. The Self-Taught Computer Scientist introduces beginner and self-taught programmers to computer science fundamentals that are essential for success in programming and software engineering fields. Computer science is a massive subject that could cover an entire lifetime of learning. This book does not aim to cover everything you would learn about if you went to school to get a computer science degree. Instead, Cory's goal is to give you an introduction to some of the most important concepts in computer science that apply to a programming career. With a focus on data structures and algorithms, The Self-Taught Computer Scientist helps you fill gaps in your knowledge, prepare for a technical interview, feel knowledgeable and confident on the job, and ultimately, become a better programmer.",
      "coverImageUrl": "./bdeefc4e4d3b9554c6d3ee7246ce50a89412300a2a4830b9b10d9b6c05cc8226.jpg",
      "amazonUs": "https://www.amazon.com/dp/1119724414?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1119724414?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Postgres as a search engine",
        "url": "https://anyblockers.com/posts/postgres-as-a-search-engine"
      },
      {
        "title": "Understanding AbortController in Node.js: A Complete Guide | Better Stack Community",
        "url": "https://betterstack.com/community/guides/scaling-nodejs/understanding-abortcontroller"
      },
      {
        "title": "Interface Segregation Principle in React",
        "url": "https://alexkondov.com/interface-segregation-principle-in-react"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 387,
    "title": "Continuous reinvention: A brief history of block storage at AWS",
    "slug": "2024-08-26-369-continuous-reinvention-a-brief-history-of-block-storage-at-a",
    "date": "2024-08-26",
    "templateType": "mce-mailchimp",
    "intro": "Hello, Welcome back to FullStack Bulletin!\n\nI've got a pretty eclectic mix for you this week. From cutting-edge **AWS** engineering and innovation to a thorough **TSConfig** guide, and even a new **Python** package manager, there's a little something for everyone. I hope this lineup keeps you both informed and inspired.\n\nOh, and before you dive in, just a heads-up: the live stream I did last week with the [BelieveInServerless community](https://www.believeinserverless.com/) about Rust and AWS Lambda is now [up on YouTube](https://www.youtube.com/watch?v=eqUehphXNvs). I think you'll find it pretty cool.\n\nP.S. I'm diving into **Nix** right now, and honestly, it's a bit overwhelming! If you’re into it and have any resources to share, I’d love to hear from you!\n\nCheers,\n[Luciano](https://loige.co/)",
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons“",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "Continuous reinvention: A brief history of block storage at AWS",
        "url": "https://allthingsdistributed.com/2024/08/continuous-reinvention-a-brief-history-of-block-storage-at-aws.html",
        "description": "Marc Olson, a long-time Amazonian, discusses the evolution of EBS, highlighting hard-won lessons in queueing theory, the importance of comprehensive instrumentation, and the value of incrementalism versus radical changes. It's an insightful look at how one of AWS’s foundational services has evolved to meet the needs of our customers. This is possibly not your usual full-stack read, but it's absolutely interesting story of innovation and I am sure there are some learnings there even for full-stack devs!",
        "imageUrl": "./600a7bb60653e5c0a8d494358486b8b8486bae5197cd1d6f6a25e27b603c38c8.jpg",
        "featured": true
      },
      {
        "title": "Good Refactoring vs Bad Refactoring",
        "url": "https://builder.io/blog/good-vs-bad-refactoring",
        "description": "Refactoring can make your code way better - or way worse. Here's how to avoid messing up your codebase when you refactor (JavaScript) code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The TSConfig Cheat Sheet",
        "url": "https://totaltypescript.com/tsconfig-cheat-sheet",
        "description": "Matt Pocock shares his favourite `tsconfig.json` and explains what every setting is used for. This is an absolute wonder if you have ever been confused by the multitude of configuration options available and struggled to come up with something working!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "uv: Unified Python packaging",
        "url": "https://astral.sh/blog/uv-unified-python-packaging",
        "description": "`uv` is a new Python package manager that promises to revolutionise the way you manage packages and virtual environments. It's written in Rust and it comes from the same developers that have already innovated this space with the `ruff` linter and formatter. If you are into Python, you must check out this one!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "SIMD Matters",
        "url": "https://box2d.org/posts/2024/08/simd-matters",
        "description": "SIMD is the holy grail of CPU performance, often out of reach. The conventional wisdom is that it is difficult to achieve real gains from SIMD. It is tempting to build a math library around SIMD hoping to get some performance gains. However, it often has no proven benefit. It just feels good to be using something we know can improve performance. This article showcases how the author of Box2D (a famous physics simulation engine also used on the web) has managed to achieve great performance by using SIMD. It's an interesting read if you work on dynamic web applications like games or simulations or are just trying to add some dynamic elements to a web page.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Real-time mouse pointers",
        "url": "https://canva.dev/blog/engineering/realtime-mouse-pointers",
        "description": "The engineers at Canva share how the managed to implement a multiplayer-like collaborative mode that allows multiple people to edit designs collaboratively. The most interesting bit is how they managed to synchronise the position of mouse cursors!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Authentik",
        "url": "https://goauthentik.io/",
        "description": "Authentik is a new open source identity provider that promises to help you with managing user and logins for your web applications. It can be easily tried with Docker and it supports a variety of protocols including SAML, OAuth and OIDC. Worth a look if you are looking for a good self-hosted option.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to Live By: The Computer Science of Human Decisions",
      "author": "Brian Christian, and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mind All our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling? These may seem like uniquely human quandaries, but they are not: computers, too, face the same constraints, so computer scientists have been grappling with their version of such problems for decades. And the solutions they've found have much to teach us.",
      "coverImageUrl": "./6544a0304e1050cedcbdeba4071fb1e1cbee71a854a66bc47a2adb0e21632b0a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0670068314?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0670068314?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Exactly-Once Payments At Airbnb",
        "url": "https://news.alvaroduran.com/p/exactly-once-payments-at-airbnb"
      },
      {
        "title": "srcbookdev/srcbook: TypeScript notebook for rapid prototyping",
        "url": "https://github.com/srcbookdev/srcbook"
      },
      {
        "title": "I Built an Event Scheduler in NodeJs using Google Calendar API",
        "url": "https://dev.to/arindam_1729/i-built-an-event-scheduler-in-nodejs-using-google-calendar-api-4c5b"
      },
      {
        "title": "dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions",
        "url": "https://github.com/dahlia/logtape"
      },
      {
        "title": "vercel/little-date: A friendly formatter to make date ranges small & sweet",
        "url": "https://github.com/vercel/little-date"
      },
      {
        "title": "Protobuf-ES 2.0 is now generally available",
        "url": "https://buf.build/blog/protobuf-es-v2"
      },
      {
        "title": "Creating S3 Signed URLs in Node.js",
        "url": "https://codu.co/articles/creating-s3-signed-urls-in-node-js-qtxm0avg"
      },
      {
        "title": "Lambda Provisioned Concurrency (podcast)",
        "url": "https://awsbites.com/129-lambda-provisioned-concurrency/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 386,
    "title": "Open source illustrations kit",
    "slug": "2024-08-19-368-open-source-illustrations-kit",
    "date": "2024-08-19",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #386!\n\nLast week, I discovered that [Gorillaz is a band that doesn't exist](https://www.youtube.com/watch?v=Nso2dc8azSw) or rather a *virtual* band. It was founded by a singer ([Damon Albarn](https://en.wikipedia.org/wiki/Damon_Albarn), the same as [Blur](https://en.wikipedia.org/wiki/Blur_(band)), BTW) and a comic artist ([Jamie Hewlett](https://en.wikipedia.org/wiki/Jamie_Hewlett))! *\"What does this have to do with full-stack web development?\"* I can hear you asking... Well, probably nothing, but it made me think how sometimes collaborations between professionals with very different skills and coming from different industries can lead to incredibly original results! So don't hesitate to collaborate with people who are not in tech and try to establish a very open and honest exchange of opinions. Something magical might happen!\n\nNow let's get inspired with some awesome full-stack content that I carefully curated for you!\n\n— Your editor, [Luciano](https://loige.co/)\n\nPS: if you like **Rust** and/or **AWS Lambda**, I am doing a live stream about those tomorrow with the [Believe in Serverless community](https://www.youtube.com/watch?v=eqUehphXNvs)!",
    "quote": {
      "text": "The more you draw, the better you get.",
      "author": null,
      "authorTitle": "Artist",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Open source illustrations kit",
        "url": "https://illlustrations.co/",
        "description": "A large set of beautiful opensource illustrations that you can use completely for free and without attribution. A great resource to spice up your next web project!",
        "imageUrl": "./05fea929ae900561dd37f173e12b38d18515f3890dfa694e2a60fd0f5e4a46db.png",
        "featured": true
      },
      {
        "title": "Floating UI",
        "url": "https://floating-ui.com/",
        "description": "An open-source JavaScript library to position floating elements and create interactions for them. Ideal to create your custom tooltips, popovers, dropdowns, and more.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "postgres.new",
        "url": "https://supabase.com/blog/postgres-new",
        "description": "Are you looking for a friendly environment where you can get better at SQL (specifically Postgres) by playing with a real database, directly in the browser? Well, this one also comes with an AI assistant and it's totally free!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS relative Color Syntax",
        "url": "https://frontendmasters.com/blog/relative-color-syntax-basic-use-cases",
        "description": "Support for the relative color syntax in CSS is across the board now (go interop!), so here we look at some basic (and still very useful) use cases, like applying alpha to a color you have on hand.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ArkType",
        "url": "https://arktype.io/",
        "description": "Do you like [Zod](https://zod.dev/) and [Valibot](https://valibot.dev/)? Well, I do (a lot!) but I realised that ArkType is an even better TypeScript validation library. The main reason? It's fast and it has a fantastic developer experience. Check it out if you don't believe me!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Okay, I really like WezTerm",
        "url": "https://alexplescan.com/posts/2024/08/10/wezterm",
        "description": "If you are feeling like trying a new terminal emulator, it looks like WezTerm might be a great option since is getting lots of props in the tech community! I am tempted to try it myself based on this article alone. Let's see if I give up on my beloved iTerm2... let me know if you try this one and if you like it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "An approach to optimizing TypeScript type checking performance",
        "url": "https://edgedb.com/blog/an-approach-to-optimizing-typescript-type-checking-performance",
        "description": "A process for measuring and optimizing TypeScript type checking performance.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Algorithm Design Manual",
      "author": "Steven S. Skiena",
      "description": "\"My absolute favorite for this kind of interview preparation is Steven Skiena's The Algorithm Design Manual. More than any other book it helped me understand just how astonishingly commonplace … graph problems are -- they should be part of every working programmer's toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. … every 1 - pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types.\" (Steve Yegge, Get that Job at Google) \"Steven Skiena's Algorithm Design Manual retains its title as the best and most comprehensive practical algorithm guide to help identify and solve problems. … Every programmer should read this book, and anyone working in the field should keep it close to hand. … This is the best investment … a programmer or aspiring programmer can make.\" (Harold Thimbleby, Times Higher Education) \"It is wonderful to open to a random spot and discover an interesting algorithm. This is the only textbook I felt compelled to bring with me out of my student days.... The color really adds a lot of energy to the new edition of the book!\" (Cory Bart, University of Delaware) \"The is the most approachable book on algorithms I have.\" (Megan Squire, Elon University)",
      "coverImageUrl": "./b25223c935ae908581884f32ce5cf9deadc87014fab96716644dea60a883e6d4.jpg",
      "amazonUs": "https://www.amazon.com/dp/3030542556?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/3030542556?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Enhancing TypeScript: Implementing Robust Error Handling with Result and Option",
        "url": "https://dev.to/brunoalmeidakotesky/enhancing-typescript-implementing-robust-error-handling-with-result-and-option-o5j"
      },
      {
        "title": "swan-io/boxed: Essential building-blocks for functional & safe TypeScript code",
        "url": "https://github.com/swan-io/boxed"
      },
      {
        "title": "Stop self-selecting out of opportunities!",
        "url": "https://codu.co/letters/stop-self-selecting-out-of-opportunities"
      },
      {
        "title": "A Node and Command Line Tool to Find Obsolete HTML",
        "url": "https://meiert.com/en/blog/find-obsolete-html"
      },
      {
        "title": "The anchor element",
        "url": "https://heydonworks.com/article/the-anchor-element"
      },
      {
        "title": "Crafting a JavaScript 13KB Game: The Story of Space Huggers",
        "url": "https://frankforce.com/space-huggers-how-i-made-a-game-in-13-kilobytes"
      },
      {
        "title": "Rust with Lambda, easy-mode Rust & future of Middy (podcast)",
        "url": "https://https//www.youtube.com/watch?v=FVYub3dzrAY%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "Death of the Follower & the Future of Creativity on the Web (video)",
        "url": "https://www.youtube.com/watch?v=hwn6-8XpIuE%3Futm_source%3Dfullstackbulletin.com"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 385,
    "title": "SVG Viewer",
    "slug": "2024-08-13-367-svg-viewer",
    "date": "2024-08-13",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nAnother week, another issue of FSB! Except for last week when I messed up and I accidentally sent 2! 😅\n\nI apologise for the noise! I was so eager to go on holiday that I forgot to disable the original unedited email... Yes, if you got two emails, the good one was the one with an intro and a better selection of articles and descriptions! I'll try my best not to mess up again!\n\nNow let's jump into some full-stack content! I hope you will be inspired!\n\n— Your editor, [Luciano](https://x.com/loige)",
    "quote": {
      "text": "One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man“",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "SVG Viewer",
        "url": "https://svgviewer.dev/",
        "description": "Is that little detail in an SVG annoying you and you just want to change it? SVG is great because it's a XML-based format, so if you know where to look you only need a text editor to change things. But with complex SVGs it's not always obvious to understand what to change! SVG Viewer is a new FREE online tool that allows you to visualise your SVGs and highlight which part of the SVG corresponds to which part of the image! I started using it and I am loving it! [**Check it out!**](https://svgviewer.dev/)",
        "imageUrl": null,
        "featured": true
      },
      {
        "title": "It’s Time To Talk About “CSS5”",
        "url": "https://smashingmagazine.com/2024/08/time-to-talk-about-css5",
        "description": "Have you ever wondered what happened after CSS3? It’s common knowledge that we never saw CSS4 come after it, yet we have a plethora of new features that have no similar way of defining when they were introduced. The W3C CSS-Next community group is actively searching for better approaches for how we describe the evolution of CSS over time and identify feature sets as effectively as we did with CSS3 in 2009 — and you can help.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building A Generative AI Platform",
        "url": "https://huyenchip.com/2024/07/25/genai-platform.html",
        "description": "(Almost) Everyone is adding some kind of **GenAI** feature to their apps and web applications. If you find yourself confused by this new world and you want to learn more, this article showcases a study on how companies deploy generative AI applications and it provides some good reference architectures.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Video with alpha transparency on the web",
        "url": "https://jakearchibald.com/2024/video-with-transparency",
        "description": "[Jake Archibald](https://twitter.com/jaffathecake) discusses the complexities of using videos with alpha transparency on the web. He examines the limitations and inefficiencies of native methods like AVIF and animated formats, which struggle with performance, browser compatibility, and features. He ultimately proposes a custom solution using a WebGL fragment shader that combines the video and alpha channel into a more efficient format. This approach significantly reduces file size while maintaining compatibility across browsers, and he provides an NPM package to implement it.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Build Anything Extremely Quickly",
        "url": "https://learnhowtolearn.org/how-to-build-extremely-quickly",
        "description": "Do “outline speedrunning”: Recursively outline an MVP, speedrun filling it in, and only then go back and perfect it. I found this to be an insightful article which gave me a few ideas on how I can be more focused and productive when working on a project.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Scaling One Million Checkboxes to 650,000,000 checks",
        "url": "http://eieio.games/essays/scaling-one-million-checkboxes",
        "description": "This article discusses the challenges and solutions involved in efficiently handling a large number of checkboxes in web applications, specifically up to 650 million checks. The author explores performance issues, optimization strategies, and techniques like batching, virtualization, and efficient data structures.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How To Master JavaScript Performance Optimization",
        "url": "https://thenewstack.io/how-to-master-javascript-performance-optimization",
        "description": "Elevate your JavaScript game with techniques like code splitting, lazy loading, using web workers, minifying files and asynchronous loading.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Node.js Web Development: Go on a comprehensive journey from the fundamentals to advanced web development with Node.js",
      "author": "Adam Freeman",
      "description": null,
      "coverImageUrl": "./9935ed43e703180f5288f8d7f01deaa77f3927576a010a87cfd5bb85a810515c.jpg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "Revealing the Inner Structure of AWS Session Tokens",
        "url": "https://medium.com/@TalBeerySec/revealing-the-inner-structure-of-aws-session-tokens-a6c76469cba7"
      },
      {
        "title": "Browsers, cookies and surfing the web: The quirky history of internet lingo",
        "url": "https://blog.mozilla.org/en/internet-culture/history-of-internet-terms"
      },
      {
        "title": "HTML Web Components Make Progressive Enhancement And CSS Encapsulation Easier!",
        "url": "https://css-tricks.com/html-web-components-make-progressive-enhancement-and-css-encapsulation-easier"
      },
      {
        "title": "The Sneaky Costs of Scaling Serverless",
        "url": "https://zachleat.com/web/serverless-cost"
      },
      {
        "title": "How Postgres stores data on disk – this one's a page turner",
        "url": "https://drew.silcock.dev/blog/how-postgres-stores-data-on-disk"
      },
      {
        "title": "Learn Web Components",
        "url": "https://learn-wcs.com/"
      },
      {
        "title": "Y'all are sleeping on HTTP/3",
        "url": "https://kmcd.dev/posts/yall-are-sleeping-on-http3"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 384,
    "title": "How Google handles JavaScript throughout the indexing process",
    "slug": "2024-08-05-366-how-google-handles-javascript-throughout-the-indexing-proces",
    "date": "2024-08-05",
    "templateType": "mce-mailchimp",
    "intro": "Hey, \nWelcome to issue #384 of FSB! I am about to go on holiday for a full week so really looking forward to taking a little break in this hectic period! But don't worry, I still have managed to compile another issue full of amazing full-stack content for your enjoyment!\n\nI hope you'll enjoy it!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity“",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "How Google handles JavaScript throughout the indexing process",
        "url": "https://vercel.com/blog/how-google-handles-javascript-throughout-the-indexing-process",
        "description": "Over the years, Google's treatment of JavaScript has changed, leaving us with misconceptions about how web pages are indexed. In this article, Vercel deep dives into the latest news about JavaScript and Google indexing of web pages providing you with everything you need to know do create SEO-friendly websites in 2024..",
        "imageUrl": "./47deaa52954c3997934b37e10bcd136f9a0578443ea1b3561f6d93e05091cfb4.jpg",
        "featured": true
      },
      {
        "title": "Third-party cookies have got to go",
        "url": "https://w3.org/blog/2024/third-party-cookies-have-got-to-go",
        "description": "The W3C Technical Architecture Group explains how third-party cookies reduce users’ privacy and why they must be removed from the web. This blog post introduces the latest [TAG finding](https://www.w3.org/2001/tag/doc/web-without-3p-cookies/), Third-party cookies must be removed.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "US Gov to convert all C to Rust",
        "url": "https://youtube.com/watch?v=anfCoIGP8HM",
        "description": "The US government plans to convert all C code to Rust. The Defense Advanced Research Projects Agency, better known as **DARPA**, just launched a project called [TRACTOR](https://www.darpa.mil/program/translating-all-c-to-rust) with the ambitious goal of automating the conversion of C code to Rust while retaining a level of code quality that they define as \"the same quality and style that a skilled Rust developer would produce\".",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How the Paris 2024 Summer Olympics has impacted Internet traffic",
        "url": "https://blog.cloudflare.com/paris-2024-summer-olympics-impacted-internet-traffic",
        "description": "This blog post by Cloudflare explores the impact of the Paris 2024 Summer Olympics on Internet traffic in France and beyond, concentrating on web activity during the opening ceremony and the initial days of competition. Let the games continue.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js Adds Experimental Support for TypeScript",
        "url": "https://socket.dev/blog/node-js-adds-experimental-support-for-typescript",
        "description": "Node.js has (finally) added experimental support for TypeScript, a move that highlights the growing importance of TypeScript in modern development. But this version of TypeScript running in Node.js is not a fully-fledged and type-checked TypeScript compiler. It is a way to strip out all the type annotations to convert TypeScript files into equivalent JavaScriopt that can executed in Node.js. It's exciting but worth knowing the limitations of this approach!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Garbage collection and closures",
        "url": "https://jakearchibald.com/2024/garbage-collection-and-closures",
        "description": "In this article, three amazing engineers at Shopify discovered that JavaScript garbage collection didn't work as they originally thought when working with closures. They go through various code snippets to show us which cases can be unexpectedly problematic and might cause a memory leak.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Patterns for Memory Efficient DOM Manipulation with Modern Vanilla JavaScript",
        "url": "https://frontendmasters.com/blog/patterns-for-memory-efficient-dom-manipulation",
        "description": "JavaScript Frameworks generally do a lot of DOM handling for you, but doing it yourself can be the most performant option, and there are quite a few best practices to squeeze even more performance from our beloved browsers.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, fourth edition",
      "author": "Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein",
      "description": "A comprehensive update of the leading algorithms text, with new material on matchings in bipartite graphs, online algorithms, machine learning, and other topics.Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. It covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers, with self-contained chapters and algorithms in pseudocode. Since the publication of the first edition, Introduction to Algorithms has become the leading algorithms text in universities worldwide as well as the standard reference for professionals. This fourth edition has been updated throughout.",
      "coverImageUrl": "./e6f832afd406b7e0042d5b43d21a02ac3379519a1d607736ade8fcb8c2548a13.jpg",
      "amazonUs": "https://www.amazon.com/dp/026204630X?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/026204630X?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "What we got wrong about HTTP imports",
        "url": "https://deno.com/blog/http-imports"
      },
      {
        "title": "Benchmarking AWS Lambda Cold Starts Across JavaScript Runtimes",
        "url": "https://deno.com/blog/aws-lambda-coldstart-benchmarks"
      },
      {
        "title": "A different way to think about TypeScript",
        "url": "https://www.rob.directory/blog/a-different-way-to-think-about-typescript"
      },
      {
        "title": "Announcing TypeScript 5.6 Beta",
        "url": "https://devblogs.microsoft.com/typescript/announcing-typescript-5-6-beta"
      },
      {
        "title": "The user Location is a Lie!",
        "url": "https://austingil.com/user-location-is-a-lie"
      },
      {
        "title": "Popover API 101",
        "url": "https://amitmerchant.com/popover-api-101"
      },
      {
        "title": "Astro 4.12: Server Islands",
        "url": "https://astro.build/blog/astro-4120"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 383,
    "title": "How Airbnb Smoothly Upgrades React",
    "slug": "2024-07-29-365-how-airbnb-smoothly-upgrades-react",
    "date": "2024-07-29",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #383!\n\nLast week I was uber happy to discover an awesome [video review of my book Node.js Design Patterns](https://www.youtube.com/watch?v=9OoaK3UBjMo)! So let me officially thank Alfonso here for that! Make sure to check out his [YouTube channel](https://www.youtube.com/@alfonsograziano/videos) for some cool videos about web development!\n\nNow let's get into some cool handcrafted and handpicked full-stack content! Happy full-stack week! 😍\n\nYour editor, [Luciano](https://loige.co/).",
    "quote": {
      "text": "Just because something doesn't do what you planned it to do doesn't mean it's useless“",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "How Airbnb Smoothly Upgrades React",
        "url": "https://medium.com/airbnb-engineering/how-airbnb-smoothly-upgrades-react-b1d772a565fd",
        "description": "Learn how AirBnB ncrementally modernizes their frontend infrastructure to roll out the latest React features without downgrades.",
        "imageUrl": "./97d878e764c7fc7b6901b0354d4f71c261218ba8088868423bbf7181503c8765.jpg",
        "featured": true
      },
      {
        "title": "CSS Grid Areas",
        "url": "https://ishadeed.com/article/css-grid-area",
        "description": "A fresh look at the CSS grid template areas and how to take advantage of its full potential today.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Design GUI - Browser Extension for managing colors in CSS Variables",
        "url": "https://designgui.io/",
        "description": "Design GUI is a very interesting browser extension for managing colors in CSS Variables. One of the most interesting features is its AI-generated color palette, but there's also accessibility testing and support for shadcn/ui and daisyUI (with more coming soon).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How not to use box shadows",
        "url": "https://dgerrells.com/blog/how-not-to-use-box-shadows",
        "description": "*\"So you think you know box shadows huh? I bet you didn't know they could do this!\"* ... When an article starts like this, how can you not read it?!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Tailwind CSS Gradients - Collection of gradients for Tailwind",
        "url": "https://tailscan.com/gradients",
        "description": "This free collection contains lots of different gradients, ready to use in your Tailwind project. Get inspired, mix and match or use them directly.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to choose the best rendering strategy for your app",
        "url": "https://vercel.com/blog/how-to-choose-the-best-rendering-strategy-for-your-app",
        "description": "Demystify Next.js rendering strategies: SSG, SSR, CSR, ISR, and PPR. Optimize your web apps for performance, SEO, and user experience. Learn when and how to use each approach with real-world examples and practical tips for modern web development.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Engineering Principles for Building Financial Systems",
        "url": "https://substack.wasteman.codes/p/engineering-principles-and-best-practices",
        "description": "Best practices and principles to create accurate and reliable software-based financial systems.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Python for Data Analysis: Data Wrangling with pandas, NumPy, and Jupyter",
      "author": "Wes McKinney",
      "description": "Get the definitive handbook for manipulating, processing, cleaning, and crunching datasets in Python. Updated for Python 3.10 and pandas 1.4, the third edition of this hands-on guide is packed with practical case studies that show you how to solve a broad set of data analysis problems effectively. You'll learn the latest versions of pandas, NumPy, and Jupyter in the process. Written by Wes McKinney, the creator of the Python pandas project, this book is a practical, modern introduction to data science tools in Python. It's ideal for analysts new to Python and for Python programmers new to data science and scientific computing. Data files and related material are available on GitHub.",
      "coverImageUrl": "./4633f8fcd71121a39def2e23e8f53cb7fc07b67b4153577ba9ff76b704910489.jpg",
      "amazonUs": "https://www.amazon.com/dp/109810403X?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/109810403X?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Ruby methods are colorless",
        "url": "https://jpcamara.com/2024/07/15/ruby-methods-are.html"
      },
      {
        "title": "Slashing our AWS Bill at Levels.fyi",
        "url": "https://levels.fyi/blog/slashing-aws-bill.html"
      },
      {
        "title": "nho: 📌 1KB Web Component Abstraction",
        "url": "https://github.com/anh-ld/nho"
      },
      {
        "title": "tailwindcss-intersect: Tailwind CSS with Intersection Observer variants",
        "url": "https://github.com/heidkaemper/tailwindcss-intersect"
      },
      {
        "title": "Button Stealer (Browser extension)",
        "url": "https://anatolyzenkov.com/stolen-buttons/button-stealer"
      },
      {
        "title": "When Objects Are Not Enough",
        "url": "https://tonysm.com/when-objects-are-not-enough"
      },
      {
        "title": "How Canva collects 25 billion events per day",
        "url": "https://canva.dev/blog/engineering/product-analytics-event-collection"
      },
      {
        "title": "Writing a book about Rust and AWS Lambda (AWS Bites Podcast)",
        "url": "https://awsbites.com/128-writing-a-book-about-rust-and-lambda/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 382,
    "title": "Poku: a cross-platform JavaScript test runner",
    "slug": "2024-07-22-364-poku-a-cross-platform-javascript-test-runner",
    "date": "2024-07-22",
    "templateType": "mce-mailchimp",
    "intro": "Hello dear, \nWelcome to issue #382!\n\nLast week I was on holiday, so I edited this issue from sunny (and rather hot 🥵) Sicily! I had lots of time to read and keep myself up to date while enjoying the seaside, so I hope you'll appreciate the content I selected for this issue because t*he full-stack love never goes on holiday*! (OK, I admit this one was a bit cringe, sorry!) 😝\n\nENJOY!\n\nYour (sunburnt) editor, [Luciano](https://x.com/loige)!",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness“",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "Poku: a cross-platform JavaScript test runner",
        "url": "https://poku.io/",
        "description": "**Poku** is a new JavaScript test runner that promises to make it easy to write tests for projects that need to run on **Node.js**, **Deno,** and **Bun**. If you are creating a library that you want to ensure is well supported on all these different runtimes, Poku should make writing the tests quite easy following the spirit of \"Write once, run it everywhere\". I haven't tried this yet, but it seems like a good candidate for my [`financial`](https://www.npmjs.com/package/financial) library, which now has dedicated tests for different runtimes... which is a pain for maintenance! 🥲 [**View project**](https://poku.io/)",
        "imageUrl": "./610c51a1504404e95d2e309a360da4de5dd6f1c68fcc590224eb5f4de78ae471.png",
        "featured": true
      },
      {
        "title": "A TypeScripter's Take on Zig",
        "url": "https://effectivetypescript.com/2024/07/17/advent2023-zig/",
        "description": "What can Zig learn from TypeScript, and what can TypeScript learn from Zig? If you are into languages, this intro should be captivating enough! 😀",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "why-is-node-running",
        "url": "https://github.com/mafintosh/why-is-node-running",
        "description": "When writing JavaScript scripts (pun intended), you might accidentally end up allocating resources that will keep your Node.js process running indefinitely. If you are expecting your script to do something and then exit, this can be a problem... A new package, originally named `why-is-node-running`, is here to help you figure out what keeps your Node.js process from exiting! BTW, I was curious to see how this module was implemented and, by looking at the code, I discovered that this is a great example to see how useful Node.js `async_hooks` can be!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How fast is JavaScript? Simulating 20,000,000 particles",
        "url": "https://davidgerrells.com/blog/how-fast-is-javascript-simulating-20-000-000-particles",
        "description": "The challenge, simulate 1,000,000 particles in plain JavaScript at 60 fps on a phone using only the CPU. This one is one hell of an experiment with really fascinating results. It doesn't run as smoothly on my Macbook Pro M2 in power-saving mode, but it's still impressive and you can easily reduce the number of particles to get better results that can suit your hardware! Experiment aside, there's lots to learn here about *LOW_LEVEL* JavaScript.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Cloudflare reports almost 7% of internet traffic is malicious",
        "url": "https://zdnet.com/article/cloudflare-reports-almost-7-percent-of-internet-traffic-is-malicious",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dear AWS, please let me be a cloud engineer again",
        "url": "https://lucvandonkersgoed.com/2024/07/13/dear-aws-please-let-me-be-a-cloud-engineer-again",
        "description": "My friend [Luc](https://x.com/donkersgood) is an AWS Serverless Hero and a principal engineer at an AWS-centric logistics company. Luc builds lots of cool stuff on AWS including the brilliant [AWS News Feed](https://aws-news.com/). In this article, he makes the point that AWS is shifting their approach more and more to follow the current AI hype and it looks like they are forgetting about cloud engineers and what they need to succeed. I couldn't agree more with this post. If you are a heavy AWS user, you'll probably relate to this one too!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Collection of Dark Patterns and Unethical Design",
        "url": "https://hallofshame.design/collection",
        "description": "Nothing upsets web developers and UX designers more than some unhealthy **dark patterns** when you spot them on a random website! But to be fair they are also ingenious and interesting at times! On this website, you can discover a variety of dark pattern examples, sorted by category, to better understand deceptive design practices. My favourite? The **roach motel**! 🪳",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Don't waste time bending Python to fit patterns you've learned in other languages. Python's simplicity lets you become productive quickly, but often this means you aren't using everything the language has to offer. With the updated edition of this hands-on guide, you'll learn how to write effective, modern Python 3 code by leveraging its best ideas. Discover and apply idiomatic Python 3 features beyond your past experience. Author Luciano Ramalho guides you through Python's core language features and libraries and teaches you how to make your code shorter, faster, and more readable. Complete with major updates throughout, this new edition features five parts that work as five short books within the book:",
      "coverImageUrl": "./c5bce5753cd461f04911ed74e8eb355beca73fb67f1cd9040cedb1b7ddfc9508.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492056359?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492056359?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Animating the Dialog Element",
        "url": "https://frontendmasters.com/blog/animating-dialog"
      },
      {
        "title": "An update on invokers: Invoker commands in HTML",
        "url": "https://utilitybend.com/blog/an-update-on-invokers-invoker-commands-in-html"
      },
      {
        "title": "Understanding and implementing micro-frontends on AWS",
        "url": "https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html"
      },
      {
        "title": "Is AI part and parcel of web dev?",
        "url": "https://remysharp.com/2024/07/12/is-ai-part-and-parcel-of-web-dev"
      },
      {
        "title": "Parsing raw data with existential types",
        "url": "https://andreasimonecosta.dev/posts/parsing-raw-data-with-existential-types"
      },
      {
        "title": "How to deploy your React app using Container Registry",
        "url": "https://digitalocean.com/community/developer-center/how-to-deploy-your-react-app-using-container-registry"
      },
      {
        "title": "JPEG History: Compressing It Down, Keeping The Essence",
        "url": "https://tedium.co/2024/06/16/jpeg-image-format-history"
      },
      {
        "title": "You are not looking for remote work",
        "url": "https://shippingbytes.com/2024/07/18/you-are-not-looking-for-remote-work/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 381,
    "title": "Reverse Engineering TicketMaster's Rotating Barcodes",
    "slug": "2024-07-15-363-reverse-engineering-ticketmaster-s-rotating-barcodes",
    "date": "2024-07-15",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #381!\nIn this issue, we have an excellent collection of curated full-stack content to keep you informed and inspired! The first article is fascinating to me since I also found myself trying to hack TicketMaster's new digital tickets. The first version was quite naive, you could just remove the floating bar from the DOM and take a screenshot of the barcode. Now the barcode is regenerated every 15 seconds and the author of the article needs to go into a much deeper rabbit hole to fully reverse engineer how the ticket works and how to avoid the invasive TicketMaster mobile app. It's a fascinating reading that will teach you about bar codes, bearer tokens, and OTP codes, so definitely recommended!\nI won't spoil the rest of the content here and let you discover it for yourself!\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic“",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "Reverse Engineering TicketMaster's Rotating Barcodes",
        "url": "https://conduition.io/coding/ticketmaster/index.html",
        "description": "“Screenshots won’t get you in”, but Chrome DevTools will (if you know where to look)! This article might look like a bit of off-topic, but I loved to read how the author used web technologies to reverse engineer how TicketMaster's new rotating barcode works. I personally hate as well how this new ticketing system tries to lock users down to one proprietary solution which does not help the users. If you are also into barcodes and content encoding you'll surely find this read quite fascinating.",
        "imageUrl": "./c7fec1b132925d2de67a0403e658b5b1353313db563aabbf141af91f8a38ad47.jpg",
        "featured": true
      },
      {
        "title": "Exploring Randomness In JavaScript",
        "url": "https://bennadel.com/blog/4669-exploring-randomness-in-javascript.htm",
        "description": "How much random is a random number generation in JavaScript? Ben Nadel compares the randomness of `Math.random()` vs `crypto.getRandomValues()` in terms of randomness and performance.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "System Design: How to Scale a Database",
        "url": "https://blog.algomaster.io/p/system-design-how-to-scale-a-database",
        "description": "Have you ever wondered how big websites with hundreds of thousands of users scale their databases? This article discusses 8 different techniques commonly used to scale databases to insane levels!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Magic of Clip Path",
        "url": "https://emilkowal.ski/ui/the-magic-of-clip-path",
        "description": "`clip-path` is often used for trimming a DOM node into specific shapes, like triangles. But what if I told you that it's also great for animations?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Path To A Clean(er) React Architecture: Domain Logic",
        "url": "https://profy.dev/article/react-architecture-domain-logic",
        "description": "The unopinionated nature of React is a two-edged sword. On the one hand, you get freedom of choice. On the other hand, many projects end up with a custom and often messy architecture. This article is the seventh part of a series about software architecture and React apps where we take a code base with lots of bad practices and refactor it step by step. In this article, you will learn where to put all the small functions that often end up in utility files using the domain layer.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Exploring the challenges in creating an accessible sortable list (drag-and-drop)",
        "url": "https://github.blog/2024-07-09-exploring-the-challenges-in-creating-an-accessible-sortable-list-drag-and-drop",
        "description": "The Accessibility team at GitHub considers drag-and-drop a “high-risk pattern,” often leading to accessibility barriers and a lack of effective solutions in the industry. They developed a solution for a more accessible sortable list, which they refer to as \"one-dimensional drag-and-drop\".",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Batman-Comic.CSS",
        "url": "https://alvaromontoro.com/blog/68056/batman-comic-css",
        "description": "Move aside, TailwindCSS, the next best CSS utility-class library, is already here, and it's all about web development... and comics. Because the caped crusader makes everything better! Check out this awesome CSS library that allows you to make Batman comics! Why wouldn't you want to do that?!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming",
      "author": "Eric Matthes",
      "description": "You'll start by learning basic programming concepts, such as variables, lists, classes, and loops, and practice writing clean code with exercises for each topic. You'll also learn how to make your programs interactive and test your code safely before adding it to a project. You'll put your new knowledge into practice by creating a Space Invaders-inspired arcade game, building a set of data visualizations with Python's handy libraries, and deploying a simple application online. As you work through the book, you'll learn how to:",
      "coverImageUrl": "./7312b740a933a23e65baeab406eb5e840dd8839b45bc89d907104ac9b1956ed9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1718502702?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1718502702?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Rye: project and package management solution for Python",
        "url": "https://rye.astral.sh/"
      },
      {
        "title": "Script Integrity",
        "url": "https://frontendmasters.com/blog/script-integrity"
      },
      {
        "title": "Sneaky React Memory Leaks: How the React compiler won’t save you",
        "url": "https://schiener.io/2024-07-07/react-closures-compiler"
      },
      {
        "title": "Serverless AI Inference with Gemma 2 using Mozilla's llamafile on AWS Lambda",
        "url": "https://unremarkable.ai/serverless-ai-inference-with-gemma-2-using-mozillas-llamafile-on-aws-lambda"
      },
      {
        "title": "Flexbox Layouts",
        "url": "https://codu.co/articles/flexbox-layouts-oki7h3br"
      },
      {
        "title": "Moving from Express to Fastify",
        "url": "https://blog.val.town/blog/fastify"
      },
      {
        "title": "Learn Suspense by Building a Suspense-Enabled Library",
        "url": "https://bbss.dev/posts/react-learn-suspense"
      },
      {
        "title": "Which (AWS) load balancer should you use? (podcast)",
        "url": "https://awsbites.com/127-load-balancers/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 380,
    "title": "Towards Qwik 2.0: Lighter, Faster, Better",
    "slug": "2024-07-08-362-towards-qwik-2-0-lighter-faster-better",
    "date": "2024-07-08",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #380! As always, we’ve curated a selection of insightful and inspiring content to keep you at the forefront of full-stack web development.\nIn this issue, we’re excited to delve into the upcoming Qwik 2.0 release, exploring the innovative features that are set to make this framework lighter, faster, and better. For those of you interested in broadening your programming horizons, we have a fantastic talk on learning Rust in an easy and accessible way. It’s perfect for anyone who has been hesitant to dive into this powerful language.\nWe also have a deep dive into solving Node.js event loop lag, a must-read for anyone working on large-scale Node.js applications. If you're curious about WebAssembly, don’t miss our guide on integrating a Go library into a JavaScript webpage, unlocking new cross-language possibilities.\nOther highlights include a tutorial on canceling JavaScript promises, a hands-on project building a data compression utility in Haskell, and a nostalgic look at the evolution of responsive web design.There's something for everyone, so dive in and enjoy the read!\nBest,\n— Your editor, [Luciano](https://x.com/loige)",
    "quote": {
      "text": "Technology is anything that wasn't around when you were born“",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "Towards Qwik 2.0: Lighter, Faster, Better",
        "url": "https://builder.io/blog/qwik-2-coming-soon",
        "description": "**Qwik** it's an extremely promising framework. In my humble opinion, it's one of the very few recent frameworks that is trying to bring some real innovation in the frontend world. In this article, you can discover what's in store for the upcoming Qwik 2.0.",
        "imageUrl": null,
        "featured": true
      },
      {
        "title": "Easy Mode Rust",
        "url": "https://youtube.com/watch?v=33FG6O3qejM",
        "description": "**Rust** is often considered a hard-to-learn language. And it's hard to disagree with this statement. But, in this talk, [Andre](https://llogiq.github.io/) makes the case for a subset of Rust that is actually quite easy to learn and use and it's still going to give you some amazing benefits! So if you have been meaning to learn Rust for a while and you were afraid by its perceived complexity, this is a great place to start from! And there's even an [article](https://llogiq.github.io/2024/03/28/easy.html) version if you prefer to read rather than watch a video.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How we tamed Node.js event loop lag: a deepdive",
        "url": "https://trigger.dev/blog/event-loop-lag",
        "description": "An interesting tale of how the folks at trigger.dev discovered and fixed various reliability and performance issues in our Node.js application that were caused by Node.js event loop lag. If you plan to do any Node.js at a serious scale, this is a must read!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Integrate Go Library into a JavaScript Webpage with WebAssembly",
        "url": "https://tderflinger.com/en/how-to-integrate-go-library-js-webpage-webassembly",
        "description": "With **WebAssembly** you can integrate different programming languages together. This opens up new possibilities to use great libraries written in one language in another different platform. In this article, you will learn how to integrate a Go library for sentence tokenization in a JavaScript webpage. Normally, you cannot run Go code in a web browser, but with WebAssembly, you can.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Annul Promises in JavaScript",
        "url": "https://webdeveloper.beehiiv.com/p/cancel-promises-javascript",
        "description": "In JavaScript, a Promise is an object that is used to represent a computation that is being performed asynchronously and it allows you to track the state of that computation. That can be an HTTP request, reading a file from the filesystem, etc. But what if you want to cancel this operation while it is still in progress? This article showcases a few different methods for canceling promises.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building a data compression utility in Haskell using Huffman codes",
        "url": "https://lazamar.github.io/haskell-data-compression-with-huffman-codes/",
        "description": "In this post we will implement a data compression program in about 150 lines of Haskell. It will use Huffman coding and handle arbitrary binary files using constant memory for encoding and decoding. A fascinating read that will teach you some cool stuff about algorithms, data structures, compression and, why not, a little bit of Haskell! The best part, IMHO, are the interactive visualizations! Enjoy it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How websites learned to fit everywhere",
        "url": "https://youtube.com/watch?v=ckEdTprbQas",
        "description": "Let's travel back in time and learn about the history of responsive design, all the way from 1990s to 2020s. A wonderful video by one of my favourite web design YouTube channels: [Juxtopposed](https://www.youtube.com/@juxtopposed).",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Road to GraphQL: Your journey to master pragmatic GraphQL in JavaScript with React.js and Node.js",
      "author": "Robin Wieruch",
      "description": "The Road to GraphQL is your personal journey to master pragmatic GraphQL in JavaScript. The book is full with applications you are going to build along the way with React.js and Node.js. Afterward, you will be able to implement full-stack JavaScript applications. I wrote the The Road to GraphQL over the last year, while building several GraphQL applications for my clients and for myself. During this time, I came to understand the practical genius of GraphQL, and how it dramatically improves communication in client-server architectures. Not only does it improve the interface between the client and the server, it also enhances client-side state management by eliminating remote data management. Sophisticated GraphQL libraries like Apollo Client provide powerful features like caching, optimistic UI, and data prefetching for free. This book covers the fundamentals of GraphQL itself, as well as its ecosystem.",
      "coverImageUrl": "./5c82e67d5ee02a27844209622e8d54da6a26ab1bc9b21ecf670bf3e713208256.jpg",
      "amazonUs": "https://www.amazon.com/dp/1730853935?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1730853935?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Profiling Node.js Applications",
        "url": "https://betterstack.com/community/guides/scaling-nodejs/profiling-nodejs-applications"
      },
      {
        "title": "Getting Started with CSS Selectors",
        "url": "https://codu.co/articles/getting-started-with-css-selectors-c7ji-3m?ref=newsletter"
      },
      {
        "title": "Node.js, Deno, and Bun",
        "url": "https://ckarchive.com/b/lmuehmh08vwdxid7kkm78cdoo5v00hg"
      },
      {
        "title": "Crafting Lambda Functions in Rust (e-book)",
        "url": "https://rust-lambda.com/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 379,
    "title": "The last 6 decades of AI — and what comes next",
    "slug": "2024-07-01-361-the-last-6-decades-of-ai-and-what-comes-next",
    "date": "2024-07-01",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #379. FullStack Bulletin is the newsletter that curates interesting content to keep all the full-stack developers out there inspired. And in this issue, there's a lot to be inspired from!\n\nBefore leaving you to the content, I have 2 quick shoutouts. The first one is that the recordings of my talk [Your Lambdas, In Rust](https://www.youtube.com/watch?v=npqrTU2vK9c) from AWS Community Nordics is finally available. The second one is a big thanks to [Giuseppe Morelli](https://www.giuseppemorelli.net/) for spotting a bug in the footer of this newsletter which has been lingering there for quite a while! Thanks for reporting it, we now have a working link to [our Mastodon profile](https://mastodon.social/@fstackbulletin)! 😅\n\n— Your editor, Luciano",
    "quote": {
      "text": "Half of the battle of building performant software is caring enough to look“",
      "author": null,
      "authorTitle": "Engineer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "The last 6 decades of AI — and what comes next",
        "url": "https://ted.com/talks/ray_kurzweil_the_last_6_decades_of_ai_and_what_comes_next",
        "description": "and what comes next](https://ted.com/talks/ray_kurzweil_the_last_6_decades_of_ai_and_what_comes_next) —  Last week, my friend [Chico](https://chicocharlesworth.com/) sent me this awesome TED talk by [Ray Kurzweil](https://en.wikipedia.org/wiki/Ray_Kurzweil).  I admit I was not familiar with Ray, although he is (and has been for quite a while) a prominent figure in Artificial Intelligence. We are talking of about decades of commitment to the subject, so we could consider him a founding father of AI in many ways. In this talk, Ray gives his prediction on what AI will look like in the near future and it's quite mindblowing. I know it's a bit of an off-topic, but any innovation in AI will surely change the way we build full-stack web applications, so definitely worth some of your time, IMHO! I hope you'll enjoy it!",
        "imageUrl": "./b75d037640d7a602f46d92a18460db4e329f063c4446fe54c31f6d273fe80e3c.jpg",
        "featured": true
      },
      {
        "title": "React 19 – New Hooks Explained with Examples",
        "url": "https://freecodecamp.org/news/react-19-new-hooks-explained-with-examples",
        "description": "New Hooks Explained with Examples](https://freecodecamp.org/news/react-19-new-hooks-explained-with-examples) — **React 19** is going to revolutionize quite a bit the way we write React. We have already talked about the new compiler in previous issues, but another major change is going to be about hooks. New hooks such as `use`, `useOptimistic`, `useActionState`, and `useFormStatus` are worth checking out. This article shows us how these new hooks work with some useful examples.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ChattyUI - your private AI chat for running LLMs in the browser",
        "url": "https://github.com/addyosmani/chatty",
        "description": "An open-source project by the prolific [Addy Osmani](https://addyosmani.com/). This project is a web application that showcases a chat UI that you can use to chat with a local LLM. Something great to use in case you are privacy conscious (you should be!). The cool thing is that this is a Next.js app, so if you need to build a chat-bot like app with Next.js you can use this a starter template!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to debug Docker image intermediate layers",
        "url": "https://shippingbytes.com/2024/06/04/docker-debug-intermediate-image-layer/",
        "description": "My friend [Gianluca](https://gianarb.it/) (Docker Captain) has recently started **ShippingBytes**, a blog/newsletter where he shares lessons learned from the world of DevOps. This short article is one of my favourite so far and it shows you how you can debug Docker builds with [`buildg`](https://github.com/ktock/buildg) (a tool I never heard about before!). Worth a quick look if you use Docker a lot!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How To Hack Your Google Lighthouse Scores In 2024",
        "url": "https://smashingmagazine.com/2024/06/how-hack-google-lighthouse-scores-2024",
        "description": "Do perfect Lighthouse scores mean the performance of your website is perfect? As it turns out, Lighthouse is influenced by several things that can be manipulated and bent to make sites seem more performant than they really are, as [Salma Alam-Naylor](https://whitep4nth3r.com/) demonstrates in several experiments.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Using Node.js's test runner",
        "url": "https://nodejs.org/en/learn/test-runner/using-test-runner",
        "description": "An official guide from the new Node.js website showcasing how to take advantage of the built-in test runner. A great starting point if you are curious to start using it for your next projects.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Generating ZIP Files with Javascript",
        "url": "https://cjoshmartin.com/blog/creating-zip-files-with-javascript",
        "description": "If you ever needed to generate a ZIP file programmatically you might have found out that it's not as easy as you might expect. Lots of corner cases to be managed. In case you need to do that from Node.js or the browser, you can leverage [JSZip](https://stuk.github.io/jszip/) as clearly illustrated in this article.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Hacking the System Design Interview: Real Big Tech Interview Questions and In-depth Solutions",
      "author": "Stanley Chiang",
      "description": "Written by a software engineer at Google, this book will teach you how to ace the system design interview. This book includes real interview questions based on hundreds of interviews conducted at big tech companies, and their detailed solutions. Learn software and system fundamentals in clear and engaging lessons, distilled from 15+ years of experience.",
      "coverImageUrl": "./b67b4e3b6478973b1c49f58faed83e034cbbeb509cd4562c4f6fcaaf1c74ebdb.jpg",
      "amazonUs": "https://www.amazon.com/dp/B0B7QHRK5Q?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B0B7QHRK5Q?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Sonner: An opinionated toast component for React.",
        "url": "https://sonner.emilkowal.ski/"
      },
      {
        "title": "Database Design for Google Calendar: a tutorial",
        "url": "https://kb.databasedesignbook.com/posts/google-calendar"
      },
      {
        "title": "Nested Anchor Links using CSS",
        "url": "https://amitmerchant.com/nested-anchor-links-using-css"
      },
      {
        "title": "New JavaScript Set methods",
        "url": "https://developer.mozilla.org/en-US/blog/javascript-set-methods"
      },
      {
        "title": "Your Node is Leaking Memory? setTimeout Could be the Reason!",
        "url": "https://lucumr.pocoo.org/2024/6/5/node-timeout"
      },
      {
        "title": "For whatever it's worth: my advice on job hunting in tech",
        "url": "https://joshcollinsworth.com/blog/fwiw"
      },
      {
        "title": "awesome-learn-by-playing: A collection of tech resources that allow you to learn new things by playing games",
        "url": "https://github.com/lmammino/awesome-learn-by-playing"
      },
      {
        "title": "Turns out REST APIs weren't the answer (and that's OK!)",
        "url": "https://www.youtube.com/watch?v=0gH-hSyWp9o"
      },
      {
        "title": "Bastion Containers (podcast)",
        "url": "https://awsbites.com/126-bastion-containers/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 378,
    "title": "UUIDv7 in 31 languages",
    "slug": "2024-06-24-360-uuidv7-in-31-languages",
    "date": "2024-06-24",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #378!\n\nLast week I had the pleasure of talking about Rust and AWS Lambda (and t[he book that I am writing](https://rust-lambda.com/)) at the RustShip podcast by [Marco Ieni](https://ieni.dev/). If you think this can be an interesting topic for you, you can check out the [live recording](https://www.youtube.com/live/Qx0XIP4LnYU?si=xLcQzAv5vP2Hbs8k). A more polished version should come out soon as a podcast, so watch out all the [RustShip channels](https://open.spotify.com/show/3tLnLLWcvJyYTwMSi67zEA).\n\nNow let's get into some cool full-stack content. This week we have a great and varied selection of articles and libraries that will inspire you and that will help you to raise the bar of your full-stack game!\n\nEnjoy!\n\n— Your crazy editor, [Luciano](https://x.com/loige)",
    "quote": {
      "text": "The nice thing about standards is that you have so many to choose from“",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "UUIDv7 in 31 languages",
        "url": "https://antonz.org/uuidv7",
        "description": "Programmatically generated unique IDs such as UUID are fascinating. What else is fascinating if you ask me? Programming languages! So here's a crazy idea: let's implement UUIDv7 in 31 different programming languages! What does this have to do with full-stack web development you ask? Well you probably use UUID here and there, here's a great excuse to know in depth how they work and when they can be convenient (not always, really!)",
        "imageUrl": "./32e8f316770dfe5c77236cdb938bdab60085b705d3bf35ce438407c871af7c12.jpg",
        "featured": true
      },
      {
        "title": "Layer Cake",
        "url": "https://layercake.graphics/",
        "description": "If you love Svelte an data visualisation you will certainly love Layer Cake: a framework for mostly-reusable graphics with Svelte.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "uikit: User interfaces for react-three-fiber",
        "url": "https://github.com/pmndrs/uikit",
        "description": "User interfaces for react-three-fiber. If you are building interactive 3D experiences for the web and want to provide UI elements (e.g. clickable buttons, resizable panes, etc), this library can help you.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React 19 and Suspense - A Drama in 3 Acts",
        "url": "https://tkdodo.eu/blog/react-19-and-suspense-a-drama-in-3-acts",
        "description": "React 19 is a very promising release - but there's something not quite right yet with suspense... and this drama unfolded right during React Summit, the biggest React conferences out there! Are you curious to learn more about this?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Flow Charts with CSS Anchor Positioning",
        "url": "https://coryrylan.com/blog/flow-charts-with-css-anchor-positioning",
        "description": "With the introduction of the CSS Anchor Position API in Chrome 125, it's never been easier to position an element relative to another element. This is a great way to manage complex positioning use cases like popovers and tooltips. However, CSS Anchor Posititioning can be used for more than just popovers and tooltips, it can be used to create basic flow chart diagrams. In this post we will learn how to use CSS Anchor Positioning to create flow charts and diagram with just CSS.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dual Publishing ESM and CJS Modules with tsup and Are the Types Wrong?",
        "url": "https://johnnyreilly.com/dual-publishing-esm-cjs-modules-with-tsup-and-are-the-types-wrong",
        "description": "Learn how to publish a package that supports both ECMAScript modules (ESM) and CommonJS modules (CJS) using `tsup` and `Are the Types Wrong?`",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Bridging React Native and Rust via JSI",
        "url": "https://ditto.live/blog/bridging-react-native-and-rust-via-jsi",
        "description": "Ditto is a company that provides an SDK to perform synchronization of data between devices even when they don't have access to the internet. They recently had to integrate their solution with React Native and they had to use Rust as a mechanism to re-use their existing code and bring it into the React Native ecosystem. This is a bit of an off-topic, but still, a fascinating read if you want to learn how the world of the web can fade into the world of mobile and systems programming.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Learn React with TypeScript - Second Edition: A beginner's guide to reactive web development with React 18 and TypeScript",
      "author": "Carl Rippon",
      "description": "Reading, navigating, and debugging a large frontend codebase is a major issue faced by frontend developers. This book is designed to help web developers like you learn about ReactJS and TypeScript, both of which power large-scale apps for many organizations. This second edition of Learn React with TypeScript is updated, enhanced, and improved to cover new features of React 18 including hooks, state management libraries, and features of TypeScript 4. The book will enable you to create well-structured and reusable React components that are easy to read and maintain, leveraging modern design patterns. You'll be able to ensure that all your components are type-safe, making the most of TypeScript features, including some advanced types. You'll also learn how to manage complex states using Redux and how to interact with a GraphQL web API. Finally, you'll discover how to write robust unit tests for React components using Jest. This book is for experienced frontend developers looking to build large scale web applications using React and TypeScript. Intermediate knowledge of JavaScript, HTML and CSS is a prerequisite.",
      "coverImageUrl": "./7d472758205c220bcc13eca289fc9dea0b2d1556ce032f9d554707cf708c7818.jpg",
      "amazonUs": "https://www.amazon.com/dp/1804614203?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1804614203?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Pic Smaller: Compress JPEG, PNG, WEBP, AVIF, SVG and GIF images intelligently",
        "url": "https://github.com/joye61/pic-smaller"
      },
      {
        "title": "CRUD/Authorization Node.js framework",
        "url": "https://eicrud.com/"
      },
      {
        "title": "Best practices for accelerating development with serverless blueprints",
        "url": "https://aws.amazon.com/blogs/infrastructure-and-automation/best-practices-for-accelerating-development-with-serverless-blueprints"
      },
      {
        "title": "The Powerful Conversational AI JavaScript Library",
        "url": "https://docs.nlkit.com/nlux"
      },
      {
        "title": "Reassure: Performance testing companion for React and React Native",
        "url": "https://github.com/callstack/reassure"
      },
      {
        "title": "React-tag-autocomplete: A simple, accessible, tagging component ready to drop into your React projects (new repo)",
        "url": "https://github.com/i-like-robots/react-tag-autocomplete"
      },
      {
        "title": "How To Use Google Sheets as a Database With React via Next.js",
        "url": "https://thenewstack.io/how-to-use-google-sheets-as-a-database-with-react-and-ssr"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 377,
    "title": "Translating React apps with i18next",
    "slug": "2024-06-17-359-translating-react-apps-with-i18next",
    "date": "2024-06-17",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #377. I am curating this issue from [beautiful Puglia](https://unsplash.com/s/photos/puglia) where I am right now to attending a wedding. Lots to do and see... and eat! And the sun is shining, so you can imagine that I don't have a lot of time to invest in trying to come up with a clever intro for this issue 😛\n\nWith that being said, I am pretty pleased with how this issue turned out, so I hope you'll enjoy the selection of content! So, without further ado, let's get better at full-stack web development together! That is... after I finish my [burrata](https://unsplash.com/photos/white-round-ceramic-plate-with-white-cream-MnHjM1XiTrc)! 🤤\n\n— Your editor, [Luciano](https://x.com/loige)",
    "quote": {
      "text": "Fight Features … The only way to make software secure, reliable, and fast is to make it small“",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Translating React apps with i18next and testing them End-to-End with Playwright",
        "url": "https://wanago.io/2024/05/13/react-internationalization-end-to-end-tests-playwright",
        "description": "If you ever needed to build a React frontend that could support multiple languages, you probably bumped into the awesome `react-i18next` library. In this article, you don't just get a primer on how to use the library but also a rundown on how to test your views in different languages using Playwritght. Why is this important? Well, text in different languages can span over very different sizes and sometimes this can have unpredictable effects on the look and feel of your app!",
        "imageUrl": "./b7f1fcbcf39ff3341fd28572331e11342681aeab58bc753e198235d1c8c8ae0a.png",
        "featured": true
      },
      {
        "title": "A modern approach to browser support",
        "url": "https://clearleft.com/thinking/a-modern-approach-to-browser-support",
        "description": "In this article, you can learn about the Clearleft browser support policy. This is a very relevant read if your work requires you to design and build websites for customers who might have very specific expectations about which browser versions will be supported. It also touches on the evergreen topic of progressive enhancement, so all over a great read!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Data Fetching Patterns in Single-Page Applications",
        "url": "https://martinfowler.com/articles/data-fetch-spa.html",
        "description": "This article presents five different patterns to help Single Page Applications (SPAs) fetch data from remote sources. Spoiler: fetching data in a dynamic frontend app is not as trivial as it might seem...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Promises From The Ground Up",
        "url": "https://joshwcomeau.com/javascript/promises",
        "description": "“Promises”: one of the coolest things in JavaScript and yet one of the most misunderstood and misused APIs that the language has to offer. But that's no one's fault. It is surprisingly tricky to understand and use promises correctly. Without the right context, it doesn’t make much sense at all! In this tutorial, you’ll build an intuition for how Promises work by getting a deeper understanding of JavaScript and its limitations.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS Length Units",
        "url": "https://css-tricks.com/css-length-units",
        "description": "A comprehensive guide covering nine types of lengths that CSS uses to size elements in terms of dimensions, space, time, and even sound.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Lessons from starting, building, and exiting a devtools startup",
        "url": "https://boristane.com/blog/learnings-from-starting-building-and-exiting-a-devtools-startup",
        "description": "Our dear friend [Boris Tane](https://x.com/boristane) shares his key learnings from building Baselime, an awesome startup in the field of cloud observability, and how they eventually sold the company to CloudFlare. Not necessarily a full-stack heavy read, but some of the advice here is timeless and can be applied to any software project!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "In Praise Of The Basics",
        "url": "https://smashingmagazine.com/2024/05/in-praise-of-the-basics",
        "description": "What does it mean to learn the “basics”, or fundamentals, of front-end web development? Is starting with HTML and CSS still the best entry point to learn how to make websites and apps when we have a seemingly endless supply of frameworks? Geoff Graham thinks so and discusses why you might consider going “back to basics” to start or move forward in your career.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Complete Developer: Master the Full Stack with TypeScript, React, Next.js, MongoDB, and Docker",
      "author": "Martin Krause",
      "description": "A hands-on, beginner-friendly approach to developing complete web applications from the ground up, using JavaScript and its most popular frameworks, including Node.js and React.js.Whether you've been in the developer kitchen for decades or are just taking the plunge to do it yourself, The Complete Developer will show you how to build and implement every component of a modern stack—from scratch. You'll go from a React-driven frontend to a fully fleshed-out backend with Mongoose, MongoDB, and a complete set of REST and GraphQL APIs, and back again through the whole Next.js stack. The book's easy-to-follow, step-by-step recipes will teach you how to build a web server with Express.js, create custom API routes, deploy applications via self-contained microservices, and add a reactive, component-based UI. You'll leverage command line tools and full-stack frameworks to build an application whose no-effort user management rides on GitHub logins. Whether you're an experienced software engineer or new to DIY web development, The Complete Developer will teach you to succeed with the modern full stack. After all, control matters.",
      "coverImageUrl": "./c56fe3e54ac88730fa2bee795fc36b3e4914a91c72743e077aef29dbb9e8e1e2.jpg",
      "amazonUs": "https://www.amazon.com/dp/1718503288?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1718503288?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "How Deep is Your DOM?",
        "url": "https://frontendatscale.com/blog/how-deep-is-your-dom"
      },
      {
        "title": "“Just” One Line",
        "url": "https://blog.jim-nielsen.com/2024/just-one-line"
      },
      {
        "title": "Type Fluidity",
        "url": "https://wearerequired.github.io/fluidity"
      },
      {
        "title": "How to write unit tests when using the AWS JavaScript SDK v3?",
        "url": "https://cloudonaut.io/how-to-unit-test-aws-javascript-sdk-v3"
      },
      {
        "title": "A first look at CloudFront Hosting Toolkit (podcast)",
        "url": "https://awsbites.com/125-a-first-look-at-cloudfront-hosting-toolkit"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 376,
    "title": "Engineering for Slow Internet",
    "slug": "2024-06-10-358-engineering-for-slow-internet",
    "date": "2024-06-10",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #376,\n\nOK, I'll start by admitting that this issue came out a little bit weirder than usual! Somehow, I ended up selecting a few cool resources that are not necessarily strictly related to the world of full-stack web development. They are still cool engineering topics and I still think that they can teach you a lot, but do let me know what you think! 🙏\n\nIn other news, if you like serverless and multi-tenancy, my talk about [Building Secure & Efficient SaaS Platforms on AWS Serverless](https://www.youtube.com/watch?v=JB7d0427HLE) from ServerlessDays Belfast is finally available on YouTube!\n\n— Your editor, [Luciano](https://x.com/loige)",
    "quote": {
      "text": "The real problem is not whether machines think but whether men do.“",
      "author": "B.F. Skinner",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/B._F._Skinner"
    },
    "links": [
      {
        "title": "☃️ Engineering for Slow Internet",
        "url": "https://brr.fyi/posts/engineering-for-slow-internet",
        "description": "Your website is probably not going to have many visitors from Antarctica, but this is not the only place in the World where internet connectivity might not be great. So, if you care about being inclusive and making sure that ALL your users can have a great experience on your website, here's an interesting story and a few ideas that you can (and should) borrow! Not all ideas are website specifics, but this is still worth a read!",
        "imageUrl": "./33dca86688e9496bb99c173942fc8a7658d3b9f63086a6219fe09454bc73511e.jpg",
        "featured": true
      },
      {
        "title": "🔧 Fine-tuning Text Inputs",
        "url": "https://garrettdimon.com/journal/posts/fine-tuning-text-inputs",
        "description": "Web forms and inputs support a variety of additional attributes that can provide hints to the browser and improve the user experience of filling out forms online. With the tiniest bit of extra effort, we can make sure our forms help rather than hinder. For example, did you know you can enable or disable spell-check or auto-correct on an `<input>` element?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "😡 Why software engineers are always grumpy?",
        "url": "https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html",
        "description": "This article is a bit of a fun one. Not strictly related to full-stack web development, but I am sure you can recognise some of the laws of software complexity laws being stated here. Don't take it too seriously, but there's certainly some bittersweet truth to it.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🌝 TypeScriptToLua",
        "url": "https://typescripttolua.github.io/",
        "description": "Lua is one of these brilliant languages that you either love or hate. Small and efficient, it appears often in plugin systems. For instance, I recently had to use it to create some special NGINX extensions. It was fun to learn it, but also a bit painful at times. With TypeScriptToLua, you can bring your TypeScript experience when you need to write Lua code. It's effectively a transpiler from TypeScript to Lua. Your mileage might vary, but probably still worth a look if you are afraid of Lua.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "⚡️ zigar: Enable the use of Zig code in JavaScript projects",
        "url": "https://github.com/chung-leong/zigar",
        "description": "Zigar in an open-source software tool set that lets you utilize Zig code in your JavaScript project. Zig is still a relatively new language, but it really shines when you need extreme performance but you are looking for something a bit more modern and friendly than pure C. This can be the case if you are writing some low-level component and now you want to wrap it in a nice JavaScript API so you can use it from your Node.js projects. I haven't tried it yet, but I am really curious to give this a shot!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "😢 The popover drama",
        "url": "https://world.hey.com/jorge/the-popover-drama-48e317b3",
        "description": "The popover drama started with a tweet about how a HEY Calendar popover loaded slowly on a throttled internet connection. Then, a heated discussion followed in the best social media way, including nuance-free hot takes and professional trolls. This is a great starting point to understand the underlying tech that powers HEY: Hotwire, a ruby server-side rendered approach to reactive UIs in the browser.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🤔 What does idempotent mean in software systems?",
        "url": "https://particular.net/blog/what-does-idempotent-mean",
        "description": "If you ever attended a talk about good RESTful APIs I am sure you heard the term *idempotency* once or twice. But what does it really mean and why is it important to ensure consistency?",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Modern JavaScript for the Impatient",
      "author": "Cay Horstmann",
      "description": "Exploit the Power of Modern JavaScript and Avoid the PitfallsJavaScript was originally designed for small-scale programming in web browsers, but modern JavaScript is radically different. Nowadays, JavaScript programmers actively embrace functional, object-oriented, and asynchronous programming, while deprecating error-prone concepts from the past. Modern JavaScript for the Impatient is a complete yet concise guide to JavaScript E6 and beyond. Rather than first requiring you to learn and transition from older versions, it helps you quickly get productive with today's far more powerful versions and rapidly move from languages such as Java, C#, C, or C++.",
      "coverImageUrl": "./7ad6160afa0bd350a4fd8d9beb546a5e07cc698802552d0e8560440e1339a8ea.jpg",
      "amazonUs": "https://www.amazon.com/dp/0136502148?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0136502148?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Mastering date formatting using Intl.DateTimeFormat in JavaScript",
        "url": "https://rafaelcamargo.com/blog/mastering-date-formatting-using-intl-date-time-format-in-javascript"
      },
      {
        "title": "The Cost Of Shutting Down The Internet",
        "url": "https://cloudzero.com/blog/cost-of-shutting-down-the-internet"
      },
      {
        "title": "The (CSS) Gap",
        "url": "https://ishadeed.com/article/the-gap"
      },
      {
        "title": "10 modern Node.js runtime features to start using in 2024",
        "url": "https://snyk.io/blog/10-modern-node-js-runtime-features"
      },
      {
        "title": "How to build your first Web Component",
        "url": "https://youtube.com/watch?v=4ZCJDf5gjLA"
      },
      {
        "title": "Node.js Test Runner: A Beginner's Guide",
        "url": "https://betterstack.com/community/guides/testing/nodejs-test-runner"
      },
      {
        "title": "What is Serverless in 2024 & Why You Should Care? (video)",
        "url": "https://www.youtube.com/watch?v=ZKS4Oy3pMHc"
      },
      {
        "title": "The mathematics of lasagna (funny video for math nerds)",
        "url": "https://www.youtube.com/watch?v=9l9hcSIAAtM"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 375,
    "title": "Your API Shouldn't Redirect HTTP to HTTPS",
    "slug": "2024-06-03-357-your-api-shouldn-t-redirect-http-to-https",
    "date": "2024-06-03",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #375! 👋\n\nI don't have any interesting personal/work updates this week, so we are just going to bootstrap this week by fast-forwarding into some cool full-stack content! This week we have a mixbag of topics, going from web security, animations, creativity, and performance to responsive design and components systems.\n\nI hope you will enjoy this issue! And if you do, please consider sharing this newsletter with your friends and colleagues! Every little helps 🥰\n\n— Your editor, [Luciano](https://x.com/loige).",
    "quote": {
      "text": "It's not that we use technology, we live technology“",
      "author": "Godfrey Reggio",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/Godfrey_Reggio"
    },
    "links": [
      {
        "title": "☠️ Your API Shouldn't Redirect HTTP to HTTPS",
        "url": "https://jviide.iki.fi/http-redirects",
        "description": "How often have you created a redirect from HTTP to HTTPS? I have certainly done it quite a few times. Well, it turns out that is not good in terms of security, especially when you do this for APIs where the user might be sending sensitive information or authentication tokens... Instead of redirecting API calls from HTTP to HTTPS, make the failure visible, and you should also revoke any received API key!",
        "imageUrl": "./0eb68d9b94988a9407cf9d2f033427c69343f87d455f65a4a6b964a1aab0ff3a.jpg",
        "featured": true
      },
      {
        "title": "🪄 New magic for animations in CSS",
        "url": "https://chasem.co/",
        "description": "There are two new features coming to CSS that will make it much easier to further avoid JavaScript when implementing animations. 1. The possibility to animate `display: none` and 2. the possibility to animate intrinsic properties using `auto`. Let's see  how this can be quite useful with some examples!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🎨 JS Hacks & Creativity",
        "url": "https://aem1k.com/",
        "description": "A mind-bogging website showcasing pure JavaScript Hacks and Creative Coding. Created by Martin Kleppe!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "⚡️ From fast loading to instant loading",
        "url": "https://youtube.com/watch?v=bSua9vMdrNM",
        "description": "In this talk, we'll share how Chrome and the web platform can achieve near-instant page loads using the new Speculation Rules API.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🛑 Stop resizing your browser: improve testing for responsiveness",
        "url": "https://dev.to/jenc/stop-resizing-your-browser-improve-testing-for-responsiveness-4pbm",
        "description": "When you work on a responsive design, how often do you find yourself constantly resizing the browser window to see the effect of your changes across various screen sizes? A lot? Me too! But we can probably do better than that. This article approaches this exact topic and proposes a few interesting ideas.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🌳 Decision Trees For UI Components",
        "url": "https://smashingmagazine.com/2024/05/decision-trees-ui-components",
        "description": "Imagine finally resolving never-ending discussions about UI decisions for good. Here are some practical examples of decision trees for UI components and how to use them effectively.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🔪 Slash pages",
        "url": "https://slashpages.net/",
        "description": "A guide to common pages you can add to your website. Some of them might be familiar, but did you about `/blogroll`, `/chipotle` or `/now`? I think I have to update [my personal blog](https://loige.co/) to include some of these...",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Full Stack GraphQL Applications: With React, Node.js, and Neo4j",
      "author": "William Lyon",
      "description": "Build hyper-fast and hyper-efficient web applications with GraphQL! This practical, comprehensive guide introduces the powerful GRANDStack for developing full stack web applications based in graph data structures. The GraphQL query language radically reduces over-fetching or under-fetching of data by constructing precise graph-based data requests. In Full Stack GraphQL Applications you'll learn how to build graph-aware web applications that take full advantage of GraphQL's amazing efficiency. Neo4j's William Lyon teaches you everything you need to know to design, deploy, and maintain a GraphQL API from scratch. He reveals how you can build your web apps with GraphQL, React, Apollo, and Neo4j Database, aka “the GRANDstack,” to get maximum performance out of GraphQL.",
      "coverImageUrl": "./2347fcfa901a7fcaccf90d16a972c537e476db8a080c2b85944e940f16791a39.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617297038?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617297038?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "A Selection of Fonts That Future-Proof Your Web Design",
        "url": "https://tympanus.net/codrops/2024/05/10/a-selection-of-fonts-that-future-proof-your-web-design"
      },
      {
        "title": "How 1Password used esbuild to reduce their browser extension build times by 90%",
        "url": "https://blog.1password.com/new-extension-build-system"
      },
      {
        "title": "What is a collision? (fun interactive article)",
        "url": "https://sassnow.ski/rigid-body-collisions/1"
      },
      {
        "title": "littlezipper: Small, fast .zip library using native CompressionStream, suits server and client",
        "url": "https://github.com/jawj/littlezipper"
      },
      {
        "title": "What's new in the Web (Google I/O ‘24)",
        "url": "https://youtube.com/watch?v=W8bokbLn1G8"
      },
      {
        "title": "How to Make a CSS Timer",
        "url": "https://frontendmasters.com/blog/how-to-make-a-css-timer"
      },
      {
        "title": "React 19 lets you write impossible components",
        "url": "https://mux.com/blog/react-19-server-components-and-actions"
      },
      {
        "title": "How to improve S3 performance (podcast)",
        "url": "https://awsbites.com/124-s3-performance/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 373,
    "title": "Merging Remix and React Router",
    "slug": "2024-05-20-356-merging-remix-and-react-router",
    "date": "2024-05-20",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #373. Last week, ReactConf was on! As you might imagine, this means that this issue is going to be somewhat React-heavy. So, hopefully, you like React and you look forward to catching up with all the React updates! I'll also leave you with the [full recording of day one](https://www.youtube.com/watch?v=T8TZQ6k4SLE) if you prefer to watch ALL OF IT!\n\nWithout further ado, let's dive in!\n\n— Your editor, [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "Innovation is the outcome of a habit, not a random act“",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Merging Remix and React Router",
        "url": "https://remix.run/blog/merging-remix-and-react-router",
        "description": "Remix is a full-stack web framework build on top of React. React Router? Well, if you have done any React SPA in the last 10 years, there are big chances you have bumped into it (7.8 million projects have React Router as a dependency!). If not, it's a router library that helps you to change views based on the current URL of the page (without triggering a full refresh). Since there's a significant overlap between the two communities of developers maintaining React Router and Remix, it makes sense that the 2 projects get merged into one. But what does it mean to merge a full-stack framework with a routing library? Isn't the scope of the two very different? Well, let's find out!",
        "imageUrl": "./ef18bc9982eaeaa8a2f3a941d9068f7312b409de2e985eb2fcacb2be32a1ae29.png",
        "featured": true
      },
      {
        "title": "Manifesto for a Humane Web",
        "url": "https://humanewebmanifesto.com/",
        "description": "The web is becoming hostile to humans. Users are tracked and their privacy is routinely violated. Search results are populated with ads. We are constantly spammed by bots... If you feel all of this in your daily experience with the web, and, even more so, if you feel a responsibility as a web developer, this is the manifesto you were waiting for! Let's share it as much as we can!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "hot-hook: 🪝 Simple HMR for NodeJS + ESM",
        "url": "https://github.com/Julien-R44/hot-hook",
        "description": "Simple HMR for Node.js + ESM. This is pretty cool! We are quite used to hot-reload on the frontend, but this is the first time that I am seeing this idea being brought to the backend. Let's find out why it can be quite useful!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "✂️ knip",
        "url": "https://github.com/webpro/knip",
        "description": "Another interesting open-source project on GitHub! Knip is a developer tool that allows you to find unused files, dependencies, and exports in your JavaScript and TypeScript projects and... you guessed it, remove them from the project before you ship them! Knip it before you ship it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Modern Guide For Making CSS Shapes",
        "url": "https://smashingmagazine.com/2024/05/modern-guide-making-css-shapes",
        "description": "In this comprehensive guide, Temani Afif explores different techniques for creating common shapes with the smallest and most flexible code possible. No SVGs, only CSS! This is a topic that has always been fascinating me, so if you are like me, you will enjoy this deep dive!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Snappy UI Optimization with useDeferredValue",
        "url": "https://joshwcomeau.com/react/use-deferred-value",
        "description": "`useDeferredValue` is one of the most underrated React hooks. It allows us to dramatically improve the performance of our applications in certain contexts. The good ol' [Josh Comeau](https://www.joshwcomeau.com/), recently used it to solve a gnarly performance problem on his blog, so let's use this deep dive to learn more about this hook!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Updates for Dockerfile syntax (v1.7.0)",
        "url": "https://docker.com/blog/new-dockerfile-capabilities-v1-7-0",
        "description": "Dockerfiles are fundamental tools for developers working with Docker, serving as a blueprint for creating Docker images. There's a new version of the DockerFile syntax which makes them more powerful and user friendly. So, let's learn about new Dockerfile capabilities and how you can leverage them in your projects to further optimize your Docker workflows.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Event-Driven Architecture in Golang: Building complex systems with asynchronicity and eventual consistency",
      "author": "Michael Stack",
      "description": "Event-driven architecture in Golang is an approach used to develop applications that shares state changes asynchronously, internally, and externally using messages. EDA applications are better suited at handling situations that need to scale up quickly and the chances of individual component failures are less likely to bring your system crashing down. This is why EDA is a great thing to learn and this book is designed to get you started with the help of step-by-step explanations of essential concepts, practical examples, and more. You'll begin building event-driven microservices, including patterns to handle data consistency and resiliency. Not only will you learn the patterns behind event-driven microservices but also how to communicate using asynchronous messaging with event streams. You'll then build an application made of several microservices that communicates using both choreographed and orchestrated messaging. By the end of this book, you'll be able to build and deploy your own event-driven microservices using asynchronous communication.",
      "coverImageUrl": "./8c14ea88b46dbac3e8b1fc3390351277227b4a9fed12dfac941c4c2405fa8294.jpg",
      "amazonUs": "https://www.amazon.com/dp/1803238011?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1803238011?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "An opinionated approach to building serverless APIs on AWS",
        "url": "https://eliasbrange.dev/posts/opinionated-approach-to-serverless-apis"
      },
      {
        "title": "How to monetize an API on AWS?",
        "url": "https://cloudonaut.io/how-to-monetize-an-api-on-aws"
      },
      {
        "title": "100 Exercises To Learn Rust",
        "url": "https://rust-exercises.com/"
      },
      {
        "title": "What do you need to know about DynamoDB? (podcast)",
        "url": "https://awsbites.com/123-what-do-you-need-to-know-about-dynamodb/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 372,
    "title": "The many new features of Node.js",
    "slug": "2024-05-13-355-the-many-new-features-of-node-js",
    "date": "2024-05-13",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #372!\n\nLast week I announced my new side project, a book titled [**\"Crafting Lambda Functions in Rust\"**](https://rust-lambda.com/). You can probably guess what it is about! 😇 I am working on this project with the awesome [James Eastham](https://jameseastham.co.uk/) and we look forward to seeing how it will evolve! If you are curious, you can check out [our website](https://rust-lambda.com/) and if you want to support us you can already [purchase the book in early access mode](https://app.gumroad.com/checkout?product=mheuj&quantity=1&code=early-access) (with a 60% discount!) and support our efforts! I'd really appreciate it if you do that!\n\nBut now, without further ado, let's get into some full-stack news! This week we have lots of cool stuff in store for you! I enjoyed the first link, so if you have to be picky, just go for that one!\n\nHave a great full-stack week!\n\n— Your lovely editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "TypeScript is not a language, it is a multiverse of languages where your universe depends on your tsconfig.json",
      "author": null,
      "authorTitle": "Author & open-source developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "🎥 The Many New Features of Node.js",
        "url": "https://www.youtube.com/live/evCnOaVaOTo?si=NDVzm8OcCQjpzKfw%3Futm_source%3Dfullstackbulletin.com",
        "description": "In this live stream, [Jason Lengstorf](https://www.learnwithjason.dev/) and [Matteo Collina](https://nodeland.dev/), two of my favourite tech content creators out there, showcase some of the new amazing features available in Node.js 22. They debate how the perception of Node.js seems to have been locked in the past and how not many people are taking advantage of these new advancements. If you do any Node.js, this is a must-watch!",
        "imageUrl": "./c0c3155cc25e0d3fe791ccfe54cfff7cb15a5cbb7ece1ac8c2cd81fc9ddd76ab.png",
        "featured": true
      },
      {
        "title": "Unleash the power of Scroll-Driven Animations",
        "url": "https://developer.chrome.com/blog/scroll-driven-animations-video-course",
        "description": "A 10-part FREE video course to learn all about scroll-driven animations. And by the way, this is using some new cool CSS properties, not with JavaScript! Any cool modern website has some kind of scroll-driven animation these days, so defo worth checking this one out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Microsoft's $1M Vote of Confidence in Rust's Future",
        "url": "https://thenewstack.io/microsofts-1m-vote-of-confidence-in-rusts-future",
        "description": "We mentioned before that Rust is becoming more and more a great candidate language for full-stack web development thanks to frameworks such as [leptos](https://github.com/leptos-rs/leptos). Last week, Microsoft has made an unrestricted $1 million donation to the Rust Foundation, demonstrating its commitment to the Rust programming language and its ecosystem. This is one big step forward for the language and it will probably means, more adoption in the months and years to come. If you haven't invested in Rust, maybe it's time to start to play with it a little bit.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Latency numbers every frontend developer should know",
        "url": "https://vercel.com/blog/latency-numbers-every-web-developer-should-know",
        "description": "In this article, Vercel dissects the topic of latency. It provides all common numbers and measurements that every web developer should be familiar with. Building speedy websites is a multi-faceted effort, so this is a great guide to get the lay of the land on what's important to measure and improve.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "6 tools that made my life much easier as a Software Engineer",
        "url": "https://thetshaped.dev/p/6-tools-to-ease-software-engineer-life",
        "description": "An interesting collection of tools that can make your life as a software engineer a little bit easier, especially if you are on a Mac. I really enjoyed this one and discovered a couple of new tools, I wasn't familiar with. Hopefully, you'll like it as well.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Popover API is Here",
        "url": "https://frontendmasters.com/blog/popover-api-is-here",
        "description": "This API, which you can use entirely in HTML, allows you to open an element on top of **everything** despite where it lives in the DOM and without any particular styling. It's pretty cool and, most importantly, it doesn't require JavaScript!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Brief Note on Highlighted Text",
        "url": "https://adrianroselli.com/2024/05/a-brief-note-on-highlighted-text.html",
        "description": "Did you know that you can style the look and feel of selected text using CSS? You can actually style a lot more and soon you'll be able to style even the text highlighted by your browser after you run a \"search in page\" action. If this topic interests you, this article has a lot of fascinating details, so go check it out!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Ultimate Node.js for Cross-Platform App Development: Learn to Build Robust, Scalable, and Performant Server-Side JavaScript Applications with Node.js (English Edition)",
      "author": "Ramesh Kumar",
      "description": "Unlock the full potential of Node.js for modern web development with this comprehensive handbook to developing applications and services. The book will cover the fundamentals to advanced techniques, and explore the intricacies of building powerful applications. You will master Express server creation, develop RESTful APIs with efficient routing, and dive into MongoDB for seamless data persistence. It will uncover the nuances of template engines, middleware, and robust authentication methods. Leverage Socket.IO for real-time capabilities and adeptly handle errors with effective logging. The projects will double as versatile boilerplates for kickstarting your own development endeavors. In the later chapter, you will learn Test-Driven Development with Mocha, gain insights into debugging, and perfect the art of building and deploying Node.js applications. Each example in the book adheres to common best practices, providing valuable insights to help you avoid common pitfalls. Designed as both a learning resource and a reference guide, this book equips you with the knowledge to tackle challenging problems at any stage of development.",
      "coverImageUrl": "./980e49699b60835a88fd632929264b1f2e3b9c90c89cbd3eafb11eff9783a30b.jpg",
      "amazonUs": "https://www.amazon.com/dp/8196815158?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/8196815158?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Why Patching Globals Is Harmful",
        "url": "https://kettanaito.com/blog/why-patching-globals-is-harmful"
      },
      {
        "title": "Why don’t we talk about minifying CSS anymore?",
        "url": "https://blog.sentry.io/why-dont-we-talk-about-minifying-css"
      },
      {
        "title": "Keep it together: 5 essential design patterns for dev tool UIs",
        "url": "https://evilmartians.com/chronicles/keep-it-together-5-essential-design-patterns-for-dev-tool-uis"
      },
      {
        "title": "Making room for long list markers with subgrid",
        "url": "https://noahliebman.net/2024/03/making-room-for-long-list-markers-with-subgrid"
      },
      {
        "title": "Misconceptions about CSS Specificity",
        "url": "https://bram.us/2024/05/05/misconceptions-about-css-specificity"
      },
      {
        "title": "Using React Shepherd to build a site tour",
        "url": "https://blog.logrocket.com/using-react-shepherd-build-site-tour"
      },
      {
        "title": "Pechkin: an asynchronous Node.js file upload with multipart/form-data support",
        "url": "https://github.com/rafasofizada/pechkin"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 371,
    "title": "React 19 Beta",
    "slug": "2024-05-06-354-react-19-beta",
    "date": "2024-05-06",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #371.\n\nIn this issue, we unveil the highly anticipated **React 19 Beta**and delve into the game-changing features of **Node.js 22**. But there's more, like an insightful article on software design principles, HTML attributes versus DOM properties, and innovative techniques to detect JavaScript support in CSS. So, Get ready to be inspired, informed, and empowered in your full-stack journey 🚀✨\n\n*P.S.* On a bit of personal news, this week I'll be speaking in Copenhagen at the [AWS Community Days Nordics](https://awscommunitynordics.org/communityday/). If you will be there or just around Copenhagen, let me know, I'd love to chat with you in person!\n\n— Your editor, [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "The great growling engine of change - technology“",
      "author": "Alvin Toffler",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "React 19 Beta",
        "url": "https://react.dev/blog/2024/04/25/react-19",
        "description": "The first beta release of the highly anticipated React 19 is finally available on NPM. Why is this new release so exciting? It comes with some improvements and a few interesting new features such as **actions**, **transitions**, new **hooks**,  and a new generalised **`use()`** hook to handle resource loading. But there's more, so check out the docs if you are curious to start dipping your toes in this new version of React.",
        "imageUrl": "./7fd3a76f4a0a34aed92f734bea5aec3c86b51b076bac4f05d17af3435e7c5685.png",
        "featured": true
      },
      {
        "title": "Node.js 22",
        "url": "https://nodejs.org/en/blog/announcements/v22-release-announce",
        "description": "OK, time for another big announcement for the JavaScript lovers. This time we go on the backend to talk about Node.js 22 which was released last week... and it's a biggie! IMHO, the most exciting thing in this release is the ability to be able to use require() with EcmaScript Modules (under certain constraints). This promises to reduce the burden when it comes to publishing new libraries and it's another step forward to the mass adoption of ESM. Other interesting things are: a new built-in WebSocket client, updates of the V8 JavaScript engine, and more!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "HTML attributes vs DOM properties",
        "url": "https://jakearchibald.com/2024/attributes-vs-properties",
        "description": "They're completely different, but often coupled. And that's why they can be a common source of confusion. In this great article, [Jake Archibald](https://twitter.com/jaffathecake) demystifies them for us providing a few interesting examples.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "4 Software Design Principles I Learned the Hard Way",
        "url": "https://read.engineerscodex.com/p/4-software-design-principles-i-learned",
        "description": "Last week I really enjoyed reading this piece by Engineering Codex about 4 software design principles that we should know and love: maintain one source of truth, repeat yourself (please!), don't abuse mocks, and minimise mutable state. A bit of a random collection, but nonetheless, something we should think about when building our ambitious full-stack projects!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Front End Developer Handbook 2024",
        "url": "https://frontendmasters.com/books/front-end-handbook/2024",
        "description": "We already featured this one a few months back but I keep finding myself coming over to this one and I thought it would deserve another shot in case you had missed it! This FREE handbook provides an in-depth overview of the skills, tools, and technologies necessary to excel as a front-end developer in 2024.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Detect JavaScript Support in CSS",
        "url": "https://ryanmulligan.dev/blog/detect-js-support-in-css",
        "description": "Why can't we use CSS media queries to detect if JavaScript is enabled in the user browser? Wait a sec... now we can! This article shows us what this new media query looks like and a few useful examples of when and how we could leverage this for our designs!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Native Support for CJS/ESM Interoperability Begins in Node.js 22",
        "url": "https://zacharylee.substack.com/p/native-support-for-cjsesm-interoperability",
        "description": "Now You Can `require(ESM)`. We already mentioned this in the Node.js 22 news. But this is such a cool thing that it deserves its spotlight and a dedicated article with more background and some code examples.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Node Cookbook: Discover solutions, techniques, and best practices for server-side web development with Node.js 14",
      "author": "Bethany Griggs",
      "description": "A key technology for building web applications and tooling, Node.js brings JavaScript to the server enabling full-stack development in a common language. This fourth edition of the Node Cookbook is updated with the latest Node.js features and the evolution of the Node.js framework ecosystems. This practical guide will help you to get started with creating, debugging, and deploying your Node.js applications and cover solutions to common problems, along with tips to avoid pitfalls. You'll become familiar with the Node.js development model by learning how to handle files and build simple web applications and then explore established and emerging Node.js web frameworks such as Express.js and Fastify. As you advance, you'll discover techniques for detecting problems in your applications, handling security concerns, and deploying your applications to the cloud. This recipe-based guide will help you to easily navigate through various core topics of server-side web application development with Node.js. By the end of this Node book, you'll be well-versed with core Node.js concepts and have gained the knowledge to start building performant and scalable Node.js applications.",
      "coverImageUrl": "./dfe91f1334708f8c9f35515b9579fefa145d9435f1321829a47797334331a016.jpg",
      "amazonUs": "https://www.amazon.com/dp/1838558756?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1838558756?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "The problem with new URL(), and how URL.parse() fixes that",
        "url": "https://kilianvalkhof.com/2024/javascript/the-problem-with-new-url-and-how-url-parse-fixes-that"
      },
      {
        "title": "Bloom: component library for Elixir Phoenix",
        "url": "https://bloom-ui.fly.dev/"
      },
      {
        "title": "Secret LLama, run an LLM in the browser, offline!",
        "url": "https://github.com/abi/secret-llama"
      },
      {
        "title": "Figma’s journey to TypeScript: Compiling away our custom programming language",
        "url": "https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/"
      },
      {
        "title": "The Nature of Code: a book about interesting algorithms, freely readable online!",
        "url": "https://natureofcode.com/"
      },
      {
        "title": "A single DIV: a CSS drawing project",
        "url": "https://a.singlediv.com/"
      },
      {
        "title": "A year of publishing the MDN Blog",
        "url": "https://developer.mozilla.org/en-US/blog/mdn-blog-one-year-on/"
      },
      {
        "title": "How to use JSON Path",
        "url": "https://bump.sh/blog/how-to-use-json-path"
      },
      {
        "title": "The life and times of an Abstract Syntax Tree",
        "url": "https://blog.trailofbits.com/2024/05/02/the-life-and-times-of-an-abstract-syntax-tree/"
      },
      {
        "title": "Printing music with CSS Grid",
        "url": "https://cruncher.ch/blog/printing-music-with-css-grid/"
      },
      {
        "title": "Everything I wish I knew before moving 50,000 lines of code to React Server Components",
        "url": "https://www.mux.com/blog/what-are-react-server-components"
      },
      {
        "title": "Amazing Databases with Aurora (podcast)",
        "url": "https://awsbites.com/122-amazing-databases-with-aurora"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 370,
    "title": "The Shape of AI",
    "slug": "2024-04-29-353-the-shape-of-ai",
    "date": "2024-04-29",
    "templateType": "mce-mailchimp",
    "intro": "Hello !\n\nIn issue #370, we're delving deep into the world of **AI-driven web experiences**, unraveling the mysteries of f**unctional programming in JavaScript**, and reflecting on the thought-provoking discussions sparked by **JS Naked Day**. But that's just the beginning! There's a whole treasure trove of insights waiting for you to uncover. So come on in, join the conversation, and let's journey together through the ever-evolving landscape of full-stack web development.\n\n— Your editor, [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "Let's go invent tomorrow instead of worrying about what happened yesterday“",
      "author": "Steve Jobs",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "The Shape of AI",
        "url": "https://shapeof.ai/",
        "description": "As **AI** becomes more and more a mainstream phenomenon that we have to deal with daily, it's important to understand how users interact with AI and how we can offer the best web-based experiences for AI-powered products. This fantastic website explores some of the most common patterns you should consider when designing a website that uses some form of AI. [**Visit website**](https://shapeof.ai/)",
        "imageUrl": "./0f5a19509d745e44e9e8cc193b231d8ef2ebefd598e0aec7c173ae94b57801ca.png",
        "featured": true
      },
      {
        "title": "Deep Dive into Functional Programming in JavaScript",
        "url": "https://dev.to/alexmercedcoder/deep-dive-into-functional-programming-in-javascript-851",
        "description": "Functional programming (FP) has gained significant traction in the world of software development, and JavaScript developers are increasingly turning to this paradigm to solve problems more efficiently and with fewer bugs. In this article, you can explore some of the most important concepts that you'll have to master if you want to make good use of functional programming in your JavaScript code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Mario meets Pareto",
        "url": "https://mayerowitz.io/blog/mario-meets-pareto",
        "description": "This one hasn't much to do with the world of web development... well that's maybe not true, since it's an amazing website with some cool 3D animations. So, check out how to find the best Mario Kart 8 build using the Pareto frontier method and enjoy all the animations as you scroll through the data! Maybe you'll find some inspiration for your next frontend project!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JS Naked Day",
        "url": "https://js-naked-day.org/",
        "description": "Last week we had the JS Naked Day, a day dedicated to the idea that the web should work without JavaScript. An important idea to reflect upon, especially for editorial websites whose purpose is to provide information, they should definitely not require JavaScript to work...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Help us invent CSS Grid Level 3, aka “Masonry” layout",
        "url": "https://webkit.org/blog/15269/help-us-invent-masonry-layouts-for-css-grid-level-3",
        "description": "If you’ve been making websites for years, you know how frustrating it was to lay out a web page with CSS floats. You might have seen websites like Pinterest and wondered \"How did they achieve such a cool layout?\". That's called a masonry layout and, as of today, it involves a lot of JavaScript! But this might change because there is a new CSS spec in the works to introduce a native masonry layout... And you can contribute to it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "canvas-confetti",
        "url": "https://github.com/catdad/canvas-confetti",
        "description": "A lovely JavaScript library that allows you to easily add a confetti effect to your web pages. We presented [emojisplosion](https://www.emojisplosion.dev/) a few issues ago, this is another interesting alternative that focuses on performance and flexibility! Am I the only one who loves emojis so much? 😁",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Did Signals Just Land in React?",
        "url": "https://thenewstack.io/did-signals-just-land-in-react",
        "description": "\"Signals\" are used to manage client-side state, and every major frontend framework seems to be implementing them! Well, all except React! But this might change soon, as [Paul Scanlon](https://thenewstack.io/author/paulscanlon/) points out in this interesting article.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Distributed Systems with Node.js: Building Enterprise-Ready Backend Services",
      "author": "Thomas Hunter II",
      "description": "Many companies, from startups to Fortune 500 companies alike, use Node.js to build performant backend services. And engineers love Node.js for its approachable API and familiar syntax. Backed by the world's largest package repository, Node's enterprise foothold is only expected to grow. In this hands-on guide, author Thomas Hunter II proves that Node.js is just as capable as traditional enterprise platforms for building services that are observable, scalable, and resilient. Intermediate to advanced Node.js developers will find themselves integrating application code with a breadth of tooling from each layer of a modern service stack.",
      "coverImageUrl": "./58c5a292505b90063c9d1ea8694e3d9a1488b4931e05a10f155236b1dbbcd082.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492077291?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492077291?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Profile Node.js performance with the Performance panel",
        "url": "https://developer.chrome.com/docs/devtools/performance/nodejs"
      },
      {
        "title": "Motion extraction with mostly CSS",
        "url": "https://javier.xyz/blog/motion-extraction-with-mostly-css"
      },
      {
        "title": "No Abstractions: an Increase API design principle",
        "url": "https://increase.com/articles/no-abstractions"
      },
      {
        "title": "ehmicky/modern-errors: Handle errors in a simple, stable, consistent way",
        "url": "https://github.com/ehmicky/modern-errors"
      },
      {
        "title": "Learn OAuth 2.0 by Building Your Own OAuth Client",
        "url": "https://annotate.dev/p/hello-world/learn-oauth-2-0-by-building-your-own-oauth-client-U2HaZNtvQojn4F"
      },
      {
        "title": "Puck - The open-source visual editor for React",
        "url": "https://puckeditor.com/"
      },
      {
        "title": "An Introduction to the Node.js Performance API",
        "url": "https://betterstack.com/community/guides/scaling-nodejs/performance-apis"
      },
      {
        "title": "Deep Dive into Node.js Streams (video)",
        "url": "https://youtu.be/edB964-YYpE?si=fcM4AXhd1AIo4UHs%3Futm_source%3Dfullstackbulletin.com"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 369,
    "title": "Coding Interview University",
    "slug": "2024-04-22-352-coding-interview-university",
    "date": "2024-04-22",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nAre you ready for issue #369? We're diving into **coding mastery**, **UI magic**, and **design innovation**. Ever wondered about **perfect spacing in web design**? We've got the scoop. Plus, a **CSS-only gecko game** and **backend tips** await. And don't miss a **minimalist web stack**!\n\nLet's level up together!\n\nBTW, I am attending the AWS Summit in London this week! So if you are there, reach out to me! I'd love to have a face to face chat in front of a coffee!\n\n- Your editor, [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "Technology like art is a soaring exercise of the human imagination“",
      "author": "Daniel Bell",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Daniel_Bell"
    },
    "links": [
      {
        "title": "Coding Interview University",
        "url": "https://github.com/jwasham/coding-interview-university",
        "description": "A complete (FREE and open-source) computer science study plan to become a software engineer... or simply to pass your next coding interview. This one is especially awesome if you are thinking of applying to a big tech company like one of the FAANGs or simply if you feel like you want to harden your computer science skills! If you manage to complete this one, you'll probably be like Neo in The Matrix and learn to slow time and dodge all kinds of bullets! 😇",
        "imageUrl": "./17d6bcc3f389664406cbe1699bb45398b7b1cfe6b5c0adfe0b485db848fd3f18.png",
        "featured": true
      },
      {
        "title": "The Component Gallery",
        "url": "https://component.gallery/",
        "description": "The Component Gallery is a collection of components from the best Design Systems available on the web. It provides some useful information about best practices for various kinds of common components (Popover, Rating, Accordion, Quote, Pagination, Tabs, Button, etc). In addition to that every component has an impressive amount of links attached to back up some of the suggestions and provide additional inspiration from real-world use cases. A fantastic resource if you want to get better at designing and developing UIs or if you are working on a design system. [**Check out the website**](https://component.gallery/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Design Engineering at Vercel: What we do and how we do it",
        "url": "https://vercel.com/blog/design-engineering-at-vercel",
        "description": "Vercel is one of those companies that is pushing the boundaries of the web. Not just from a web development perspective, but also from a design perspective. Some of their animations or effects are simply astonishing and inspirational. This article from Vercel explores how they think about design. So one more resource to love if you are trying to skill up with your frontend/design game!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Secret Science of Perfect Spacing",
        "url": "https://youtube.com/watch?v=9ElrcTtAxzA",
        "description": "Last week, I bumped into this interesting YouTube video that discusses the topic of web design from the perspective of spacing. It might seem like a trivial topic, but understanding how to design pleasing spacing, padding and margins between your elements can make a huge difference in how users will enjoy your web products. Worth a watch if you have 10 minutes to spare!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "🦎 Curious Geckos: The Most Precise CSS-only Position-Aware Mini-Game!",
        "url": "https://dev.to/warkentien2/curious-geckos-the-most-precise-css-only-position-aware-mini-game-16i2",
        "description": "A CSS-only, no JS, no checkbox, position-aware (hover/touch aware) interactive gecko-luring game! A mind-blowing example of how CSS has evolved and what kind of capabilities it provides. Another proof that you don't always need JavaScript to build interactive experiences on the web. Check it out, it's quite fun to see!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to Implement Rate Limiting in Express for Node.js",
        "url": "https://blog.appsignal.com/2024/04/03/how-to-implement-rate-limiting-in-express-for-nodejs.html",
        "description": "WOk, let's get into a more backendy topic! Have you ever tried to implement a rate-limiting mechanism on your Node.js-based backend? This is something you should consider if you are building a public-facing product and you want to make sure no one is going to try to DDoS your service (either intentionally or not).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Tiny Stack (Astro, SQLite, Litestream)",
        "url": "https://logsnag.com/blog/the-tiny-stack",
        "description": "In the world of software there is always a struggle between simplicity and feature richness. It's hard to find the right tradeoffs and we always see ways of new simple approaches that eventually will become highly adopted and then get bloated. In this article, a new interesting web development stack is introduced. This is a stack that aims to be simple, robust, and minimal, and its focused on building web applications with Astro, SQLite, and Litestream.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Third edition: Design and implement production-grade Node.js applications using proven patterns and techniques",
      "author": "Mario Casciaro, and Luciano Mammino",
      "description": "Learn proven patterns, techniques, and tricks to take full advantage of the Node.js platform. Master well-known design principles to create applications that are readable, extensible, and that can grow big. What you will learn",
      "coverImageUrl": "./7d1c002ac1bba732d68fc10e0d71c3f53d8da0459cfbf9fa9dade3403a1c3529.jpg",
      "amazonUs": "https://www.amazon.com/dp/1839214112?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1839214112?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Exactly what to say in code reviews",
        "url": "https://read.highgrowthengineer.com/p/exactly-what-to-say-in-code-reviews"
      },
      {
        "title": "Migrating 500+ tests from Mocha to Node.js",
        "url": "https://astro.build/blog/node-test-migration"
      },
      {
        "title": "Node.js Debugging in Chrome DevTools",
        "url": "https://frontendmasters.com/blog/node-js-debugging-in-chrome-devtools"
      },
      {
        "title": "Layered Toggles: Optional CSS Mixins",
        "url": "https://kizu.dev/layered-toggles"
      },
      {
        "title": "Folding the DOM",
        "url": "https://joshwcomeau.com/react/folding-the-dom"
      },
      {
        "title": "Setting Up Storybook for React Components",
        "url": "https://dolthub.com/blog/2024-04-08-storybook-react-components"
      },
      {
        "title": "Drawing a Line to Connect Elements with CSS Anchor Positioning",
        "url": "https://frontendmasters.com/blog/drawing-a-line-to-connect-elements-with-css-anchor-positioning"
      },
      {
        "title": "5 Ways to extend AWS CloudFormation (podcast)",
        "url": "https://awsbites.com/121-5-ways-to-extend-cloudformation/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 368,
    "title": "Oh My Git!",
    "slug": "2024-04-15-351-oh-my-git",
    "date": "2024-04-15",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \n\nWelcome to issue #368! In this edition, we've curated a wealth of resources, tips, and insights tailored specifically for ambitious full-stack web developers like you. I hope you will enjoy learning about the latest trends, discovering cutting-edge tools, and uncovering hidden gems to propel your projects to new heights.\n\nHappy *full-stacking*!\n\n— Your editor, [Luciano](https://loige.co/)",
    "quote": {
      "text": "Remember, to learn and not to do is really not to learn. To know and not to do is really not to know“",
      "author": "Stephen Covey",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Covey"
    },
    "links": [
      {
        "title": "Oh My Git!",
        "url": "https://ohmygit.org/",
        "description": "We have featured this one before but \"Oh My Git!\" certainly deserves another time in the spotlight! It is a wonderful FREE and open-source game about learning Git! Even if you think you know enough Git, this can still be a fun thing to play and you might end up learning a new thing or two anyway! Check it out, trust me!",
        "imageUrl": "./2b2acc482440c014ab1dc28ea60c42fe170fc2142f471df98325c69078f816e7.jpg",
        "featured": true
      },
      {
        "title": "Valkey: the future of open-source Redis!",
        "url": "https://github.com/valkey-io/valkey",
        "description": "You might have heard some of the *shenanigans* going on with the Redis licensing strategy lately... If you haven't the TLDR; is that, with the new license, cloud hosting providers are not allowed anymore to use the source code of Redis free of charge. This has created lots of interest in spinning up a new Redis-compatible alternative. Valkey is probably the most promising at this point. It's a fork of Redis that has been endorsed by AWS, Google Cloud, and Oracle and it's backed by the Linux Foundation. Definitely something to watch closely and add to your bookmarks!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Transformers.js: State-of-the-art Machine Learning for the web",
        "url": "https://github.com/xenova/transformers.js",
        "description": "Transformer.js is an awesome project that brings state-of-the-art Machine Learning directly into the browser thanks to a JavaScript-first implementation of the famous HuggingFace transformers Python library. What are you going to build with it? Computer Vision, Natural Language Processing, Image Classification, and more! Your imagination is the limit!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing Jpegli: A New JPEG Coding Library",
        "url": "https://opensource.googleblog.com/2024/04/introducing-jpegli-new-jpeg-coding-library.html",
        "description": "Google has recently presented Jpegli, an advanced JPEG coding library that maintains high backward compatibility while being faster, and more efficient, than traditional JPEG. If you have an image-heavy website this can be something to consider for performance optimization.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ETag and HTTP caching",
        "url": "https://rednafi.com/misc/etag_and_http_caching",
        "description": "One neat use case for the HTTP ETag header is client-side HTTP caching for GET requests. Along with the ETag header, the caching workflow requires you to fiddle with other conditional HTTP headers like If-Match or If-None-Match. However, their interaction can feel a bit confusing at times. This article gives you a great overview of what kind of options do you have for client-side caching using HTTP headers with a particular focus on the role of the ETag header.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Mental Health in Software Engineering",
        "url": "https://vadimkravcenko.com/shorts/mental-health-in-software-engineering",
        "description": "This is a recurring theme, but probably still something we don't talk about enough! If you have been struggling with impostor syndrome, anxiety, or simply feeling under pressure when dealing with responsibilities and deadlines, well, you are not alone! In this article, [Vadim Kravcenko](https://vadimkravcenko.com/), gives us their powerful perspective on this topic!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React Server Components in a Nutshell",
        "url": "https://thenewstack.io/react-server-components-in-a-nutshell",
        "description": "In this article, [Paul Scanlon](https://www.linkedin.com/in/pauliescanlon/) uses Waku, an open-source React meta-framework that we featured a few weeks ago, to show how RSCs give React developers access to asynchronous server-side requests and data at the component level.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering API Architecture: Design, Operate, and Evolve API-Based Systems",
      "author": "James Gough, Daniel Bryant, and Matthew Auburn",
      "description": "Most organizations with a web presence build and operate APIs; the doorway for customers to interact with the company's services. Designing, building, and managing these critical programs affect everyone in the organization, from engineers and product owners to C-suite executives. But the real challenge for developers and solution architects is creating an API platform from the ground up. With this practical book, you'll learn strategies for building and testing REST APIs that use API gateways to combine offerings at the microservice level. Authors James Gough, Daniel Bryant, and Matthew Auburn demonstrate how simple additions to this infrastructure can help engineers and organizations migrate to the cloud; and open the opportunity to connect internal services using technologies like a service mesh.",
      "coverImageUrl": "./44d367e5b6a90917388fd779cffe6509236a345fcd5a122d0e38339cd01d1d2b.jpg",
      "amazonUs": "https://www.amazon.com/dp/1492090638?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1492090638?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "NanoGL",
        "url": "https://nanogl.com/"
      },
      {
        "title": "Text Effects",
        "url": "https://texteffects.dev/"
      },
      {
        "title": "WebAssembly Adoption: Is Slow and Steady Winning the Race?",
        "url": "https://thenewstack.io/webassembly-adoption-is-slow-and-steady-winning-the-race"
      },
      {
        "title": "How to think about HTML responsive images",
        "url": "https://danburzo.ro/responsive-images-html"
      },
      {
        "title": "Understanding Cookies, Local Storage, and Session Storage: A Beginner's Guide",
        "url": "https://dev.to/madhusaini22/understanding-cookies-local-storage-and-session-storage-a-beginners-guide-5gkk"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 367,
    "title": "Bringing Python to Cloudflare workers",
    "slug": "2024-04-08-350-bringing-python-to-cloudflare-workers",
    "date": "2024-04-08",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \n... and welcome to issue #367!\n\nIn this issue, we have a selection of topics that range from deep technical walkthroughs on how to implement crazy things like running **Python** code in **V8** (something that Cloudflare just released in their worker platform) to more traditional web design topics such as **CSS container queries** (something that I am particularly excited about).\n\nI am not going to hold you much longer from this content, but if you have one minute, [help us to make FullStack Bulletin better by filling out this survey](https://fstack.link/lets-make-it-better)!\n\nThank you and have an awesome full-stack week!\n\n— Your editor, [Luciano](https://loige.co/).",
    "quote": {
      "text": "Learn the principle, abide by the principle, and dissolve the principle“",
      "author": "Bruce Lee",
      "authorTitle": "Martial Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Bruce_Lee"
    },
    "links": [
      {
        "title": "Bringing Python to Cloudflare Workers",
        "url": "https://blog.cloudflare.com/python-workers",
        "description": "Last week Cloudflare introduced Workers in Python. This is something that might be more or less exciting depending on your level of adoption of Cloudflare workers. What I found most interesting is the technology deep dive into how this feature was implemented. In fact, the workers' platform is heavily based on V8, the famous JavaScript runtime, so how did Cloudflare manage to run Python at scale on it?! If this kind of topic makes you curious, you'll certainly enjoy this one!",
        "imageUrl": "./44cf462b1d43189589cd59486af85a4517cfec54fed80af8f59c2b8ee2eb3ee7.png",
        "featured": true
      },
      {
        "title": "An Interactive Guide to CSS Container Queries",
        "url": "https://ishadeed.com/article/css-container-query-guide",
        "description": "CSS Container queries are one of those innovations that can have the power to change the way certain things are built. They are still early and I believe their full potential is yet to be discovered. If you have no idea what I am talking about, well, this is *the* article for you!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Linear redesign",
        "url": "https://linear.app/blog/a-design-reset",
        "description": "Linear, the famous project management application that is attempting to dethrone Jira went through a very interesting re-design exercise. This is the first article of a series that go over the motivation and the design principles that they are following. Pretty interesting if you have a heart for design and you are always on the lookout for ideas on how to design better web applications.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Web Designer’s Accessibility Advocacy Toolkit",
        "url": "https://smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit",
        "description": "Digital designer Yichan Wang has put together this collection of strategies and selling points to help you encourage and advocate for accessibility in your place of work, including useful scripts you can use as starting points. Priceless!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Infinite-Scrolling Logos In Flat HTML And Pure CSS",
        "url": "https://smashingmagazine.com/2024/04/infinite-scrolling-logos-html-css",
        "description": "I have tried to achieve this effect so many times and every time it required way more JavaScript than I was willing to write (and I love JavaScript!)... So discovering that you can get this done with just CSS blew my mind! You don't believe me? Well, time to check out this article then!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Turn images into contour maps",
        "url": "https://benjdd.com/posts/turn-images-into-contour-maps",
        "description": "This article presents a great effect that you can achieve by using pictures, the `<canvas>` element, and a good amount of JavaScript. I truly love the final result and it's definitely something that I'll be using as an inspiration. For example, imagine using this effect in combination with an animation, maybe a scroll-based one! OK, maybe it's a bit heavy, but you can still have fun with it!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Universal domain types",
        "url": "https://mmapped.blog/posts/25-domain-types.html",
        "description": "If you like DDD (Domain Driven Design), you probably know that one of the most important things to do is to get your domain types right. This article goes a bit more in-depth on what that means and provides a bunch of examples (in different programming languages) on how to design great domain types for common use cases such as *amounts*, *loci,* and *quantities*.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Building the Web of Things: With examples in Node.js and Raspberry Pi",
      "author": "Dominique Guinard, and Vlad Trifa",
      "description": "Building the Web of Things is a guide to using cutting-edge web technologies to build the IoT. This step-by-step book teaches you how to use web protocols to connect real-world devices to the web, including the Semantic and Social Webs. Along the way you'll gain vital concepts as you follow instructions for making Web of Things devices. By the end, you'll have the practical skills you need to implement your own web-connected products and services.",
      "coverImageUrl": "./908fc055c3eb14ae8709a7437018a07a16418c34d11fd382ced691bb315c313e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292680?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292680?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "Going beyond pixels and (r)ems in CSS - Absolute length unit",
        "url": "https://techhub.iodigital.com/articles/going-beyond-pixels-and-rems-in-css/absolute-length-units"
      },
      {
        "title": "The Best Python Cheat Sheet",
        "url": "https://kieranholland.com/best-python-cheat-sheet"
      },
      {
        "title": "How to Kill the Cascade",
        "url": "https://robinrendle.com/the-cascade/017-how-to-kill-the-cascade"
      },
      {
        "title": "Front-end development’s identity crisis",
        "url": "https://ellyloel.com/blog/front-end-development-s-identity-crisis"
      },
      {
        "title": "Revealing the features of the XZ backdoor",
        "url": "https://youtube.com/watch?v=vV_WdTBbww4"
      },
      {
        "title": "The Curious Case of the CSS Monochrome Media Query",
        "url": "https://blog.stephaniestimac.com/posts/2024/03/css-monochrome-media-query"
      },
      {
        "title": "Cally: small, feature-rich calendar components",
        "url": "https://wicky.nillia.ms/cally"
      },
      {
        "title": "AWS Lambda best practices (podcast)",
        "url": "https://awsbites.com/120-lambda-best-practices/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 366,
    "title": "Trix: A rich text editor for everyday writing",
    "slug": "2024-04-01-349-trix-a-rich-text-editor-for-everyday-writing",
    "date": "2024-04-01",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #366!\n\nIf you missed the announcement in our latest issue, I am trying to gather as much feedback as possible on this newsletter to see what can we do to make it more useful to you. If you would like to share your opinion, please [consider filling this quick **feedback** form](https://fstack.link/lets-make-it-better), I'd really appreciate it! ❤️\n\nIn other news, last week I had the pleasure to attend RustNation UK and meet the lovely Rust community (unsurprisingly you'll see some Rust material in this issue!). I presented a workshop about using **AWS Lambda** with **Rust**, two topics I have been passionate about for the last few years. If that's something you are curious about, [my slides are available online, so go check them out](https://loige.link/lambda-nation-24)!\n\nAmong other awesome people, I had the pleasure of meeting [Ben Wishovic](https://benw.is/), one of the main contributors to **[Leptos](https://leptos.dev/)**, an ambitious project that allows you to build full-stack web projects completely in Rust (yes, even the frontend). If you are into Rust, or just thinking to learn it, you should check it out!\n\nNow, let's get to some cool full-stack content 👇\n\n— Your editor, [Luciano](https://loige.co/)!",
    "quote": {
      "text": "We shall do a much better programming job, provided we approach the task with a full appreciation of its tremendous difficulty, provided that we respect the intrinsic limitations of the human mind and approach the task as very humble programmers“",
      "author": "Alan Turing",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "Trix: A rich text editor for everyday writing",
        "url": "https://trix-editor.org/",
        "description": "Compose If you are building some kind of Admin UI for a CMS or just need your users to input formatted text, I recently discovered Trix: an interesting WYSIWYG editor for the web by 37Signals, the creator of Basecamp and Ruby on Rails. I haven't played with it too much, but from a few quick tests, it seems powerful enough for most use cases and relatively easy to integrate.",
        "imageUrl": "./bdc82b800b4948b38891b23938b522b5bc5d0bb1877f494ee410b3a84ff7e451.png",
        "featured": true
      },
      {
        "title": "The Unreasonable Effectiveness of Inlining CSS",
        "url": "https://strikingloo.github.io/inlining-css",
        "description": "There are so many friggin' ways, frameworks, and philosophies to do CSS these days. The most bare-bone way I can think about is ignoring CSS files completely and writing raw inline style attributes in all your HTML markup. This is probably going to be very hard to maintain by hand, so it's probably not a great idea. But what about performance? Isn't this approach going to bloat our pages? Well maybe, but it turns out that there might be some unexpected performance benefits in adopting this approach...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why choose async/await over threads?",
        "url": "http://notgull.net/why-not-threads",
        "description": "As a software engineer with significant experience with JavaScript I got used to the idea of async and I have a high-level understanding of why it can be convenient for IO-intensive applications. This article explores this topic from the perspective of a very experienced Rust developer and it tries to compare the async approach with the multi-threaded approach. Even though you might not be interested in Rust, this is a great read to understand better what kind of tradeoffs we are adopting when we use async programming.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Web component extensions to the standard <time> element",
        "url": "https://github.com/github/relative-time-element",
        "description": "Do you have users that might adopt your product from different timezones? Have you thought it might be convenient to display any date in the user-specific timezone? How can we do that in a very easy way? Well, you can use this simple (yet effective) open-source web component!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What You Need to Know about Modern CSS",
        "url": "https://frontendmasters.com/blog/what-you-need-to-know-about-modern-css-spring-2024-edition",
        "description": "CSS is ever-evolving. Especially in the last few years! The amount of stuff that has been coming out might have been somewhat hard to keep up with. This article does a great job at summarising the main things that you should absolutely know and that you can already adopt in your web projects!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JavaScript Visualized - Promise Execution",
        "url": "https://lydiahallie.framer.website/blog/promise-execution",
        "description": "This guide covers some of the inner workings of Promises in the JavaScript language. It explores how they leverage concepts like the Microtask Queue and Event Loop to enable non-blocking async code. The best part is that it provides some great visualizations that can help a ton to build a good mental model for these concepts.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Setting And Persisting Color Scheme Preferences",
        "url": "https://smashingmagazine.com/2024/03/setting-persisting-color-scheme-preferences-css-javascript",
        "description": "There are many ways to approach a “Dark Mode” feature that respects a user’s system color scheme preferences and allows for per-site customization. And it's tricky to get the switch right. If you don't do it correctly you'll risk having that annoying flash of unstyled content that your users might hate! In this article, you walk through a new possibility that leans into cutting-edge CSS, with minimal JavaScript to support persisting the user’s color scheme preference across pages.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Principles of Beautiful Web Design",
      "author": "Jason Beaird, Alex Walker, and James George",
      "description": null,
      "coverImageUrl": "./6a5be59995a1a1b2ba344538fb7d39eac70ba05b09cb1e75db08b66ad57f04ef.jpg",
      "amazonUs": "https://www.amazon.com/dp/1925836363?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1925836363?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "CSS color-scheme-dependent colors with light-dark()",
        "url": "https://web.dev/articles/light-dark"
      },
      {
        "title": "magick.css",
        "url": "https://css.winterveil.net/"
      },
      {
        "title": "Radix Themes 3.0",
        "url": "https://radix-ui.com/blog/[slug]"
      },
      {
        "title": "Spicing up text with text-emphasis in CSS",
        "url": "https://amitmerchant.com/spicing-up-text-with-text-emphasis-in-css"
      },
      {
        "title": "Add Superpowers to Your CSS Variables with Style Queries",
        "url": "https://thathtml.blog/2024/03/superpowered-container-style-queries"
      },
      {
        "title": "How To Use The Web Bluetooth API",
        "url": "https://confidence.sh/blog/how-to-use-the-web-bluetooth-api"
      },
      {
        "title": "Inspirational Websites Roundup",
        "url": "https://tympanus.net/codrops/2024/03/15/inspirational-websites-roundup-57"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 365,
    "title": "Node.js: The Documentary",
    "slug": "2024-03-25-348-node-js-the-documentary",
    "date": "2024-03-25",
    "templateType": "mce-mailchimp",
    "intro": "Hello, \nWelcome to issue #365!\nIn the last couple of weeks, I have been thinking a lot about how we could make FullStack Bulletin better and more valuable to you. But, after all, getting your opinion is probably the most valuable thing we could do! So I have prepared **[a quick form to gather your opinion about FullStack Bulletin](https://fstack.link/lets-make-it-better)**! I hope you can spare 5 minutes to help us to help you 😀\nWith that out of the way, now let's get into some full-stack content! And this week, we start with a bang, the highly anticipated Node.js documentary! 😱\n— Your editor, [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin“",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Node.js: The Documentary",
        "url": "https://youtube.com/watch?v=LB8KwiiUGy0",
        "description": "Back in 2008, most people thought of JavaScript as just a client-side language and, honestly the reputation of the language wasn't even that good with many calling it *a toy language*. But when Google's V8 appeared, young developer Ryan Dahl made the connection and started to think about what using JavaScript on the server side could really look like... I really enjoyed this documentary (even though I was expecting it to cover some of the Deno drama as well) and it's mind-blowing to see that it got more than 60K views after less than one day!",
        "imageUrl": "./877c6b698f3f98dc6b97257bdc0a16dba854c8f091c6190567ed723003b8735d.jpg",
        "featured": true
      },
      {
        "title": "There is no EU cookie banner law",
        "url": "https://www.bitecode.dev/p/there-is-no-eu-cookie-banner-law",
        "description": "Did you know that if you are a multinational business and you have a presence outside the EU, your websites (except for the European ones) don't have to show a cookie banner? That's cool, but what's even more interesting (and possibly less known) is that a cookie banner is not strictly required even in the EU itself! If you, like me, hate cookie bars, you might enjoy this article.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The problem with using a UUID primary key in MySQL",
        "url": "https://planetscale.com/blog/the-problem-with-using-a-uuid-primary-key-in-mysql",
        "description": "Many times I have seen UUIDs being used as primary keys in all kinds of databases. It never crossed my mind that they could not be an ideal choice in some circumstances. So this article is great, it shines a light on all the (very many) versions of UUIDs and why using them as a primary key in MySQL can hurt database performance.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Emojisplosion 💥🤯🤣",
        "url": "https://www.emojisplosion.dev/",
        "description": "I don't know if this can be useful, but I love it! Emojisplosion is a JavaScript library that allows you to create all sorts of emoji explosion effects (literally) on a web page. Maybe it's something you could use as an Easter egg or to reward a user after they complete some kind of important action. Well, one suggestion before you go crazy, remember to disable it with users with `prefers-reduced-motion` enabled.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "require(esm) in Node.js",
        "url": "https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/index.html",
        "description": "This is big for the Node.js ecosystem, which has been in a weird limbo for the last 3-4 years trying to promote the shift to ESM over Common.js, which has been way more painful than anyone could have imagined. What's changing is that we now have experimental support for `require()`-ing synchronous ES modules, a feature that has been long overdue. Something that can ease the pain of those who are still stuck in CommonJS land. I can't wait for this to become stable and broadly available!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The type system of the React compiler",
        "url": "https://recompiled.dev/blog/type-system",
        "description": "The [React Compiler](https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024#react-compiler) is no longer a research project: it powers instagram.com in production and it might soon become an integral part of the official React tooling ecosystem. So what's cool about it? In this article, you can learn some interesting details about the compiler type system and why this implementation enables some automatic optimizations.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What if you tried hard?",
        "url": "https://aaronfrancis.com/2024/try-hard",
        "description": "This is not a highly technical blog post, but once again, I think our friend [Aaron Francis](https://twitter.com/aarondfrancis) hits the nail on the head with another inspirational post. So here's why, sometimes we should all try harder to succeed! So yeah...Thanks, Aaron! I hope you'll get motivated just as much as I did after reading this post!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Design Playground: HTML & CSS the Interactive Way",
      "author": "Paul McFedries",
      "description": "Web Design Playground takes you step by step from writing your first line of HTML to creating interesting, attractive web pages. In this project-based book, you'll use a custom online workspace to design websites, product pages, photo galleries, and more. Don't worry about setting up your own servers and domain names—the book comes with a free \"playground\" which lets you experiment without any of that! You can concentrate on core skills like adding images and video and laying out the page, plus learning typography, responsive design, and the other tools of the web trade.",
      "coverImageUrl": "./5d355297a9b4cb81e5a7e90b2debcac984985e883c1e2a5848c40e973551658b.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617294403?tag=loige0e-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617294403?tag=loige-21"
    },
    "additionalLinks": [
      {
        "title": "How HEAD works in git",
        "url": "https://jvns.ca/blog/2024/03/08/how-head-works-in-git"
      },
      {
        "title": "Parsing the HN Who is Hiring Thread with ChatGPT and Node.js",
        "url": "https://jbernier.com/p?id=hn-who-is-hiring-chatgpt"
      },
      {
        "title": "Comparing ECMAScript Modules and CommonJS",
        "url": "https://wanago.io/2024/03/18/ecmascript-modules-esm-commonjs"
      },
      {
        "title": "Interneting Is Hard",
        "url": "https://internetingishard.netlify.app/"
      },
      {
        "title": "Runtime compatibility across JavaScript runtimes",
        "url": "https://runtime-compat.unjs.io/"
      },
      {
        "title": "CSS Button Styles You Might Not Know",
        "url": "https://dbushell.com/2024/03/10/css-button-styles-you-might-not-know"
      },
      {
        "title": "A formula for responsive font-size",
        "url": "https://jameshfisher.com/2024/03/12/a-formula-for-responsive-font-size"
      },
      {
        "title": "The state of AWS (video)",
        "url": "https://awsbites.com/119-the-state-of-aws-2024-answers-community-survey-commentary/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 364,
    "title": "#364: Learn Flexbox CSS in 8 minutes",
    "slug": "2024-03-18-347-364-learn-flexbox-css-in-8-minutes",
    "date": "2024-03-18",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #364, my dear full-stack friend!\n\nHere we are with another issue full of amazing content. I especially loved the featured one! If you have been struggling with **flexbox**, I am sure you'll love it! And, as usual, there's a lot more to keep you inspired and to tell you what's going on in the beautiful world of full-stack web development! Enjoy\n\n— Luciano",
    "quote": {
      "text": "The only way to learn a new programming language is by writing programs in it“",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Learn Flexbox CSS in 8 minutes (video)",
        "url": "https://youtube.com/watch?v=phWxA89Dy94",
        "description": "I love Flexbox, but I have to be honest and admit I always struggle a little bit to come up with the right set of CSS properties to achieve what I want to achieve. Only after watching this video, I realised that this was the case because I didn't really have a correct mental model for Flexbox and I wasn't too familiar with some of the nuances that come with combining certain properties. If you feel like you also struggle with Flexbox or simply want to have a nice recap on how they work, this video is definitely worth 8 minutes of your time!",
        "imageUrl": "./c7bdfb1df30f608ef57387806b5bb1cc47a406bf95b10ad305f909caa67257ea.jpg",
        "featured": true
      },
      {
        "title": "Gallery of error 404 page designs",
        "url": "https://www.404s.design/",
        "description": "404 pages, where joy and errors meet! If you want to know how much care was put into the design of a website, there's no better place to look than on the 404 error page! This website is an inspiration gallery, collecting hundreds and hundreds of astonishing designs for 404 pages! Definitely worth having a quick look to gather some inspirations for your next web project... Or maybe to renew your personal website... that's maybe what I should do. Speaking of which, what do you think about [my website 404 page](https://loige.co/404)?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JPEG XL and the Pareto Front",
        "url": "https://cloudinary.com/blog/jpeg-xl-and-the-pareto-front",
        "description": "Version 0.10 of libjxl, the reference implementation for JPEG XL, has just been released. The main improvement this version brings is that the so-called “streaming encoding” API has now been fully implemented. This API allows encoding a large image in “chunks.” Instead of processing the entire image at once, which may require a significant amount of RAM if the image is large, the image can now be processed in a more memory-friendly way. Is this going to be the future of images on the web? We will see!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Scalar: Beautiful API docs from OpenAPI",
        "url": "https://github.com/scalar/scalar",
        "description": "BA fantastic open-source project that can help you to build beautiful API references starting from your OpenAPI definition. If you want to quickly check out what the final result might look like, they have an [interactive demo page online](https://docs.scalar.com/swagger-editor) where you can copy-paste your API spec or start with the usual pet store example. I really like their design, but the feature that I love the most is the section that generates snippets for curl and for many different programming languages and HTTP clients.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The quiet, pervasive devaluation of frontend",
        "url": "https://joshcollinsworth.com/blog/devaluing-frontend",
        "description": "Something that I have been noticing lately talking with some customers during my consulting work is that many of them would say phrases such as *\"Yeah, it's just a piece of UI\"* or *\"Don't worry about the frontend, that's easy\"*, etc... I thought it was only my perception, but it looks like I am not alone. This article brings another scary perspective on how the industry is diminishing the value (and the efforts) of creating good frontends.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The faster Lambda runtime: NodeJS or LLRT? We benchmarked",
        "url": "https://learnaws.io/blog/node-vs-llrt",
        "description": "We already spoke about LLRT in a previous issue, but if you missed it, it is a Low Latency Runtime for AWS Lambda built with **QuickJS** & **Rust**. Can it replace Node.js for serverless? LLRT reduces your Lambda cost by 2x, and cold start by 10x. Let's look at some benchmarks, but let's not forget to look at the feature tradeoffs too!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Techniques to Break Words",
        "url": "https://adrianroselli.com/2024/02/techniques-to-break-words.html",
        "description": "How can you break words on the web? There are a few different CSS properties and layouts you can combine to achieve different effects. This article offers extensive guidance and even an interactive playground. It might sound like an unimportant topic, but it can have a significant effect on your designs, especially if you need to support multiple languages, including Right-to-Left ones.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "S3 is files, but not a filesystem",
        "url": "https://calpaterson.com/s3.html"
      },
      {
        "title": "Creating color palettes with the CSS color-mix() function",
        "url": "https://developer.mozilla.org/en-US/blog/color-palettes-css-color-mix"
      },
      {
        "title": "Retrofitting fluid typography",
        "url": "https://clagnut.com/blog/2428"
      },
      {
        "title": "Supercharge compression efficiency with shared dictionaries",
        "url": "https://developer.chrome.com/blog/shared-dictionary-compression"
      },
      {
        "title": "Menus, toasts and more with the Popover API, the dialog element, invokers, anchor positioning and @starting-style",
        "url": "https://frontendmasters.com/blog/menus-toasts-and-more"
      },
      {
        "title": "List of 2024 Leap Day Bugs",
        "url": "https://codeofmatt.com/list-of-2024-leap-day-bugs"
      },
      {
        "title": "My favourite data structure: The trie",
        "url": "https://jamesg.blog/2024/01/16/trie"
      },
      {
        "title": "WinterJS 1.0 - a new JavaScript runtime!",
        "url": "https://wasmer.io/posts/winterjs-v1"
      },
      {
        "title": "Awesome design effects you can achieve using blur wisely (video)",
        "url": "https://www.youtube.com/watch?v=--4n9c4-h1Y%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "The landing zone: Managing multiple AWS accounts (podcast)",
        "url": "https://awsbites.com/118-the-landing-zone-managing-multiple-aws-accounts/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 363,
    "title": "logScreen: visualize logs on a browser",
    "slug": "2024-03-11-346-logscreen-visualize-logs-on-a-browser",
    "date": "2024-03-11",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #363!\n\nLast week has been a very intense one! If you know me, you probably know that I am not only about full-stack web development but that I also enjoy programming in general and cloud architectures! So I was busy delivering [a talk about nom, an interesting parser combinator library for Rust,](https://www.youtube.com/watch?v=1atZzA3e3Kg&t=973s) and writing the first article of a series about [how to manage AWS accounts effectively for both personal and corporate use cases](https://fourtheorem.com/managing-aws-accounts-part-1/)!\n\nBut... if you don't care about this kind of stuff, don't worry! We have plenty of amazing full-stack content curated here for you!\n\nSo let's jump into it and let's learn something new!\n\n— [Luciano](https://twitter.com/loige)",
    "quote": {
      "text": "The designer of a new kind of system must participate fully in the implementation“",
      "author": "Donald Knuth",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "logScreen: visualize logs on a browser",
        "url": "https://github.com/soorajshankar/logScreen",
        "description": "Loglines can be messy, especially when you have lots of them and they contain structured information such as JSON values. It might be very challenging to consume this information in your terminal... so here's an idea! Actually, here's a viable project: logScreen, which allows you to read your logs (from any command!) nicely formatted in your browser. Just run `command | npx logscreen`.",
        "imageUrl": "./81396bc8f2538078ea198885fb39af8365a59ef096da227cdc8b10ba31e59631.jpg",
        "featured": true
      },
      {
        "title": "Top 8 Recent V8 in Node Updates",
        "url": "https://blog.appsignal.com/2024/02/28/top-8-recent-v8-in-node-updates.html",
        "description": "V8 is the most popular JavaScript engine out there. And it keeps getting better! This article explores the top 8 most recent V8 updates which we will be soon able to use in the browser and Node.js.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Plotly",
        "url": "https://plotly.com/javascript",
        "description": "Built on top of **d3.js** and **stack.gl**, Plotly.js is a high-level, declarative charting library with over 40 chart types, including 3D charts, statistical graphs, and SVG maps. The best part is that plotly.js is free and open source, so it might be the perfect candidate for one of your next projects, especially if you don't have a huge budget!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A native HTML Switch Control",
        "url": "https://webkit.org/blog/15054/an-html-switch-control",
        "description": "It's finally happening! No more fiddling with the style of checkbox components just to emulate an interactive switch control component in the style of iOS. Safari is actually introducing this component into HTML and it looks super easy to use. It builds on the existing checkbox input type (unsurprisingly), but this makes it so that there's a nice and functional fallback for browsers that don't have support for it.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "HTMX vs React: A Complete Comparison",
        "url": "https://semaphoreci.com/blog/htmx-react",
        "description": "This guide compares HTMX and React, covering origins, features, performance, community, and functionality differences. If you have been puzzled about which one to learn or to use for a new project, this is a quite comprehensive and objective resource.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Mountaineer: batteries-included web framework for Python and React",
        "url": "https://github.com/piercefreeman/mountaineer",
        "description": "Mountaineer is a batteries-included web framework for Python and React. It can be ideal if you like to use Python for your backend development and React for the frontend. It even supports server rendering and various ways to exchange information (including types) between the server and the client!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing Jco 1.0",
        "url": "https://bytecodealliance.org/articles/jco-1.0",
        "description": "Jco is a native Javascript WebAssembly toolchain and runtime built for WebAssembly Components and WASI0.2. This means that Jco cannatively run Wasm Components making it easy to take libraries written in different programming languages and execute them using the Node.js runtime.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Ultimate Guide to Visual Testing with Playwright",
        "url": "https://browsercat.com/post/ultimate-guide-visual-testing-playwright"
      },
      {
        "title": "UVCanvas: open source React.js component library for beautifully shaded canvas",
        "url": "https://uvcanvas.com/"
      },
      {
        "title": "The End Of My Gatsby Journey",
        "url": "https://smashingmagazine.com/2024/03/end-of-gatsby-journey"
      },
      {
        "title": "JSR: What We Know So Far About Deno’s New JavaScript Package Registry",
        "url": "https://socket.dev/blog/jsr-new-javascript-package-registry"
      },
      {
        "title": "The State of Jamstack: Developers Want Return to Simplicity",
        "url": "https://thenewstack.io/the-state-of-jamstack-developers-want-return-to-simplicity"
      },
      {
        "title": "Coroutines and web components",
        "url": "https://lorenzofox.dev/posts/component-as-infinite-loop"
      },
      {
        "title": "CSS-only bottom-anchored scrolling area",
        "url": "https://kittygiraudel.com/2024/02/26/css-only-bottom-anchored-scrolling-area"
      },
      {
        "title": "What do EBS and a jellyfish have in common? (podcast)",
        "url": "https://awsbites.com/117-what-do-ebs-and-a-jellyfish-have-in-common/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 362,
    "title": "Shoelace: A forward-thinking library of web components",
    "slug": "2024-03-04-345-shoelace-a-forward-thinking-library-of-web-components",
    "date": "2024-03-04",
    "templateType": "mce-mailchimp",
    "intro": "Howdy dear *|LIST:NAME|*\n...and welcome to issue #362. This is yet another issue rich of lovely full-stack content and I hope you'll enjoy every single bit of it!\n\nI have only one service call for you this week. This Wednesday (6th of March), I'll be talking at the Rust Dublin Meetup. It will be a remote event and it will be live-streamed on YouTube, so, if you are interested in Rust and want to learn a thing or two about parsing, make sure to hit the notify button here: [An intro to nom, parsing made easy for Rustaceans](https://www.youtube.com/watch?v=1atZzA3e3Kg). I'd love to see you there! :)\n\n— Luciano",
    "quote": {
      "text": "Measuring programming progress by lines of code is like measuring aircraft building progress by weight“",
      "author": "Bill Gates",
      "authorTitle": "Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "Shoelace: A forward-thinking library of web components",
        "url": "https://shoelace.style/",
        "description": "Last week, I was researching UI components libraries for a new project and I bumped into Shoelace, a component library based on custom elements but that also offers facades for React, Vue, and Angular. It seems very promising but it doesn't pass yet my personal litmus test in terms of components completeness: having a date-time picker component... Hopefully they'll add that soon!",
        "imageUrl": "./1295578d200697ecdf7edd5ada15463941afb0a71b6bdd190aa7b1fc6b8229c1.jpg",
        "featured": true
      },
      {
        "title": "Waku: the minimal React framework",
        "url": "https://waku.gg/",
        "description": "During my research, I also bumped into Waku, which seems like a potentially interesting alternative to the myriad of react frameworks such as Next.js, Remix, Astro, etc. It tries to be different by taking a very minimalistic stance on focusing mostly on providing good support for server-side rendering. If you are only looking for a thin layer to do just that, Waku might really be worth a look.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "console.delight",
        "url": "https://frontendmasters.com/blog/console-delight",
        "description": "Everyone knows you can use `console.log()` to log text and variables to the console. Did you know you could also render (limited) CSS, SVGs, and even HTML in it?!? It might be convenient for some original Easter eggs...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making SVG Loading Spinners: An Interactive Guide",
        "url": "https://fffuel.co/svg-spinner/",
        "description": "Our friends at **Fffuel** brought us this fantastic interactive article on how to create amazing SVG-based loading spinners. If you always wondered how to draw and animate arcs and circles with SVGs and a bit of CSS, you'll surely enjoy reading through this one! Your next loading screen is certainly not going to be boring! ☺️",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Dead Simple Sites — Minimal Website Inspiration",
        "url": "https://deadsimplesites.com/",
        "description": "Minimal Website Inspiration](https://deadsimplesites.com/) — If you are a lover of minimalist websites with a great focus on typography and care for whitespace but without many bells and whistles, this site is for you. A great gallery of \"Dead Simple Sites\" for you to find inspiration. Check it out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "CSS :has() Interactive Guide",
        "url": "https://ishadeed.com/article/css-has-guide",
        "description": "Time for another interactive tutorial! This time with everything you need to know about the CSS `:has()` selector. What I really liked about this article is that it has tiny exercises that you can complete on the page itself to test your understanding. These king of things make articles like this so much more fun to go through!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JSDoc as an alternative TypeScript syntax",
        "url": "https://alexharri.com/blog/jsdoc-as-an-alternative-typescript-syntax",
        "description": "This argument keeps popping up now and then. Should you use TypeScript and take the hit on extra setup and compilation time, or should you rather adopt type annotations in JSDoc? If you think the latter is a good tradeoff, this guide will give you some good tips on how to do that correctly.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Bloom Filters",
        "url": "https://samwho.dev/bloom-filters"
      },
      {
        "title": "How to find the AWS Account ID of any S3 Bucket",
        "url": "https://tracebit.com/blog/2024/02/finding-aws-account-id-of-any-s3-bucket"
      },
      {
        "title": "Going beyond pixels and (r)ems in CSS - Container query length units",
        "url": "https://techhub.iodigital.com/articles/going-beyond-pixels-and-rems-in-css/container-query-length-units"
      },
      {
        "title": "A practical guide to using shadow DOM",
        "url": "https://mayank.co/blog/declarative-shadow-dom-guide"
      },
      {
        "title": "Playing with Infinity in CSS",
        "url": "https://codersblock.com/blog/playing-with-infinity-in-css"
      },
      {
        "title": "MDN Curriculum",
        "url": "https://developer.mozilla.org/en-US/curriculum"
      },
      {
        "title": "A Fun Line of Code",
        "url": "https://dbushell.com/2024/02/27/a-fun-line-of-code"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 361,
    "title": "JSR first impressions",
    "slug": "2024-02-26-344-jsr-first-impressions",
    "date": "2024-02-26",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #361! What's going on, dear full stack dev?!\n\nIn this issue we have packed lots of interesting content. **JSR**, a potential game-changer in JavaScript development; **localStorage** insights; captivating **SVG flag** icons (I know this one is a bit weird, but I hope you'll like it nonetheless); mastering **Promise methods** and **effective A/B testing**; simplifying email template design with **JSXemail**; managing view transitions for fluid animations; harnessing **vector search** with SQLite, OpenAI, and Node.js.\n\nIs this enough to keep you inspired? I hope it is 😄\n\n— Luciano",
    "quote": {
      "text": "Working ten hour days allows you to fall behind twice as fast as you could working five hour days“",
      "author": "Isaac Asimov",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "JSR first impressions",
        "url": "https://kitsonkelly.com/posts/jsr-first-impressions",
        "description": "JSR is a new package repository being introduced by the team at Deno that aims to solve many problems in the Javascript ecosystem. In this article, [Kitson P. Kelly](https://kitsonkelly.com/), ex-Deno core contributor, gives an overview of their first look at JSR (currently invite-only). Let's find out what we can expect from this promising project.",
        "imageUrl": "./4060971e370f133d3f6645b74dc091b390393f5b5c0148ab2392c8ff587be0b3.png",
        "featured": true
      },
      {
        "title": "Using localStorage in Modern Applications - A Comprehensive Guide",
        "url": "https://rxdb.info/articles/localstorage.html",
        "description": "This guide explores localStorage in JavaScript web apps, detailing its usage, limitations, and alternatives like IndexedDB and AsyncStorage. A modern tutorial on one of the most interesting browser capabilities of the last few years!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "SVG Flag Icons",
        "url": "https://nucleoapp.com/svg-flag-icons",
        "description": "I have to admit that this one is here just because since I was a kid I had a fixation on nation flags! So I couldn't resist featuring a fantastic collection of finely drawn SVG flag icons. Who knows, maybe you are planning to build a flag guessing game or something else that requires a vast collection of flags! Either way, I hope you'll enjoy this link!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Looking at the JavaScript Promise Collection Methods",
        "url": "https://raymondcamden.com/2024/02/12/looking-at-the-javascript-promise-collection-methods",
        "description": "A look at Promise methods such as `Promise.all()`, `Promise.allSettled()`, `Promise.any()`, and `Promise.race()`, all methods that work with an array of inputs. Do you know the differences and the pros and cons of all these methods? If not, this article provides a great summary with some nice examples!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Build Emails with a Delightful DX",
        "url": "https://jsx.email/",
        "description": "If you ever had to create email templates, you know what PITA that can be! Trust me, I know something based on the experience of this newsletter alone. I recently bumped into [JSXemail](https://jsx.email/), a recent fork or [react-email](https://react.email/), which promises to give you the best possible developer experience when it comes to designing email templates that work on all mail clients. [**Check project**](https://jsx.email/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "View transitions: Handling aspect ratio changes",
        "url": "https://jakearchibald.com/2024/view-transitions-handling-aspect-ratio-changes",
        "description": "If you try to animate something with a given aspect-ratio and you end up changing that ratio, your animation might not look great! This article provides a nice explanation of why that happens and a few tips and tricks (and examples) to get the transition you want.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Your Own Vector Search in 5 Minutes with SQLite, OpenAI Embeddings, and Node.js",
        "url": "https://markus.oberlehner.net/blog/your-own-vector-search-in-5-minutes-with-sqlite-openai-embeddings-and-nodejs",
        "description": "Learn how to build a powerful search experience using SQLite, OpenAI embeddings, and Node.js by understanding the concept of Vector Search and text embeddings. If you ever wondered what the hell is vector search and why everyone is talking about it, this article is a very practical way to learn more about it!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "AWS Lambda Request Timeline",
        "url": "https://speedrun.nobackspacecrew.com/blog/2024/02/14/aws-lambda-request-timeline.html"
      },
      {
        "title": "Setting up a Monorepo using PNPM workspaces with TypeScript and Tailwind",
        "url": "https://blog.emmanuelisenah.com/setting-up-a-monorepo-using-pnpm-workspaces-with-typescript-and-tailwind"
      },
      {
        "title": "React Trends in 2024",
        "url": "https://robinwieruch.de/react-trends"
      },
      {
        "title": "100 things you can do on your personal website",
        "url": "https://jamesg.blog/2024/02/19/personal-website-ideas"
      },
      {
        "title": "nextly-template: Landing Page Template built with Next.js & TailwindCSS",
        "url": "https://github.com/web3templates/nextly-template"
      },
      {
        "title": "Do literally anything",
        "url": "https://aaronfrancis.com/2024/do-literally-anything"
      },
      {
        "title": "Designing With Integrity: The Ethical Designer's Handbook On Dark Patterns",
        "url": "https://raw.studio/blog/designing-with-integrity-the-ethical-designers-handbook-on-dark-patterns"
      },
      {
        "title": "What can you do with Permissions Boundaries on AWS? (video podcast)",
        "url": "https://awsbites.com/115-what-can-you-do-with-permissions-boundaries/"
      },
      {
        "title": "What's up with LLRT, AWS' new Lambda Runtime? (video podcast)",
        "url": "https://awsbites.com/114-what-s-up-with-llrt-aws-new-lambda-runtime/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 360,
    "title": "Continuous Integration",
    "slug": "2024-02-19-343-continuous-integration",
    "date": "2024-02-19",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #360!\n\nIn this issue, we're delving into essential themes that shape the modern web development landscape. From foundational practices to cutting-edge techniques, we've curated a collection of articles to keep you informed and inspired. We start with the importance of Continuous Integration with insights from Martin Fowler, tackle fundamental (painful) challenges like centering a div and navigating client-side routing, and stay updated on the latest tooling and frameworks, including Vite 5.1. Additionally, we'll explore how to alleviate pain points in Node.js, TypeScript, and ESM setups, delve into scaling web applications with distributed systems, and discover creative design trends like animating font palettes with CSS.\n\nWithout further ado, let's get into this awesome content and let's become even stronger full-stack developers! 💪",
    "quote": {
      "text": "If we wish to count lines of code, we should not regard them as \"lines produced\" but as \"lines spent\"“",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Continuous Integration",
        "url": "https://martinfowler.com/articles/continuousIntegration.html",
        "description": "The famed [Martin Fowler](https://martinfowler.com/) gives us an extensive introduction to the practice of Continuous Integration. Nowadays this is something that every developer should know and take very seriously. So if this is something you feel you should explore a bit more, you'll enjoy this resource.",
        "imageUrl": "./3c8431bf26390028c324ac56781330f3b80b89e9b20b23e7375c77afe998f36b.png",
        "featured": true
      },
      {
        "title": "How To Center a Div",
        "url": "https://joshwcomeau.com/css/center-a-div",
        "description": "It might seem funny to see this title in an article in 2024... but to be fair this is still a very good interview question and many people (me included) would fail at it! Let's pretend there's no shame in it (because web dev is hard), but let's also admit we need a deep dive... so here's the deep dive we were all waiting for! Spoiler alert: there's more than one way to center a Div...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Node.js, TypeScript and ESM: it doesn't have to be painful",
        "url": "https://dev.to/a0viedo/nodejs-typescript-and-esm-it-doesnt-have-to-be-painful-438e",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing Vite 5.1",
        "url": "https://vitejs.dev/blog/announcing-vite5-1",
        "description": "Vite 5.1 is out! Since, for me, Vite is one of those tools that has brought back the joy of building frontends, I am always excited to see what's new in every release. This one comes with an updated Runtime API, some new features, and a significant performance improvement! Check out the article if you are curious to know the details.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Distributed Systems Reading List",
        "url": "https://ferd.ca/a-distributed-systems-reading-list.html",
        "description": "If you think distributed systems are a bit off-topic here you might be right... But also, if you ever want to build a highly scalable web application in the cloud guess what you'll need to learn? Yes, right answer: distributed systems! This article collects some of the most important concepts in distributed systems and provides several useful resources to deep dive into each and every one of them! Invaluable.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Modern client-side routing: the Navigation API",
        "url": "https://developer.chrome.com/docs/web-platform/navigation-api",
        "description": "LSingle Page Applications are famous for providing navigation between pages without ever refreshing pages entirely. But they also update the page URL making it look like you moved to a new URL. How do they achieve that? Well, generally speaking by using the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API), but now there's a new alternative: the Navigation API, which promises to be easier to adopt.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Animating Font Palette",
        "url": "https://textlab.dev/posts/animating-font-palette",
        "description": "With the release of Chrome 121 we can now animate a smooth transition between font-palettes in Color Fonts using only CSS. If you don't know what this means, it's probably easier to just have a quick look at the article and check out the effect itself. This is something cool you could easily use to spice up your next web design project!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "Hot Module Replacement is Easy",
        "url": "https://bjornlu.com/blog/hot-module-replacement-is-easy"
      },
      {
        "title": "Don’t Disable Form Controls",
        "url": "https://adrianroselli.com/2024/02/dont-disable-form-controls.html"
      },
      {
        "title": "Evolution of a high-performance system: from synchronous to seamless scalability",
        "url": "https://technology.lastminute.com/evolution-of-a-high-performance-system-from-synchronous-to-seamless-scalability"
      },
      {
        "title": "Migrating to Astro: The Beginning",
        "url": "https://raygesualdo.com/posts/migrating-to-astro-the-beginning"
      },
      {
        "title": "htmx examples: Async Authentication",
        "url": "https://htmx.org/examples/async-auth"
      },
      {
        "title": "borp: node:test runner wrapper with TypeScript support",
        "url": "https://github.com/mcollina/borp"
      },
      {
        "title": "How to create the perfect icon",
        "url": "https://blog.streamlinehq.com/evaluating-icons"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 359,
    "title": "jQuery 4.0.0 BETA",
    "slug": "2024-02-12-342-jquery-4-0-0-beta",
    "date": "2024-02-12",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #359!\n\nThis week we have a collection of content that I am really proud of! On one side, we see long-running projects like jQuery still fighting the fight (like an undead from Resident Evil!) on the other we have new and exciting (and somewhat controversial) developments such as the AWS LLRT JavaScript runtime for Lambda.\n\nI hope you'll enjoy this issue and, if you do, please remember to share this newsletter with your friends and colleagues, because *sharing is caring*! 😍",
    "quote": {
      "text": "After more than 30 years of programming, we ought to know that the design of complex software is inherently difficult“",
      "author": "Niklaus Wirth",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Niklaus_Wirth"
    },
    "links": [
      {
        "title": "jQuery 4.0.0 BETA",
        "url": "https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta",
        "description": "jQuery: The Write Less, Do More, JavaScript Library that has been around for more than 15 years and has helped transform the web landscape! We all thought it was somewhat dead at this stage, right? But It's not and this new release has been in the works for a long time! So what's new? Dropped support for IE<11, deprecated various APIs and removed others, improved the slim build package size, and more! So, should you switch back to jQuery? Let me know what you think about that one!",
        "imageUrl": "./42e3d8fae2fe6da3d44ca867adbeb096606e4b3ade60e437a2147118b9b07466.png",
        "featured": true
      },
      {
        "title": "Wasp",
        "url": "https://wasp-lang.dev/",
        "description": "Last week I bumped into Wasp and, while I am not entirely sold on the idea, it's one worth exploring. It's not just a new framework for developing full-stack web apps, it's an entirely new abstraction language that can help you to tie together frontend pages (in React) with Node.js and Prisma backends and get everything ready to be shipped as a monolithic container. Another one on which I'd like to hear your opinion. [**Check website**](https://wasp-lang.dev/)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "awslabs/llrt",
        "url": "https://github.com/awslabs/llrt",
        "description": "LLRT (Low Latency Runtime) is an **experimental** (it's important to highlight this one to ease down the hype a bit), lightweight JavaScript runtime designed to address the growing demand for fast and efficient Serverless applications. Yes, it's yet another JavaScript runtime, but rather than trying to be another generic one, it tries to optimise heavily for the AWS Lambda context. In this sense, it does a great job because the performance is really phenomenal. But I can't help to have this question on the back of my mind: are we fragmenting the JavaScript ecosystem even more? Still, if you use AWS Lambda, this is definitely worth a shot!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Are Design Systems a zero-interest rate phenomenon?",
        "url": "https://daverupert.com/2024/01/are-design-systems-zero-interest-rate-phenomenon",
        "description": "Are you starting a new project and you are not sure whether you need to invest in a design system or not? This article is an interesting reflection on the topic. You might go a long way without a design system, but what are the tradeoffs?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "12 Modern CSS One-Line Upgrades",
        "url": "https://moderncss.dev/12-modern-css-one-line-upgrades",
        "description": "Sometimes, improving your application CSS just takes a one-line upgrade or enhancement! Learn about 12 properties to start incorporating into your projects, and enjoy reducing technical debt, removing JavaScript, and scoring easy wins for user experience.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The advantages of queues on logs",
        "url": "https://jack-vanlightly.com/blog/2023/10/2/the-advantages-of-queues-on-logs",
        "description": "This one is more for those of you who love systems design and building scalable applications. It explores the topic of highly scalable log systems. It's a bit specific to Kafka, which is not exactly my bread and butter, but I found it an excellent read to wrap my head around the value of queuing systems when it comes to highly scalable systems. I hope you'll like it too.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Perfect Theme Switch Component",
        "url": "https://aleksandrhovhannisyan.com/blog/the-perfect-theme-switch",
        "description": "Recently I added a dark theme to my website and I wanted to do some research on how to do that effectively for static websites, specifically to avoid the FOUC (Flash Of Unstiled Content) effect. I think this one is an awesome read on the topic and you might learn a thing or two about how a browser renders a webpage and how to optimise for that.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "Getting into web components",
        "url": "https://utilitybend.com/blog/getting-into-web-components-an-intro"
      },
      {
        "title": "What to do if your temporary AWS credentials are compromised (AWS Bites Podcast)",
        "url": "https://awsbites.com/113-how-do-you-revoke-leaked-credentials/"
      },
      {
        "title": "Cosmic Python (FREEly readable book on how to structure Python projects)",
        "url": "https://www.cosmicpython.com/book/preface.html"
      },
      {
        "title": "Exploring OramaSearch (live-stream recording)",
        "url": "https://www.youtube.com/watch?v=WO1KqYD2akQ%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "How Spoutible’s Leaky API Spurted out a Deluge of Personal Data",
        "url": "https://www.troyhunt.com/how-spoutibles-leaky-api-spurted-out-a-deluge-of-personal-data/?v=WO1KqYD2akQ%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "Basic <dialog> Usage and Gotchas To Watch For",
        "url": "https://frontendmasters.com/blog/basic-dialog-usage-and-gotchas-to-watch-for/?v=WO1KqYD2akQ%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "Web Development Is Getting Too Complex, And It May Be Our Fault",
        "url": "https://www.smashingmagazine.com/2024/02/web-development-getting-too-complex/?v=WO1KqYD2akQ%3Futm_source%3Dfullstackbulletin.com"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 356,
    "title": "Glide Data Grid",
    "slug": "2024-01-22-341-glide-data-grid",
    "date": "2024-01-22",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #356,\n\nAre you ready for another issue packed with awesome full-stack content? I certainly enjoyed this week's content... oh, and there are some quirky ones!\n\nI spent a good amount of time last week playing with APIs for generative AI, particularly Amazon Bedrock (I also made a [live stream](https://www.youtube.com/watch?v=at9T7IanZX8&t=8s) with my friend [Roberto](https://twitter.com/gbinside) showcasing some blogging experiments). I also discovered [krea.ai](https://www.krea.ai/), an incredible online tool that allows you to do real-time image-to-image generation and image enhancement. Finally, I [spoke with Eoin](https://awsbites.com/110-why-should-you-use-lambda-for-machine-learning/) about how to run AI models within AWS Lambda and why.\n\nIf you are into AI stuff, you might enjoy this extra content, if not, let's jump into the full-stack stuff! Enjoy!\n\n— Luciano",
    "quote": {
      "text": "When I am working on a problem, I never think about beauty. I think only of how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong“",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "Glide Data Grid",
        "url": "http://grid.glideapps.com/",
        "description": "If you ever need to build a web application that needs to manage complex tables with tons of records, you might really like this React project. Glide data grid is a React grid component that is fully typed in TypeScript and supports advanced features such as custom cells and virtual scrolling. [**Visit website**](http://grid.glideapps.com/)",
        "imageUrl": "./3a54d25d614612118c5aa08a5eaa8e227ef0b758e85840600560dad193ebd6da.png",
        "featured": true
      },
      {
        "title": "Designing better target sizes",
        "url": "https://ishadeed.com/article/target-size",
        "description": "How \"clickable\" are your websites on mobile? This is an easy one to fail on... more often than not we don't think that our buttons might be too small on mobile, so what do we do? Is there a practical and simple solution? Well, test your websites on mobile, for one! But also check out this article that provides some ideas on how you can increase the area of interactivity on mobile and make sure to provide an optimal UX.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "npm in Review: A 2023 Retrospective on Growth, Security, and Quirky Facts",
        "url": "https://socket.dev/blog/2023-npm-retrospective",
        "description": "In 2023, with **2.5 million live packages**, npm had **184 billion monthly downloads**! This is astonishing and it comes with some challenges. This article addresses npm's security challenges, including the identification of over five thousand malware packages and the management of supply chain attacks and spam campaigns throughout the year. It also provides some other quirky bits, like what's the package with the longest name! Definitely worth a read.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Introducing fsx: A modern filesystem API for JavaScript",
        "url": "https://humanwhocodes.com/blog/2024/01/fsx-modern-filesystem-api-javascript",
        "description": "Filesystem APIs in JavaScript runtimes haven't been great for a long time, but this library tries to bring a fresh approach to the table. One that is focused on making common cases easier, and errors rarer and more manageable. It also pays quite a bit of attention to observability and testing. Worth checking it out if you have been frustrated by the existing state of filesystem modules.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Complex But Awesome CSS border-image Property",
        "url": "https://smashingmagazine.com/2024/01/css-border-image-property",
        "description": "The CSS `border-image` property is one of those properties you undoubtedly know exists but may not have ever reached for. This article demonstrates different approaches for using `border-image` to create clever decorative accents and shapes.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Findings From the Monotype & Neurons Typography Report",
        "url": "https://printmag.com/type-tuesday/monotype-neurons-culture-typography-report",
        "description": "This is a bit of an off-topic, but if you are into fonts and typography you'll certainly love it. Monotype and Neurons, an applied neuroscience company, has released the first results of an ongoing study, revealing the emotional impact of different typefaces across eight countries…",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Transcribe audio on Cloudflare Workers with AssemblyAI, Node.js, and TypeScript",
        "url": "https://assemblyai.com/blog/transcribe-audio-cloudflare-workers-assemblyai-nodejs-typescript",
        "description": "In this tutorial, you'll learn how to create an application that transcribes the audio files (and video files) to text. You'll create a TypeScript backend on top of Cloudflare Workers and use the AssemblyAI APIs to transcribe the audio.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Pa11y: your automated accessibility testing pal",
        "url": "https://github.com/pa11y/pa11y"
      },
      {
        "title": "Platane/snk: Generates a snake game from a GitHub user contributions graph",
        "url": "https://github.com/Platane/snk"
      },
      {
        "title": "alexanderson1993/svg-icons-cli: create SVG spirte sheets and render them with a React Icon component",
        "url": "https://github.com/alexanderson1993/svg-icons-cli"
      },
      {
        "title": "Learn SVG by drawing an arrow",
        "url": "https://blog.shalvah.me/posts/learn-svg-by-drawing-an-arrow"
      },
      {
        "title": "Tailwind templates in pure HTML",
        "url": "https://tailplates.com/"
      },
      {
        "title": "A Practical Introduction to Scroll-Driven Animations with CSS scroll() and view()",
        "url": "https://tympanus.net/codrops/2024/01/17/a-practical-introduction-to-scroll-driven-animations-with-css-scroll-and-view"
      },
      {
        "title": "Money Talks! Formatting Currency in Web Content",
        "url": "https://tpgi.com/money-talks-formatting-currency-in-web-content"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 355,
    "title": "10 Things to Learn about Learning",
    "slug": "2024-01-15-340-10-things-to-learn-about-learning",
    "date": "2024-01-15",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #355!\n\nNot much to report for this week, except that I am back at trying to modernize my blog and move from **Gatsby** to **Astro**. The last time that I tried Astro (pre 1.0) I liked it a lot but it was missing many of the features that I wanted. Now I have to say I am pretty pleased with the level of maturity of this tool. If you want to follow along, I have [a branch](https://github.com/lmammino/loige.co/pull/142) where I am regularly committing my progress, and I also made a [quick demo-tweet](https://twitter.com/loige/status/1745897312054906882)of an effect I am experimenting with for the new home page design.\n\nThat's all from me... **what's one cool thing you have been doing last week?** Reply to this email and let me know!",
    "quote": {
      "text": "I love deadlines. I like the whooshing sound they make as they fly by“",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "10 Things to Learn about Learning",
        "url": "https://cacm.acm.org/magazines/2024/1/278891-10-things-software-developers-should-learn-about-learning/fulltext",
        "description": "As developers, one of the most daunting yet exciting things is that we must never stop learning! But can we do that effectively throughout our careers? This article (also available as a video) explores how human memory and learning work, the differences between beginners and experts, and practical steps we can take to improve learning, training, and recruitment.",
        "imageUrl": "./9fcf144bf2ad8f1079e1e23c8a56e4c611315be73fd33dae8deeb82f69129cba.jpg",
        "featured": true
      },
      {
        "title": "The Two Reacts",
        "url": "https://overreacted.io/the-two-reacts",
        "description": "Our beloved [Dan Abramov](https://twitter.com/dan_abramov2) of **React** fame is back with another inspiring blog post! This one discusses the differences between 2 different kinds of React: the kind that runs on the server and the kind that runs on the client. And yes, in its own way, it's about **React Server Components**!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How I make UI color palettes",
        "url": "https://youtube.com/watch?v=yYwEnLYT55c",
        "description": "Figuring out how to make a good color palette is something that can make or break the design of a website project. I have been fascinated by this topic and I always try to learn more. Last week, I discovered this awesome video that proposes a very practical and effective way to come up with great color palettes for the web. Check it out if you are trying to become better at design.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "When \"Everything\" Becomes Too Much: The npm Package Chaos of 2024",
        "url": "https://socket.dev/blog/when-everything-becomes-too-much",
        "description": "An NPM user named **PatrickJS** launched a troll campaign with a package called \"**everything**,\" which depends on all public npm packages. What kind of chaos did that unleash?! Check this out because it's absolutely mind-blowing to see how silly ideas can break entire software ecosystems...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The State of Benchmarking in Node.js",
        "url": "https://webpro.nl/articles/the-state-of-benchmarking-in-nodejs",
        "description": "Benchmarking becomes more important as we build more and more applications and tooling for runtimes like Node.js and Bun. This article is about macro and micro benchmarking and explores options we can use today. The article includes code examples and a CodeSandbox to try and implement in our own applications.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Tantivy: a full-text search engine library inspired by Apache Lucene and written in Rust",
        "url": "https://github.com/quickwit-oss/tantivy",
        "description": "If you use ElasticSearch but are disappointed by how much resources it needs, you might want to check out Tantivy: a new full-text search engine library inspired by Apache Lucene and written in Rust. It might be very early days for the project but it's very promising already.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Nested Dark Mode via CSS Proximity",
        "url": "https://jwdallas.com/posts/nesteddarkmode",
        "description": "How If you are building a website that can support multiple themes (e.g. Light and Dark variants) you might be using a combination of CSS Variables and a `data-theme` attribute. Now what if suddenly you want to have a section of a page that uses a theme and another one that uses another theme (maybe because you are actually showcasing all the themes in one page). This article has a solution for this problem and it's an excellent resource to get to understand more about how CSS works under the hood.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Dua CLI: View disk space usage and delete unwanted data, fast.",
        "url": "https://github.com/Byron/dua-cli"
      },
      {
        "title": "Frontend predictions for 2024",
        "url": "https://buttondown.email/whatever_jamie/archive/frontend-predictions-for-2024"
      },
      {
        "title": "Negotiable Abstractions",
        "url": "https://ferd.ca/negotiable-abstractions.html"
      },
      {
        "title": "Grids and key shapes",
        "url": "https://blog.streamlinehq.com/grids-and-keyshapes"
      },
      {
        "title": "DOM-based race condition: racing in the browser for fun",
        "url": "https://blog.ryotak.net/post/dom-based-race-condition"
      },
      {
        "title": "SolidStart: A Different Breed Of Meta-Framework",
        "url": "https://smashingmagazine.com/2024/01/solidstart-different-breed-meta-framework"
      },
      {
        "title": "What This Senior Developer Learned From His First Big Rust Project",
        "url": "https://awwsmm.com/blog/what-this-senior-developer-learned-from-his-first-big-rust-project"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 354,
    "title": "Announcing Vue 3.4",
    "slug": "2024-01-08-339-announcing-vue-3-4",
    "date": "2024-01-08",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*! this issue #354 🫣\n\nI don't have much to say on this issue, except that I spent last week working with a copywriter on refining the messaging of the [Node.js Design Patterns website](https://www.nodejsdesignpatterns.com/). It turns out we needed a massive rewrite. Apparently, we don't know how to sell stuff online. 😇 Lesson learned: if you sell online, reach out to a copywriter.\n\nBut if you don't care about this kind of stuff, let's jump in some cool full-stack content!\n\nI hope you'll enjoy this issue! Have a great one ❤️",
    "quote": {
      "text": "Within a computer natural language is unnatural“",
      "author": "Alan Perlis",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Perlis"
    },
    "links": [
      {
        "title": "Announcing Vue 3.4",
        "url": "https://blog.vuejs.org/posts/vue-3-4",
        "description": "Vue.js version 3.4 just came out at the very end of last year and it's an exciting release. Not just for the nickname \"**Slam Dunk**\" but because it comes with some very interesting features and performance improvements. If you are into Vue or considering starting to use Vue, you should check out the official announcement.",
        "imageUrl": "./fcc72fe263dcaccf21e4ac1efb5bd192e8b134396806c320e9a70a26521d42ef.jpg",
        "featured": true
      },
      {
        "title": "React Server Components: the Good, the Bad, and the Ugly",
        "url": "https://mayank.co/blog/react-server-components",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "10 Interview Questions Every JavaScript Developer Should Know in 2024",
        "url": "https://medium.com/javascript-scene/10-interview-questions-every-javascript-developer-should-know-in-2024-c1044bcb0dfb",
        "description": "If you put \"Change Job\" in your list of goals for 2024 then you might really enjoy this article presenting some interesting questions that might come up in a JavaScript interview.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "2023 JavaScript Rising Stars",
        "url": "https://risingstars.js.org/2023/en",
        "description": "A complete overview of the JavaScript landscape in 2023: trends about frontend, fullstack and Node.js frameworks, React and Vue.js ecosystems, build tools, state management...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Rebirth of the UX Unicorn?",
        "url": "https://jakobnielsenphd.substack.com/p/ux-unicorn",
        "description": "UX professionals who are good at all steps of the UX lifecycle, including both research and design, are called “UX unicorns” because they are rare. But AI narrows skill gaps and may create many more UX unicorns. Does this mean UX is going to get better? Are we already rasing the bar?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Anchor Positioning",
        "url": "https://12daysofweb.dev/2023/anchor-positioning",
        "description": "Anchor Positioning is an incoming dynamic addition to enhance the capabilities of CSS positioning. Why is this cool? In this article you can find several examples of what this spec makes possible and it's like something I'd like to have today!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Avoid These 6 Common React useState Hook Mistakes",
        "url": "https://blog.akshaykaushik.eu.org/common-mistakes-when-using-react-usestate-hook",
        "description": "If you are s a React developer, you're probably familiar with the `useState` hook. It's a powerful tool that allows you to add state to your functional components. However, it's easy to make mistakes when using it. This article explores some of the most common mistakes and how to avoid them.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "More Than You Need to Know About ReactDOM.flushSync",
        "url": "https://julesblom.com/writing/flushsync"
      },
      {
        "title": "AI for Web Devs: AI Image Generation",
        "url": "https://austingil.com/ai-for-web-devs-image-generation"
      },
      {
        "title": "Digging through Chrome traces: an introduction with an example",
        "url": "https://calendar.perfplanet.com/2023/digging-chrome-traces-introduction-example"
      },
      {
        "title": "A checklist for CLS scenarios",
        "url": "https://calendar.perfplanet.com/2023/a-checklist-for-cls-scenarios"
      },
      {
        "title": "Introduction to HTMX",
        "url": "https://refine.dev/blog/what-is-htmx"
      },
      {
        "title": "What the heck is a homomorphic mapped type?",
        "url": "https://andreasimonecosta.dev/posts/what-the-heck-is-a-homomorphic-mapped-type"
      },
      {
        "title": "Making Sense Of “Senseless” JavaScript Features",
        "url": "https://smashingmagazine.com/2023/12/making-sense-of-senseless-javascript-features"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 353,
    "title": "The Developer Experience Book",
    "slug": "2024-01-01-338-the-developer-experience-book",
    "date": "2024-01-01",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #353, which is the last issue I am editing in 2023 and the first one you'll get in 2024! So happy New Year, folks! I hope your 2024 will be amazing and rich with full-stack rewards! 😜\n\nBy the way, I wrote [a blog post with the summary of my 2023](https://loige.co/2023-a-year-in-review), it's boring, but in case you are *really really* curious...\n\nNow, let's enjoy a (hopefully good) selection of full-stack content.\n\nHave fun!",
    "quote": {
      "text": "Somebody finds the problem, and somebody else understands it. And I'll go on record as saying that finding it is the bigger challenge“",
      "author": "Linus Torvalds",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "The Developer Experience Book",
        "url": "https://dx.addy.ie/",
        "description": "Developer Experience (DX) is all about how easily and effectively developers can get things done. When done correctly, it's one of these things that can change the level of happiness of a development team. With this FREE book by [Addy Osmani](https://addyosmani.com/),  you can learn how to improve your DX and why it matters.",
        "imageUrl": "./85d35e8d9550fb62668d4ec630a5e27dea936e7d4f5f5c9e615015a4751ebbf9.jpg",
        "featured": true
      },
      {
        "title": "First do it, then do it right, then do it better",
        "url": "https://addyo.substack.com/p/first-do-it-then-do-it-right-then",
        "description": "Another great piece of content by Addy Osmani. The gist of this post is that no one is going to do something perfect on the first try and this idea applies quite well to software development too. But no more spoilers, go check out the article.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "2024 Icon Design Trends: Unleash Creativity",
        "url": "https://shakuro.com/blog/icon-design-trends-for-2024",
        "description": "Icons are one of those things that can make a massive difference in the user experience that an online product can provide. In this article, you can discover the latest icon design trends for 2024 and level up your app’s interface.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Docs deserve more respect",
        "url": "https://ramijames.com/thoughts/docs-deserve-more-respect",
        "description": "Documentation for software projects is REALLY important. No one is going to argue that... But what makes technical documentation good? Let's find out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Spotify Wrapped: 6 psychology principles that make it go viral every year",
        "url": "https://growth.design/case-studies/spotify-wrapped-psychology",
        "description": "Why is Spotify Wrapped always so successful? It turns out they use some very clever communication techniques (based on real psychology) to create one of the most anticipated yearly events in the music industry.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Evolving the infinite canvas",
        "url": "https://wattenberger.com/thoughts/evolving-the-infinite-canvas",
        "description": "In the digital world, especially on the web, we’re used to things being stacked vertically. Scrolling, scrolling, through boxes of content. But what about when thoughts are complex, unsorted, exploratory?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Why I use Astro",
        "url": "https://flaviocopes.com/why-i-use-astro",
        "description": "Astro is rapidly becoming one of the most used tools in the industry for developing all kinds of websites. Flavio Copes gives us his perspective on why he likes Astro so much. The gist of it? \"Simplicity\".",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Top UI/UX Design Trends of 2024",
        "url": "https://shakuro.com/blog/ui-ux-design-trends-for-2024"
      },
      {
        "title": "It's time to put REST to rest",
        "url": "https://sollecitom.github.io/software-product-development-blog/posts/2023/2023-09-22-put-rest-to-rest"
      },
      {
        "title": "Using date-based CSS to make old web pages *look* old",
        "url": "https://shkspr.mobi/blog/2023/12/using-date-based-css-to-make-old-web-pages-look-old"
      },
      {
        "title": "Responsive SVGs",
        "url": "https://12daysofweb.dev/2023/responsive-svgs"
      },
      {
        "title": "The devil is in the details: a look into a disclosure widget markup",
        "url": "https://htmhell.dev/adventcalendar/2023/23"
      },
      {
        "title": "Container Style Queries",
        "url": "https://12daysofweb.dev/2023/container-style-queries"
      },
      {
        "title": "AWS zero to hero: repo for devops engineers to learn AWS in 30 Days",
        "url": "https://github.com/iam-veeramalla/aws-devops-zero-to-hero"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 352,
    "title": "SSH3: faster and rich secure shell using HTTP/3",
    "slug": "2023-12-25-337-ssh3-faster-and-rich-secure-shell-using-http-3",
    "date": "2023-12-25",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nThis is issue #352! 👌\n\nIf you are reading this, I hope you are having the best Christmas ever (if you celebrate such a festivity, if not, I surely hope your days is still wonderful and happy).\n\nAnd, just in case you are eager for another awesome hand-curated selection of fullstack content, I hope you will enjoy what we have in store for you today!\n\nHave fun and be happy! Life's good! 🥳",
    "quote": {
      "text": "One day, you'll turn off the feature that emails you every time someone buys your software. That's a huge milestone“",
      "author": "Joel Spolsky",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joel_Spolsky"
    },
    "links": [
      {
        "title": "SSH3: faster and rich secure shell using HTTP/3",
        "url": "https://github.com/francoismichel/ssh3",
        "description": "SSH is one of those things that one thinks will never change! And instead, here we are with a new massive release. Altough it's important to mention that this is not really a new version of the classic SSH but more of a new way of delivering SSH capabilities using HTTP/3. This idea should make SSH faster and richer in features. You should check out the repo because this can become the future of SSH. Oh, and there is also [a paper](https://arxiv.org/abs/2312.08396)!",
        "imageUrl": "./e58ed72d4a1aa33ed3f6bd5df480a724a9a34775bb0b4dcb71b4514e70d0d67d.jpg",
        "featured": true
      },
      {
        "title": "State of Node.js Performance 2023",
        "url": "https://blog.rafaelgss.dev/state-of-nodejs-performance-2023",
        "description": "[Rafael Gonzaga](https://rafaelgss.dev/), an amazing Node.js contributor,  gives us his take on the current state of Node.js in terms of performance. Node.js is one of the fastest runtimes when it comes to high-level scripting languages, but we aren't done yet. There are so many low-hanging fruits and other opportunities for optimization that it's only fair to expect things to get better and better in the years to come. But since Node.js is an open project, make sure to give a hand and help if you can!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing SvelteKit 2",
        "url": "https://svelte.dev/blog/sveltekit-2",
        "description": "A new major release of SvelteKit is out and it support Vite 5 and it lays the foundation to support the upcoming Svelte 5! If you like Svelte and Svelte Kit you might want to check out what's new and how to upgrade to this new version.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Crafting Effective Documentation",
        "url": "https://dev.to/kibumpng/crafting-effective-documentation-4odj",
        "description": "Even with the support of AI, it's still pretty hard to write good software documentation. This is why articles like this have such an enormous value. It provides a few practical tips that can help you take your software documentation to the next level.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making noisy SVGs",
        "url": "https://daniel.do/article/making-noisy-svgs",
        "description": "Noisy textures: I am sure you have seen this cool vector graphic effect on a few websites already. When I discovered this article I was surprised to see how easy it is to achieve this effect. I thought it involved lots of time spent on a design tool, instead you can simply achieve the effect by doing some fine touches on your SVGs XML code.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "You are never taught how to build quality software",
        "url": "https://florianbellmann.com/blog/never-taught-qa",
        "description": "Writing software is one thing, but writing **high-quality** software is an entirely different effort! The gap between the two is not something we learn in Uni/College (for the most part), so how do we learn the necessary skills to excel at software development?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Bash scripts with node?",
        "url": "https://dev.to/giuliano1993/bash-scripts-with-node-4d1b",
        "description": "You know I love JavaScript and Node.js, right? But sometimes a simple bash script is all you need. But who likes to write bash? Probably nobody! Sooo how do we get the best of both worlds? Check out this article for a possible solution...",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Thinking in Systems",
      "author": "Donella H. Meadows",
      "description": "Some of the biggest problems facing the world war, hunger, poverty, and environmental degradation are essentially system failures. They cannot be solved by fixing one piece in isolation from the others, because even seemingly minor details have an enormous impact. While readers will learn the conceptual tools and methods of systems thinking, the heart of the book is grander than methodology. Donella Meadows reminds readers to pay attention to what is important, not just what is quantifiable, to stay humble, and to stay a learner. No matter what industry or career you're in, Thinking In Systems will bring clarity to the complicated, crowded, and interdependent networks that make up the world today. Thinking in Systems helps readers avoid confusion and helplessness, the first step toward finding proactive and effective solutions.",
      "coverImageUrl": "./de6dbc771591802beae8cc7eab3beac3244817f8820affe73e0b91c622309b1f.jpg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "Ruby 3.3’s YJIT: Faster While Using Less Memory",
        "url": "https://railsatscale.com/2023-12-04-ruby-3-3-s-yjit-faster-while-using-less-memory"
      },
      {
        "title": "Heroicons Micro: What are these, icons for ants?",
        "url": "https://tailwindcss.com/blog/heroicons-micro"
      },
      {
        "title": "Getting started with Web Performance",
        "url": "https://htmhell.dev/adventcalendar/2023/14"
      },
      {
        "title": "The Cheap Web",
        "url": "https://potato.cheap/"
      },
      {
        "title": "Becoming a go-to person gets you promoted. Here's how to do it as a software engineer.",
        "url": "https://careercutler.substack.com/p/becoming-a-go-to-person-gets-you"
      },
      {
        "title": "Shikiji - A beautiful and powerful syntax highlighter",
        "url": "https://shikiji.netlify.app/"
      },
      {
        "title": "How I Built A Santa Chatbot To Mess With My Brother",
        "url": "https://readysetcloud.io/blog/allen.helton/santa-chatbot"
      },
      {
        "title": "V8 is Faster and Safer than Ever!",
        "url": "https://v8.dev/blog/holiday-season-2023"
      },
      {
        "title": "Web Components Will Outlive Your JavaScript Framework",
        "url": "https://jakelazaroff.com/words/web-components-will-outlive-your-javascript-framework/"
      },
      {
        "title": "Things you forgot (or never knew) because of React",
        "url": "https://joshcollinsworth.com/blog/antiquated-react"
      },
      {
        "title": "Writing Javascript without a build system",
        "url": "https://jvns.ca/blog/2023/02/16/writing-javascript-without-a-build-system/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 351,
    "title": "CSS Wrapped: 2023!",
    "slug": "2023-12-18-336-css-wrapped-2023",
    "date": "2023-12-18",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #351,\n\nhave you got all your presents under your Christmas Tree? 🎄",
    "quote": {
      "text": "What we have to learn to do, we learn by doing“",
      "author": "Aristotle",
      "authorTitle": "Philosopher",
      "authorUrl": "https://en.wikipedia.org/wiki/Aristotle"
    },
    "links": [
      {
        "title": "CSS Wrapped: 2023!",
        "url": "https://developer.chrome.com/blog/css-wrapped-2023",
        "description": "2023 was a huge year for CSS! And who doesn't love CSS? Who?! 😌 The Google Chrome team presents all the innovation that happened this year (from their perspective, of course) in the CSS World in one big article, filled with tons of interactive examples!",
        "imageUrl": "./073d6137a8e0e027e9322b8cac18951a3b2ae0105dffc4b72c80c2e7e148de1c.jpg",
        "featured": true
      },
      {
        "title": "Epic Easing",
        "url": "https://epiceasing.com/",
        "description": "If you have ever spent time learning about animations, you probably know that easing functions can make all the difference in the world to make things look smooth and interesting. But easing functions are not necessarily \"easy\" (bad pun, sorry! 😅). This website offers you an interactive playground to test and thoroughly understand different easing functions, so you can make your next animation shine! The best part is that you can instantly export to CSS, SCSS, Objective-C, and even Swift.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Color Lisa - Curated Color Palette Masterpieces",
        "url": "http://colorlisa.com/",
        "description": "Color Lisa is a curated list of color palettes based on masterpieces of the world's greatest artists. Each palette was painstakingly created by color-obsessed designers, artists, museum curators, and masters of color theory. So, if you are building a new web project and looking for an awesome color palette to bring it to life, you can find tons of inspiration here.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "React Tricks: Fast, Fit and Fun",
        "url": "https://molefrog.com/notes/react-tricks",
        "description": "How to make your React app or library faster and smaller. This article provides a few useful tips and tricks such as `useEvent`, `useSyncExternalStore`, stable object references, readonly `useState`, and more.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Baseline 2023",
        "url": "https://web.dev/blog/baseline2023",
        "description": "This year the concept of \"Baseline\" was introduced. Baseline tells you when a specific web platform feature (CSS or JS) can be considered safe to use, meaning it will work as intended in the majority of web browsers. Now Baseline is also integrated on [Can I Use](https://caniuse.com/), the famous website that gives you a very detailed breakdown of which browsers support a specific web platform feature.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The UX of UUIDs",
        "url": "https://unkey.dev/blog/uuid-ux",
        "description": "I have been using UUIDs for a long while and never questioned if there was a better way to do things (except when I needed to do some deep debugging or when I needed to write SQL queries joining multiple tables). Now,  standard UUID will satisfy most of your concerns, but if you read this article you'll learn that there’s a lot we can improve for ourselves (as developers) and our users.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "velocitatem/garlic: 🧄🧛",
        "url": "https://github.com/velocitatem/garlic",
        "description": "Have you ever thought you could have your website HTML code obfuscated so you can protect your website from crawlers? This ambitious open-source project tries to do just that using React server-side rendering for obfuscation and then de-obfuscate things on the client-side. I am not sure this is a great idea if you care about SEO, but it's definitely an interesting project worth checking out. Maybe you can use it strategically only to obfuscate specific parts of a given website.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "use-whisper: React hook for OpenAI Whisper with speech recorder, real-time transcription, and silence removal built-in",
        "url": "https://github.com/chengsokdara/use-whisper"
      },
      {
        "title": "React Google Maps",
        "url": "https://visgl.github.io/react-google-maps"
      },
      {
        "title": "react-verification-input: customizable, masked input for React.",
        "url": "https://github.com/andreaswilli/react-verification-input"
      },
      {
        "title": "Frontend Rewind 2023",
        "url": "https://tympanus.net/codrops/2023/12/01/frontend-rewind-2023-day-01"
      },
      {
        "title": "How to use Chrome's accessibility tree",
        "url": "https://blog.pope.tech/2023/11/27/how-to-use-chromes-accessibility-tree"
      },
      {
        "title": "Making SVG Loading Spinners: An Interactive Guide",
        "url": "https://fffuel.co/"
      },
      {
        "title": "HTML5 Boilerplate v9.0.0 Released",
        "url": "https://htmlcssjavascript.com/web/html5-boilerplate-v9-0-0-released"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 350,
    "title": "#350: Keep React - Supercharge Your Web Development",
    "slug": "2023-12-11-335-350-keep-react-supercharge-your-web-development",
    "date": "2023-12-11",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*Welcome yet another issue of FullStackBulletin, precisely issue #350! This week we have a good variety of FullStack content and no big major personal news, so I'll leave you to enjoy all this goodness!\n\nHave fun!",
    "quote": {
      "text": "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law“",
      "author": "Douglas Hofstadter",
      "authorTitle": "Physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Hofstadter"
    },
    "links": [
      {
        "title": "Keep React - Supercharge Your Web Development",
        "url": "https://react.keepdesign.io/",
        "description": "Explore a library of 40+ open-source React UI components and interactive elements, empowering you to create stunning web projects effortlessly.",
        "imageUrl": "./053d02006896a9d6a88e3422be6f9ad19c3008b0430ad9f98234bcd99839cecc.png",
        "featured": true
      },
      {
        "title": "Advanced usage patterns for taking page element screenshots with Playwright",
        "url": "https://lirantal.com/blog/advanced-usage-patterns-for-taking-page-element-screenshots-with-playwright",
        "description": "This awesome post shows you some advanced usage patterns for working with Playwright to take a screenshot of a specific element and modify the contents of the image, either before taking the screenshot or after, using image preprocessing tools.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "10 Weird HTML Hacks That Shaped The Internet",
        "url": "https://tedium.co/2023/11/24/weird-html-hacks-history",
        "description": "If you have been around the block of web development for a while you might remember a time when to accomplish anything you needed to write tons of CSS hacks that will accommodate for various bugs or inconsistencies across browsers. Today is a much brighter landscape, but it's still worth looking back at what we were doing once because there's always something useful to learn from the past!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pravatar - CC0 Avatar Placeholder",
        "url": "https://pravatar.cc/",
        "description": "If you are building an app and you need some realistic (but legally legit) avatar pictures, check out this FREE service. The part I love the most is that you can pass an email address or a hash to get back the same avatar consistently, so this is something cool for demos that require programmatically generated users.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "vercel/nft: Node.js dependency tracing utility",
        "url": "https://github.com/vercel/nft",
        "description": "Not the kind of NFT you might be thinking about. In this case, it stands for Node.js File Trace and it's a powerful library that allows you to determine exactly which files are necessary for the application runtime.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Care beyond code: 7 best design practices for frontend developers",
        "url": "https://evilmartians.com/chronicles/care-beyond-code-7-best-design-practices-for-frontend-developers",
        "description": "Frontend can be about more than just code—we’re also the last bastion helping our teams against pesky design bugs! This article shares 7 best design practices for frontend engineers.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "remusao/tldts: extract domains, subdomains and public suffixes",
        "url": "https://github.com/remusao/tldts",
        "description": "TLDTS is a JavaScript library that allows you to extract domains, subdomains, and public suffixes from complex URIs. One use case where I can see this being useful is when you need to validate a URL and make sure it's a public one.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Printing Perfection, A Developer’s Journey with React-to-Print",
        "url": "https://buaiscia.github.io/blog/tips/printing-developer-journey-react-to-print"
      },
      {
        "title": "You don't need JavaScript for that",
        "url": "https://htmhell.dev/adventcalendar/2023/2"
      },
      {
        "title": "An Informed Pre-caching Strategy for Large Sites",
        "url": "https://calendar.perfplanet.com/2023/informed-pre-caching-strategy-for-large-sites"
      },
      {
        "title": "Why web perf tools should be reporting website carbon emissions",
        "url": "https://calendar.perfplanet.com/2023/why-web-perf-tools-should-be-reporting-website-carbon-emissions"
      },
      {
        "title": "Does Interaction to Next Paint actually correlate to user behavior?",
        "url": "https://speedcurve.com/blog/INP-user-experience-correlation"
      },
      {
        "title": "Examples of Great URL Design",
        "url": "https://blog.jim-nielsen.com/2023/examples-of-great-urls"
      },
      {
        "title": "Updates from the 99th TC39 meeting",
        "url": "https://dev.to/hemanth/updates-from-the-99th-tc39-meeting-15hn"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 349,
    "title": "Announcing TypeScript 5.3",
    "slug": "2023-12-04-334-announcing-typescript-5-3",
    "date": "2023-12-04",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #349.\n\nI am just back from Las Vegas where I attended **re:Invent**, the biggest AWS conference of the year and, with more that 60.000 participants, definitely the biggest conference I ever attended, and by far! It's not going to be surprising to see some announcements from re:Invent or things that I learned by speaking to awesome folks there in the selected content for this week. I hope you will enjoy it!",
    "quote": {
      "text": "In carpentry, you measure twice and cut once. In software development, you never measure and make cuts until you run out of time“",
      "author": null,
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Announcing TypeScript 5.3",
        "url": "https://devblogs.microsoft.com/typescript/announcing-typescript-5-3",
        "description": "One of the biggest announcements of the last couple of weeks was the release of a new version of TypeScript which comes with many welcome improvements and additions. My favourite one is the `switch(true)` narrowing, but I'll let you figure out all the other juicy things packed in this release.",
        "imageUrl": "./4f8dff1e466d3e4767f663f33fde597d60e7a6a9d1b21bddd382c34ba608ea42.jpg",
        "featured": true
      },
      {
        "title": "General availability of the AWS SDK for Rust",
        "url": "https://aws.amazon.com/blogs/developer/announcing-general-availability-of-the-aws-sdk-for-rust",
        "description": "I have been annoying everyone to death about [how cool it is to do Lambdas in Rust](https://loige.co/why-you-should-consider-rust-for-your-lambdas). So you can imagine how excited I was to hear at **re:Invent** that the AWS SDK for Rust is finally stable. Folks have no more excuses not to try to use Rust (at least in one tiny Lambda).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Web Components: Eliminate JavaScript Framework Lock-in",
        "url": "https://jakelazaroff.com/words/web-components-eliminate-javascript-framework-lock-in",
        "description": "Web components can dramatically loosen the coupling of JavaScript frameworks. This article does something crazy to prove this statement: it builds an app where every single component is written in a different JavaScript framework.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "aws-lite: Faster and lighter AWS SDK for Node.js",
        "url": "https://aws-lite.org/",
        "description": "At **re:Invent** I had the pleasure to meet [Brian LeRoux](https://brian.io/) in person. Brian is one of the masterminds behind aws-lite: A simple, fast, extensible, and community-driven AWS client. If you are trying to squeeze an extra inch of performance from your Node.js Lambdas, this one might be worth looking into!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Promises training",
        "url": "https://github.com/henriqueinonhe/promises-training",
        "description": "Practice working with promises through a curated collection of interactive challenges. This repository provides a platform to refine your skills, complete with automated tests to to give you instant feedback and validate your progress.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Biome formatter wins the Prettier challenge",
        "url": "https://biomejs.dev/blog/biome-wins-prettier-challenge",
        "description": "I am falling more and more in love with the Biome project. The ability to have very fast JavaScript/TypeScript formatting and lining in one project is amazing. On top of that, enabling Biome is super easy and it can be greatly configured to suit all your desperate needs. It was great to see that Biome won the prettier challenge. I am sure this will bring more trust and adoption to the project.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Node + TypeScript + ts-node + ESM experience that works",
        "url": "https://gist.github.com/khalidx/1c670478427cc0691bda00a80208c8cc",
        "description": "How painful it is to configure TypeScript correctly to work with ESM in a Node.js project? Maybe it's easy enough for some people, but, if you ask me, I'd say it's definitely painful (and probably one of those killjoys when it comes to using TypeScript). This gist provides a ready-made solution that just works, so you might conveniently use it as a starting point for your next project.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The DynamoDB Book",
      "author": "Alex DeBrie",
      "description": "DynamoDB is exploding in popularity. It's fast, scalable, and fully-managed. But it's not your father's database. Data modeling in DynamoDB is different than the relational data model you're used to.Learn how to properly design your data model with DynamoDB to avoid problems later.",
      "coverImageUrl": "./d679ae448a4d628ee2df2fb3800c00ba1e8a7752ad65e719073fc65c425ce937.png",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "AWS Lambda functions now scale 12 times faster when handling high-volume requests",
        "url": "https://aws.amazon.com/blogs/aws/aws-lambda-functions-now-scale-12-times-faster-when-handling-high-volume-requests"
      },
      {
        "title": "Track Frontend JavaScript exceptions with Playwright fixtures",
        "url": "https://checklyhq.com/blog/track-frontend-javascript-exceptions-with-playwright"
      },
      {
        "title": "AWS Bites Podcast: Luciano's re:Invent experience",
        "url": "https://awsbites.com/106-luciano-s-reinvent-experience/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 348,
    "title": "Announcing Vite 5",
    "slug": "2023-11-27-333-announcing-vite-5",
    "date": "2023-11-27",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\n... and welcome to issue #348!\n\nI am currently packing and getting ready to travel to Las Vegas to attend **re:Invent**, the biggest AWS conference of the year! By the time you get this email I should already be there! If you are attending as well, [give me a shout](https://twitter.com/loige), I'd really love to have a chat and know what can I do to make FullStack Bulletin better for you!\n\nNow, I'll leave you to some juicy full-stack content. This week, somehow there's lots of talking about CSS Grids, so I hope you like the topic, but if not, there's plenty of other cool stuff to check out!\n\nEnjoy! 😊",
    "quote": {
      "text": "Good programmers don't just write programs. They build a working vocabulary“",
      "author": "Guy Steele",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Guy_L._Steele_Jr."
    },
    "links": [
      {
        "title": "Announcing Vite 5",
        "url": "https://vitejs.dev/blog/announcing-vite5",
        "description": "Vite is one of the most used JavaScript/TypeScript dev servers and bundlers of the ecosystem. It's great to see a new major release that focuses on performance and polishing the internal API. Check out this release post to find out about the other changes.",
        "imageUrl": "./42ecd43bf4d9dbd620b1275cb670caa306dfad01d35f66d0917925f2f970a630.jpg",
        "featured": true
      },
      {
        "title": "An Interactive Guide to CSS Grid",
        "url": "https://joshwcomeau.com/css/interactive-guide-to-grid",
        "description": "How much do you know about CSS Grid? If I have to be honest, every time I use it I feel incredibly powerful, but also incredibly dumb... I can never quite achieve what I set myself to do and then I eventually revert to doing something simpler with Flexbox. If you are like me, you might really enjoy this interactive guide to CSS Grid. It helps with setting the correct mental model from the start and it does a great job at showing which primitives you can compose to achieve great results with your layouts. But CSS Grid is not for every use case, so you'll also learn when it's worth using it and when you should pick something else instead.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Valley of Code",
        "url": "https://thevalleyofcode.com/",
        "description": "The Valley of Code is a portal with lots of useful information for those who aspire to become full-stack web developers. Oh, are you already a well-capable full-stack web developer? Well, good for you! But trust me, this website has so much good stuff in it that I am sure there's some topic you might want to revise and make sure your understanding of all the bits and pieces is top-notch!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Creating Bento Grid Layouts",
        "url": "https://www.julienthibeaut.xyz/blog/create-bento-grid-layouts",
        "description": "One of my favourite new web design trends is the Bento Grid. It takes inspiration from the famous Japanese Bento Box and it is widely used (even Apple has been using it quite extensively in the last year). Now, if you like this trend too and you also like Tailwind CSS, you might want to learn how to create a Bento Grid Layout with Tailwind CSS, so here you go.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "An Attempted Taxonomy of Web Components",
        "url": "https://zachleat.com/web/a-taxonomy-of-web-component-types",
        "description": "Zach Leatherman (creator of [Eleventy](https://www.11ty.dev/) and a big fan of progressive enhancement and zero-dependency web components) attempts to define a taxonomy of Web Components. What does that mean? The idea is to classify different types of web components by their intrinsic characteristics. It's definitely worth a read, especially if you prefer to use frontend frameworks. It's amazing to see how much you can achieve with plain simple \"vanilla\" web components.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Width and Height in CSS",
        "url": "https://blog.jim-nielsen.com/2023/width-and-height-in-css",
        "description": "A short article that discusses the big beautiful mess that is making things for the world wide web (which is especially true when it comes to defining width and height properties in CSS... sooooo many nuances!)",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Your Website’s URLs Can and Should Be Beautiful",
        "url": "https://opuszine.us/posts/your-websites-urls-can-should-be-beautiful",
        "description": "The key to making a beautiful URL is finding a balance between brevity and clarity. Beautiful URLs can make the difference and be catchy and drive more conversions!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "5 Formatting Techniques for Long-Form Content",
        "url": "https://nngroup.com/articles/formatting-long-form-content"
      },
      {
        "title": "The Tension and Future of Jamstack",
        "url": "https://zachleat.com/web/jamstack-future"
      },
      {
        "title": "APIs with Rust and Axum - Part 1",
        "url": "https://ryan17.dev/blog/apis-with-rust-and-axum"
      },
      {
        "title": "Introducing Amazon CloudFront KeyValueStore: A low-latency datastore for CloudFront Functions",
        "url": "https://aws.amazon.com/blogs/aws/introducing-amazon-cloudfront-keyvaluestore-a-low-latency-datastore-for-cloudfront-functions/"
      },
      {
        "title": "Build a CRUD REST API in Rust",
        "url": "https://youtu.be/vhNoiBOuW94"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 347,
    "title": "67 Weird Debugging Tricks Your Browser Doesn't Want You to Know",
    "slug": "2023-11-20-332-67-weird-debugging-tricks-your-browser-doesn-t-want-you-to-k",
    "date": "2023-11-20",
    "templateType": "mce-mailchimp",
    "intro": "Howdy howdy, *|LIST:NAME|*and welcome to issue #347.\n\nAnother busy week here for me! Among other things, we [released Middy v5](https://twitter.com/loige/status/1724888512116265092) and published a new exciting episode of AWS Bites Podcast where [we literally dissect how Lambda runtimes work](https://awsbites.com/104-explaining-lambda-runtimes/) (and I am quite proud of the episode artwork).\n\nCheck them out if you are into AWS and serverless, but if you are here only for the full-stack goodies, well, there's plenty of it down here, so enjoy this issue!",
    "quote": {
      "text": "In carpentry, you measure twice and cut once. In software development, you never measure and make cuts until you run out of time“",
      "author": null,
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "67 Weird Debugging Tricks Your Browser Doesn't Want You to Know",
        "url": "https://alan.norbauer.com/articles/browser-debugging-tricks",
        "description": "One of the best collections of advanced browser debugging tips and tricks that I have ever seen. If you ever find yourself looking at a website and wondering *\"How the heck does this thing work?\"* then you can probably find here lots of ideas on how you could find the answer... or maybe you just need to debug your own app, because, you know, we create bugs all the time and someone has to take care of them... eventually...",
        "imageUrl": "./d1b9c0e49d948883b02a2a33a357cef1515d2acae07020bc130210d12e0b61f3.png",
        "featured": true
      },
      {
        "title": "How to Use Timeouts in Node.js",
        "url": "https://blog.appsignal.com/2023/11/08/how-to-use-timeouts-in-nodejs.html",
        "description": "No we are not talking about `setTimeout` or `setInterval`... we are talking about how to deal with timeouts when implementing HTTP servers and clients. If you have never put too much thought into this topic, you should check out this article for some practical insights and examples including some popular libraries.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Magic of Details: How UX Microinteractions Transform Products",
        "url": "https://dribbble.com/stories/2023/11/14/the-magic-of-details-how-ux-microinteractions-transform-products",
        "description": "Have you ever used an app or a website and found that it's simple and yet incredibly pleasant to use? You might have not noticed it, but sometimes this is thanks to a lot of time and care spent on designing the so-called \"*micro-interactions*\". If you are building an ambitious consumer-facing project, you should probably consider incorporating some of these ideas into your product.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Kafka is dead, long live Kafka",
        "url": "https://warpstream.com/blog/kafka-is-dead-long-live-kafka",
        "description": "I am personally not a big fan of Kafka. Don't get me wrong, I do really like stream processing and I recognise that Kafka has been revolutionising modern architectures, and yet it's a bit of a beast to use, configure correctly, deploy, and scale! This article explores WarpStream, an alternative solution that aims to solve some of the problems that exist with Kafka. If you are a Kafka user, or simply if you like learning about systems architectures and their tradeoffs, you might enjoy this one.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Learn Web Performance",
        "url": "https://web.dev/learn/performance",
        "description": "A fantastic (and totally FREE) course by Google designed for those new to web performance, a vital aspect of the user experience. It covers key web performance concepts and techniques for improving performance like optimizing images, videos, fonts, how to split code and apply lazy loading, and tons more.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Moving back to React",
        "url": "https://daily.dev/blog/moving-back-to-react",
        "description": "Discover the story behind daily.dev's transition from **React** to **Preact** for front-end development. This post explores the challenges, solutions, and benefits of migrating to Preact, enhancing our web app's performance and development experience. But the fun bit is that now the team is moving back to React and you might be especially curious to find out why and how they are doing that...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Unlocking the power of Node.js",
        "url": "https://blog.platformatic.dev/unlocking-the-power-of-nodejs",
        "description": "How do you get the best out of Node.js? There are so many powerful patterns (trust me, [I know something about that](https://nodejsdesignpatterns.com/)) but this brilliant article by [Matteo Collina](https://twitter.com/matteocollina) focuses on module management and packages. It also covers the drawbacks of the singleton design pattern for holding state variables and explores the topic of dependency injection.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Full Stack Development with Spring Boot 3 and React",
      "author": null,
      "description": "If you’re an existing Java developer who wants to go full stack or pick up another frontend framework, this book is your concise introduction to React. Written by a software development lecturer with over 17 years of industry experience, it is designed to get you up and running quickly with the Spring Boot 3 and React stack.\nThis latest edition walks you through building, securing, testing, and deploying a full-stack application, linking together a robust Spring Boot REST API and a dynamic React user interface. Along the way, you’ll explore modern libraries and tools, such as Gradle, Vite, Vitest, and React Query. For the first time ever, it also covers React development with the in-demand TypeScript.",
      "coverImageUrl": "./6db86951e1f00278df4c6e1b553bcfe4489dfcb40c7009a06562252a30033b79.jpg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": [
      {
        "title": "HTML Web Components",
        "url": "https://blog.jim-nielsen.com/2023/html-web-components"
      },
      {
        "title": "A faster web in 2024",
        "url": "https://rviscomi.dev/2023/11/a-faster-web-in-2024"
      },
      {
        "title": "The effects of not maintaining consistency with DynamoDB",
        "url": "https://advancedweb.hu/the-effects-of-not-maintaining-consistency-with-dynamodb"
      },
      {
        "title": "git rebase: what can go wrong?",
        "url": "https://jvns.ca/blog/2023/11/06/rebasing-what-can-go-wrong-"
      },
      {
        "title": "Designing Web Design Documentation",
        "url": "https://smashingmagazine.com/2023/11/designing-web-design-documentation"
      },
      {
        "title": "Using Selectlist in React",
        "url": "https://polypane.app/blog/using-selectlist-in-react"
      },
      {
        "title": "ESM Loaders: Enhancing Module Loading in Node.js (video)",
        "url": "https://www.youtube.com/watch?v=RYdEYikYEQ4%3Futm_source%3Dfullstackbulletin.com"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 346,
    "title": "10 insights on real world container use",
    "slug": "2023-11-13-331-10-insights-on-real-world-container-use",
    "date": "2023-11-13",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #346!\n\nWhere to start? Last week was quite intense for me... The most important news is that [Middy](https://middy.js.org/), an open-source project I started a while ago, is [now a project sponsored by AWS](https://twitter.com/loige/status/1722536099904409982)! Myself and my friend [Roberto](https://twitter.com/gbinside) managed to resume our [Twich coding streams where we are building a chat-based game in Rust](https://www.youtube.com/playlist?list=PLbNOKnE-Oyr1I-Ddj4LX-VqDHj4qjTb49)... GitHub universe was on and I got a bit hyped by all the AI announcements and wrote [an opinion piece](https://loige.co/javascript-low-level-or-ai) on my blog on how that might affect developers in the next 10 years. Finally, [Eoin](https://twitter.com/eoins) and I had fun [playing with Amazon Bedrock](https://awsbites.com/103-building-genai-features-with-bedrock/) and used generative AI for content and metadata for our podcast!\n\nBut enough about me, let's get into some serious full stack content!\n\nEnjoy!",
    "quote": {
      "text": "Good programmers don't just write programs. They build a working vocabulary“",
      "author": "Guy Steele",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Guy_L._Steele_Jr."
    },
    "links": [
      {
        "title": "10 insights on real-world container use",
        "url": "https://datadoghq.com/container-report",
        "description": "Last week, Datadog published a very interesting paper with various insights on how they see customers using containers in production and what kind of trends they see emerging. Why is this interesting? Because if you are building new apps in the cloud and using containers you can get a glimpse of where the industry is going and assess whether you need to start doing something different.",
        "imageUrl": "./6b7bf3571ab5ae8e4fe42898f7e71faffaab1e4eba00aa1281beacae1e604dcd.jpg",
        "featured": true
      },
      {
        "title": "Headless Component: a pattern for composing React UIs",
        "url": "https://martinfowler.com/articles/headless-component.html",
        "description": "As React UI controls become more sophisticated, complex logic can get intertwined with the visual representation. This makes it hard to reason about the behavior of the component, hard to test it, and necessary to build similar components that need a different look. A Headless Component extracts all non-visual logic and state management, separating the brain of a component from its looks.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Enums considered harmful",
        "url": "https://youtube.com/watch?v=jjMbPt_H3RQ",
        "description": "In this video, [Matt Pocock](https://www.mattpocock.com/) showcases why he believes TypeScript enums are not great and how you can leverage a const POJO instead to achieve pretty much everything you can achieve with enums (and more).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Game+Logo, video game logos",
        "url": "https://logodesignlove.com/video-game-logos",
        "description": "Last week I bumped into this article by [Logo Design Love](https://www.logodesignlove.com/) and, oh boy, it brought back so many memories! It's a showcase of old video games and console logos. Why is this relevant here? Maybe it isn't, but I like to think it can be a great source of inspiration if you are currently thinking about designing a logo for a web project!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How Core Web Vitals saved users 10,000 years of waiting for web pages to load",
        "url": "https://blog.chromium.org/2023/11/how-core-web-vitals-saved-users-10000.html",
        "description": "This fascinating case study by Google showcases how applying Core Web Vitals to the web (40% of the web seems to have passed all of the CWV metrics) has massively improved load times and overall user experience. A recommended read if you haven't yet had a look at CWV and discovered what would be the benefits for your site.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "FlowerJS: Flower Shapes and Animation on HTML5 Canvas.",
        "url": "https://github.com/jirotubuyaki/FlowerJS",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "An Intro to Building Game UIs with React",
        "url": "https://adammadojemu.com/blog/intro-to-building-game-uis-with-react",
        "description": "A deep dive into the fusion of web development and game development. This article touches on React's uses within game UIs, industry giants taking the React route, and the two predominant strategies for incorporating React in game development. If you think about how demanding are games in terms of performance, you can certainly think that there are many tricks to be learned here, and you might be able to use them even outside the realm of gaming.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "A Couple of New CSS Functions I’d Never Heard Of",
        "url": "https://chriscoyier.net/2023/10/17/a-couple-of-new-css-functions-id-never-heard-of"
      },
      {
        "title": "Breaking down a design",
        "url": "https://jamiemill.com/blog/breaking-down-a-design"
      },
      {
        "title": "Scroll-Driven State Transfer",
        "url": "https://kizu.dev/scroll-driven-state-transfer"
      },
      {
        "title": "How We Designed & Built a View Transition Demo",
        "url": "https://viget.com/articles/how-we-designed-and-built-a-view-transition-demo"
      },
      {
        "title": "Exit Animations",
        "url": "https://chriscoyier.net/2023/10/30/exit-animations"
      },
      {
        "title": "You're Gonna Need A Bigger Browser",
        "url": "https://berjon.com/bigger-browser"
      },
      {
        "title": "2023: 0 of the Global Top 100 Websites Use Valid HTML",
        "url": "https://meiert.com/en/blog/html-conformance-2023"
      },
      {
        "title": "Monaspace: an innovative superfamily of fonts for code by GitHub",
        "url": "https://monaspace.githubnext.com/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 345,
    "title": "System Design Primer: Design large-scale systems",
    "slug": "2023-11-06-330-system-design-primer-design-large-scale-systems",
    "date": "2023-11-06",
    "templateType": "mce-mailchimp",
    "intro": "Howdy, *|LIST:NAME|*\n... and welcome back for issue #345!\n\nLast week has been quite intense for me! We had the great pleasure of interviewing [Jeremy Daly about all things serverles](https://awsbites.com/102-getting-ampt-with-jeremy-daly/)s at AWS Bites, I have been working on a new open-source project implementing a [custom OIDC authorizer for API Gateway](https://github.com/lmammino/oidc-authorizer) (please give me a star on GitHub), and I even wrote a article about what I learned [debugging custom APIGateway authorizers](https://loige.co/debugging-custom-apigateway-authorizers/).\n\nThis week I will have a lot of FOMO for missing the awesome NodeConfEU (probably the coolest Node.js conf in Europe), but let me console myself with some cool FullStack content, which, hopefully, you'll find interesting too!\n\nWithout further ado, let's get into it!",
    "quote": {
      "text": "Beware of bugs in the above code; I have only proved it correct, not tried it“",
      "author": "Donald Knuth",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "System Design Primer: Design large-scale systems",
        "url": "https://github.com/donnemartin/system-design-primer",
        "description": "A fantastic GitHub repository that collects a huge amount of resources that can teach you how to design large-scale systems. This is something that can be extremely useful if you are looking for your next step in your FullStack career and you want to move to more architecture-oriented roles, or simply if you want to give more breadth to your engineering views and learn what it takes to build scalable systems.",
        "imageUrl": "./be06ba6bf624ebb61104abe3793fd4afefff6384d8bdd134969005bdb35b57df.png",
        "featured": true
      },
      {
        "title": "Can Next.js Handle 5000 Pages?",
        "url": "https://dev.to/codebeast/can-nextjs-handle-5000-pages-1ejn",
        "description": "If you are a fan of Next.js you might enjoy this tutorial showing you how you can build a Next.js website with 5000 different pages and how to host that on AWS. In the process, you will also learn whether Next.js can scale to these numbers and why... I am not going to give you any spoilers, you'll have to go and read the article to find out 😛",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Announcing WinterJS",
        "url": "https://wasmer.io/posts/announcing-winterjs-service-workers",
        "description": "Who needs another JavaScript runtime? NOBODY! Oh wait, this one promises compatibility with the [WinterCG](https://wintercg.org/) specification, and it can be compiled into WebAssembly... so it's actually quite interesting! And I didn't even say that it uses SpiderMonkey and that it is written in Rust! OK, go check it out and see what you can build with it...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Use PHP code right within your React App. With \"use php\"",
        "url": "https://github.com/bufferhead-code/nextjs-use-php",
        "description": "Have you ever wanted to use PHP code right into your React components? NO! WHY NOT?! Come on! Okay, this is a bit of a prank project, but the crazy thing is that it actually works. Not kidding, you can really use PHP in your React components thanks to React server components' black magic! If you think this is crazy, you haven't seen the implementation for [C](https://github.com/elnardu/react-use-c) and [Rust](https://github.com/elnardu/react-use-rust) yet ...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Release: Yarn 4.0",
        "url": "https://yarnpkg.com/blog/release/4.0",
        "description": "After more than a year of work the Yarn team releases a stable version of the 4.x release line! This version comes with some interesting features. Perhaps the most interesting is the [constraint engine](https://yarnpkg.com/features/constraints) (written in a JavaScript Prolog!) which lets you define arbitrary rules for your workspaces. For instance, you could say that all projects in the workspace need to use the same version of a specific dependency. But that's not the only reason why you should consider upgrading if you use Yarn... Another good reason is that v4 is significantly faster than the previous versions...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Flappy Bird Implemented in Typescript types",
        "url": "https://zackoverflow.dev/writing/flappy-bird-in-type-level-typescript",
        "description": "TypeScript annotations are known to be quite powerful. In fact, they are a Turing-complete language, which means that you can technically build anything you want with them (it's not necessarily easy, but you still can!)... Now this brings people to do all sorts of crazy experiments, like building a fully-fledged Flappy Bird game just with TypeScript types... Before reading this article you couldn't even fathom how this would be possible, but now I can and maybe that's going to be useful to me, one day...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "WebAuthn.wtf",
        "url": "https://webauthn.wtf/",
        "description": "WebAuthn (short for Web Authentication) is an API specification that enables applications to use strong and secure authentication methods for user registration and login. It provides a way for end users to authenticate themselves using hardware- or software-based authenticators, such as USB security keys or secure hardware elements integrated with a laptop or mobile device, instead of relying solely on passwords. This is probably going to be the future of authentication on the web, and this website does a great job at teaching you everything you need to know about the standard and how you can integrate it today into your apps.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Goodbye, Node.js Buffer",
        "url": "https://sindresorhus.com/blog/goodbye-nodejs-buffer"
      },
      {
        "title": "Test Assertion Styles in JavaScript",
        "url": "https://blog.izs.me/2023/09/software-testing-assertion-styles"
      },
      {
        "title": "How the Wikimedia Foundation Balances Security and Open Information in Web Development",
        "url": "https://openjsf.org/blog/2023/10/05/wikimedia-case-study"
      },
      {
        "title": "Speeding up the JavaScript ecosystem - Tailwind CSS",
        "url": "https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-8"
      },
      {
        "title": "Building a Generic RSS Parser Service with Cloudflare Workers",
        "url": "https://raymondcamden.com/2023/10/31/building-a-generic-rss-parser-service-with-cloudflare-workers"
      },
      {
        "title": "browser-window Web Component",
        "url": "https://zachleat.com/web/browser-window"
      },
      {
        "title": "Confusing git terminology",
        "url": "https://jvns.ca/blog/2023/11/01/confusing-git-terminology"
      },
      {
        "title": "Getting Ampt with Jeremy Daly",
        "url": "https://awsbites.com/102-getting-ampt-with-jeremy-daly/"
      },
      {
        "title": "Debugging custom ApiGateway authorizers",
        "url": "https://loige.co/debugging-custom-apigateway-authorizers"
      },
      {
        "title": "The Complete Guide to Custom Authorizers with AWS Lambda and API Gateway",
        "url": "https://www.alexdebrie.com/posts/lambda-custom-authorizers/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 344,
    "title": "Let's develop a QR Code Generator",
    "slug": "2023-10-30-329-let-s-develop-a-qr-code-generator",
    "date": "2023-10-30",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to spooky issue #344! 👻 Trick or full-stack-threat? 🍭\n\nLast week, I had the massive pleasure of attending [Codemotion](https://conferences.codemotion.com/milan2023-live/), the largest Italian tech conference and speaking about a topic I am passionate about: [Writing Lambda Functions in Rust](https://loige.link/lamb-rs).\n\nI met so many friends and made new ones (which always fills me with joy). And I want to give a special shout-out to 2 good friends: [Massimo Artizzu](https://twitter.com/MaxArt2501) and [Paolo Insogna](https://twitter.com/p_insogna). While talking with them during the speakers' dinner, we got nerd-sniped into discussing how beautiful and mysterious are **QR codes** and that's where I discovered that Massimo had written an entire series of articles to teach you how to create a QR code, literally from scratch, no libraries allowed!\n\nNow guess what's going to be the featured article of this issue... 😇",
    "quote": {
      "text": "There is nothing in the programming field more despicable than an undocumented program“",
      "author": "Edward Yourdon",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Yourdon"
    },
    "links": [
      {
        "title": "Let's develop a QR Code Generator",
        "url": "https://dev.to/maxart2501/let-s-develop-a-qr-code-generator-part-i-basic-concepts-510a",
        "description": "The first article in a beautiful series where you get to learn everything there's to know about QR codes and, most importantly, you get to build your own QR code from scratch, using only goodwill, curiosity and... JavaScript, of course!",
        "imageUrl": "./c2e988a025e23e65b765276bf9c24dfaa6a51e60b5d77eb4210a1b975723aab8.jpg",
        "featured": true
      },
      {
        "title": "What Every Developer Should Know About GPU Computing",
        "url": "https://codeconfessions.substack.com/p/gpu-computing",
        "description": "This article demystifies GPUs, showing why they're vital for deep learning. Learn their inner workings, like a tech wizard unveiling secrets. Time to explore GPU computing!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "imgly/background-removal-js",
        "url": "https://github.com/imgly/background-removal-js",
        "description": "A fantastic JavaScript library (actually 2!) that allows you to remove backgrounds from images directly in the browser and in Node.js. This is an ideal approach that can help you with automation and it will let you avoid making network requests and having to pay fees to third-party services.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "We're Bringing Responsive Video Back!",
        "url": "https://scottjehl.com/posts/responsive-video",
        "description": "Let's revisit responsive HTML video delivery and talk about when we can use it again and how close we are to cross-browser compatibility",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Material Design 3 (web)",
        "url": "https://m3.material.io/develop/web",
        "description": "Material Web is Google’s component library for building applications that work in any web framework. This new release comes with the addition of a web-based set of components that implement the design system. While still quite early, this release includes 19 different components, CSS theming, accessibility best practices baked in and more. Something to keep a close eye on, especially if you are a fan of Google's Material Design style.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Beer CSS 🍻 - Build material design interfaces in record time",
        "url": "https://beercss.com/",
        "description": "If you liked the previous post, you might want to explore the first CSS framework based on Material Design 3. It claims to be 10x smaller than other CSS frameworks based on Material Design and, most importantly, it has a very appealing and refreshing name!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Changing Colors in an SVG Element Using CSS and JavaScript",
        "url": "https://kirupa.com/web/changing_colors_svg_css_javascript.htm",
        "description": "Almost everything inside an inline SVG image is up for modification using CSS and JavaScript. That's the beauty of an SVG, its content is available in the DOM and therefore it's up for grabs! Let's have fun and let's change some colors!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Storybook 7.5",
        "url": "https://storybook.js.org/blog/storybook-7-5"
      },
      {
        "title": "react-magic-motion: auto-animate your components",
        "url": "https://react-magic-motion.com/"
      },
      {
        "title": "Introduction to web sustainability",
        "url": "https://developer.mozilla.org/en-US/blog/introduction-to-web-sustainability"
      },
      {
        "title": "The nine best recommendations in the new React docs",
        "url": "https://blog.testdouble.com/posts/2023-10-16-react-docs-recommendations"
      },
      {
        "title": "How To Animate Along A Path In CSS",
        "url": "https://smashingmagazine.com/2023/10/animate-along-path-css"
      },
      {
        "title": "Video: A One-in-a-Million Game (fun way to learn about probability)",
        "url": "https://youtu.be/PmWQmZXYd74?si=jE4jxrzljj-FsagZ%3Futm_source%3Dfullstackbulletin.com"
      },
      {
        "title": "Package and Distribute Lambda Functions for fun and profit",
        "url": "https://awsbites.com/101-package-and-distribute-lambda-functions-for-fun-and-profit/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 343,
    "title": "Node.js 21 Available Now",
    "slug": "2023-10-23-328-node-js-21-available-now",
    "date": "2023-10-23",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nHere's issue #343 and in this week we celebrate a new major release of Node.js! Always something good to celebrate, if you ask me... 🤪\n\nThis week, I am attending [Codemotion Milan](https://conferences.codemotion.com/milan2023-live/) (the biggest developers conference in Italy!). If you are there, come to say hello, I'd really love to get your honest feedback on Fullstack Bulletin and hear how we could make it better!\n\nI will also be talking about Rust + AWS Lambda, so if that's a topic that interests you, don't miss my talk on Tuesday at 5:30 PM on STAGE 1. 🤘",
    "quote": {
      "text": "Not everything I say is correct. It's correct modulo the little details you're going to have to worry about“",
      "author": "John Hopcroft",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Hopcroft"
    },
    "links": [
      {
        "title": "Node.js 21 Available Now!",
        "url": "https://openjsf.org/announcement/2023/10/17/node-js-21-available-now",
        "description": "The release of Node.js 21 is available now! Node.js 21 replaces Node.js 20 as our current release line, and Node.js 20 is being promoted to long-term support (LTS). Among the main updates: V8 updates, stable WebStreams, experimental flags to opt-in to ESM (this is a biggie!), many improvements to the built-in test runner!",
        "imageUrl": "./c78739a8df630fed6b2fe339fc604e34a4b41a36a21c11303d725464b4d9e6d5.jpg",
        "featured": true
      },
      {
        "title": "How we optimized package imports in Next.js",
        "url": "https://vercel.com/blog/how-we-optimized-package-imports-in-next-js",
        "description": "In the previous issue we have already presented the topic of **barrel files**. It turns out that this is something that Vercel has been very careful about and that it led to some major performance optimizations. Check the full article to find out what they did!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Nota: A Document Language for the Browser",
        "url": "https://nota-lang.org/",
        "description": "Let's be honest, nobody likes writing LaTeX and everyone likes markdown (I know this is not strictly true, but let me assume my opinion is the prevalent one for once)... **Nota** tries to make writing documents much more enjoyable by providing a new syntax (inspired by markdown and extensible through JavaScript and React) that can allow you to craft beautiful web documents. I am going to bet this is going to be big in the future, but for now, you can consider this project as an alternative to [MDX](https://mdxjs.com/) and [Typst](https://typst.app/) (that we have covered before).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Welcome to Effect",
        "url": "https://effect.website/",
        "description": "**Effect** is a relatively new project providing a fully-fledged functional effect system for TypeScript with a rich standard library. What does this mean? The home page contains a nice vide that can explain that way better than I could do!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The State of WebAssembly 2023",
        "url": "https://blog.scottlogic.com/2023/10/18/the-state-of-webassembly-2023.html",
        "description": "In this blog post, Colin Eberhardt tries to summarise the findings of the latest State of WebAssembly survey. Some of the main takes are that Rust and JavaScript usage continues to increase, but there is a growing desire for Zig and Kotlin (this one surprised me!) The use of wasm as a plugin environment continues to climb, with developers hoping it will deliver the “write once and run anywhere” promise.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Write your own Zod",
        "url": "https://zackoverflow.dev/writing/write-your-own-zod",
        "description": "[Zod](https://zod.dev/) is a famous TypeScript library that allows you to combine static type checking and runtime validation. If you have used Zod you have probably wondered how Zod achieves its magic, right? If you didn't have the courage to have a peek at the source code, you can now check out this lovely tutorial showcasing how you could build a simple alternative to Zod from scratch.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The nuances of base64 encoding strings in JavaScript",
        "url": "https://web.dev/articles/base64-encoding",
        "description": "base64 encoding and decoding is a common form of transforming binary content to be represented as web-safe text. It's used commonly for data URLs, such as inline images. But what happens when you apply base64 encoding and decoding to strings in JavaScript? This post explores the nuances and common pitfalls to avoid. Also, remember that [Base64 is not encryption](https://www.youtube.com/shorts/0YAgR4deSD4)!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "terra-draw: Cross provider map drawing library, supporting Mapbox, MapLibre, Google Maps, OpenLayers and Leaflet out the box",
        "url": "https://github.com/JamesLMilner/terra-draw"
      },
      {
        "title": "Being Picky about a CSS Reset for Fun & Pleasure",
        "url": "https://chriscoyier.net/2023/10/03/being-picky-about-a-css-reset-for-fun-pleasure"
      },
      {
        "title": "How Custom Property Values are Computed",
        "url": "https://moderncss.dev/how-custom-property-values-are-computed"
      },
      {
        "title": "CSS relative color syntax",
        "url": "https://developer.chrome.com/blog/css-relative-color-syntax"
      },
      {
        "title": "table-saw: A small web component for responsive <table> elements",
        "url": "https://github.com/zachleat/table-saw"
      },
      {
        "title": "Don't Block the Event Loop (or the Worker Pool)",
        "url": "https://nodejs.org/en/docs/guides/dont-block-the-event-loop"
      },
      {
        "title": "Solid.js Creator Outlines Options to Reduce JavaScript Code",
        "url": "https://thenewstack.io/solid-js-creator-outlines-options-to-reduce-javascript-code"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 342,
    "title": "Lexical",
    "slug": "2023-10-16-327-lexical",
    "date": "2023-10-16",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nHello from issue #342!\n\nToday I'm excited to present you a slightly refined layout, which tries to package the same content in a more compact format (thank you so much to our reader **Michael Allen** for taking the time to give us some [feedback](https://fullstackbulletin.typeform.com/to/eW48Yb)). Let us know if you like it! And before we get into the full-stack content of this week, I also want to share some interesting stuff I bumped into reading last week. Last week was challenging for cloud providers as they dealt with massive DDoS attacks. Some articles summarise how they defended themselves: [AWS](https://aws.amazon.com/blogs/security/how-aws-protects-customers-from-ddos-events/), [Google Cloud](https://cloud.google.com/blog/products/identity-security/google-cloud-mitigated-largest-ddos-attack-peaking-above-398-million-rps), [Cloudflare](https://blog.cloudflare.com/zero-day-rapid-reset-http2-record-breaking-ddos-attack/). (Thanks to **Yan Cui** for sharing this content).\n\nHave fun!",
    "quote": {
      "text": "Perl: The only language that looks the same before and after RSA encryption“",
      "author": "Keith Bostic",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Keith_Bostic_(software_engineer)"
    },
    "links": [
      {
        "title": "Lexical",
        "url": "https://lexical.dev/",
        "description": "An open-source and extensible text editor framework that does things differently. There's no shortage of text editors to choose from, but one of the many things that set Lexical apart is how compact and minimal it can be, while still being extremely flexible and customizable. My favorite feature is the support out-of-the-box for slash commands, something you might have gotten used to if you are an eager Notion user. Now you can create Notion-like experiences for your projects too!",
        "imageUrl": "./122cb0befc7829186df3b7c695a0fc6d83d351279d31bbbbfdb7e0ab1e926cbd.png",
        "featured": true
      },
      {
        "title": "Easy Light-Dark Mode Color Switching with light-dark()",
        "url": "https://bram.us/2023/10/09/the-future-of-css-easy-light-dark-mode-color-switching-with-light-dark",
        "description": "A function that computes to the first color if the used color scheme is light or unknown, or to the second color if the used color scheme is dark. Why should you care? Well, let's just think what's the alternative today: tons of media queries! With this alternative approach, you can have something really easy to use and, as a nice side effect, you can keep your CSS code to the minimal!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Deploy and Test AWS Step Functions with Node.js",
        "url": "https://blog.appsignal.com/2023/10/04/deploy-and-test-aws-step-functions-with-nodejs.html",
        "description": "If you ever find yourself writing complex workflows involving multiple moving parts and tons of coordination logic (stuff that needs to run in parallel, retrying for errors, accumulating state before being able to proceed, etc), you probably know that writing all this logic yourself can be tedious and error-prone. If you are on AWS you can use Step Functions to offload all the orchestration to the service provider and focus only on the actual business logic that you ned to implement. This article gives you a very nice intro to how to use Step Functions with Node.js. BTW, FullStack Bulletin is actually built using step functions and I have a [series of videos](https://www.youtube.com/playlist?list=PLbNOKnE-Oyr1tsUft4j0QZDyk5iFcVVy_) about that!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The barrel file debacle",
        "url": "https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7",
        "description": "What is a barrel file? Don't worry, before reading this awesome article I didn't know either... A barrel file is a code file that exists only to re-export certain values, classes, or functions from another file. This is a common practice in many JS projects, but is there really value in it? This article showcases an alternative approach that can help you to keep your code cleaner and your applications more performant.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "When to Nest CSS",
        "url": "https://cloudfour.com/thinks/when-to-nest-css",
        "description": "Did you know CSS now supports nesting natively? We have featured a few articles about that in the last few months... Now, while CSS nesting is great, it should be used with caution. As a rule, if a selector will work without being nested, don't nest it. However, there are certain situations where nesting can make things easier to understand. Also, CSS nesting works slightly differently than nesting with SASS, so if that's a feature you are planning to use, make sure to check out this article and learn about all the nuances...",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Web server ‘hello world’ benchmark : Go vs Node.js vs Nim vs Bun",
        "url": "https://lemire.me/blog/2023/10/07/web-server-hello-world-benchmark-go-vs-node-js-vs-nim-vs-bun",
        "description": "There are many popular frameworks for writing little web applications. Go and JavaScript (Node.js) are among the most popular choices. Reportedly, Netflix runs on Node.js; Uber moved from Node.js to Go for better performance. But there are also less popular options such as Nim. This article showcases an in-depth review of their performance characteristics... If you are looking for an approach that would give you a great compromise between ease of use and performance, this article has you covered... oh yeah, it talks about Bun too!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Strong static typing, a hill I'm willing to die on...",
        "url": "https://svix.com/blog/strong-typing-hill-to-die-on",
        "description": "The more I use **Rust**, the more I love its powerful and flexible type system. While I wouldn't be able to explain to you why in a convincing way, this article is probably a better place to start reading about why a good implementation of strong static typing can be so beneficial to developers. If you come from a JavaScript or Python-heavy background and you haven't dealt much with static types, this is probably a great read to get into.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "5 best practices for preventing chaos in Tailwind CSS",
        "url": "https://evilmartians.com/chronicles/5-best-practices-for-preventing-chaos-in-tailwind-css"
      },
      {
        "title": "A comprehensive guide to the dangers of Regular Expressions in JavaScript",
        "url": "https://sonarsource.com/blog/vulnerable-regular-expressions-javascript"
      },
      {
        "title": "Rust: create an RSS Feed in Axum or Leptos",
        "url": "https://benw.is/posts/rss-in-axum"
      },
      {
        "title": "JavaScript Codeception: A Journey into Meta Programming",
        "url": "https://nearform.com/blog/javascript-codeception-a-journey-into-meta-programming"
      },
      {
        "title": "termost: a new JS framework to build your next CLI application",
        "url": "https://github.com/adbayb/termost"
      },
      {
        "title": "Should you use a Lambda Monolith, aka Lambdalith, for your API?",
        "url": "https://rehanvdm.com/blog/should-you-use-a-lambda-monolith-lambdalith-for-the-api"
      },
      {
        "title": "Learn Rust With Entirely Too Many Linked Lists",
        "url": "https://rust-unofficial.github.io/too-many-lists/#learn-rust-with-entirely-too-many-linked-lists?utm_source=fullstackbulletin.com&utm_medium=newsletter&utm_campaign=fullstackBulletin-41-2023&utm_content=title"
      },
      {
        "title": "The fears of adopting AWS (and how to fight them)",
        "url": "https://awsbites.com/99-the-fears-of-adopting-aws-and-how-to-fight-them/"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 341,
    "title": "500+ free Tailwind CSS components",
    "slug": "2023-10-09-326-500-free-tailwind-css-components",
    "date": "2023-10-09",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nThis is issue #341 and we have curated for you a collection of awesome full stack content.\n\nBefore I leave you to it, let me just tell you that I am grateful to have you as a subscriber and I hope you keep enjoying this content. If you do, please consider sharing this project on socials and with your friends and colleagues!\n\nThanks ❤️\n\n— Luciano",
    "quote": {
      "text": "Languages that try to disallow idiocy become themselves idiotic“",
      "author": "Rob Pike",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Rob_Pike"
    },
    "links": [
      {
        "title": "500+ free Tailwind CSS components",
        "url": "https://tailwind-elements.com/",
        "description": null,
        "imageUrl": "./723b3d958895e6015f2a227269dc9db99fcaeb24db70fcfb48fafca2ddb76407.jpg",
        "featured": true
      },
      {
        "title": "Choose Postgres queue technology",
        "url": "https://adriano.fyi/posts/2023-09-24-choose-postgres-queue-technology",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "What you need to know about Unicode in 2023",
        "url": "https://tonsky.me/blog/unicode",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Footer — The only footer gallery on earth.",
        "url": "https://www.footer.design/",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Upgrading frontend dependencies with confidence",
        "url": "https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Socket API that works across JavaScript runtimes",
        "url": "http://blog.cloudflare.com/socket-api-works-javascript-runtimes-wintercg-polyfill-connect",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Solving the Engineering Strategy crisis",
        "url": "https://lethain.com/solving-the-engineering-strategy-crisis",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Environment variables and configuration anti-patterns in Node.js applications",
        "url": "https://lirantal.com/blog/environment-variables-configuration-anti-patterns-node-js-applications"
      },
      {
        "title": "Managing the chaos of context-switching",
        "url": "https://leaddev.com/process/managing-chaos-context-switching"
      },
      {
        "title": "Best Practices for Securing Node.js Applications in Production",
        "url": "https://semaphoreci.com/blog/securing-nodejs"
      },
      {
        "title": "Why not React?",
        "url": "https://dev.to/tigt/why-not-react-2f8l"
      },
      {
        "title": "blazingmq: A modern high-performance open-source message queuing system",
        "url": "https://github.com/bloomberg/blazingmq"
      },
      {
        "title": "Fun with stroke-dasharray",
        "url": "https://yuanchuan.dev/fun-with-stroke-dasharray"
      },
      {
        "title": "The Uphill Battle of Memoization",
        "url": "https://tkdodo.eu/blog/the-uphill-battle-of-memoization"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 340,
    "title": "A New Open Source Alternative to Terraform",
    "slug": "2023-10-02-325-a-new-open-source-alternative-to-terraform",
    "date": "2023-10-02",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*\nWelcome to issue #340.\n\nOn a personal front, this week has been very busy. I have been traveling and speaking to Manchester first where [I talked about S3 pre-signed URLs](https://fth.link/sign-before) and then to the beautiful Desenzano (Lake Garda, northern Italy) where [I talked about JavaScript iteration protocols](https://loige.link/iter-garda). Now, I'm enjoying a spritz 🥃 on the like side as I edit this issue.\n\nIn this issue, we cover a variety of full stack-related topics, but we also cover some cloud stuff. Have you heard of **OpenTofu** already!? The name makes me laugh a little, but it's actually really serious and cool stuff if you do any infrastructure as code...\n\nI hope you'll enjoy it!",
    "quote": {
      "text": "Computer Science is no more about computers than astronomy is about telescopes“",
      "author": "Richard E. Pattis",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_E._Pattis"
    },
    "links": [
      {
        "title": "A New Open Source Alternative to Terraform",
        "url": "https://linuxfoundation.org/press/announcing-opentofu",
        "description": null,
        "imageUrl": "./f3e37327de72cc59e761d40b2c31ce1834dfd1499fc80c83bd7ed5c75f85097d.png",
        "featured": true
      },
      {
        "title": "Bun hype. How we learned nothing from Yarn",
        "url": "https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Responsive type scales with composable CSS utilities",
        "url": "https://tobiasahlin.com/blog/responsive-fluid-css-type-scales",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to write better Django code",
        "url": "https://klemenstrajhar.substack.com/p/how-to-write-better-django-code",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "af/envalid: Environment variable validation for Node.js",
        "url": "https://github.com/af/envalid",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Design System Ecosystem",
        "url": "https://bradfrost.com/blog/post/the-design-system-ecosystem",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Speeding up the JavaScript ecosystem - Polyfills gone rogue",
        "url": "https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-6",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Mastering React Design Patterns: Creating a Tabs Component",
        "url": "https://dev.to/josephciullo/mastering-react-design-patterns-creating-a-tabs-component-1lem"
      },
      {
        "title": "Your Cache Headers Could Probably be More Aggressive",
        "url": "https://macarthur.me/posts/more-aggressive-cache-headers"
      },
      {
        "title": "The Path To Awesome CSS Easing With The linear() Function",
        "url": "https://smashingmagazine.com/2023/09/path-css-easing-linear-function"
      },
      {
        "title": "Token based authentication with Fastify, JWT, and Typescript",
        "url": "https://thatarif.in/posts/token-based-authentication-with-fastify-jwt"
      },
      {
        "title": "NODE_ENV Considered Harmful",
        "url": "https://cjihrig.com/node_env_considered_harmful"
      },
      {
        "title": "8 more micro tips for remarkably better typography",
        "url": "https://betterwebtype.com/8-more-tips-for-remarkably-better-typography"
      },
      {
        "title": "Why HTTP/3 is eating the world",
        "url": "https://blog.apnic.net/2023/09/25/why-http-3-is-eating-the-world"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 339,
    "title": "Free for Developers",
    "slug": "2023-09-25-324-free-for-developers",
    "date": "2023-09-25",
    "templateType": "mce-mailchimp",
    "intro": "What's up, *|LIST:NAME|*\nThis is issue #339 and, spoiler alert: it's great! Not just because we start with a **pizza**-related quote 🍕, but because we have another issue packed with interesting resources. And as a bit of a meta-resource, the first one is a collection of resources that can help you to **save a lot of money** on day-to-day tools. Then we deep dive into topics such as **animations**, **sustainability**, **reactivity**, **observability**, and more. Have fun and make sure to check out our kind sponsors. They have a very cool product and they help us to make Fullstack Bulletin happen. ❤️\n\nThis issue is kindly sponsored by:**Feature flags** for **teams**.\n\nCreated by developers for developers with ❤️\n[Try without signing up](https://app.configcat.com/auth/startnow/)!",
    "quote": {
      "text": "Programming languages, like pizza, come in only two sizes: too big and too small“",
      "author": "Eric S. Raymond",
      "authorTitle": "Software Developer",
      "authorUrl": "https://en.wikipedia.org/wiki/Eric_S._Raymond"
    },
    "links": [
      {
        "title": "Free for Developers",
        "url": "https://free-for.dev/",
        "description": null,
        "imageUrl": "./4c2e8eda64550199965a1f07e40d4e5bc9e6d37e390a9dfb9fa0bfc48f5b81e2.png",
        "featured": true
      },
      {
        "title": "Theatre.js - animation toolbox for the web",
        "url": "https://theatrejs.com/",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Web Sustainability Guidelines (WSG) 1.0",
        "url": "https://w3c.github.io/sustyweb",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Patterns for Reactivity with Modern Vanilla JavaScript",
        "url": "https://frontendmasters.com/blog/vanilla-javascript-reactivity",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The never-ending JavaScript divide",
        "url": "https://youtube.com/watch?v=6_JNPmjSevo",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "hyperdx: An open-source observability platform",
        "url": "https://github.com/hyperdxio/hyperdx",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "JS minification benchmarks",
        "url": "https://github.com/privatenumber/minification-benchmarks",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Islands & Server Components & Resumability, Oh My!",
        "url": "https://dev.to/this-is-learning/islands-server-components-resumability-oh-my-319d"
      },
      {
        "title": "Creating a text typing effect with React",
        "url": "https://julienthibeaut.xyz/"
      },
      {
        "title": "Counting Ghosts",
        "url": "https://pcmaffey.com/counting-ghosts"
      },
      {
        "title": "Plotteus: The JavaScript library for data storytelling",
        "url": "https://plotteus.dev/"
      },
      {
        "title": "Web Apps Are Better Than No Apps",
        "url": "https://molodtsov.me/2023/08/web-apps-are-better-than-no-apps"
      },
      {
        "title": "Web Components Accessibility FAQ",
        "url": "https://matuzo.at/blog/2023/web-components-accessibility-faq"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 337,
    "title": "Why Does Email Development Have to Suck?",
    "slug": "2023-09-11-323-why-does-email-development-have-to-suck",
    "date": "2023-09-11",
    "templateType": "mce-mailchimp",
    "intro": "Hello, *|LIST:NAME|*We are happy to introduce issue #337! 🚀\n\nIn this issue, we inaugurate our new email layout! I hope you will enjoy it! Also pay attention to the bottom of this email, because from today we are starting to sneak into our emails some extra content... we know the craving for full-stack goodness never ends and we are on a mission to help! Enjoy.",
    "quote": {
      "text": "The question of whether Machines Can Think... is about as relevant as the question of whether Submarines Can Swim“",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Why Does Email Development Have to Suck?",
        "url": "https://dodov.dev/blog/why-does-email-development-have-to-suck",
        "description": null,
        "imageUrl": "./433fcab1014e9c8fd60714f521b14e6aea67b9fd107a3022ce968ed91b68194f.jpg",
        "featured": true
      },
      {
        "title": "How to Create a Dual-Mode Cross-Runtime JavaScript Package",
        "url": "https://hexagon.56k.guru/posts/dual-mode-cross-runtime-packages",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Browser Video Players Review",
        "url": "https://adrianroselli.com/2023/09/browser-video-players-review.html",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Tracking Errors in a Node.js Application",
        "url": "https://blog.appsignal.com/2023/08/30/tracking-errors-in-a-nodejs-application.html",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Making Sense of React Server Components",
        "url": "https://joshwcomeau.com/react/server-components",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Website design inspirations organised by fonts",
        "url": "https://maxibestof.one/typefaces",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Let’s Make a Rubber Button With HTML, CSS and SVG",
        "url": "https://cloudfour.com/thinks/rubber-button",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": [
      {
        "title": "Information Architecture vs. Sitemaps: What’s the Difference?",
        "url": "https://nngroup.com/articles/information-architecture-sitemaps"
      },
      {
        "title": "EmNudge/watlings: Learn WebAssembly by fixing small programs!",
        "url": "https://github.com/EmNudge/watlings"
      },
      {
        "title": "Long Animation Frames API",
        "url": "https://developer.chrome.com/articles/long-animation-frames"
      },
      {
        "title": "Towards HTTPS by default",
        "url": "https://blog.chromium.org/2023/08/towards-https-by-default.html"
      },
      {
        "title": "How layout position impacts three big web performance levers",
        "url": "https://performance.shopify.com/blogs/blog/how-layout-position-impacts-three-big-web-performance-levers"
      },
      {
        "title": "Adapting Illustrations to Dark Mode",
        "url": "https://blog.simonfarshid.com/adapting-illustrations-to-dark-mode"
      },
      {
        "title": "Astro View Transitions",
        "url": "https://developer.chrome.com/blog/astro-view-transitions"
      }
    ],
    "sponsor": null
  },
  {
    "issueNumber": 336,
    "title": "Writing an efficient Node.js Docker image",
    "slug": "2023-09-04-322-writing-an-efficient-node-js-docker-image",
    "date": "2023-09-04",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "All programming languages are shit. But the good ones fertilize your mind",
      "author": null,
      "authorTitle": "Software Developer",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Writing an efficient Node.js Docker image",
        "url": "https://specfy.io/blog/1-efficient-dockerfile-nodejs-in-7-steps",
        "description": "Building a Docker image for a Node.js project is relatively easy, but building a GOOD Docker image for a Node.js project is an entirely different story! This article presents a step-by-step guide to building fast and lightweight Node.js Docker images.",
        "imageUrl": "./41e0a560636cb04d339d522b052dbaba9872fa64007ed791ef88267a78249aeb.jpg",
        "featured": true
      },
      {
        "title": "Astro 3.0",
        "url": "https://astro.build/blog/astro-3",
        "description": "Last week everyone got excited by the 3.0 release of Astro, a modern static website generator for Node.js (which in fairness can do a lot more than just static websites). This new release promises 30% faster compile times, new features and enhancements around View Transitions, Image Optimization, Fast Refresh JSX, and more.",
        "imageUrl": "./8cf901b08568de0886600be9c10951e4a10c86f8e6e0bb86850af64dd1cdfcd2.jpg",
        "featured": false
      },
      {
        "title": "Dark Mode: How Users Think About It",
        "url": "https://nngroup.com/articles/dark-mode-users-issues",
        "description": "Dark mode is popular, but not essential. Users like dark mode but maintain similar behaviors without it. They think about it at the system level, not the application level. If you choose to support dark mode, test your design to avoid common dark-mode issues.",
        "imageUrl": "./f384b22b39deba012c912374b7b766313afae5251d7457c0d9ce840a34d53b79.jpg",
        "featured": false
      },
      {
        "title": "Bézier Curves",
        "url": "https://www.blog.richardekwonye.com/bezier-curves",
        "description": "The logic behind Bézier Curves used in CSS animations and visual elements. A beautifully illustrated (and interactive!) article where you can learn everything there's to know about a concept highly used in vector graphics and animation. It can be the secret sauce to spice up your next web design!",
        "imageUrl": "./43bc23763c39d1a1b06c237ffeac8f3cb47a6c64cfd70d054543cf7331127a81.jpg",
        "featured": false
      },
      {
        "title": "WhatsApp Supported 50Bln Messages/Day With 32 Engineers",
        "url": "https://newsletter.systemdesign.one/p/whatsapp-engineering",
        "description": "This issue of the excellent System Design Newsletter tells us the story (for 8 different reasons) of how WhatsApp was able to scale massively while keeping its team relatively small. A series of interesting project and technology decisions led to this marvelous outcome. If you are interested in architecture and team topologies, you'll surely enjoy this one!",
        "imageUrl": "./b8d479aa24903e2efd1ef19dd89306ee75ea5ba0c13cf2cec4f0f0ab33027222.jpg",
        "featured": false
      },
      {
        "title": "CSS animations using the linear() function",
        "url": "https://developer.mozilla.org/en-US/blog/custom-easing-in-css-with-linear",
        "description": "If you enjoyed the article about Bézier curves, this one is a great follow-up. The new CSS linear() timing function enables custom easing in animations. Explore how linear() works compared with other timing functions used for easing, with practical examples.",
        "imageUrl": "./29b2db874091d6c0b4101c9c60c1bb5fafc3d9f4e5f5d7da0b203e567042759e.jpg",
        "featured": false
      },
      {
        "title": "Falling For Oklch",
        "url": "https://smashingmagazine.com/2023/08/oklch-color-spaces-gamuts-css",
        "description": "The CSS Color Module Level 4 specification defined a slew of new color features when it became a candidate recommendation in 2022, including Oklab and Oklch, which have widened the field of color we have to work with. This article will let you explore the Oklch color space and show you why it's interesting and how you can start using it in CSS today.",
        "imageUrl": "./ed0244094f404094a33ae7444c50fcf13394d3082ab4a83161cf3e955741260c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 335,
    "title": "CSS Selectors: A Visual Guide & Reference",
    "slug": "2023-08-28-321-css-selectors-a-visual-guide-reference",
    "date": "2023-08-28",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "CSS Selectors: A Visual Guide & Reference",
        "url": "https://fffuel.co/css-selectors/",
        "description": "I feel like CSS selectors are one of those fundamental pieces of knowledge that every web developer needs to master to some reasonable degree... This guide does a great job of introducing various selectors while showing a great visual representation of their effects. It even includes pseudo-classes (`:nth-child`, `:hover`,...), functional pseudo-classes (`:not`, `:is`,...), and pseudo-elements.",
        "imageUrl": "./bbf9ffc1cf8f95d1ddef31dca8654998c0be76899ea43c3e208a4fdcb414a487.png",
        "featured": true
      },
      {
        "title": "Best Rust Web Frameworks to Use in 2023",
        "url": "https://shuttle.rs/blog/2023/08/23/rust-web-framework-comparison",
        "description": "If you know me, you know I have been falling in love with Rust in the last few years and that I have been experimenting a bit with it. When it comes to web servers, I have been playing with [Axum](https://github.com/tokio-rs/axum) and so far I really like it. This article does an excellent job of introducing the current Rust landscape of web server frameworks and explaining what are the various pros and cons of each of them. If you want to build your first Rust-powered backend, this is a great place to start!",
        "imageUrl": "./6dab5ee5a6f237570fb29b0534494bb903acb1f9213a8769e277f444896f15b6.jpg",
        "featured": false
      },
      {
        "title": "That’s not how I wrote CSS 3 years ago",
        "url": "https://www.youtube.com/watch?v=L668dK6wFcM%3Futm_source%3Dfullstackbulletin.com",
        "description": "I don't remember who recommended this talk to me, but it was certainly worth my time!  [Manuel Matuzović](https://www.matuzo.at/) deep dives into how CSS has changed in the last years and consequently how it is changing the way he writes CSS every day. So many interesting examples and techniques and the delivery is absolutely perfect (and quite fun too). Totally recommended if you have 45 minutes to spare (or a bit less if you play it at 1.5x speed 😛).",
        "imageUrl": "./c6c95a2109268989a6ccac60fd9c94f6ccdb697c7c73efa4b415762a06ee15f3.png",
        "featured": false
      },
      {
        "title": "A Future of Themes with CSS Container Style Queries",
        "url": "https://chriskirknielsen.com/blog/future-themes-with-container-style-queries",
        "description": "Another interesting CSS-related piece of content. Creating themes is becoming more and more common on the web. I am not talking only about dark VS bright themes, people do really go wild creating all sorts of fancy themes. This article proposes a few interesting CSS techniques that might help you to speed up the efforts of creating alternative themes for your wed designs.",
        "imageUrl": "./582f534a7d7708a083ab3c650a2d9b2a1419fd9823d8fe6bb892d0ce88bbb68c.gif",
        "featured": false
      },
      {
        "title": "Scroll shadows with animation-timeline",
        "url": "https://daverupert.com/2023/08/animation-timeline-scroll-shadows",
        "description": "More CSS knowledge for you today (you can tell that last week I was hyped into CSS somehow!). In this article, [Dave Rupert](https://daverupert.com/) shows us a very interesting technique for highlighting table horizontal overflow with a clever use of shadows. The way this technique is achieved without involving any JavaScript is mind-blowing, but I won't spoil it here... you have to find out by yourself 😜.",
        "imageUrl": "./82751e5d280583617a03b8cbf18e7d5730980fbb1e40072007c4c6d39b32b00d.png",
        "featured": false
      },
      {
        "title": "A quick introduction to CSS @scope",
        "url": "https://bram.us/2023/08/22/a-quick-introduction-to-css-scope",
        "description": "OK, I am sorry... just one more CSS resource... I swear, don't ask me to rename this newsletter to CSS Bulletin! 🙈 So, do you know anything about CSS `@scope`? It’s an upcoming way to scope the reach of your CSS selectors, allowing you to move away from methodologies such as BEM because you no longer need to name those in-between elements. If you need some examples, check out this article!",
        "imageUrl": "./6b522879937cf802d201f5fda76f883b903dccb40b027bf742c0db70df1992fd.jpg",
        "featured": false
      },
      {
        "title": "Introduction to the Tower library",
        "url": "https://blog.frankel.ch/introduction-tower",
        "description": "If you are learning Rust, you probably bumped into the `tokio` project a few times already. One of the things that I like about it is that it's not just a library, but an entire ecosystem of libraries to help you build performance-oriented async services in Rust. But how do we even define the abstract concept of a service? Well, there's actually a `Service` trait as part of the `tokio` Tower crate. The idea is awesome and you can build tons of stuff on top of it! Maybe that's where the name comes from...",
        "imageUrl": "./700ecec5ee0a844d880de0ecc578258a86cace5a7216b04ef0696d252c8c1595.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 334,
    "title": "Full stack open",
    "slug": "2023-08-21-320-full-stack-open",
    "date": "2023-08-21",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Full stack open",
        "url": "https://fullstackopen.com/en",
        "description": "Have you ever wished there was a FREE course to learn FullStack web development from scratch? Well, wish no more, \"Full Stack Open\" is exactly this. An entire course where you can learn about **React**, **Redux**, **MongoDB**, **Node.js**, **GraphQL**, **TypeScript**, and much more! All for free and under CC license!",
        "imageUrl": "./4fb5f52e74aba952dd71af48c5bb2df049182196aa76736b3d736379e5c2c5e8.png",
        "featured": true
      },
      {
        "title": "Scaling the Instagram Explore recommendations system",
        "url": "https://engineering.fb.com/2023/08/09/ml-applications/scaling-instagram-explore-recommendations-system",
        "description": "Are you curious to learn about more advanced examples of scaling recommendation systems? This is a bit of an advanced topic, but if you like this kind of thing, you can learn how Meta is scaling the Instagram recommendation system to millions of users in this article. They go in much detail about how their ranking algorithm works and some other interesting optimizations.",
        "imageUrl": "./2992edae1e031df87e8413a0dfc076cd23fcb0c4c06edffdc2a7d99740ff7819.jpg",
        "featured": false
      },
      {
        "title": "WPDS Documentation & Resources",
        "url": "https://build.washingtonpost.com/",
        "description": "The Washington Post has released their own Design System (WPDS) and it honestly looks quite good, especially if you are building text-heavy sites like a blog. WPDS is a growing library of design tokens and interactive components purpose-built for online journals. Btw, [you can even use it with Tailwind](https://build.washingtonpost.com/resources/tools/tailwind-theme)!",
        "imageUrl": "./9c7de3f3143436ee001d2203716bc2be97df9768246f73db2f230bab5f853ade.jpg",
        "featured": false
      },
      {
        "title": "Iconbuddy — 180K+ open source icons",
        "url": "https://iconbuddy.app/",
        "description": "We have been often featuring icon collection websites, but I feel like Iconbuddy is going to beat them all and become my definitive source for icons! Iconbuddy is a powerful icon search engine and manager that allows you to search, download, customize, and edit over 180k+ open-source icons. It offers a wide selection of SVG and PNG icons, including royalty-free vector graphics and clipart illustrations.",
        "imageUrl": "./de7f5bf13cb47081bb56d9c0be4581624dfe43040223025a5b494d39c3f82bd2.jpg",
        "featured": false
      },
      {
        "title": "When Did Postgres Become Cool?",
        "url": "https://crunchydata.com/blog/when-did-postgres-become-cool",
        "description": "In this article, [Craig Kerstiens](https://www.craigkerstiens.com/) takes a look at the history of Postgres. From the origins of the project through some of the key production features that make Postgres what it is today: one of the best open source relational databases in the industry!",
        "imageUrl": "./67da812c01e167db2b4e3880204c065bf5e057b95968f3b11bb2efbc593019ee.jpg",
        "featured": false
      },
      {
        "title": "UX tips: 3 questions to evaluate design patterns",
        "url": "https://adamsilver.io/blog/3-questions-to-evaluate-design-patterns-and-avoid-unnecessary-work-that-degrades-ux",
        "description": "In this article we explore design patterns, but not the ones you are thinking about! Here we talk about actual \"design\" (as in web-design) patterns. [Adam Silver](https://adamsilver.io/), recommends us 3 questions we should ask when designing components, so that we can make sure to focus on providing a great User Experience.",
        "imageUrl": "./e6d757b779143a636c9e4d95078d23081445f854e6270541e2c02efdae17925d.jpg",
        "featured": false
      },
      {
        "title": "Cleaning up import paths in JS/TS packages",
        "url": "https://socket.dev/blog/we-don-t-need-more-path-aliases",
        "description": "package.json contains a local aliasing mechanism for import paths called \"imports\".It satisfies many use cases without tooling specific solutions like tsconfig.json. This can help you when dealing with complex import paths. So if that's your case, make sure to give this article a chance!",
        "imageUrl": "./e727ef00f2e426e9798e79ec77cb105fd9e1b403531cd458bebf5670a7a9787e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 333,
    "title": "Why is DNS still hard to learn?",
    "slug": "2023-08-14-319-why-is-dns-still-hard-to-learn",
    "date": "2023-08-14",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Why is DNS still hard to learn?",
        "url": "https://jvns.ca/blog/2023/07/28/why-is-dns-still-hard-to-learn",
        "description": "Our beloved [Julia Evans](https://jvns.ca/) just released a fantastic new article. This time she talks about DNS and why it is still hard to learn, even after 35 years! It's a fascinating article that can help you to understand some of the most fundamental mechanics of the web. The best part is that Julia also announces [Mess with DSN](https://messwithdns.net/), a DNS playground where you can create real records and experiment with them! If you are brave enough, you can even use it to receive emails! 😱",
        "imageUrl": "./eb8d620da07dcda1de6088fd35d35a5eaf8885c2281bb6368fbaa65e08f32a4f.png",
        "featured": true
      },
      {
        "title": "Type vs Interface: Which Should You Use In 2023?",
        "url": "https://totaltypescript.com/type-vs-interface-which-should-you-use",
        "description": "Mr. [Matt Pocock](https://www.mattpocock.com/) of TypeScript fame, goes into the topic of TypeScript interfaces vs types. Which ones should you use? Why do two very similar alternatives exist? And what are the differences? If this topic has been confusing you as much as it has been confusing me, this article is going to be pure gold!",
        "imageUrl": "./8643510acd03c20a1b9ec90f3469e69ead90961688360003b26e4fabc55d9685.jpg",
        "featured": false
      },
      {
        "title": "I’m betting on HTML",
        "url": "https://catskull.net/html.html",
        "description": "Here's an interesting article about some modern HTML tags that you might not have encountered just yet! The one that I did not know is the `<datalist>` one! 🤯 The web is becoming more powerful and interactive and it requires less and less JavaScript every day!",
        "imageUrl": "./0ac3c2ec50efab48106bc3abc5d0ff3de0f7b02ce2f039ae62eb06e97037ad1a.png",
        "featured": false
      },
      {
        "title": "Publish a hybrid npm module for ESM and CommonJS",
        "url": "https://deno.com/blog/publish-esm-cjs-module-dnt",
        "description": "The creators of Deno have come up with an interesting open-source tool called **dnt** that allows you to write your JavaScript modules and then transform them to support CommonJS, ESM, browsers, Deno, Node.js, TypeScript, and more. I haven't tried it yet, but I wish something like this existed for a while! Did you know about this? Have you used it already?",
        "imageUrl": "./dd394da0f107237f87b42e6bc8d1dc2e4caa9721b7a989d6bb7876f48eb73c4f.png",
        "featured": false
      },
      {
        "title": "Evading JavaScript Anti-Debugging Techniques",
        "url": "https://nullpt.rs/evading-anti-debugging-techniques",
        "description": "All client-side JavaScript code is \"open\" code by default. Even if you mangle and minimise it, experienced developers can always pull up their debugger and reverse engineer what the code is doing! So, is there anything we can do to make that harder? Maybe we are running something that needs to be harder to debug? This article showcases a very clever solution to this problem!",
        "imageUrl": "./b036764a465a2e0d2053cbd502a030b46b3a339243faa4ccd7cb323181f2e5b4.png",
        "featured": false
      },
      {
        "title": "Building a Design System with React Web Components",
        "url": "https://voorhoede.nl/en/blog/building-design-system-react-web-components",
        "description": "Learn how to create a universal Design system with React and Web Components to use in any web application or framework.",
        "imageUrl": "./5ae62d4e15f357afd3d7abe4d0364b74a44d7f74378dc1b0fcb306789c601517.jpg",
        "featured": false
      },
      {
        "title": "A Blog Post With Every HTML Element",
        "url": "https://patrickweaver.net/blog/a-blog-post-with-every-html-element",
        "description": "Can a single blog post contain (almost) all HTML tags? Patrick Weaver is here to make the point! Not really, this blog post is not some weird graphic experiment, it's actually a nice guide on the most common HTML tags that you should know!",
        "imageUrl": "./1a120fa6808e6da18e5c30ee49763cb4056459442a1f41aa2e8bf6a41d3ee920.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 332,
    "title": "Migrating a TypeScript app from Node.js to Bun",
    "slug": "2023-08-07-318-migrating-a-typescript-app-from-node-js-to-bun",
    "date": "2023-08-07",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "Migrating a TypeScript app from Node.js to Bun",
        "url": "http://blog.logrocket.com/migrating-typescript-app-node-js-bun",
        "description": "Last week, I had to execute a simple TypeScript script and after going mad for 1hr with ts-node and failing at it, I decided to try Bun and it immediately worked! Now, I am not planning to migrate everything to Bun because I still love (and believe in) Node.js, but I am starting to see the appeal in it. If you are curious to see what it would take to migrate a Node.js app to Bun, check out this article.",
        "imageUrl": "./5f887960d5038ec0eca0cd33709ff42ea10f721e9ac250dd1b34eb85308f379b.jpg",
        "featured": true
      },
      {
        "title": "Using HTML elements as CSS masks",
        "url": "https://expensive.toys/blog/black-pixel-masking",
        "description": "This article showcases how to create a knockout/cutout using the new CSS SVG filter masking technique. The idea is that you can easily crop out specific parts of an image revealing what's beneath and creating stunning see-through effects. Maybe something you can use to spice up your next web project.",
        "imageUrl": "./f626e92bc4ec0b75ce743f7b784eac8081fa2f6db8584c2970d2cf1c461b06a8.jpg",
        "featured": false
      },
      {
        "title": "Recreating YouTube’s Ambient Mode Glow Effect",
        "url": "https://smashingmagazine.com/2023/07/recreating-youtube-ambient-mode-glow-effect",
        "description": "In this article, Adrian deconstructs YouTube’s “*Ambient Mode*” feature and how HTML element `<canvas>` and the `requestAnimationFrame` function are used to create the glowing effect. Another interesting effect that you can add to your toolchain and use when trying to create a more engaging design.",
        "imageUrl": "./87d751ebb94486daac7bf904c3925563dfc37e553773cb4b79d5bbfd25b68373.png",
        "featured": false
      },
      {
        "title": "Adapting typography to user preferences with CSS",
        "url": "https://web.dev/adapting-typography-to-user-preferences-with-css",
        "description": "Did you know that some browsers allow users to specify preferences for the kind of font they prefer to see in an article? No? Well, now you know! 😜\n\nSo, how can we take advantage of this preference and make our designs more dynamic to actually respect the user preference? Let's learn how to do that with this awesome article by [Adam Argyle](https://web.dev/authors/adamargyle/).",
        "imageUrl": "./1201e4b4e0f867187d7a1b91726d8039505c490f5361bef3097326d4accfbfb4.jpg",
        "featured": false
      },
      {
        "title": "Is this an emoji? 🫴🦋",
        "url": "https://spiffy.tech/is-this-an-emoji",
        "description": "ReadStuffLater is an app that uses emojis to tag content. A bit of a weird idea if you ask me, but I do love emojis so I can see the appeal in that. Plus, it's simple and it can be fun for users. But now the problem is, how do you validate that a character is actually an emoji? Let's learn what are the options from the folks at ReadStuffLater.",
        "imageUrl": "./3a00df62f58545ec0183ef407cb91f24e8e59b455041697a6207456848d21ac9.jpg",
        "featured": false
      },
      {
        "title": "Dark Mode in 3 Lines of CSS and Other Adventures",
        "url": "https://dev.to/madsstoumann/dark-mode-in-3-lines-of-css-and-other-adventures-1ljj",
        "description": "Designing a website in both Light and Dark modes can be tedious and time-consuming. After all, you are designing 2 entirely different themes, effectively doubling the amount of work required. But what if I tell you that for simple cases you can take shortcuts? Just a few lines of CSS might get you very far and almost automatically give you a good dark theme, starting from the colors in your light theme! Check this out!",
        "imageUrl": "./19bb434f2a6c676b92e43cd763fefa3371feb1350e57a34aa4dce8abf4ac31e6.jpg",
        "featured": false
      },
      {
        "title": "Parvus: An accessible, open-source image lightbox with no dependencies.",
        "url": "https://github.com/deoostfrees/Parvus",
        "description": "I have been using lightboxes for at least 10 years. They always come up in web projects, especially when it comes to showcasing an image or an entire gallery of images or videos. So what's a good and accessible (and open-source too!) image lightbox with no dependencies? I found Parvus to be quite promising! Check it out on GitHub!",
        "imageUrl": "./93c97830f0a1e031df6296199775dc73d19d479ee1d26b78a52bfeccfc4fa5db.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 331,
    "title": "Putting the \"You\" in CPU",
    "slug": "2023-07-31-317-putting-the-you-in-cpu",
    "date": "2023-07-31",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "Putting the \"You\" in CPU",
        "url": "https://cpu.land/",
        "description": "What happens when you run a program on your computer? Learn how multiprocessing works, what system calls really are, how computers manage memory with hardware interrupts, and how Linux loads executables. This is my new favorite website. The explanations are really down to earth and it's full of useful illustrations. It is totally recommended!",
        "imageUrl": "./936f9c369d6296298732cee7492054fb8254aa8e86fc3114f5bed2c25768bf27.jpg",
        "featured": true
      },
      {
        "title": "Re-creating a Japanese Fireworks Catalog from 1883 in CSS",
        "url": "https://dev.to/madsstoumann/re-creating-a-japanese-fireworks-catalog-from-1883-in-css-83j",
        "description": "Japanese art is always fascinating. This article goes into an interesting creative rabbit hole: is it possible to recreate Japanese Fireworks illustrations with plain CSS? If you enjoy CSS-only art, you'll find this article interesting!",
        "imageUrl": "./c17a8bbcb19bfc25434f2facffce5b571a1ab2562938442dba4c7085c90722b4.jpg",
        "featured": false
      },
      {
        "title": "Core Web Vitals for Search Engine Optimisation",
        "url": "https://csswizardry.com/2023/07/core-web-vitals-for-search-engine-optimisation",
        "description": "There’s still a lot of misunderstanding about CWV for SEO. This article tries to demystify what Core Web Vitals really mean for SEO and it's really useful if you are working on the performance of a marketing website!",
        "imageUrl": "./480a9e4659162e9561d3c48e3b52c7e4ddf8c072d7fe47811e0525792b39859f.jpg",
        "featured": false
      },
      {
        "title": "Hono - Ultrafast web framework for the Edges",
        "url": "https://hono.dev/",
        "description": "Hono is (yet another) JavaScript web framework that just entered the game! It's a bit different than the other though. It focuses on being a small, simple, and ultrafast web framework for the Edges. It works on Cloudflare Workers, Fastly Compute@Edge, Deno, Bun, Vercel, Lagon, AWS Lambda, Node.js, and others.",
        "imageUrl": "./4405b55ad2f37ca14c2086bdfb4bf08c18ac4bcce75e34a49789d16ea59cb293.jpg",
        "featured": false
      },
      {
        "title": "Introducing Valibot, a < 1kb Zod Alternative",
        "url": "https://builder.io/blog/introducing-valibot",
        "description": "Valibot is a schema library for validating structural data, comparable to Zod, Ajv, Joi, and Yup. The big innovation of Valibot is the modular design of the API and optimization of the source code for compression. So you can get the benefits of Zod at a fraction of the weight!",
        "imageUrl": "./2c726e7cf2ac7841be6817aebb22fbf6b56de6464d46b1f92c3d33bd0d78a506.jpg",
        "featured": false
      },
      {
        "title": "Easy SVG sparklines",
        "url": "https://alexplescan.com/posts/2023/07/08/easy-svg-sparklines",
        "description": "Using SVG to easily create sparkline charts, and rendering them on the server side with Elixir and Phoenix. A great peak into what it takes to create SVGs by hand and also a cool case study to see how to generate SVG programmatically from the server!",
        "imageUrl": "./6f00e0745ef5f5785e5f2d9ee59b4aec07b52da090ae244aa78edd020546f51b.jpg",
        "featured": false
      },
      {
        "title": "Monolith does not always equal “bad”",
        "url": "https://www.thestack.technology/monoliths-vs-microservices-both",
        "description": "I like microservices, but microservices are not the solution to all evil... and in fairness they bring a hell of a lot of complexity to the game... So this talk actually shines a light on monoliths and makes clear that they are not intrinsically bad... A great watch if you enjoy thinking about systems design and architecture.",
        "imageUrl": "./2d6fea6c2ec9514c3d68684c9037ac6c8763e515112db1143e15d12b80bab968.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 330,
    "title": "Driver.js",
    "slug": "2023-07-24-316-driver-js",
    "date": "2023-07-24",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Driver.js",
        "url": "https://driverjs.com/",
        "description": "Driver.js is a cool and lightweight, no-dependency, vanilla JavaScript library to drive users' focus across the page. A perfect library if you are trying to create a guided tutorial for your web UIs.",
        "imageUrl": "./52704034e78a2e3ee3e4974703576f05a2c57fc96aebf2c24ec712d99c391d3a.jpg",
        "featured": true
      },
      {
        "title": "Pines - Alpine and Tailwind UI Library",
        "url": "https://devdojo.com/pines",
        "description": "**Pines** is a library of animations, sliders, tooltips, accordions, modals, and more! It's a set of UI elements that can be copied and pasted into any [Alpine](https://alpinejs.dev/) and [Tailwind](https://tailwindcss.com/) projects. If you enjoy small and simple UI libraries such as Alpine.js, this is a great resource to have components ready to use!",
        "imageUrl": "./3404853cabe8b0d07621568fac688e60e2d64b76005144bec85cbef5656bbf5e.jpg",
        "featured": false
      },
      {
        "title": "Testing the dark scenarios of your Node.js application",
        "url": "https://practica.dev/blog/testing-the-dark-scenarios-of-your-nodejs-application",
        "description": "This article is about tests that are easy to write, 5-8 lines typically, they cover dark and dangerous corners of our applications, but are often overlooked. As developers, we often tend to cover happy path testing only and this article is here to push us to do better!",
        "imageUrl": "./66733e761124bb982edb278e5593e23a2639579a39d9f882cea87ecebcb24ebb.png",
        "featured": false
      },
      {
        "title": "How React 18 Improves Application Performance",
        "url": "https://vercel.com/blog/how-react-18-improves-application-performance",
        "description": "This article by Vercel showcases how React 18's concurrent features like Transitions, Suspense, and React Server Components improve application performance. If you are into React and looking to boost performance of your frontends, don't miss out this one!",
        "imageUrl": "./e31a743fb72544d2762ed3dcc4f6f7c3bcfde8526d5afc38a13e5a11d8c569e1.jpg",
        "featured": false
      },
      {
        "title": "React multistep wizard component",
        "url": "https://github.com/srdjan/react-multistep",
        "description": "**srdjan/react-multistep** is a cool React multistep wizard component. This kind of component can be very useful when building on-boarding screens, multi-step forms, guided tutorials and more.",
        "imageUrl": "./5abc0465f005a776a9cd691bbb40933f21a520b87b3670a7b50cb84b971dfc0b.jpg",
        "featured": false
      },
      {
        "title": "Fancy CSS 3D Effects For Images",
        "url": "https://smashingmagazine.com/2023/07/shines-perspective-rotations-css-3d-effects-images",
        "description": "CSS has all kinds of tricks that are capable of turning images into neat, interactive elements. This article is a collection of fancy 3D effects for images that demonstrate those CSS powers. A nice way to spice up your next web project!",
        "imageUrl": "./38c1b93aaaca56b1bc04fdf3ffb199ba2b1df1fe76cb03f26cae1ec5b27b9a84.png",
        "featured": false
      },
      {
        "title": "CSS only floating labels",
        "url": "https://muffinman.io/blog/css-only-floating-input-labels",
        "description": "We can detect if text input has value by using `:placeholder-shown` pseudo-class. This little trick can then be used to create CSS-only floating labels. This is a common trick used in Material design and it's great to finally have a way to achieve this effect without employing JavaScript!",
        "imageUrl": "./d538dad296eba7ce3455e14e799e88a07941a5345330948d49fa67088abcbe08.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 329,
    "title": "act: Run your GitHub Actions locally 🚀",
    "slug": "2023-07-17-315-act-run-your-github-actions-locally",
    "date": "2023-07-17",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "act: Run your GitHub Actions locally 🚀",
        "url": "https://github.com/nektos/act",
        "description": "Change. Commit \"fix CI\". Push. Fail. Change.  Commit \"fix CI\". Push. Fail. Change. Commit \"fix CI\". Push. Fail. Commit \"fix CI\". Push. GREEN! ... How many times have you done this?! I surely have done it quite a lot 🥲\n\n**Act** promises to make our life better by allowing us to run GitHub actions locally, even before you commit and push (and fail!)... I am quite excited about this project and I'll certainly be using it!",
        "imageUrl": "./90a7612ffb2db38263fe2aba3eff2aae923fb5e7828cd381b540948115268803.jpg",
        "featured": true
      },
      {
        "title": "Visual Studio Code Remote Development",
        "url": "https://code.visualstudio.com/docs/devcontainers/containers",
        "description": "One of the new standards to watch for is [devContainers (or development containers)](https://containers.dev/). It's a new standard that aims to leverage containers to create a reproducible development environment for teams. This article, explains how to use this idea inside Visual Studio Code. You can also do it to access remote environments!",
        "imageUrl": "./b06d91dc564fed8386d29e29fe89f38d1270ed506249dbc2adbd1c744d7d0b83.jpg",
        "featured": false
      },
      {
        "title": "comiCSS",
        "url": "https://comicss.art/",
        "description": "There's always space for some nerdy tech humor! Last week I discovered this new website called comiCSS which gives you a massive collection of funny webcomics about CSS. The best part? It's coded in CSS, what did you expect?!",
        "imageUrl": "./0c6114cfdbe06666c37b720b9e1097eb8082c330c640e1199a4f7e67aca2576b.jpg",
        "featured": false
      },
      {
        "title": "Beyond Browsers: The Longterm Future of JavaScript Standards",
        "url": "https://thenewstack.io/beyond-browsers-the-longterm-future-of-javascript-standards",
        "description": "JavaScript/ECMAScript is an ever-evolving language. But how is the scope of ECMAScript is changing as JavaScript matures; and where the opportunities for adding new features are coming from? This article provides some interesting opinions to understand where the future of the language of the web might go!",
        "imageUrl": "./3773ba6ab7cb03060839944df158c42ca656b3a6420b4ba9d961fdda801f608b.jpg",
        "featured": false
      },
      {
        "title": "Understanding AWS Lambda Proactive Initialization",
        "url": "https://aaronstuyvenberg.com/posts/understanding-proactive-initialization",
        "description": "If you use **Lambda**, you know that cold starts is one of the most annoying things about it. It's not always a big deal, but when it is it's a complex one to fix. Recently AWS has started to introduce **Proactive Initialization**, a feature that observes the frequency of invocation of your lambdas and tries to pre-warm them before they get invoked. It's pretty neat and it might revolutionise serverless computing for good. Read this one if you are curious to find out more!",
        "imageUrl": "./d966bed9739fa358d5fbf7f8f0795f54ab3683a77cef3a442aa0f2fd1a427595.jpg",
        "featured": false
      },
      {
        "title": "Node v20.4.0",
        "url": "https://nodejs.org/en/blog/release/v20.4.0",
        "description": "A new release of Node.js is out. This release isn't packed with a massive list of new features, but the one new thing that is there is pretty big IMHO: you can now write more reliable and predictable tests for time-dependent functionality. In fact, this new release includes **MockTimers** with the ability to mock **setTimeout**, **setInterval** from globals, **node:timers**, and **node:timers/promises**. Also worth calling out is that Node is adding support to the explicit resource management proposal to its resources allowing users of TypeScript/babel to use **using/await**.",
        "imageUrl": "./e774c086de6aa0062ab792fc2d2cd26afa55a12764ece3e809a23ba2ec1ce6fe.jpg",
        "featured": false
      },
      {
        "title": "Remult",
        "url": "https://remult.dev/",
        "description": "If you are looking for a new backend web framework, Remult is a promising one. It is a CRUD framework for fullstack TypeScript which allows you to build end-to-end Type-safe CRUD Apps without much of the typical boilerplate.",
        "imageUrl": "./754192105f5201e38a111ae6a0eb446d4e25fe8e90e99835bd61e8a28cc61fb0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 328,
    "title": "Happy 50th birthday, Ethernet",
    "slug": "2023-07-10-314-happy-50th-birthday-ethernet",
    "date": "2023-07-10",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Happy 50th birthday, Ethernet",
        "url": "https://blog.apnic.net/2023/06/29/happy-50th-birthday-ethernet",
        "description": "Ethernet, one of the foundational protocols of our networks has turned 50. This is not strictly a Fullstack web development news, but it's still worth wondering why has Ethernet endured as a ubiquitous data framing protocol over all these years. Let's find out!",
        "imageUrl": "./b970217039f52ea7b575415dd00c1f83e25df1db09df5d56066b0922221454ab.jpg",
        "featured": true
      },
      {
        "title": "Announcing Svelte 4",
        "url": "https://svelte.dev/blog/svelte-4",
        "description": "Svelte 4 is a new release that enhances performance and developer experience. It comes with a full re-design of the official website. Svelte 4 comes with a smaller and faster hydration code, reducing the package size by nearly 75%. The number of dependencies has been significantly reduced, resulting in faster downloads and increased security against supply chain attacks. This blog post highlights all the other relevant news and starts to lay down a path towards Svelte 5!",
        "imageUrl": "./a1fd01f06f7490fe440cb39f9b246d480e3b824fdddd30d1e97b31a0103b93ca.jpg",
        "featured": false
      },
      {
        "title": "Hurl - Run and Test HTTP Requests",
        "url": "https://hurl.dev/",
        "description": "Hurl is a CLI tool that allows you to run and test HTTP requests with plain text and curl. Hurl can also be used to run fast automated integration tests. I have been playing a little with this one last week and found it very friendly to use!",
        "imageUrl": "./01069de0110c7022080a4e9f0f14e405ae753b3d5dc515e128d851124ebfbb06.jpg",
        "featured": false
      },
      {
        "title": "A Deep Dive Into SVG Path Commands",
        "url": "https://nan.fyi/svg-paths",
        "description": "An interactive guide to understanding SVG paths and path commands. If you always wondered how the SVG format works, this is the interactive tutorial you were waiting for!",
        "imageUrl": "./596bda61de897097dd461f7f68111d941c4fb7c4f361810dbf559c41413ccd4b.png",
        "featured": false
      },
      {
        "title": "Breaking Up with SVG-in-JS in 2023",
        "url": "https://kurtextrem.de/posts/svg-in-js",
        "description": "If the previous article made you realise you can do a lot of interactive stuff by combining SVG and JavaScript, you will be excited to know that you can embed JavaScript into SVG! But should you do that, is the question... This article explores a different idea of how you can use React and JSX to make interactive SVGs.",
        "imageUrl": "./e968d7f7d55b08f8cc67eaf911aa149c08f8e3f7b7f9d6015af58373f4862dd8.jpg",
        "featured": false
      },
      {
        "title": "CommonJS is hurting JavaScript",
        "url": "https://deno.com/blog/commonjs-is-hurting-javascript",
        "description": "Deno is taking a strong stance against CommonJS. This article gives a recap of how CommonJS comes to be and how it was then surpassed by EcmaScript Modules (ESM). Finally, the Deno project takes their distance from CommonJS envisioning an ESM-only future.",
        "imageUrl": "./9c94ca5510b8acb20689e5404bbc8ae524a300a5d6d82125073f6eb858c1b162.jpg",
        "featured": false
      },
      {
        "title": "Introducing the MDN Playground: Bring your code to life!",
        "url": "https://developer.mozilla.org/en-US/blog/introducing-the-mdn-playground",
        "description": "MDN, the go-to place, to learn about Web Platform APIs has launched an interactive code Playground. This will help make their (already awesome) documentation more interactive and playful. If you want an example of what I am talking about, [check out how to build your own web-piano](https://developer.mozilla.org/en-US/play?id=4Tko2aSXCK7%2BC0R1KWfM%2Bskv03GrsLKW10wTAz7Ax9aK6D%2BVVPChZtArwahGu7lJ8U%2B3PUizZqM5Ng5w)!",
        "imageUrl": "./7e3e8e3bacc27df0ef180af6931c4d80e2b3ac888db919fdd5a15fd802d74d04.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 327,
    "title": "#327: Building CSS Layouts In A Design Tool",
    "slug": "2023-07-03-313-327-building-css-layouts-in-a-design-tool",
    "date": "2023-07-03",
    "templateType": "old-mailchimp",
    "intro": "🐘 [Fullstack bulletin is now on Mastodon](https://mastodon.social/@fstackbulletin)! We will be posting new interesting links there. There are some technical reasons why we are replacing Twitter with Mastodon, if you are curious to find out why, check out our next [live stream on Twitch](https://twitch.tv/loige). We also have the recordings from our previous sessions [on YouTube](https://www.youtube.com/playlist?list=PLbNOKnE-Oyr1tsUft4j0QZDyk5iFcVVy_).",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Building CSS Layouts In A Design Tool",
        "url": "https://smashingmagazine.com/2023/06/penpot-flex-layout-building-css-layouts-design-tool",
        "description": "[Penpot](https://penpot.app/) is an exciting alternative to Figma that you can run for free from the comfort of your laptop, simply by using Docker. This article showcases how you can use Penpot to design an attractive masonry-like layout in a very visual way and then generate CSS code to adopt that layout in your next application!",
        "imageUrl": "./e07fcfc46a6f533ef0ca428925cc73de25b7d6f218cded159a72b86f102ba886.jpg",
        "featured": true
      },
      {
        "title": "TypeScript 5.2's New Keyword: 'using'",
        "url": "https://totaltypescript.com/typescript-5-2-new-keyword-using",
        "description": "TypeScript 5.2 introduces **`using`**, a keyword that disposes of anything with a **`Symbol.dispose`** function upon leaving scope, making resource management easier. This is not a new magic TypeScript feature, it's actually a [TC39 proposal](https://github.com/tc39/proposal-explicit-resource-management) that reached stage-3, so it will be available soon in all major JS runtimes!",
        "imageUrl": "./c517eff8ad4f3893ad38ffb7f1c7ad86237c26933fc898a93b12e96c6d9b4552.jpg",
        "featured": false
      },
      {
        "title": "Introducing Skew Protection",
        "url": "https://vercel.com/blog/version-skew-protection",
        "description": "If you make a change in your frontend and in your backend, chances are that someone might still use an old version of the frontend to send requests to the new version of the backend (assume they loaded the UI just before you started your deployment). This is called **version skew** and it might lead to unexpected issues. Vercel now offers a way to protect your apps against this tedious source of bugs!",
        "imageUrl": "./e8d81c6d5e4d8210427a89d7e1db1fea0bb65e48c167215a87e63394b7c57699.jpg",
        "featured": false
      },
      {
        "title": "Creating a seamless multi-language user interface in React",
        "url": "https://honeybadger.io/blog/creating-multi-language-user-interface-with-react",
        "description": "Learn how to create apps that can display information in different languages based on user preferences. In this article, we'll walk through the process of building a weather application with multi-language support using **`react-i18next`**.",
        "imageUrl": "./e9229b3d8fdde645775ec665832d6ef04e15a9f940eaee6969394071243eed67.jpg",
        "featured": false
      },
      {
        "title": "An Introduction to Command Injection Vulnerabilities in Node.js and JavaScript",
        "url": "https://nodejs-security.com/blog/introduction-command-injection-vulnerabilities-nodejs-javascript",
        "description": "The always-excellent [**Liran Tal**](https://lirantal.com/), gives us an introduction to **Command injection vulnerabilities**. This type of attack poses a significant threat to Node.js and JavaScript applications' security. By understanding the risks involved, referencing real-world incidents, and following best practices, developers can effectively mitigate these vulnerabilities.",
        "imageUrl": "./34bf8bf2d95b3d94634742308917f089e4abe8ceeb44b82fd4507a5dcbf419c6.jpg",
        "featured": false
      },
      {
        "title": "Is there a viable animated GIF alternative yet or what?",
        "url": "https://cloudfour.com/thinks/animated-gif-alternative",
        "description": "Animated GIFs remain popular in spite of their beefy file sizes. But what are we supposed to use instead, since GIFs are so easy to use and they are pretty much universally supported?",
        "imageUrl": "./f42f98dff55357ea1b2867c833d3dae33accc6dd3e04cce5a47b6c285129658a.jpg",
        "featured": false
      },
      {
        "title": "Custom giraffe caret",
        "url": "https://muffinman.io/blog/custom-giraffe-caret",
        "description": "Did you ever think you could customise the caret in a form text field? You probably didn't, but [**Stanko Tadić**](https://www.linkedin.com/in/stankotadic/) did and the result is most excellent. Let me just tell you they used an animated giraffe as a caret indicator... and this should be more than enough to make you want to read this awesome article!",
        "imageUrl": "./9893d8623ef6b20613aa34eeef1089f17225598a047c6bf04bd56118f624bb6c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 326,
    "title": "A Complete Visual Guide to Understanding the Node.js Event Loop",
    "slug": "2023-06-26-312-a-complete-visual-guide-to-understanding-the-node-js-event-l",
    "date": "2023-06-26",
    "templateType": "old-mailchimp",
    "intro": "🏃‍♂️ 🏃‍♀️ 🏃 Join us as we keep improving the automation code behind Fullstack Bulletin [live on Twitch](https://twitch.tv/loige). We also have the recordings from our previous sessions [on YouTube](https://www.youtube.com/playlist?list=PLbNOKnE-Oyr1tsUft4j0QZDyk5iFcVVy_).",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "A Complete Visual Guide to Understanding the Node.js Event Loop",
        "url": "https://builder.io/blog/visual-guide-to-nodejs-event-loop",
        "description": "You've been working with Node.js for a while. You've built some apps, played around with different modules, and even gotten comfortable with asynchronous programming. But there's something that's been nagging at you — the event loop. It's not an easy one to grasp, so let's take this amazing article and let's dive in!",
        "imageUrl": "./bf7d1ef82db2162597ac40028fc1a17a43c46bd9ec746d425f8c619d8fd6d8db.jpg",
        "featured": true
      },
      {
        "title": "Designing a Scalable Backend in Node.js",
        "url": "https://blog.appsignal.com/2023/06/07/designing-a-scalable-backend-in-nodejs.html",
        "description": "Let's examine three scaling challenges for a Node.js app and see how you can avoid them. Specifically this article covers logins (and bursty workloads), failed transactions and slow transactions. A really interesting article if you have built a Node.js app and you are about to go to production. It might be a great opportunity to give it another review under a different lens!",
        "imageUrl": "./174db2b1aff4d81a7f27cd0534fd63f992d9598f2486b713bfb33516e99f26f0.jpg",
        "featured": false
      },
      {
        "title": "Panda CSS",
        "url": "https://panda-css.com/",
        "description": "We never get tired of exploring new ways to write CSS, let's be honest about that... What Panda proposes is a new way to write CSS-inJS using a build-time type-safe approach. This is a project from the same author of ChackraUI and just by looking at the website, you can tell they put a lot of effort into this project!",
        "imageUrl": "./9a058e55f524f8e7aceaea9e5db82fa5f5cc6c6fe1abb0e64c4644ea7b705fcb.png",
        "featured": false
      },
      {
        "title": "An introduction to debugging in Node.js",
        "url": "https://blog.openreplay.com/an-introduction-to-debugging-in-nodejs",
        "description": "Another article aiming at strengthening your Node.js skills. This time it is about debugging. How to debug your Node.js server code? This article presents a series of well-illustrated techniques to ramp up your debugging game!",
        "imageUrl": "./2a77e235702889edd2b8090433b44fc7d1c3ef8648dce948283e4b89e3b55d37.jpg",
        "featured": false
      },
      {
        "title": "Creating a tilt effect with React",
        "url": "https://www.julienthibeaut.xyz/blog/create-tilt-effect-with-react",
        "description": "This is a relatively new design trend on the web: images that when hovered tilt slightly in the 3D space depending on the position of the mouse. Have you ever wondered how to recreate this particular effect? In this article, you can learn how to do exactly that using **React**!",
        "imageUrl": "./9fa29e04a126194cdc16bd12cd65b3f9c687c74f22c6ecb89ee15c9a47c12429.png",
        "featured": false
      },
      {
        "title": "Computer Science self-study program",
        "url": "https://github.com/Lesabotsy/bootcamp",
        "description": "An awesome repository that aims to be the point of reference for finding material to self-study all the basics of Computer Science. Regardless if you are a Computer Science graduate or a self-taught programmer, in this repo you'll definitely find some noteworthy material.",
        "imageUrl": "./c6474be2396633c35920c5fe1b451ba56fece6caabeafc904d7285ae27417345.jpg",
        "featured": false
      },
      {
        "title": "The Difference Between Root Certificate Authorities, Intermediates, and Resellers",
        "url": "https://agwa.name/blog/post/roots_intermediates_and_resellers",
        "description": "Behind the scenes of secure websites and digital certificates lies a complex web of entities. When incidents involving SSL certificate providers occur, doubts about the entire certificate authority system arise. Let's unravel the differences between certificate authorities, root CAs, intermediates, and resellers, so you can navigate the digital landscape confidently.",
        "imageUrl": "./050b608a7e478e3be0d9357798d8de3b99713e26392555af8b4d70d11f625eb3.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2: From Theory To Practice",
      "author": "Asim Hussain",
      "description": "In this quickstart you'll get a 50,000 foot view of the major features of Angular 2 including: Typescript & ES6 Javascript, Components & Binding, Directives, Dependancy Injection & Services, Angular Modules & Bootstrapping your Angular application., SPAs & Routing, Angular CLI, Forms, Reactive Programming with RXJs, HTTP and finally Unit Testing.",
      "coverImageUrl": "./42ae68e2ba03e04a5972b7f48fcbb414c89e74b4747aae1715503d876e99f3df.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01N9S0CZN/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01N9S0CZN/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 324,
    "title": "The beginning of the end of the password",
    "slug": "2023-05-06-311-the-beginning-of-the-end-of-the-password",
    "date": "2023-05-06",
    "templateType": "old-mailchimp",
    "intro": "Fullstack Bulletin is going on holiday for 3 weeks! Next issue will be in June 😎",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "The beginning of the end of the password",
        "url": "https://blog.google/technology/safety-security/the-beginning-of-the-end-of-the-password",
        "description": "For some time the tech industry has been working on a simpler and safer alternative to passwords. While passwords will be with us for some time to come, they are often frustrating to remember and put you at risk if they end up in the wrong hands. With this announcement, Google is starting to roll out **PassKeys**, a new technology that provides passwordless logins.",
        "imageUrl": "./6d566c9fefd8d7f19e2699dc8c527f189a375f002c53d9faea9910a706351355.jpg",
        "featured": true
      },
      {
        "title": "Rebuilding a featured news section with modern CSS",
        "url": "http://ishadeed.com/article/rebuild-featured-news-modern-css",
        "description": "This is a fantastic case study that showcases how to use **CSS Grids** and other modern CSS features to build a new responsive version of Vox News. Check it out if you are working on a content-heavy website and you are looking for some inspiration and best practices.",
        "imageUrl": "./40c6c958101e4b79b9c7adb25890b40c8d21309c02bb0369d3684300e6296950.jpg",
        "featured": false
      },
      {
        "title": "Dissecting Npm Malware: Five Packages And Their Evil Install Scripts",
        "url": "https://blog.sandworm.dev/dissecting-npm-malware-five-packages-and-their-evil-install-scripts",
        "description": "Packages published on npm can declare pre and post-install hooks, which are scripts that run, well, pre or post-install. That is to say, when the npm CLI installs a package, it also runs those scripts on your machine. **What if these some of these scripts are \"evil\"?!**",
        "imageUrl": "./fa6c7aa14dc61df359a04806a79e8eabe7b3f0c6333ef2d20659b95140edd452.png",
        "featured": false
      },
      {
        "title": "Is Rust a worthy contender for web development?",
        "url": "https://joshmo.hashnode.dev/can-rust-beat-javascript-in-2023",
        "description": "A detailed look at Rust's position within the web development space and what it can offer. I am betting we will see a lot more Rust in the web space in the coming years, and this article shares the same vision. Check it out if you are curious to find out more!",
        "imageUrl": "./4b00e894c66916d3bdf457989cad1e5d8f3c10b812902296f5e28b156321e99c.png",
        "featured": false
      },
      {
        "title": "Exploring The Potential Of Web Workers For Multithreading On The Web",
        "url": "https://smashingmagazine.com/2023/04/potential-web-workers-multithreading-web",
        "description": "In this article, Sarah Oke Okolo explores the importance of Web Workers for multithreading on the web, including the limitations and considerations of using them and the strategies for mitigating potential issues associated with them.",
        "imageUrl": "./0577058463b31250f3d4920467c1fab783ebc8338115b5332720b8ceb360e704.png",
        "featured": false
      },
      {
        "title": "Master Namespaces In TypeScript",
        "url": "http://nicotsou.com/tltr-typescript-namespaces",
        "description": "Learn how to use namespaces and how they help on creating type definition files.",
        "imageUrl": "./23cc00434fa60c3472ae60d7f6effa7302187d27818d1499ba57355797be22a9.jpg",
        "featured": false
      },
      {
        "title": "Error handling patterns",
        "url": "https://andreabergia.com/blog/2023/05/error-handling-patterns",
        "description": "Error handling is a fundamental aspect of programming. Unless you are writing “hello world”, you will need to handle errors in your code. In this post, the author discusses the most common approaches used by various programming languages.",
        "imageUrl": "./29b5eaed4a62fe025863241d9a980de5fee4a596f8ba49b6b763b7777194cb51.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 323,
    "title": "CSS Text balancing with text-wrap:balance",
    "slug": "2023-05-01-310-css-text-balancing-with-text-wrap-balance",
    "date": "2023-05-01",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "CSS Text balancing with text-wrap:balance",
        "url": "http://ishadeed.com/article/css-text-wrap-balance",
        "description": "Multi-line titles are often a bit off on the web. This is because it is hard to balance them and make sure you have a similar amount of text on every line. Luckily, we now have experimental support for **`text-wrap: balance`** in Chrome Canary. The browser will automatically calculate the number of words and divide them equally between two lines.",
        "imageUrl": "./12a59873f23898bd0bf14fc981563c521cd99ba7b229662e38c099f60860c265.jpg",
        "featured": true
      },
      {
        "title": "How to Build a Full-Stack Real-Time Voting App With Hasura and React",
        "url": "https://freecodecamp.org/news/build-a-full-stack-real-time-voting-app-with-hasura-and-react",
        "description": "This article will teach you how to build a voting application that displays the poll results in real-time. Each time someone votes, the application updates automatically and shows the new results. A great tutorial if you want an excuse to improve your React skills!",
        "imageUrl": "./dfc41e631c059437adbe9edb18f4ff8eb6b2f5d5827f2368e9df5756a1ce83c5.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Equality Table Game",
        "url": "https://eqeq.js.org/",
        "description": "This interactive UI (that reminds me of Minesweeper for Windows!) allows you to find out how well you know (or don't know) the JavaScript == operator rules. I had a lot of fun trying this and learning that I don't know anything about JavaScript! 😕",
        "imageUrl": "./e0637eb7d914a660910813e8383fff10071a4b266a0a73edc0e1df1b3898ab99.jpg",
        "featured": false
      },
      {
        "title": "GitHub Copilot and ChatGPT: Game Changers for Developers?",
        "url": "https://awsbites.com/75-github-copilot-and-chatgpt-game-changers-for-developers/",
        "description": "Is AI going to take our jobs or just help us to become more effective? What kind of AI-powered tools can we use today as developers to increase our productivity? In this episode of AWS Bites podcast we explore these topics and provide our opinions to these trending questions!",
        "imageUrl": "./2c57f660d695c41a166a0676ff9ed675a1b3f7104a5fa312eab97e95006779de.jpg",
        "featured": false
      },
      {
        "title": "CSS Blend Modes",
        "url": "https://garden.bradwoods.io/notes/css/blend-modes",
        "description": "What are CSS blend modes? How to use background-blend-mode & mix-blend-mode? Find out in this article with some lovely graphics and interactive examples.",
        "imageUrl": "./8fd4d2ddc0eb7256146a3a657a7439786e8507eaee70a2880eaf815fe2cc1911.jpg",
        "featured": false
      },
      {
        "title": "4 Ways to Create an Enum in JavaScript",
        "url": "https://dmitripavlutin.com/javascript-enum",
        "description": "An enum is a set of named constants. JavaScript does not support enums out of the box, but you can recreate them in several ways: plain objects, frozen objects, proxied objects or class-based implementations. These are 4 different ways to create enums in JavaScript, let's see what are the pros and cons!",
        "imageUrl": "./93631284f01bb764eedc7156d87f9481ecb5d799c072adb67e3ef0fa6398838e.jpg",
        "featured": false
      },
      {
        "title": "Crafting the Next.js Website",
        "url": "https://rauno.me/craft/nextjs",
        "description": "A sneak peek into how the beatiful Next.js website was built! Yes, this is not a Next.js tutorial, this is how the Next.js website itself was built! It's an incredibly appealing website and the authors describe some of the techniques they used, so you can definitely learn a trick or two!",
        "imageUrl": "./a2f7f1af49fc5d26439e08928f7eb2ce592f10db5a93c6bdbf62700a9d333f29.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 322,
    "title": "Node.js 20 is now available!",
    "slug": "2023-04-24-309-node-js-20-is-now-available",
    "date": "2023-04-24",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Node.js 20 is now available!",
        "url": "https://nodejs.org/en/blog/announcements/v20-release-announce",
        "description": "Node.js version 20 is out and it comes with some new exciting features! The test built-in test runner is finally stable, the V8 engine is now updated to version 11.3, Ada (the new fast URL parser) gets updated to 2.0 and there's more!",
        "imageUrl": "./d0a6fc1e78a40c54d4058fdac88750f69497275f8c0f5c422ff6a633f847447b.png",
        "featured": true
      },
      {
        "title": "Announcing Vite 4.3",
        "url": "https://vitejs.dev/blog/announcing-vite4-3",
        "description": "Vite 4.3, a speedy module bundler (my favourite one these days!), is out now with improved dev server performance. The resolve logic has been streamlined resulting in faster cold and warm start times, and better caching. The early adopters have reported a 1.5x-2x improvement in dev startup time. Plus, Vite's team is working on an official benchmark tool and **vite-plugin-inspect** now has more performance-related features.",
        "imageUrl": "./167696f5f4244b9b537f41c3629200a802e31c100cdc0f26e9f61c24cd5774ce.png",
        "featured": false
      },
      {
        "title": "Deno vs. Node: No One is Ready for the Move",
        "url": "https://cult.honeypot.io/reads/deno-vs-node-main-differences",
        "description": "Deno, the successor to Node.js, promises a more secure and modern development environment. However, despite its buzz, Deno has yet to make a significant dent in Node.js' popularity. So why are developers hesitant to switch? While Deno claims to solve some of Node.js' (supposed) design flaws, it still has some catching up to do in terms of third-party package management, API compatibility, and developer familiarity. Will Deno eventually surpass Node.js, or will Node.js remain king of the JavaScript runtime environment? Only time will tell.",
        "imageUrl": "./17d8a9a76485121e118d83f151836885ec203e43ac2d2b4d799f3b6d07d86586.png",
        "featured": false
      },
      {
        "title": "Passkeys: What the Heck and Why?",
        "url": "https://css-tricks.com/passkeys-what-the-heck-and-why",
        "description": "Passkeys - the future of password management or just another tech trend? You may have heard of them before, but what are they exactly? And how do they differ from passwords? This article, deep dives into the world of passkeys and explore the technology behind them, including the WebAuthn API. The article also discusses Passkeys potential impact on user experience and where they may be headed in the future.",
        "imageUrl": "./1fc1559371db42d90c31adfdec34283285ca55bae768cdd24659abd0d2187547.png",
        "featured": false
      },
      {
        "title": "WebGPU Fundamentals",
        "url": "https://webgpufundamentals.org/",
        "description": "If you have been curious about graphics and WebGPU, this tutorial series is for you! It covers a range of topics, from basics to advanced concepts such as 3D math, scene graphs, and more. The series includes resources and references such as the WebGPU API reference, WebGPU spec, and WGSL spec.",
        "imageUrl": "./0c5b3cf6f6fb18140f38dfc160d828e179203f57679ef7e2c03cce1893fc3acf.png",
        "featured": false
      },
      {
        "title": "Build a secure web application with Platformatic, Auth0 and Next.js",
        "url": "https://blog.platformatic.dev/build-a-secure-web-application-with-platformatic-auth0-and-nextjs",
        "description": "Are you interested in creating secure web applications using Platformatic, Auth0, and Next.js? In this tutorial, [Simon](https://twitter.com/simonplend) will teach us how to set up authentication methods, create an application and API, and configure authorization with JWT. We will also learn to create a React front end with Next.js, integrate the Auth0 React SDK, and create custom REST API endpoints.",
        "imageUrl": "./cdb7e6306d0cda0042299f957235133079fdcd628b7061d09726976e43379330.png",
        "featured": false
      },
      {
        "title": "Introducing npm package provenance",
        "url": "https://github.blog/2023-04-19-introducing-npm-package-provenance",
        "description": "GitHub has launched a new feature for NPM projects that allows developers to publish provenance data alongside their package, giving consumers a verifiable way to link a package back to its source repository and the specific build instructions used to publish it. This helps increase trust in the npm supply chain and provides visibility into the process by which the source was translated into the published artifact. To learn more about this new feature, read the full article on GitHub's blog.",
        "imageUrl": "./9868693865e314fef1015a4f79e8205efc0e158f0a5fb0a7fbacee100b39ed69.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 321,
    "title": "CSS Masking",
    "slug": "2023-04-17-308-css-masking",
    "date": "2023-04-17",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "CSS Masking",
        "url": "http://ishadeed.com/article/css-masking",
        "description": "CSS masking is a powerful and underutilized design tool that can take your web design skills to the next level. This article shows you how to start masking in CSS and explore practical use cases with engaging examples. It covers everything from the basics of masking in CSS to using gradients for masking and creating interesting image effects like round-out tabs and multiple avatar cut-outs. It even shows you how to mask text content effectively! So let's get started and unleash your creativity with CSS masking!",
        "imageUrl": "./7a809335800e3a1b9b976bc2ce48b825342e685d7857921dc4ed8e9e95bb17c0.png",
        "featured": true
      },
      {
        "title": "Junior to senior: An action plan for engineering career success",
        "url": "https://github.com/readme/guides/engineering-career-success",
        "description": "I recently published an article about [the role of Senior Software Engineers](https://loige.co/the-senior-dev) which was quite well received. I was thrilled to discover a relevant article by GitHub giving another perspective on how to grow a career in tech going from Junior to Senior. Check it out, especially if you are currently struggling to understand what's the best next step for your career!",
        "imageUrl": "./3da2c2fe7bbcff3e64c39ac979fe7a9c14cf51d5833afc52c6da14115c7d6f5e.jpg",
        "featured": false
      },
      {
        "title": "Defaulting on Single Page Applications (SPA)",
        "url": "https://zachleat.com/web/single-page-applications",
        "description": "Zach Leatherman disserts the benefits of Multi-Page Applications (MPA), which is basically how the web has always worked (you click a link and the whole page is refreshed). Then he also discusses the difference between SPAs (Single-page Applications) and MPAs. Finally Zach offers some pointers on hybrid approaches and tools that can help you to get the best of both worlds.",
        "imageUrl": "./21ea80e86f05e9ae0c14c0f179d40786004632b5fc81df689fd6fb54ff41f53a.jpg",
        "featured": false
      },
      {
        "title": "How To Design An Effective User Onboarding Flow",
        "url": "https://smashingmagazine.com/2023/04/design-effective-user-onboarding-flow",
        "description": "If you want to maximize conversions or collect necessary user information for other purposes, a user onboarding flow is necessary. In this article, you will learn how, with the help of Feathery, to design an effective user onboarding flow for your app.",
        "imageUrl": "./3b9f29add6aa21d8418604e915d1667f7e84380c4bc25121da3d1ee66d623724.jpg",
        "featured": false
      },
      {
        "title": "Efficient JavaScript sets using BigInt",
        "url": "https://m.webtoo.ls/@lukastaegert/109882130362687971",
        "description": "In this Mastodon post, [Lukas Taegert-Atkinson](https://m.webtoo.ls/@lukastaegert), shows us how we can make extremely fast set operations in JavaScript by using a BigInt. This technique was used in the [Rollup](https://github.com/rollup/rollup/pull/4862) projects and helped improve performance significantly.",
        "imageUrl": "./128d1b4d089df40ace8414bfd95311feac6e413eac30295d6a6fb89e372e7c64.jpg",
        "featured": false
      },
      {
        "title": "Trying Node.js Test Runner",
        "url": "https://glebbahmutov.com/blog/trying-node-test-runner/index.html",
        "description": "In March of 2022 Node.js got a new built-in test runner via node:test module. Our friend Gleb Bahmutov has evaluated the test runner and made several presentations showing its features and comparing the new built-in test runner with other Node.js testing frameworks that have been around for a while.",
        "imageUrl": "./71365f08575e7f48b34f138c2a919ef01ae76c2e98ed7207dacdd9d4f48174d9.png",
        "featured": false
      },
      {
        "title": "MarcoIeni/rust-api-workshop: Write a Rust HTTP API with TDD",
        "url": "https://github.com/MarcoIeni/rust-api-workshop",
        "description": "[Marco Ieni](https://github.com/MarcoIeni/) created a fantastic (and FREE!) workshop for whoever wants to learn Rust specifically to write HTTP APIs following a TDD style. Definitely worth checking out if you have been interested in Rust and you want a guided approach to learning how to build your first API!",
        "imageUrl": "./d26d5ef3f53dd781f811eb4db69c2140eaf9f7b3252fb83a3c0b6341ac0b957d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 320,
    "title": "The Ultimate Guide to Image Optimisation",
    "slug": "2023-04-10-307-the-ultimate-guide-to-image-optimisation",
    "date": "2023-04-10",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "The Ultimate Guide to Image Optimisation",
        "url": "https://calibreapp.com/blog/image-optimisation-guide",
        "description": "Image optimisation is the web performance the lowest hanging fruit. If you don't optimise your images you are missing out big time on making your website experience fast and smooth. In this article, you can learn how to optimise images without sacrificing their final quality.",
        "imageUrl": "./dc00da64243a6fe50850beaf200a582df2fee7d9f93ab2fbd0ec7e27f43bef51.jpg",
        "featured": true
      },
      {
        "title": "A Business Case for SvelteKit",
        "url": "https://elliscs.hashnode.dev/a-business-case-for-sveltekit",
        "description": "If you have been wondering what using Svelte and SvelteKit would be like, you might enjoy this case study by XtendOps, a company that recently moved their stack from ServerFul Svelte to SvelteKit.",
        "imageUrl": "./85259d2b231c147432a09e85b688d8673f6118a8d1713971ab7289bdc1e453b6.jpg",
        "featured": false
      },
      {
        "title": "Nano JSX",
        "url": "https://nanojsx.io/",
        "description": "Designed to build ultra fast Multi-Page Apps (MPAs), using isomorphic JavaScript. Written in TypeScript. Server Side first with partial hydration. Perfect for your next PWA. As small as Svelte (1kb!).",
        "imageUrl": "./652600f22123d4cb7d5c3ca1770ee07a1cd310c5985ffa00fafdb520a578ec84.png",
        "featured": false
      },
      {
        "title": "CSS Masking",
        "url": "http://ishadeed.com/article/css-masking",
        "description": "In the design world, masking is a popular technique to achieve unique design effects. Interestingly enough, usage of masks in the web is still somewhat rare... and it feels like a lost opportunity for coming up with impressive and innovative designs. So let's deep dive on this awesome article full of some real-life examples!",
        "imageUrl": "./4f37052a88d354e312cd391a2b4b866fd233a7b90bb9d1be42f3298651088136.jpg",
        "featured": false
      },
      {
        "title": "Improving CSS Shapes with Trigonometric Functions",
        "url": "https://danielcwilson.com/posts/css-shapes-with-trig-functions",
        "description": "Another deep dive into CSS features that we don't use enough. This time is about how to optimize CSS shapes, using... some cool Maths! Specifically, trigonometric functions, enable interesting options for CSS shapes, clip paths, and more.",
        "imageUrl": "./15451a7ae7e518625355203277af14503674a5b53b17f33b7cef184d9bda4798.jpg",
        "featured": false
      },
      {
        "title": "Making Tanstack Table 1000x faster with a 1 line change",
        "url": "https://jpcamara.com/2023/03/07/making-tanstack-table.html",
        "description": "When you have to render large tables on the web, it's always a challenge. In this case study, the author was attempting to render a table with up to 50k rows of content Grouped by up to 3 columns Using react and virtualized rendering. Showing 50k rows was performing well enough, but there were some quite interesting opportunities for optimisation...",
        "imageUrl": "./e416b6c6067f9af4cb6acf0063520e2d0463a5e0dfb4e00794a1f6b229a854ca.jpg",
        "featured": false
      },
      {
        "title": "julien040/gut: An easy-to-use git client",
        "url": "https://github.com/julien040/gut",
        "description": "OK, let me be straight. The number one reason why I like this alternative Git CLI tool is because I often misspell **git** into **gut**! 😅 So yeah, I can definitely see myself using this! Other than that, gut is an alternative approach to using git on the CLI. It focuses on DX for novice developers, trying to provide higher-level guided commands that should result to be friendlier when getting started with git!",
        "imageUrl": "./b1a16b35f3c43e5b4b473527db100a215eed73316cb6caf20d102ebd40b6c695.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5",
      "author": "Robin Nixon",
      "description": "The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension. Build interactive, data-driven websites with the potent combination of open-source technologies and web standards, even if you only have basic HTML knowledge. With this popular hands-on guide, you'll tackle dynamic web programming with the help of today's core technologies: PHP, MySQL, JavaScript, jQuery, CSS, and HTML5.",
      "coverImageUrl": "./4dd383a9368aaa6ed632aede9e478cdc0678ed0fe58e1cd4ac7a53fa88dfa423.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491918667/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491918667/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 319,
    "title": "Fontpair - beautiful fonts pairings for you",
    "slug": "2023-04-03-306-fontpair-beautiful-fonts-pairings-for-you",
    "date": "2023-04-03",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "Fontpair - beautiful fonts pairings for you",
        "url": "https://fontpair.co/",
        "description": "Picking a good font pairing can make a hell of a lot of a difference in the final look and feel of a website. But if you are like me and if you feel you don't have an eye for these things, you might find this website with curated font pairings to be a precious resource!",
        "imageUrl": "./59ad9ae9d81a89cb9aee95f5ea5955fce91930e0ddb822e5d253c0ee3efadcc2.jpg",
        "featured": true
      },
      {
        "title": "Why you should use Python and Rust together",
        "url": "https://opensource.com/article/23/3/python-loves-rust",
        "description": "Rust and Python have complementary strengths and weaknesses. Prototype in Python and move performance bottlenecks to Rust. This article showcases a library called [PyO3](https://docs.rs/pyo3/latest/pyo3/) which makes it easy to run Rust code from your Python scripts.",
        "imageUrl": "./2561d8dee6221cc8420c40511fb7674ce3e32cf34504cbba1c265fc7dcb1a7fa.jpg",
        "featured": false
      },
      {
        "title": "Why We Added package.json Support to Deno",
        "url": "https://deno.com/blog/package-json-support",
        "description": "Deno was born to \"repair\" some tragic mistakes Ryan Dahl felt had made when creating Node. One of these mistakes was the way packages are managed through NPM. So why now is Deno stepping back and introducing support for package.json into the runtime? Sound like a weird decision, so let's find out from Ryan himself what's motivating this decision!",
        "imageUrl": "./58231bb9706bc88b4e9979f49ddeb6302cf6035eeb991be481e2f0225d0538e5.jpg",
        "featured": false
      },
      {
        "title": "One-Time Password (HOTP/TOTP) library for Node.js, Deno, Bun, and browsers.",
        "url": "https://github.com/hectorm/otpauth",
        "description": "If you are trying to add an extra layer of security to your applications and thinking to add support for MFA using One-Time Passwords (such as HOTP and TOTP), you should check out this awesome library for Node.js, Deno, Bun, and the browser!",
        "imageUrl": "./7f62a912312846dc5ac2ab6b4c7542d93091561c6f8708878a76cd23fd3fe5b3.jpg",
        "featured": false
      },
      {
        "title": "Laying Out a Print Book With CSS",
        "url": "https://iangmcdowell.com/blog/posts/laying-out-a-book-with-css",
        "description": "CSS are now more powerful than ever. But have you ever thought to use CSS not for a website, but for a book?! If this sounds like an insane idea you should check out the code snippets in this article and I am sure they'll definitely change your mind. And, if you are still not convinced, check out [Typst](https://github.com/typst/typst), another interesting project written in Rust that I discovered last week!",
        "imageUrl": "./b4cb6a21c5842b3bb89dd8b2ee18e00bcde41d2116904ebcbaaae0eb23072ee0.png",
        "featured": false
      },
      {
        "title": "Local-storage-first web applications",
        "url": "https://evilmartians.com/chronicles/cool-front-end-arts-of-local-first-storage-sync-and-conflicts",
        "description": "Web applications often require an internet connection, but a fair chunk of users can also work offline. This article shows how to gracefully implement the big 3 local-first solutions: storage, synchronization, and conflict resolution.",
        "imageUrl": "./ddb10a923cacb597a9efbe3017d52ce33333298079d9cb05b79674b1af74aaf0.png",
        "featured": false
      },
      {
        "title": "Selecting previous siblings with CSS :has()",
        "url": "https://tobiasahlin.com/blog/previous-sibling-css-has",
        "description": "Using CSS to select a previous sibling in the DOM was for long time an impossible feat! But now things have changed thanks to the **has()** pseudo-class selector. This new selector keeps surprising and here's just another great use case for it!",
        "imageUrl": "./50168f9dd6efb937bc412a31e9769315e09408fb004629926f71f61e653ca742.png",
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 318,
    "title": "TypeScript 5.0",
    "slug": "2023-03-27-305-typescript-5-0",
    "date": "2023-03-27",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "TypeScript 5.0",
        "url": "https://devblogs.microsoft.com/typescript/announcing-typescript-5-0",
        "description": "A new major version of TypeScript is here! This version brings many new exciting features such as **decorators**, **const type parameters**, **enums improvements**, **exhaustive switch/case completions**, and more! check out the full release post if you are curious to find out more and to learn how to update your projects to start using this new version.",
        "imageUrl": "./dc7f8ab751bfeb8285bba9d479d5dbdcfc51da64e84477e42ec017e99333d4ea.jpg",
        "featured": true
      },
      {
        "title": "You Might Not Need an Effect",
        "url": "https://react.dev/learn/you-might-not-need-an-effect",
        "description": "In React, useEffect allows synchronization between components and external systems like non-React widgets, networks, or the browser DOM. However, if there is no external system involved, unnecessary usage of **useEffect** can make code harder to follow, slower to run, and more prone to errors. This page from the new React documentation shows us how to spot and remove unnecessary usage of **useEffect**!",
        "imageUrl": "./85286d7833b686e19a87a281f273c43d065edbe406ecb6ed2b3cccd32e588ba7.jpg",
        "featured": false
      },
      {
        "title": "Modern Font Stacks",
        "url": "https://modernfontstacks.com/",
        "description": "Modern Font Stacks is a collection of CSS system font stacks organized by typeface classification for every modern OS. Using system font stacks is the fastest way to load fonts on a web page because there's no external resource to be loaded which, in turn, helps us to avoid annoying flashes or layout shifts. So pick your favorite system font stack combination from here for your next web project!",
        "imageUrl": "./83ad48c44e6a26b1ff56238813b051711875c05b1f4722f075c0855f7d349ad1.png",
        "featured": false
      },
      {
        "title": "6 CSS snippets every front-end developer should know in 2023",
        "url": "https://web.dev/6-css-snippets-every-front-end-developer-should-know-in-2023",
        "description": "[Adam Argyle](https://twitter.com/argyleink), notorious CSS guru at Google, showcases 6 modern CSS snippets that you should be aware of! Container query, scroll snap, grid pile, drawing circles, layers, and more!",
        "imageUrl": "./b6992d802831bc5414cb825ee059c4f892234140113f0d23c5f5283507c482ee.png",
        "featured": false
      },
      {
        "title": "Ten tips for better CSS transitions and animations",
        "url": "https://joshcollinsworth.com/blog/great-transitions",
        "description": "Have you ever found yourself using an app or visiting a website and just knowing that something about the user interface feels off? Maybe you can't quite put your finger on it, but you can feel it in your bones - it just doesn't flow as smoothly as it should. This is where the magic of well-crafted transitions and animations comes in.",
        "imageUrl": "./98a491abdf4232ee060701250fa75ac56eaf4a569a8fcfbaa5d42499ff975bf4.jpg",
        "featured": false
      },
      {
        "title": "Document Object Model (DOM) Geometry",
        "url": "https://smashingmagazine.com/2022/11/document-object-model-geometry-guide",
        "description": "Are you tired of bland user interfaces that fail to captivate your audience? Look no further! In this guide, [Pearl Akpan](https://twitter.com/godaffected) delves into the exciting world of user interface solutions that will take your website to the next level. From **infinite scrolling** to **animating elements on scroll** and drag and drop, these interfaces have been around for a while and continue to captivate users worldwide.",
        "imageUrl": "./a5e3fd9643d39cdcdf58c2829d9d31961b507d65910e0e314872e0b63ce9a4a8.jpg",
        "featured": false
      },
      {
        "title": "React hook to detect component mount, unmount & re-renders.",
        "url": "https://github.com/geobde/useRerender",
        "description": "One of the most challenging things with modern component-based frontend frameworks is to understand when a component actually re-renders (and why). This React hook could help you to do just that to make sure you use React correctly. The best part is that the hook only works in dev mode so it's not going to affect your users in any negative way!",
        "imageUrl": "./9678e7a0bde489e74bade2f9c930610f5f1c686fff97933a1c4860a3ab2638f6.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 317,
    "title": "#317: React.dev",
    "slug": "2023-03-20-304-317-react-dev",
    "date": "2023-03-20",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "React.dev",
        "url": "https://react.dev/",
        "description": "The new React website and guide is out! We spoke about the beta version before, but it's finally here as the main website for all things React! Check out the new style and the new guides and see what it means to build modern React applications!",
        "imageUrl": "./2557bba490d804374842e109ee884162281a287f1b37dd526696679d6195eaef.png",
        "featured": true
      },
      {
        "title": "Command Line Interface Guidelines",
        "url": "https://clig.dev/",
        "description": "If you create Command Line Applications, CLI for friends, you might wonder what a *good* CLI looks like. This open-source guide shows you the traditional UNIX principles and how they apply them in the modern days.",
        "imageUrl": "./099f640e20cfe27a79d69d64869f791e221769c286c4574e1413448b8c8f725b.jpg",
        "featured": false
      },
      {
        "title": "gajus/turbowatch: Fast file change detector for Node.js.",
        "url": "https://github.com/gajus/turbowatch",
        "description": "This is a new promising open-source project that provides an extremely fast file change detector and task orchestrator for Node.js. Check it out, you might be able to say goodbye to **nodemon**.",
        "imageUrl": "./8a28622a03150a80145171a3e22975d76dc4480dbc85a939a4cb43d1a2c2bb75.jpg",
        "featured": false
      },
      {
        "title": "Rspack",
        "url": "https://rspack.dev/",
        "description": "RSpack is yet another module bundler for the web... what makes it stand apart is that being **Rust**-based it promises great performance. I heard rumors it might be integrated into **Vite** as an alternative to **Rollup**... Definitely worth checking it out, especially if you work with large code bases where the speed-up might save you tons of precious build time! Plus the logo looks like a weird mix of both **Kirby** and Rust's mascot: **Ferris**! Is that a good thing? I don't know, but it looks cute!",
        "imageUrl": "./64487574dd867b544a4dfa6704c7e549b199b08484991ba4c89ac6e57a22bff3.png",
        "featured": false
      },
      {
        "title": "Typescripting the technical interview",
        "url": "https://richard-towers.com/2023/03/11/typescripting-the-technical-interview.html",
        "description": "Have you ever thought about how to really **show off** in a TypeScript technical interview? This article provides some (rather crazy) suggestions and examples! Definitely worth a read, even though I wouldn't recommend actually doing this in a tech interview 😅",
        "imageUrl": "./956bd8ecc11b489c54d50cd7e23d23c7d1f4609a0c2356acafd6ea57ac331e2e.jpg",
        "featured": false
      },
      {
        "title": "The Meaning(lessness) of Serverless",
        "url": "https://ben11kehoe.medium.com/the-meaning-lessness-of-serverless-cc004936dee5",
        "description": "The very prolific [Ben Kehoe](https://ben11kehoe.medium.com/) recently published a new article about the meaning of the word “Serverless”. It's a term that is honestly close to meaningless, and it’s not useful to argue about the definition. So how should we talk about serverless today?",
        "imageUrl": "./a7fa45e94e07df26b2684f7090c9ebec6f39e12c6b310e2b4c2ccecf3da6c6ce.png",
        "featured": false
      },
      {
        "title": "Why Coding Communities Are Good for Your Career",
        "url": "https://www.codu.co/articles/why-coding-communities-are-good-for-your-career-a3g_m7wz",
        "description": "If you feel your coding career is somewhat stuck and that you are not progressing as fast as you'd hoped, maybe what you are missing is being involved in some local coding community. This awesome article goes in-depth on the benefits of partaking in a coding community. So don't be shy, get out there, make some friends, and learn with them!",
        "imageUrl": "./7aa4bf9ae0772191c66b5daef57f3f4934666e7fccc9fc3d4203f3b9e496bb49.png",
        "featured": false
      }
    ],
    "book": {
      "title": "UX Strategy: How to Devise Innovative Digital Products that People Want",
      "author": "Jaime Levy",
      "description": "User experience (UX) strategy requires a careful blend of business strategy and UX design, but until now, there hasn’t been an easy-to-apply framework for executing it. This hands-on guide introduces lightweight strategy tools and techniques to help you and your team craft innovative multi-device products that people want to use. Whether you’re an entrepreneur, UX/UI designer, product manager, or part of an intrapreneurial team, this book teaches simple-to-advanced strategies that you can use in your work right away.",
      "coverImageUrl": "./fb5bfe56ce390883cd7e92437fbc707fe0ce9062ff82c591ed2eba65ee4daa8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372864/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372864/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 316,
    "title": "A Senior Engineer’s Guide to the System Design Interview",
    "slug": "2023-03-13-303-a-senior-engineer-s-guide-to-the-system-design-interview",
    "date": "2023-03-13",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "A Senior Engineer’s Guide to the System Design Interview",
        "url": "https://interviewing.io/guides/system-design-interview",
        "description": "This fantastic article highlights the importance of mastering the basic principles of system design, rather than trying to learn everything at once. Studying too much too quickly can actually hurt a candidate's chances in a real interview. They suggest that 80% of system design interviews involve only 20% of the concepts, and their guide focuses on teaching these key concepts in-depth.",
        "imageUrl": "./ebd2870973e53f12c3f24dda71fe6f24d841c0642faa15aae0aacc974851b030.png",
        "featured": true
      },
      {
        "title": "Password strength explained",
        "url": "https://palant.info/2023/01/30/password-strength-explained",
        "description": "This article explains how attackers would guess your password, should they get their hands on your encrypted data. There are some thoughts on the strength of real-world passwords and suggestions for your new password. A great read that will definitely help you to keep your personal data safe and build more secure applications.",
        "imageUrl": "./7aaf376ccd31daf6d436613d92591b9a6986f478a75ec95d3eb4a7c8e3c5b99a.png",
        "featured": false
      },
      {
        "title": "ChatGPT use case examples for programming",
        "url": "https://blog.risingstack.com/chatgpt-use-case-examples-for-programming",
        "description": "Are GPT-based tools going to steal our jobs? Probably not, or at least not anytime soon. So can we use them to our advantage and be more efficient as developers? Probably yes! This article presents some real use cases for GPT-based tools: from writing unit tests to writing database queries. Definitely worth a read but remember not to trust generated code blindly!😇",
        "imageUrl": "./2198f33fe7d55448c8686f6b5ba1cc3d450e051b8add87df63fa11479269b1a0.jpg",
        "featured": false
      },
      {
        "title": "Civet - The Modern Way to Write TypeScript",
        "url": "https://civet.dev/",
        "description": "If you thought CoffeeScript was a thing of the past, well you might want to revisit that thought. Civet is for TypeScript what CoffeeScript used to be for JavaScript! Whether this is a good idea or not, it's up to you to decide, but still, it might be worth a look... plus, the mascot is adorable!",
        "imageUrl": "./b4af496f4fd48786d8c97162d65744070d0eb7c149544787e2173b84a26a7b47.jpg",
        "featured": false
      },
      {
        "title": "Node.js Toolbox",
        "url": "https://nodejstoolbox.com/",
        "description": "Here's a fantastic website that can help Node.js aficionados to find actively maintained and popular libraries in the Node.js ecosystem. It's organized in categories, so you can easily find the tools you are looking for!",
        "imageUrl": "./d34e882b872bc2da208c8390de6bf84ba39042fcb1375a639fb4247148e234f9.jpg",
        "featured": false
      },
      {
        "title": "Building an animated SVG logo with animejs",
        "url": "https://pixelhop.io/writing/building-an-animated-svg-logo-with-animejs",
        "description": "If ever wanted to build a \"**Dodgy cyberpunk style neon goodness**\"-type of animated logo, this tutorial is for you. You will learn how you can turn static SVGs into fantastic animations using Vue and some JavaScript. A trick that can help you spice up your next website. I already want to revisit the logo on my website... 😛",
        "imageUrl": "./05330542322dcaee76a43cd4f5f4faa6b9b8a58ce282ba39c8778a31c9b9b923.jpg",
        "featured": false
      },
      {
        "title": "How to contribute to a project you have no idea about",
        "url": "https://grifel.dev/how-to-contribute-without-knowledge",
        "description": "This article should be dedicated to all the people that think are not good enough to contribute to open-source projects! It tells the story of [Michal](https://twitter.com/michalwarda) and how he managed to learn enough about Bun and be able to contribute back to the project. Very inspiring!",
        "imageUrl": "./6d3dd872b1687e801286e4cb209bbc03ed42a88ced058d3a69989fcb48d03735.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 315,
    "title": "12 Factor App Revisited",
    "slug": "2023-03-06-302-12-factor-app-revisited",
    "date": "2023-03-06",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "12 Factor App Revisited",
        "url": "https://architecturenotes.co/12-factor-app-revisited",
        "description": "The Twelve-Factor App methodology is a methodology for building software-as-a-service applications by Adam Wiggins (founder of Heroku). The first version of this paper was written about 12 years ago, so what has changed in all this time? This article covers how 12-factor has evolved and shows why it is still a very relevant practice today!",
        "imageUrl": "./573697cfbefd5fd02910ad60542fd6b17439ecf19a4706ba5d0d465c8a37939d.jpg",
        "featured": true
      },
      {
        "title": "Do we need CSS flex-wrap detection?",
        "url": "http://ishadeed.com/article/flex-wrap-detect",
        "description": "If you have been struggling with responsive design and specifically with the lack of control on flex-wrap and you wish to know about some alternative approaches, you should definitely have a look at this new article by [Ahmad Shadeed](https://ishadeed.com/).",
        "imageUrl": "./5d01f05ee9dfb2c8aa09fbfe3fb8cdc31f5ea9993ec68d13c10c2ebe9b9ae873.jpg",
        "featured": false
      },
      {
        "title": "Last baseline alignment",
        "url": "https://web.dev/last-baseline",
        "description": "Alignment using the first and last keywords is now available in all major engines. This means that we can use last baseline alignment as another option when aligning groups of flex or grid items.",
        "imageUrl": "./5556a35fd2696cc0216245b1b02185666a20a88e8247fce2db7f8678c7e9595c.jpg",
        "featured": false
      },
      {
        "title": "Using JavaScript in a WebC Component",
        "url": "https://raymondcamden.com/2023/02/03/using-javascript-in-a-webc-component",
        "description": "[WebC](https://www.11ty.dev/docs/languages/webc/) is a new web-component-based JavaScript framework by the same author of our beloved [Eleventy](https://www.11ty.dev/). In this article, [Raymond Camden](https://www.raymondcamden.com/) shows how you can take advantage of the WebC components syntax and add dynamic behaviors to your components using JavaScript. A really interesting read if you are into static websites and are looking forward to exploring WebC.",
        "imageUrl": "./d7a00b5e6e4c074d48fa76f20eeab1c0c1692f4cccd4147709060307b91a6b13.jpg",
        "featured": false
      },
      {
        "title": "AWS Lambdas - Python vs Rust",
        "url": "https://confessionsofadataguy.com/aws-lambdas-python-vs-rust-performance-and-cost-savings",
        "description": "Save money, save money! This article from a \"data guy\" showcases how migrating a Lambda-based project from Python to Rust lead to major performance improvements and cost savings. If you are curious to find out more, the article provides some nice benchmarks and graphs, but make sure to read the comments too because, as we known, benchmarks are never perfect!",
        "imageUrl": "./72fce383afdba0fae1abe20bc126a26ec7eeb14a0462e185ab4e3b18d1cdc885.jpg",
        "featured": false
      },
      {
        "title": "How to create a video and audio recorder in React",
        "url": "https://blog.logrocket.com/how-to-create-video-audio-recorder-react",
        "description": "Can you record audio and video from a web app? Of course, you can! You can do pretty much anything on the web these days! So let's learn how to build a custom audio and video recorder in React using the native HTML **MediaRecorder API** and **MediaStream API**.",
        "imageUrl": "./2ae252856548cedc3ca3ae7f71ac74dce88e0e8278a504b5a2597571d75d1d38.jpg",
        "featured": false
      },
      {
        "title": "Using Focal Points, Aspect Ratio & Object-Fit To Crop Images Correctly",
        "url": "https://henry.codes/writing/pure-css-focal-points",
        "description": "This article showcases an interesting technique to crop and object-fit images on web pages without losing quality or messing up with proportions. Worth checking out if you are working with many images using the most disparate sizes and aspect ratios.",
        "imageUrl": "./ae049e4bbb30e4e21e63fed07c1b1ab1ff50ad811b79d2989427b4331e3436e5.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 314,
    "title": "Try out CSS Nesting today",
    "slug": "2023-02-27-301-try-out-css-nesting-today",
    "date": "2023-02-27",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor and Author",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "Try out CSS Nesting today",
        "url": "https://webkit.org/blog/13813/try-css-nesting-today-in-safari-technology-preview",
        "description": "Safari and Chrome have finally implemented a built-in syntax for nesting CSS rules! This is a huge win for the web and gives you, as a developer, much more power. In combination with CSS variables, this new feature makes tools like less and sass a little bit more unnecessary than they used to be. Check out this new syntax and give it a spin!",
        "imageUrl": "./bca0538da516be710f6437358eefc4a75add6ae30fa4bdce6d3d1c95afaeca61.jpg",
        "featured": true
      },
      {
        "title": "Serverless Messaging: Latency Compared",
        "url": "https://bitesizedserverless.com/bite/serverless-messaging-latency-compared",
        "description": "This article compares the latency introduced by common messaging services on AWS: SQS, SNS, Step Functions, EventBridge, Kinesis, and DynamoDB Streams. When you are picking an integration system, this can be a great resource if you have strict latency requirements!",
        "imageUrl": "./f8b25c2f32c9cded23130ae17110b0cf543158f33ded7179fd398d64d41d4d5d.jpg",
        "featured": false
      },
      {
        "title": "Password protect a static HTML page",
        "url": "https://github.com/robinmoisson/staticrypt",
        "description": "This brilliant open-source project offers a method for password-protecting a static HTML page. The project provides a script that encrypts the content of the page and adds a widget for client-side decryption, but only if the user has the correct password. This approach eliminates the need for setting up a backend server or an edge function for password protection.",
        "imageUrl": "./87a87b398f5b70149301aff074a57eeae4ce64534a8570ab2117f2e6f2d9d23d.jpg",
        "featured": false
      },
      {
        "title": "The Gooey Effects With Shader",
        "url": "https://mofu-dev.com/en/blog/gooey-shader",
        "description": "A recent trend in web design is the \"gooey effect\": liquid-like blobs floating around the page. THis article makes you generate this kind of blobs using shaders. You might not care too much about using this style in your designs, but nonetheless, this article provides a great use case to learn how to write shaders for the web!",
        "imageUrl": "./61478d4902c5a446f2d28696e1c21ff07101884b90ff63b24e636a606aab5cd2.jpg",
        "featured": false
      },
      {
        "title": "Writing an engineering strategy.",
        "url": "https://lethain.com/eng-strategies",
        "description": "In the last few months, I have been working hard on helping an organization produce an API Strategy. This article has been one of the most valuable resources that I was able to find. It explores how to think about an engineering strategy, what different stakeholders will expect, how to draft it, and how to communicate it and enforce it across various teams effectively.",
        "imageUrl": "./57a58e70316258f1f51479f91b6943c0b14412e91b713447f241dbe89db20d87.jpg",
        "featured": false
      },
      {
        "title": "The 25 Percent Rule for Tackling Technical Debt",
        "url": "https://shopify.engineering/technical-debt-25-percent-rule",
        "description": "Let’s talk about technical debt. Let’s talk about practical usable approaches for actually paying it down on a daily, weekly, monthly, and yearly basis. Let’s talk about what debt needs to be fixed now versus what can wait for better planning.",
        "imageUrl": "./7e2cb0530dc11eae45dda09b3be3bd111cee9be79a7c7547e68b6e12fc5925d8.jpg",
        "featured": false
      },
      {
        "title": "How To Scale Node.js Applications with Clustering",
        "url": "https://digitalocean.com/community/tutorials/how-to-scale-node-js-applications-with-clustering",
        "description": "This tutorial explains how to scale a Node.js application using the cluster module on a machine with four or more CPUs. It involves creating an application without clustering, then modifying it to use clustering, and using the pm2 module to scale the application across multiple CPUs. The tutorial also includes load testing to compare the performance of the app with and without clustering and to evaluate the pm2 module.",
        "imageUrl": "./2de4d73672780e7643fbb0d342def1e0e96a83a94bc1870202b241a424e6d647.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld",
      "description": "Information architecture (IA) is far more challenging—and necessary—than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond.To guide you through this broad ecosystem, this popular guide—now in its fourth edition—provides essential concepts, methods, and techniques for digital design that have withstood the test of time.",
      "coverImageUrl": "./6479919bd4c4e1ab7a2cbc0f5cf23b45ee7ca46af986574798fd02163903111f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 313,
    "title": "The core-js drama",
    "slug": "2023-02-20-300-the-core-js-drama",
    "date": "2023-02-20",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology is a word that describes something that doesn’t work yet",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "The core-js drama",
        "url": "https://github.com/zloirock/core-js",
        "description": "Do you know what core-js is? It's the most widely used polyfill library for the JavaScript standard, supporting all the latest ECMAScript features and many existing proposals, including iterator helpers. How popular is it? **250 million downloads/month popular**! Unfortunately, the library's author, [zloirock](https://github.com/zloirock), is feeling burnt out and considering abandoning the project. However, they are still open to giving open source one last chance. But not all hope is lost, we can certainly help the maintainer in many ways, and we should seriously consider doing so!",
        "imageUrl": "./bea7203090aa4bbd9a8ed99f4c0231eef4d46e60f940e641de896565f1dd7559.jpg",
        "featured": true
      },
      {
        "title": "Design Patterns in TypeScript",
        "url": "https://refactoring.guru/design-patterns/typescript",
        "description": "If you have been using TypeScript for a while, here is a great resource to discover how you can improve the structure of your codebase by using common design patterns. This catalog presents 22 patterns with annotated code examples written in TypeScript.",
        "imageUrl": "./8e754c62fde7d3e4aca8950bbd49f3529b08dbcd5c2052b7a6d96cd27a2e7cec.png",
        "featured": false
      },
      {
        "title": "yup: Object validation library",
        "url": "https://github.com/jquense/yup",
        "description": "Yup is a powerful schema builder for runtime value parsing and validation, with a concise yet expressive schema interface capable of modeling simple to complex data models. It has built-in async validation support, TypeScript support, and allows you to add your own type-safe methods and schema. Yup also provides rich error details, making debugging easier. It is quickly becoming a popular tool for data validation and transformation. If you have been loving [zod](https://zod.dev/), yup is definitely a serious contender to it.",
        "imageUrl": "./5ea6d30ed6af2889fb41e4139c9926b5cb60a55e64e91db00b0e11fda42eaf48.jpg",
        "featured": false
      },
      {
        "title": "Resumable React: How To Use React Inside Qwik",
        "url": "https://builder.io/blog/resumable-react-how-to-use-react-inside-qwik",
        "description": "Did you know you can leverage almost the entirety of the React ecosystem inside a Qwik application?\n\nBasically, you can build React applications, without ever loading React in the user's browser. Sounds too good to be true? Let’s see how this works.",
        "imageUrl": "./d1527da6b87ba74d213c4885cfa4ac924f45f38efb349029254666613f8a1c58.jpg",
        "featured": false
      },
      {
        "title": "The Guide To Responsive Design In 2023 and Beyond",
        "url": "http://ishadeed.com/article/responsive-design",
        "description": "In this article, [Ahmad Shadeed](https://ishadeed.com/), discusses how building fluid layouts today is not just about fixed-width breakpoints, but rather designing layouts that work on any device size. Some websites still follow the adaptive design pattern, which relies on a container that gets a new **max-width** value based on the viewport width. The term \"responsive\" means different things in 2023, with media queries that check for user preferences and modern CSS features that make fluid layouts possible without using media queries.",
        "imageUrl": "./cb41da2c932ad71e4631e9ac22ed7a5e8f8284fdc39a53ac7522b069e333a2eb.jpg",
        "featured": false
      },
      {
        "title": "Easy SVG Customization And Animation: A Practical Guide",
        "url": "https://smashingmagazine.com/2023/01/svg-customization-animation-practical-guide",
        "description": "Developers often feel discouraged from editing SVG markup and experimenting with SVG animations, thinking it’s a significant time investment or they need to use a complex animation library to do so. In this article, Adrian showcases his favorite tricks, which make the process streamlined and fun.",
        "imageUrl": "./aa3535512791a66bd83ebff93449af5120a15855b52117d6f5cf80674fcc2b08.jpg",
        "featured": false
      },
      {
        "title": "Writing Javascript without a build system",
        "url": "https://jvns.ca/blog/2023/02/16/writing-javascript-without-a-build-system",
        "description": "In this article, [Julia Evans](https://jvns.ca/), discusses their experience with writing JavaScript for frontend projects and the question of whether to use a build system or not. The author shared their thoughts on what is appealing about build systems, why they usually do not use them, and why they find it frustrating that some frontend JavaScript libraries require a build system. The author wrote the piece to help those who write simple, small JavaScript projects that do not require a build system, as most of the writing about JS assumes that a build system is being used.",
        "imageUrl": "./a7aadf8dd75c6727b571a5749b44ce1bdc9abde589811385e5779f8d77f059b6.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Big Data: Principles and best practices of scalable realtime data systems",
      "author": "Nathan Marz",
      "description": "Big Data teaches you to build big data systems using an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data. It describes a scalable, easy-to-understand approach to big data systems that can be built and run by a small team.",
      "coverImageUrl": "./f109f576f51b956a93fffd90f2756794ef95a8d46f118a0f1e23f611c7af4a75.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617290343/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617290343/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 312,
    "title": "Accessible hamburger buttons without JavaScript",
    "slug": "2023-02-13-299-accessible-hamburger-buttons-without-javascript",
    "date": "2023-02-13",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "One machine can do the work of fifty ordinary men.  No machine can do the work of one extraordinary man",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "Accessible hamburger buttons without JavaScript",
        "url": "https://pausly.app/",
        "description": "Are you tired of relying on JavaScript for every little interaction on your website? Well, buckle up because we're about to show you how to create an oh-so-delicious hamburger menu without a single line of JavaScript! That's right, folks! With just HTML and CSS, you can have a menu that's not only visually appealing but also accessible to all users. So, let's dive in and learn why it's important to go the pure HTML and CSS route. Your website (and taste buds) will thank you!",
        "imageUrl": "./b7504987ccc3d2110eace1813e3115122f2adf06c621dead4617c821ff635f13.jpg",
        "featured": true
      },
      {
        "title": "You’ve Got Options for Removing Event Listeners",
        "url": "https://macarthur.me/posts/options-for-removing-event-listeners",
        "description": "One of the biggest culprits of memory leaks is none other than stale event listeners! Don't let these sneaky buggers bring down your application's efficiency. The good news is, cleaning up your code is as easy as a walk in the park! Let's learn how to get rid of event listeners that are no longer needed and watch your frontend soar like a bald eagle. Ready to make your applications run smoothly and predictably? Let's go!",
        "imageUrl": "./2ea0fe6d51abba462e2541a23b020cf9f15970531a1d2e49577265e3e1a63818.jpg",
        "featured": false
      },
      {
        "title": "Mastering Re-rendering in React",
        "url": "https://atharvabhuse.hashnode.dev/a-beginner-guide-to-mastering-re-rendering-in-react",
        "description": "One of the trickiest frontend things to grasp is figuring out when React will re-render your components and how to avoid unnecessary re-renders. But don't fret! We've got your back with a beginner's guide that's packed with all the information you need. By the end of this article, you'll be a pro at understanding re-rendering in React and your developer skills will soar higher than a kite on a windy day. So grab a cup of coffee and let's dive into the exciting world of React re-rendering!",
        "imageUrl": "./64cfe38e0705065e93264ba799ca4084ebefbc036b1d3b6b79a2250c4833654c.png",
        "featured": false
      },
      {
        "title": "How Pinterest’s design systems team measures adoption",
        "url": "https://designsystems.com/how-pinterests-design-systems-team-measures-adoption",
        "description": "Meet Ravi, a design technologist who knows the importance of measuring impact in engineering and product management. He's been working on a crucial metric for Pinterest's design system, [Gestalt](https://gestalt.pinterest.systems/home), to gauge its value and assess the success of the investment. This new metric, called \"design adoption,\" aims to maximize the system's usage and increase component adoption among designers. Ravi is tracking the system's usage in Figma to reach this goal.",
        "imageUrl": "./1446a8cf6a1df27a98e433c97e8a6514e130c58e8f0b4a6b6cc2d4c4de4f9f37.jpg",
        "featured": false
      },
      {
        "title": "Fundamental Math for Game Developers",
        "url": "https://pikuma.com/blog/math-for-game-developers",
        "description": "Get ready to put those high school math skills to the test! Have you ever considered building your own computer game? This could be your chance to shine! Let's dive into the most important mathematical concepts used by game developers and give your math education a refresh. Who knows, you might even discover new techniques for learning math and take your game-building skills to the next level. It's time to level up and conquer the math challenge!",
        "imageUrl": "./48adbd66b83335f3e3bf5e1628521207bb8c3c0483c2219ebef16bb0a551e99c.jpg",
        "featured": false
      },
      {
        "title": "Generate a gradient from a mood",
        "url": "https://gradienmood.posandu.me/",
        "description": "Step up your gradient game! Gradients have been taking the web design world by storm, but have you ever thought about the mood each gradient conveys? Flip the script and try generating a gradient based on a specific mood with this exciting tool! Get inspired for your next design and add some gradient magic to your portfolio.",
        "imageUrl": "./dd499e94f9348040523b7325daa7684df47bb101689db6195ab174412773a571.png",
        "featured": false
      },
      {
        "title": "Esoteric color palette generator",
        "url": "https://meodai.github.io/poline",
        "description": "Introducing Poline, a designer's dream tool! This lightweight and speedy JavaScript function, written in TypeScript, uses polar coordinates to connect anchors and generate stunning color palettes. Add it to your designer toolkit and let it inspire you for your next website design project!",
        "imageUrl": "./f96561efc76d12378c48df2ff0a9bfcde7accc72e45b767b2f8dea6af694a793.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "E. Gamma, R. Helm, R. Johnson, J. Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.",
      "coverImageUrl": "./3d2f9c2ee1c817b2dcd3443fbb6f71d7fcb0499b00de983a9ffe8f8c6058fa29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 311,
    "title": "What we look for in a resume",
    "slug": "2023-02-06-298-what-we-look-for-in-a-resume",
    "date": "2023-02-06",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "What we look for in a resume",
        "url": "https://huyenchip.com/2023/01/24/what-we-look-for-in-a-candidate.html",
        "description": "With everything that is happening in the tech industry, you might currently be on the hunt for a new role (and in fairness, in tech, we are always on the lookout for new exciting opportunities)... So you are thinking about rewriting your CV. But how can you make it stand out? In this article you can get the perspective of someone looking at tons of tech CV and learn about what they value the most.",
        "imageUrl": "./7f5c4e2eb7b69f04ef7c40f347f24e5cf6f5cfd201ddf9d03ad62a93a012129f.png",
        "featured": true
      },
      {
        "title": "Deep Cloning Objects in JavaScript, the Modern Way",
        "url": "https://builder.io/blog/structured-clone",
        "description": "Forget about `lodash`, now JavaScript has a built-in function for deep cloning objects. It's called `structuredClone` and in this article, there's everything you need to know to start being proficient with it!",
        "imageUrl": "./618c6f01a349fc3cdc882557dd99958d616964f03761d99c50ea0830e10628ad.jpg",
        "featured": false
      },
      {
        "title": "barba.js",
        "url": "https://barba.js.org/",
        "description": "If you are looking for a simple trick to spice up your website, here's an interesting idea: page transition effects. This library called barba.js makes it very easy to achieve and it's extremely configurable, so you can customise the 💩 out of it!",
        "imageUrl": "./c62a2ce98eeaaab86b8b4f9fdc25c4cf75e373222d6051a563bccd42c67cd1f1.png",
        "featured": false
      },
      {
        "title": "How to build a secure API gateway in Node.js",
        "url": "https://snyk.io/blog/how-to-build-secure-api-gateway-node-js",
        "description": "In this article, you'll learn how to build a secure API gateway from scratch using only Node.js and a couple of open-source packages. All you need is basic knowledge of your terminal, Node.js version 14 or later, and JavaScript. And you'll be learning a few interesting things about security, which is always a nice bonus!",
        "imageUrl": "./22fe2f4dcab9c9e02937d27c29ae76a246f2eb8d0bcdd4c81f7ff318537cc2ae.jpg",
        "featured": false
      },
      {
        "title": "Examples of floating point problems",
        "url": "https://jvns.ca/blog/2023/01/13/examples-of-floating-point-problems",
        "description": "As a software developer, you are probably seeing floating point variables pretty much everywhere. But you should also know that floating points are a nice abstraction that is effective but not always accurate. So what are the pitfalls to be aware of and what are some examples of what can happen when floating point maths goes bad?!",
        "imageUrl": "./a02a95ca38ac3db35728d318dac84fb612cfe5fb762afc460cbd15fa834735bf.png",
        "featured": false
      },
      {
        "title": "Atkinson Dithered Images",
        "url": "https://sheep.horse/2023/1/improved_web_component_for_pixel-accurate_atkinson.html",
        "description": "Dithered images are extremely fascinating. I mean, how cool it is that you can get the feeling of greyscale pictures with just plain black-and-white colors (yes, 2 colors only)?! This article showcases a fantastic web component that you can use to create dithered effects with your images.",
        "imageUrl": "./15a244cfba9df2d55b4ce6d88229b98709c87e47b1c4fa57d86d3be4b4633d5a.png",
        "featured": false
      },
      {
        "title": "4 Common Mistakes Made by Node.js Developers",
        "url": "https://amplication.com/blog/4-common-mistakes-made-by-nodejs-developers",
        "description": "If you are trying to ship a Node.js application to production you might want to check out this particular article and learn what are some of the most common errors and address them before shipping time 🚢.",
        "imageUrl": "./6c86063b7b6158d9105333c852e6185f9180c1cc37ba817743431d09766ac3d8.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 310,
    "title": "n8n - a workflow automation tool",
    "slug": "2023-01-30-297-n8n-a-workflow-automation-tool",
    "date": "2023-01-30",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "n8n - a workflow automation tool",
        "url": "https://n8n.io/",
        "description": "n8n is a free and open-source **low-code** workflow automation tool. Imagine something similar to Zapier that allows you to connect several remote services easily, but that you can host and run yourself even in a local raspberry PI. It could be an interesting approach to save time and build integrations quickly. Want to give it a shot? Just run `**npx n8n run**`.",
        "imageUrl": "./689f061cb7d093a9c778f6e2f2f3745ec0fa5f56835ff8a0f42d57af9182c3dd.png",
        "featured": true
      },
      {
        "title": "Merging vs. Rebasing",
        "url": "https://atlassian.com/git/tutorials/merging-vs-rebasing",
        "description": "Last week I did mess up (again) another git rebase attempt... For this reason, I thought it would be good to go back to the basics and review all the theories behind this git operation. Then I bumped into this great article that compares rebase and merge commits. Definitely recommended if you are like me and, at times, struggle with some more advanced git topics.",
        "imageUrl": "./9888eeb02847fded2fc81fed8e224adbe52854308778788e9e0b57e1e3f99f6e.jpg",
        "featured": false
      },
      {
        "title": "The illustrated guide to S3 pre-signed URLs",
        "url": "https://fourtheorem.com/the-illustrated-guide-to-s3-pre-signed-urls/",
        "description": "A couple of weeks ago I tried to put black on white everything I know about S3 pre-signed URLs. If you build serverless architectures on AWS and are wondering how to implement file upload and download capabilities, this article is probably for you!",
        "imageUrl": "./9f78da29ae263680d7a80efe5647fce87dab8602ba0f11cd91560ff619c5f042.png",
        "featured": false
      },
      {
        "title": "Gluon",
        "url": "https://gluonjs.org/",
        "description": "A framework for creating desktop apps from websites, using system-installed browsers and Node.js. Quite useful for all those web apps that you would prefer to use as desktop applications (and maybe add some custom workflow on top).",
        "imageUrl": "./8f3809e653cb56551259b039b5defad0c23468a936c63885abf6dc52d4af690e.png",
        "featured": false
      },
      {
        "title": "Optimizing The Image Element LCP",
        "url": "https://smashingmagazine.com/2023/01/optimizing-image-element-lcp",
        "description": "Largest Contentful Paint (or LCP) is a major web performance KPI which is still a new concept for many web developers since it became a ranking factor just recently. In this article, Eloïse Martin provides an overview of the best practices for the integration and optimization of an LCP image.",
        "imageUrl": "./f9de641a50a30c08677d57d2ef8baa3cfecf9e23926297bae3ace2e5e1a6f9eb.jpg",
        "featured": false
      },
      {
        "title": "History of Web Browser Engines from 1990 until today",
        "url": "https://eylenburg.github.io/browser_engines.htm",
        "description": "Once upon a time, we used to have tons of different browsers and rendering engines. Now everything is flattening and there are just a few serious contenders. This will certainly have an impact on the future of the web and on our work as full-stack web developers. So let's try to have a look at the history of Web Browser Engines since 1990, so we can speculate on what the future holds for us!",
        "imageUrl": "./01b8c09b2f1f9f492f347f9fcddec49613f9cc4316d02a4ec8c17d37e2a6a23a.png",
        "featured": false
      },
      {
        "title": "A Node.js module that generates images from HTML",
        "url": "https://github.com/frinyvonnick/node-html-to-image",
        "description": "A Node.js module that generates images from HTML. It could be an interesting option if you want to generate complex images programmatically, for instance, the open graph image for your next blog post.",
        "imageUrl": "./804fb3d0bb7873fa50fda187c3205ca5400b14c312e267574566d3317ae86b44.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 309,
    "title": "Tremor – The React library to build dashboards fast",
    "slug": "2023-01-23-296-tremor-the-react-library-to-build-dashboards-fast",
    "date": "2023-01-23",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "Tremor – The React library to build dashboards fast",
        "url": "https://tremor.so/",
        "description": "If you are using React and you find yourself spending a lot of time hand-crafting nice-looking dashboard views, you might want to check out Tremor, a React library and design system specially built for creating dashboards.",
        "imageUrl": "./8b549b40327a7fe582529bd8396d63561c32308f3395b3d10df8e816c1e965b4.jpg",
        "featured": true
      },
      {
        "title": "Node.js Retro 2022",
        "url": "http://nodesource.com/blog/Nodejs-Retro-2022",
        "description": "It's still January 2023, so we are still in time to make a retrospective on 2022 and understand where to go in this new year. In this article, [Marian Villa](https://twitter.com/Marianvilla), makes a retrospective of what happened in 2022 in the Node.js ecosystem and she tries to gives us food for though on what to expect for Node.js in '23.",
        "imageUrl": "./edda5588606569bfe72d68b6dd0c350f953428133abb5bc9ee292f9f5b0c67fb.jpg",
        "featured": false
      },
      {
        "title": "Zustand vs Signals — Comparing React State Management Options",
        "url": "https://betterprogramming.pub/zustand-vs-signals-e664bff2ce4a",
        "description": "**Zustand** is a relatively new state management library (with an awesome mascotte) that is taking a lot of traction in the React world. On the other hand, we have **Signals** which have been heavily promoted by Solid.js but have recently also been adopted by other libraries including Preact. So how does the Zustand model compares to Signals and which one suits your needs best?",
        "imageUrl": "./78c09c7dfd08218c8d7312fd0ee1e8c99bb2346ded2345b10b345deb2754c9d0.jpg",
        "featured": false
      },
      {
        "title": "Remix vs Next.js",
        "url": "https://bejamas.io/blog/[slug]",
        "description": "Remix, an edge-first, React-based full-stack framework created by the original team behind React-router, was recently open-sourced - and Next.js just got itself a strong new opponent. So what are the differences between these two React meta-frameworks and which one should you use next? Yes, that's another VS type of article, which we always love! :D",
        "imageUrl": "./4f9e38d1fd6d1f4bcd4a93410a77cca660dc377d1f05efe25e9884f0bc203b49.jpg",
        "featured": false
      },
      {
        "title": "Data Binding in React",
        "url": "https://joshwcomeau.com/react/data-binding",
        "description": "As developers, we don't like working with forms, but they're a critical part of most web applications! In this tutorial, you'll learn exactly how to wire up all of the different form controls in React. Never forget how to data-bind a checkbox or radio button again!",
        "imageUrl": "./86adc966eba79d37d1ff4fd97d41516d99fb8b492fba93df90ce5ae1465a6ce3.jpg",
        "featured": false
      },
      {
        "title": "Short, friendly base32 slugs from timestamps",
        "url": "https://brandur.org/fragments/base32-slugs",
        "description": "I bumped into this short article and I was blown away by this idea. 4 lines of Go to produce succinct and sortable URL-friendly slugs based on timestamps. Something you could use to generate your own short URLs, or any other kind of id, where time-based-sortability could be a useful feat!",
        "imageUrl": "./893969d58e398248c94d70164fac412b975c776f5035acf2a73e63ad1492ceb3.png",
        "featured": false
      },
      {
        "title": "Fixing a Memory Leak in a Production Node.js App",
        "url": "https://kentcdodds.com/blog/fixing-a-memory-leak-in-a-production-node-js-app",
        "description": "[Matteo Collina](https://twitter.com/matteocollina) helps [Kent C. Dodds](https://twitter.com/kentcdodds) fix a memory leak on his website. This was done in a live stream and the article comes with the video recording too. There's definitely a lot to learn from this case study if you care about JavaScript performance and you want to learn a few clever tricks to spot potential memory leaks.",
        "imageUrl": "./148680e2f537849a35ad9ca67705bd45824bb74ab1a6af23963b396b7d7c7b52.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 308,
    "title": "2022 JavaScript Rising Stars",
    "slug": "2023-01-16-295-2022-javascript-rising-stars",
    "date": "2023-01-16",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "2022 JavaScript Rising Stars",
        "url": "https://risingstars.js.org/2022/en",
        "description": "To understand where JavaScript is headed in 2023 we need to take a step back and have a look at the emerging and established JavaScript projects of 2022! JavaScript Rising Stars is the perfect resource to do that and have a complete overview of frontend trends, full-stack and Node.js frameworks, React and Vue.js ecosystems, build tools, state management, etc.",
        "imageUrl": "./776c9c396c99d57453fe2c914fb6b46eee13655d0a10bd1b9cc62ac9db7986e0.jpg",
        "featured": true
      },
      {
        "title": "The Illustrated Stable Diffusion",
        "url": "https://jalammar.github.io/illustrated-stable-diffusion",
        "description": "If you have used text-to-picture tools such as Stable Diffusion you might have thought that they are magic: an AI that has developed some sort of artistic conscience... Of course, that's not the case, so how does this incredible technology works behind the scenes? This articles explains in a very visual way the principles behind Stable Diffusion. It doesn't make it any less amazing, but certainly it's going to feel less magic!",
        "imageUrl": "./4fa99f3b2f990c191c46f09dc5d9c5e45376353cc1f95907cc8ad2d3af619135.png",
        "featured": false
      },
      {
        "title": "2022 Year In Review for Vue",
        "url": "https://blog.vuejs.org/posts/2022-year-in-review.html",
        "description": "If you are a fan of Vue.js you should check out this end-of-the-year post by Vue's creator Evan You. In this post, Evan recaps what were the major achievements of the Vue community in 2022 and explores what we should expect for Vue and its ecosystem in 2023! I am quite excited to see that the whole ecosystem is growing with a myriad of more generic JavaScript supporting tools, such as **Vite**.",
        "imageUrl": "./7424794dcfb3e4546d74a2fe41e3b3c071cb8cdc4d0562a9d735bdc35e569007.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Frameworks - Heading into 2023",
        "url": "https://dev.to/this-is-learning/javascript-frameworks-heading-into-2023-nln",
        "description": "If you are not sick of inspirational posts for what's coming in 2023 for the JavaScript ecosystem, this one is a take by **Ryan Carniato**, creator of Solid.js. In this article, you can discover what Ryan thinks will be the biggest innovations we will see in 2023! Spoiler: there is a section about **WASM**!",
        "imageUrl": "./2b0072de0bc7d513cb49c48f0dead937877b6de880771683bff4ed9729d111d0.jpg",
        "featured": false
      },
      {
        "title": "Serverless Production Readiness Checklist (AWS)",
        "url": "https://ranthebuilder.cloud/post/serverless-application-productiozation-check-list",
        "description": "If you are building a serverless application for the first time you might be wondering whether your setup is good enough or if you are missing something important... Before going to production, you should go through this checklist which covers security, backups, crisis recovery, CI/CD, and support readiness for Serverless applications on AWS.",
        "imageUrl": "./31c3e11e8e2403be7b6741e71cd89dbfb59a6d000dc4ef6168f9532e6badf3fd.jpg",
        "featured": false
      },
      {
        "title": "A Guide To Getting Data Visualization Right",
        "url": "https://smashingmagazine.com/2023/01/guide-getting-data-visualization-right",
        "description": "In this article, Sara Dholakia presents a guide on how to choose just the right type of data visualization, with guidelines and things to keep in mind. If you are working on dashboards or reports, this might be a life-saver!",
        "imageUrl": "./c6ffdc5bf92613b215ce1ecfdd4fce7eb995dde9db23a4fdfa4fee4af6db49fa.jpg",
        "featured": false
      },
      {
        "title": "Getting started with serverless Rust in AWS Lambda",
        "url": "https://blog.scanner.dev/getting-started-with-serverless-rust-in-aws-lambda/",
        "description": "People talk a lot about Rust and from time to time we also hear about it in the context of Lambda. But there aren't many tutorials or resources on how to get started out there, so I was really happy to read this fantastic getting started article which also made me discover the awesome [cargo-lambda](https://www.cargo-lambda.info/).",
        "imageUrl": "./048cd7004aac76ec57fb0df775c019927349aedb13fe27cbe1aa711d570c1db7.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 307,
    "title": "Shopify's migration to React Native",
    "slug": "2023-01-09-294-shopify-s-migration-to-react-native",
    "date": "2023-01-09",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "Shopify's migration to React Native",
        "url": "https://shopify.engineering/migrating-our-largest-mobile-app-to-react-native",
        "description": "An interesting case study from Shopify describing how they decided to migrate their largest mobile application (300+ screens!) to React Native. In this post you can discover what was the rationale and how the project went. If you'll be building a mobile app soon, maybe you'll consider React Native.",
        "imageUrl": "./a236631afd6ce3de698186c940264dd6f3cf9f6997d725a21f5e3ea1aada2e7a.jpg",
        "featured": true
      },
      {
        "title": "Flying away from AWS",
        "url": "https://terrateam.io/blog/flying-away-from-aws",
        "description": "Another interesting migration case study. This time we are talking about cloud providers and in this article, you can learn how Terrateam went from AWS to Fly.io! Fly is starting to become a really serious competitor in the cloud space!",
        "imageUrl": "./4a302cc358043436db776f6a1b71432b6cec06ccbd7f239a22742ad95dfbb01e.png",
        "featured": false
      },
      {
        "title": "20,000 hours as a Software Engineer",
        "url": "https://ruiper.es/fad733b2e8b147bbbe647906253001be",
        "description": "Malcolm Gladwell famously said that to master anything, you need to spend at least 10000 hours doing it. So let's see what 20.000 hours of career look like for a software engineer. What are the learnings and what should come next... let's find out!",
        "imageUrl": "./623a853d77d724320ca69a3d8b8cd3dcdb3698c94c52addb3ebca680b4c6b75e.jpg",
        "featured": false
      },
      {
        "title": "Useless React Hooks",
        "url": "https://github.com/btahir/uselesshooks",
        "description": "A Collection of Useless React Hooks to impress your coworkers. Also, something you can look into if you are learning React and want to see a bunch of example hooks to draw inspiration from!",
        "imageUrl": "./2aa6adc8494d8043b3796a99de039966acc78cadc2d71ccd7d0821ed8c139a17.jpg",
        "featured": false
      },
      {
        "title": "Explain the First 10 Lines of Twitter's Source Code to Me",
        "url": "https://css-tricks.com/explain-the-first-10-lines-of-twitter-source-code",
        "description": "Did you ever get this question in front-end interviews: \"Explain the first ten or so lines of the Twitter source code to me\"? It's an exciting question that opens up a pretty good conversation! How would you answer?",
        "imageUrl": "./3fd27f25cbdd19a07ac83cd9f0bcfd285350ac0f361648a377fe4b8e02d149cc.jpg",
        "featured": false
      },
      {
        "title": "How to publish to npm in 2023",
        "url": "https://blog.taskli.st/posts/how-to-publish-to-npm-in-2023",
        "description": "This is a guide that describes how to publish an open-source package to npm in 2023 and what to look out for. It includes TypeScript and ESM. Definitely worth a look if you are thinking to publish a new package.",
        "imageUrl": "./1474951b64804ae1a3669977f4384b62d56a729c8066ec4f65c0bc0bb4c0f8fc.jpg",
        "featured": false
      },
      {
        "title": "symphonia: An audio playback library for Node.js",
        "url": "https://github.com/tropicbliss/symphonia",
        "description": "An audio playback library for Node.js (written in Rust). If you ever wanted to play some music or an audio effect from a script, look no further!",
        "imageUrl": "./fc3d47f64e8d81d108351c93fa1079d847246d6a7b016fd24aae14c2b007924f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 306,
    "title": "novu, The open-source notification infrastructure",
    "slug": "2023-01-02-293-novu-the-open-source-notification-infrastructure",
    "date": "2023-01-02",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "novu: The open-source notification infrastructure",
        "url": "https://github.com/novuhq/novu",
        "description": "**novu** is a very ambitious open-source project. It provides an excellent starting point to implement a notification system for applications. Building a notification system is complicated. At first, it seems like just sending an email, but in reality, it's just the beginning. Users today expect a multi-channel communication experience via email, SMS, push, chat, and other channels.",
        "imageUrl": "./bf4bd9da2736f07595d93098d0e6751f1534a0f9ac0f4b15b2c97c9c943b337b.png",
        "featured": true
      },
      {
        "title": "A Guide to the Terminal, Console, and Shell",
        "url": "https://thevaluable.dev/guide-terminal-shell-console",
        "description": "The terminal is the result of its history, from the telegram to our terminal emulators. What is the difference with a console? The shell?",
        "imageUrl": "./58f05be7991b74bd8f18079cf86fc6622260a393b8dbbe4346208f34c664bd6d.png",
        "featured": false
      },
      {
        "title": "Using the React children prop with TypeScript",
        "url": "https://blog.logrocket.com/using-react-children-prop-with-typescript",
        "description": "Learn about the recommended ways you can use the React children prop in TypeScript projects in this detailed, example-by-example tutorial.",
        "imageUrl": "./9f07d4d3a01f152007819e31d0ee449ede3b77281645e914af5d4698768009d5.jpg",
        "featured": false
      },
      {
        "title": "HTTPS explained (with pidgeons) 🐦",
        "url": "https://baida.dev/articles/https-explained-with-carrier-pigeons",
        "description": "Cryptography can be hard. But unless you are actually developing cryptographic systems, much of that complexity is not necessary to understand what is going on at a high level. This article does a great job of making HTTPS digestible in very simple terms. And yes, it uses carrier pigeons as an analogy!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Pomsky, A modern regular expression language",
        "url": "https://pomsky-lang.org/",
        "description": "They say that **if you solve a problem with a regex you now have 2 problems**! Pomsky isn't going to fix that but it might make writing regular expressions a much easier and enjoyable experience!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The Ultimate React Form Abstraction",
        "url": "https://www.brendonovich.dev/blog/the-ultimate-form-abstraction",
        "description": "Forms are the foundation of the web, but they are far from being easy. Validation, sanitization, serialization, handling data seamlessly between frontend and backend... You get it, right?! This article explores a good abstraction (including TypeScript) to simplify dealing with forms in React.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "HTTP Response Status Codes",
        "url": "https://dev.to/devland/everything-you-need-to-know-about-http-response-status-codes-2mfb",
        "description": "This is a sweet and simple article to refresh your knowledge of HTTP response status codes. Do you remember what's the difference between 1xx, 2xx, and 3xx responses? What about 4xx and 5xx? If you are still thinking about an answer, it's probably worth investing 5 minutes to read this refresher!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 305,
    "title": "‍🎄 #305: CSS Style Queries",
    "slug": "2022-12-26-292-305-css-style-queries",
    "date": "2022-12-26",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "CSS Style Queries",
        "url": "http://ishadeed.com/article/css-container-style-queries",
        "description": "Recently, the Chrome team released experimental support for a new proposed CSS spec, style queries. In short, they let us query the style of a container, rather than the size only. This can be helpful in cases where querying the container size isn’t enough.",
        "imageUrl": "./b667065ccd1fb0c15ec15c494b038012b762f93481786149c8a089653a60aba1.jpg",
        "featured": true
      },
      {
        "title": "7 Website Performance Metrics to Track for Better UX",
        "url": "https://calibreapp.com/blog/performance-metrics-to-track",
        "description": "With near-limitless number of ways you could measure web performance, are you choosing the most reliable metrics?",
        "imageUrl": "./e603509f7c1bd4e87dc96e7f0f16e2f74709dadf7e0262412e0b4b01c7c6f5e2.jpg",
        "featured": false
      },
      {
        "title": "8 best practices for optimizing Lambda functions",
        "url": "https://cloudash.dev/blog/best-practices-for-optimizing-lambda-functions",
        "description": "Learn how to optimize and get the most out of your serverless functions with these 8 tips by [Tomasz Łakomy](https://twitter.com/tlakomy).",
        "imageUrl": "./83ec0eb3b6b535547c2d6aedd832d426b7b7518ad277a3a836120ee96a705229.jpg",
        "featured": false
      },
      {
        "title": "Fastest Runtime For AWS Lambda Functions",
        "url": "https://blog.thundra.io/fastest-runtime-for-aws-lambda-functions",
        "description": "The performance comparison of Lambda functions written in Java, NodeJS, Python, .Net, and Go languages.",
        "imageUrl": "./5d0b6bc8ac259fba977d89528b1504d80db1a8b7f4ff6d5dc009c4840b8b32d4.jpg",
        "featured": false
      },
      {
        "title": "How We Sped Up Our TypeScript Serverless Builds 10x",
        "url": "https://medium.com/@arsenyyankovski/how-we-sped-up-our-typescript-serverless-builds-ten-times-70-lambdas-under-1-minute-f79a925dfe4c",
        "description": "An interesting case study about how an engineering team changed their build process for serverless functions and managed to reduce the build time by a factor of 10.",
        "imageUrl": "./8ecfa8d3987033de4ecea600248266279de7db758624020f89b8211e533540c2.jpg",
        "featured": false
      },
      {
        "title": "Rendering emails with Svelte",
        "url": "https://escape.tech/blog/sveltemails",
        "description": "Did you ever think you could design emails using a frontend framework such as Svelte? This article explores this idea with a practical use case.",
        "imageUrl": "./747f042eec8f004bf753e01c87185fc86c61f7bc787096265ab8f20a5535d1da.jpg",
        "featured": false
      },
      {
        "title": "Cypress V12 Is A Big Deal",
        "url": "https://glebbahmutov.com/blog/cypress-v12/index.html",
        "description": "Cypress is one of the coolest and most used end to end testing tools for frontend applications. Our friend [Gleb Bahmutov](https://twitter.com/bahmutov) shows us why the latest release of Cypress is actually quite a big deal!",
        "imageUrl": "./fa2eacb082e93a7db9d073fc8ec35f2d235fa243aa18919500b896dd6548bc54.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 304,
    "title": "React Developer Roadmap",
    "slug": "2022-12-19-291-react-developer-roadmap",
    "date": "2022-12-19",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg",
      "author": "Bjarne Stroustrup",
      "authorTitle": "Computer scientist and C++ inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Bjarne_Stroustrup"
    },
    "links": [
      {
        "title": "React Developer Roadmap",
        "url": "https://roadmap.sh/react",
        "description": "If you are doubling down into the frontend world and decided to learn React, you might have realised that learning React alone is not going to cut it for your career. You need to buy into an entire ecosystem of libraries and tools. But where do we even start? This beautiful roadmap can help us to try to understand what are all the relevant areas of study and in which order we should approach them.",
        "imageUrl": "./25d1c6c647f1c33f8e4cfe46a7f81952ced21ac8df5e650d10c6465712ff1cd5.png",
        "featured": true
      },
      {
        "title": "Announcing Vite 4",
        "url": "https://vitejs.dev/blog/announcing-vite4",
        "description": "[Evan](https://evanyou.me/) and the Vite team made Christmas happen early this year by releasing Vite 4! Vite 4 is packed with new features, including a new SWC plugin and running the latest version of Rollup (v3) under the hood. Check out this article if you want to learn how to migrate to this new version.",
        "imageUrl": "./c7ba2cc9e3ad1c3674197949165f0de462e8f53f16adf0c9bb6de2c8c7861932.jpg",
        "featured": false
      },
      {
        "title": "Announcing SvelteKit 1.0",
        "url": "https://svelte.dev/blog/announcing-sveltekit-1.0",
        "description": "If you need one more Christmas present, [Rich](https://twitter.com/Rich_Harris) & friends are here to deliver! SvelteKit 1.0 is finally out, after 2 years in development. This first stable marks the time when you can finally build fullstack web applications mostly using Svelte and a solid (pun intended) ecosystem of related tools. Check it out and give it a spin. It's quite good!",
        "imageUrl": "./9d8e804b4e3c6c64d86558011a1e419ae43a24ff11e8ed69f740da159e28b21a.jpg",
        "featured": false
      },
      {
        "title": "Beyond the basics of Node.js testing",
        "url": "https://github.com/testjavascript/nodejs-integration-tests-best-practices",
        "description": "Are you struggling to test your JavaScript and Node.js applications? If the answer is YES, you should check out this repository. It is full of best practices and examples ready to be used. This Christmas take your JavaScript testing to the next level.",
        "imageUrl": "./5e59cc74034240800e4d8b3605e8632abbf0120a82297c390eba8d58d1b05efe.jpg",
        "featured": false
      },
      {
        "title": "When to use gRPC vs GraphQL",
        "url": "https://stackoverflow.blog/2022/11/28/when-to-use-grpc-vs-graphql",
        "description": "If you are tired of REST and looking for some alternative you are probably wondering whether you should go for gRPC or GraphQL (leaving aside tRPC for now)... This article digs deep into these two standards trying to see where they work best. A great read if you are in the process of making a tech decision for your next project.",
        "imageUrl": "./60a2007a3d588c97f778c1ce9a0baca978bbda881403a5cf9f7e170241ca0db5.jpg",
        "featured": false
      },
      {
        "title": "D2 - Diagram Scripting Language",
        "url": "https://d2lang.com/tour/intro",
        "description": "D2 is a diagram scripting language that turns text into diagrams. It is the perfect choice if you want to version your diagram and manage them \"as code\". Check out this quick tour to have a feeling for what it looks like to work with it.",
        "imageUrl": "./da60403034c886bf5c9b90b87dda6b906751b45540271e59fcc2358bf2b15b7e.jpg",
        "featured": false
      },
      {
        "title": "Introducing Codux",
        "url": "https://dev.to/codux/introducing-codux-15j5",
        "description": "Have you ever dreamed of a Visual React editor that allows you to drag and drop components, and change properties in a live view while synchronizing every change to your file system? Well, dream no more, Codux promises exactly this kind of experience. We haven't tried it yet, but the demo in the article looks incredibly promising.",
        "imageUrl": "./f53695631ef85d54412f4c04258533004f0fac7b632f3d562f18bd650fd31774.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Docker in Action",
      "author": "Jeff Nickoloff",
      "description": "After starting with a clear explanation of the Docker model, you will learn how to package applications in containers, including techniques for testing and distributing applications. You will also learn how to run programs securely and how to manage shared resources. Using carefully designed examples, the book teaches you how to orchestrate containers and applications from installation to removal. Along the way, you'll discover techniques for using Docker on systems ranging from dev-and-test machines to full-scale cloud deployments.",
      "coverImageUrl": "./f7904cb457d00eac2148258f1c19521c542a8bdd85bebcf49fa71431fd10b07f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633430235/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633430235/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 303,
    "title": "Can't Unsee",
    "slug": "2022-12-12-290-can-t-unsee",
    "date": "2022-12-12",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "Can't Unsee",
        "url": "https://cantunsee.space/",
        "description": "A game where you need to pick the design that is most correct. Test your attention to details and get better at UX and UI design! A great entertainment if you are getting bored of Advent of Code!",
        "imageUrl": "./f8edaed2792cf57cad586205366975d31283b2ba329c55886177ed5d7b4b1052.jpg",
        "featured": true
      },
      {
        "title": "Building A Virtual Machine inside ChatGPT",
        "url": "https://engraved.blog/building-a-virtual-machine-inside",
        "description": "Unless you have been living under a rock, you have heard of this new ChatGPT assistant made by OpenAI. Did you know, that you can run a whole virtual machine inside of ChatGPT? Well sorta, but check out this article if you are curious to find out more!",
        "imageUrl": "./e408a6d5aa53f282139b030dd36ed2b6a9f67f59d8ca907fbf678b5c983c1dcf.jpg",
        "featured": false
      },
      {
        "title": "Wordmark",
        "url": "https://wordmark.it/",
        "description": "Wordmark is an interactive website that helps to discover and choose fonts by quickly displaying your text with your fonts. If you are looking for a simple way to give your websites a unique touch, Woodmark can be a very effective option.",
        "imageUrl": "./f629efb1fa40996f55d3ad2778eb9a9445c882e6fded2f142f0f1005202d80c9.jpg",
        "featured": false
      },
      {
        "title": "DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together",
        "url": "https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together",
        "description": "In your career, you might have come across design principles such as DDD. Hexagonal architectures, Onion architecture, Clean Code, CQRS. While there is some significant overlap between all of them, they are somewhat different and it's important to appreciate these differences. This blog post is a great way to explore these topics and compare them, giving you a full perspective on the best techniques to organize large and complex applications.",
        "imageUrl": "./481b203ec9c0ad454df3ca910794eb0b1d7ca8608fb8ec79a51b95327bab111f.jpg",
        "featured": false
      },
      {
        "title": "The large, small, and dynamic viewport units",
        "url": "https://web.dev/viewport-units",
        "description": "If you want to design a hero section that fills up the area above the fold, it is trickier than you might expect. You might be thinking of just relying on a simple `height: 100vh` rule, but be ready to see unexpected results on mobile, where browsers might have a toolbar at the bottom. This article explores `svh` and `lvh`, 2 new CSS units that give you more control in these kinds of situations.",
        "imageUrl": "./432723a4994a0984dce6186916000c64f6c3a7393790a52a0ca99a1d6a1a55ef.png",
        "featured": false
      },
      {
        "title": "Cache invalidation really is one of the hardest problems in computer science",
        "url": "https://surfingcomplexity.blog/2022/11/25/cache-invalidation-really-is-one-of-the-hardest-things-in-computer-science",
        "description": "You know the saying: \"There are two different things in computer science...\", right? Well, if you did not really believe in it so far, here's an article that should change your mind!",
        "imageUrl": "./8e05cf36d9b5efd476ba532d3c98376749dc6f3c8cf0cd12578a78383504e554.png",
        "featured": false
      },
      {
        "title": "Working with Zustand",
        "url": "https://tkdodo.eu/blog/working-with-zustand",
        "description": "Let's dive into some tips for working with Zustand - one of the most interesting client state management libraries available for React. Just in case you want to ditch the poor Redux...",
        "imageUrl": "./0434b662cf218592a046c3105edc7f197d8675502af60a74ddad8f298f0ac1d2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 302,
    "title": "UI components for Vue.js and CSS framework agnostic",
    "slug": "2022-12-05-289-ui-components-for-vue-js-and-css-framework-agnostic",
    "date": "2022-12-05",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "UI components for Vue.js and CSS framework agnostic",
        "url": "https://oruga.io/",
        "description": "Oruga UI is like a caterpillar, minimal and yet functional. It's a Vue.js components system that is quite lightweight and aims to give you a bunch of functionality without forcing you to adopt a specific visual style. If you are using Vue this is definitely worth checking out!",
        "imageUrl": "./cd61dbb42a8123375a5e6af2985f38f45f26891ea51e4b41bca4272996d5f859.jpg",
        "featured": true
      },
      {
        "title": "Performance Cards: Designing with Meaning and Empathy",
        "url": "https://spotify.design/article/performance-cards-designing-with-empathy-and-meaning",
        "description": "Spotify created an interesting card game that can be used to challenge the way you think and serve access-constrained users with these cards. Really an awesome concept to put more focus into designing for accessibility. Even if you are not into accessibility this is a really good read and it's recommended if you build web products.",
        "imageUrl": "./a4cc4928891657a2d5068697052daac3fb55e76595742832c0af4a5e855cf40c.jpg",
        "featured": false
      },
      {
        "title": "Node.js Architecture Pitfalls to Avoid",
        "url": "https://blog.appsignal.com/2022/11/23/nodejs-architecture-pitfalls-to-avoid.html",
        "description": "This article explores some common architecture pitfalls in Node.js and showcases how you can avoid them. For instance, it covers how to avoid global state, how to make your code more generic and easy to test, and, how to pick external libraries.",
        "imageUrl": "./87cd5aafa03e755ef60d07f5a3903a7277e92e197555f04e9c1299f64a19d387.jpg",
        "featured": false
      },
      {
        "title": "Node.js animated: Event Loop Phases",
        "url": "https://dev.to/nodedoctors/animated-nodejs-event-loop-phases-1mcp",
        "description": "The event loop is one of these things that even when you think you fully understood, it's still very hard to explain to other people. In this article, the author does a fantastic job explaining the event loop by using lots of animations. Check it out, even if you think you know the event loop already 😜",
        "imageUrl": "./900aab143e0a1a66d70ef2d29b22b820f52d301eb460e02e5d48591a6b653276.jpg",
        "featured": false
      },
      {
        "title": "Making Static Noise From a Weird CSS Gradient Bug",
        "url": "https://css-tricks.com/making-static-noise-from-a-weird-css-gradient-bug",
        "description": "Do you remember that static noise on old TVs with no signal? By reading this article you can recreate that kind of effect and the fun part is that you will be exploiting a weird bug in CSS gradients! Can this be a useful trick for your next web project?",
        "imageUrl": "./be004d5d5af473060ae0348717feeaefbc56440d16907d2d0548c6d8e8e979cb.jpg",
        "featured": false
      },
      {
        "title": "Migrating from warp to axum",
        "url": "https://fasterthanli.me/series/updating-fasterthanli-me-for-2022/part-2",
        "description": "This is a very technical one for those who are more heavily invested in Rust. Axum is a relatively new web framework (from the same authors of Tokio) that is taking more and more traction. In this article, Amos, explains how to migrate a web app from Warp (another web framework) to Axum.",
        "imageUrl": "./1d4c336dd7f43313aa34720c88e575b3213ca58b27b368dab95e8536c0b9474a.jpg",
        "featured": false
      },
      {
        "title": "Futicons",
        "url": "https://futicons.com/",
        "description": "What is the future going to look like? Electric cars, massive batteries, virtual reality, AI, planet travel? Who can tell for sure?! But if you are looking for some futuristic icons that cover all these interesting topics, look no more, **Futicons** is what you need!",
        "imageUrl": "./230292e4780ff6836991a760d143ac429c8fdbca7ce58d47b2b690fac5a5b27e.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 301,
    "title": "Type Scale - A Visual Calculator",
    "slug": "2022-11-28-288-type-scale-a-visual-calculator",
    "date": "2022-11-28",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Type Scale - A Visual Calculator",
        "url": "https://type-scale.com/",
        "description": "Typography is hard (well at least for me)... but good typography makes a massive difference in every design. Good tools like this one can help to come up with designs that respect good typography principles like proportion between the size of titles and paragraphs. Check out Type Scale, I am sure you are going to love it!",
        "imageUrl": "./07284efcc4fcf2f01e0e65435bf5fb274b324515c53e0d22c4d5b794edab551a.png",
        "featured": true
      },
      {
        "title": "An Interactive Guide to Flexbox",
        "url": "https://joshwcomeau.com/css/interactive-guide-to-flexbox",
        "description": "Our dear [Josh](https://www.joshwcomeau.com/) strikes again. This time with a beautiful interactive article that can teach us everything there's to know about Flexbox. When we truly learn the secrets of the Flexbox layout mode, we can build absolutely incredible things like truly fluid layouts that stretch and shrink without arbitrary breakpoints.",
        "imageUrl": "./9a1c815d1224fa4cbcbdd5c6a7c53fa136faaaa635e73f9070886b3f43b72121.jpg",
        "featured": false
      },
      {
        "title": "Using :has() as a CSS Parent Selector and much more",
        "url": "https://webkit.org/blog/13096/css-has-pseudo-class",
        "description": "It’s been a long-standing dream of front-end developers to have a way to apply CSS to an element based on what’s happening inside that element. The `:has()` pseudo-selector fulfills that dream, so let's find out its true power!",
        "imageUrl": "./bca0538da516be710f6437358eefc4a75add6ae30fa4bdce6d3d1c95afaeca61.jpg",
        "featured": false
      },
      {
        "title": "What’s so great about functional programming anyway?",
        "url": "https://jrsinclair.com/articles/2022/whats-so-great-about-functional-programming-anyway",
        "description": "Sometimes I wonder if functional programming is overrated. Don't get me wrong, I actually like it a lot, but I also find that It can get a bit too clever and eventually hard to read... Is there a good tradeoff? I really like this article by [James Sinclair](https://jrsinclair.com/) where he presents tons of practical examples on how to apply functional programming pragmatically in a **JavaScript** project.",
        "imageUrl": "./47834543c922cd959054896ff4a22b0372e8f8ec62ac74408767ac508ad704f1.jpg",
        "featured": false
      },
      {
        "title": "Why you should never use px to set font-size in CSS",
        "url": "https://joshcollinsworth.com/blog/never-use-px-for-font-size",
        "description": "Many developers seem to believe there's no difference between px and other CSS units. Let's dispel that myth, for the sake of better accessibility.",
        "imageUrl": "./05dda66849477ddabc48f156368be2500333775e40dae918f42e5e0d49f68345.jpg",
        "featured": false
      },
      {
        "title": "What Is the Open Web?",
        "url": "https://prototypr.io/post/open-web",
        "description": "A working definition of an Open Web and what we can strive for to building an open and sustainable internet.",
        "imageUrl": "./f491edd390766c6e159e3fc7b85a2401b23e846e3a24242f6a3b45f6493d2477.jpg",
        "featured": false
      },
      {
        "title": "An open-source music player",
        "url": "https://github.com/madzadev/audio-player",
        "description": "Have you ever wondered what it takes to build an music players on the web? Yes, just HTML, CSS and JavaScript! If you are curious you can check out this open source implementation to get some ideas!",
        "imageUrl": "./a8add18fb6f2040836c929eecfa12e70ae9ddd0e9ea5277d824f22c4c0617601.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 300,
    "title": "Thirteen Years of Go",
    "slug": "2022-11-21-287-thirteen-years-of-go",
    "date": "2022-11-21",
    "templateType": "old-mailchimp",
    "intro": "300 🎉\n\nThis is issue #300! It has been quite a journey, so let's just celebrate with a \"random\" GIF!",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Thirteen Years of Go",
        "url": "https://go.dev/blog/13years",
        "description": "Do you like Go (Google's own programming language)? It's a great language if you ask me but even if you are not a big fan of it, it's still worth remarking that Go is not a 13-year-old language! In this awesome post, Russ Cox (core team) reflects on the Go journey and wishes it a \"Happy Birthday\"!",
        "imageUrl": "./f28ed3e04441f2f9c135fc7511e22034fe1c4c8943fb0eff9d12c6893377fe22.jpg",
        "featured": true
      },
      {
        "title": "Python Asyncio: The Complete Guide",
        "url": "https://superfastpython.com/python-asyncio",
        "description": "If you thought async/await existed only in JavaScript you are missing out on one of the most interesting recent additions to Python... Asyncio allows us to use asynchronous programming with coroutine-based concurrency in Python. Although asyncio has been available in Python for many years now, it remains one of the most under utilized features of the language. So check this our if you write any Python!",
        "imageUrl": "./90aad768a95ee97ea069000a225146d360e2fd376c5bf5e59a87816c6a4b3c98.jpg",
        "featured": false
      },
      {
        "title": "Jamstack Community Survey Results 2022",
        "url": "https://jamstack.org/survey/2022",
        "description": "If you like to build static websites as much as I do, you should check out the Jamstack community survey result for this year. It's interesting because it doesn't just highlight the trends in the world of static websites but covers also more generic trends in terms of employment and where the world of web development is going. Yes, WordPress is still one of the most used tools to build websites... 🤷‍♀️",
        "imageUrl": "./a278c4a31f87b48033878ea83fc7303d4d7ec925d3bd50c657ab3fa256c09203.jpg",
        "featured": false
      },
      {
        "title": "Experiments with Astro and the Shared Element Transition API",
        "url": "https://maxiferreira.com/blog/astro-page-transitions",
        "description": "This article presents a fantastic transition effect that you can achieve while transitioning between pages in a Astro website. Quite a clever trick for a multi-page application (MPA) framework like Astro...",
        "imageUrl": "./ba38187c10ae2b1723c2fb9dbeae09d7851a58061016afecb55cc8953b032891.jpg",
        "featured": false
      },
      {
        "title": "Server-side rendering micro-frontends",
        "url": "https://aws.amazon.com/blogs/compute/server-side-rendering-micro-frontends-the-architecture",
        "description": "Our good friend [Luca Mezzalira](https://twitter.com/lucamezzalira), architect at AWS and worldwide expert on Micro-frontends, wrote an awesome post that highlights an architecture that you could be using on AWS to host and serve micro-frontends at scale. This is actually the first post of a series. The next post will explore the UI composer and micro-frontend discovery implementations.",
        "imageUrl": "./bbf696ffb5df1d59062d03f2b62267882a3ab49411d9b75e78b19ddf3116e0e9.jpg",
        "featured": false
      },
      {
        "title": "Inside the mind of a frontend developer: Hero section",
        "url": "http://ishadeed.com/article/inside-frontend-developer-mind-hero-section",
        "description": "How does a web frontend developer (and designer) think about the hero section of a new website? [Ahmad Shadeed](https://twitter.com/shadeed9), whose articles we have been featuring many times, explores this idea with an excellent tutorial that you should rely on when building your next hero section!",
        "imageUrl": "./136bcea4a217dde6cfaa75943db3b19e350e2f69587b15a0d05f5eb2854d7819.jpg",
        "featured": false
      },
      {
        "title": "34 Must Know Terms for Embedded Rust Newbies",
        "url": "https://apollolabsblog.hashnode.dev/34-must-know-terms-for-embedded-rust-newbies",
        "description": "I think at this point it's no secret that I really enjoy Rust... But I do know very little about embedded computing. So I found this blog post very fascinating and great for an intro level to the world of embedded... I know it's not strictly web dev related, but we have to step out of our comfort zone sometimes and love to learn foreign things...",
        "imageUrl": "./5b35d6733e814c3d51633724bf10636a26b5154d79c583c3006ee9925cfc539a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 299,
    "title": "Announcing Rome v10",
    "slug": "2022-11-14-286-announcing-rome-v10",
    "date": "2022-11-14",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible",
      "author": "Alvin Toffler",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "Announcing Rome v10",
        "url": "https://rome.tools/blog/2022/11/08/rome-10/",
        "description": "The JavaScript tooling world is being taken by a storm of innovation featuring lower level languages like Rust or Go. This time, Rome, a new-ish tool written in Rust, aims to take over on ESLint and Prettier (and Babel) by offering a compatible API but much better performance! Check out the announcement to learn how it works!",
        "imageUrl": "./062d3c609ee94ce1a6d194740585303f9702d53a4a57cde79a8d1458db1f7dd2.png",
        "featured": true
      },
      {
        "title": "What is a realm in JavaScript?",
        "url": "https://weizman.github.io/",
        "description": "This is a concept that is not discussed enough in JavaScript, while it is crucial to really understand how JavaScript is executed by browsers and backend runtimes like Node.js. Read this article to get an easy to understand explanation of what realms are in JavaScript!",
        "imageUrl": "./fc93d0d1c22e63ecfe7af0ef323fc5a67ebdb5e8f286ddb2f39a3de5115245f6.png",
        "featured": false
      },
      {
        "title": "Leaning AWS by using kitties!",
        "url": "https://awsbites.com/58-what-can-kitties-teach-us-about-aws/",
        "description": "In the last episode of [AWS Bites podcast](https://awsbites.com/), we presented 4 project ideas you can build to practice your AWS skills and improve in different areas: web application development, data science, machine learning, and API development. One more reason to check this out: all the projects involve cats 🐈🐈‍⬛.",
        "imageUrl": "./aac66b20c67b3fec4ff9a8195fa4917bcbeaea2f12fa6e2e400d224a3167d076.jpg",
        "featured": false
      },
      {
        "title": "Things your manager might not know",
        "url": "https://jvns.ca/blog/things-your-manager-might-not-know",
        "description": "How can you do the best possible work and help your manager recognize it? The two things are not obviously connected, so what can you do to improve the level of visibility of management and how can you establish healthy and positive communication? [Julia Evans](https://jvns.ca/) gives us some excellent tips here!",
        "imageUrl": "./b32528faa23f1e2c6072c64a26c36d9566b7463bff8a7e6655ca00566f7c0e82.jpg",
        "featured": false
      },
      {
        "title": "How to communicate effectively as a developer",
        "url": "https://karlsutt.com/articles/communicating-effectively-as-a-developer",
        "description": "If you liked the previous article, you'll love this one. It presents some tactical and strategic tips for writing effectively as a software developer. Something we should always strive to do better since written communication is such a big part of our work as software engineers.",
        "imageUrl": "./3fc63cf79675bf980538dcdd9e558a356236c39cb5df1343d301ffc869ea564d.jpg",
        "featured": false
      },
      {
        "title": "Why do we need Generators in JavaScript?",
        "url": "https://jrsinclair.com/articles/2022/why-would-anyone-need-javascript-generator-functions/",
        "description": "Do you use Generator functions when developing software in JavaScript? Probably not, or probably not enough! So why should we care and what are the advantages of using Generator Functions? What kind of problems can they help us with? Let's find out!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Temporal API: better JavaScript Dates",
        "url": "https://vladmihet.hashnode.dev/temporal-api-javascript-dates-but-better",
        "description": "f you've ever worked with Dates in JavaScript, you sure know how clunky and hard to work with they are; that's why, recently, there has been a proposal for a brand new way of working with them, you've guessed it— Temporal API.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Third Edition",
      "author": "Mario Casciaro and Luciano Mammino",
      "description": "Get the best out of Node.js by mastering  its most powerful components and patterns to create modular and scalable applications with ease. Create reusable patterns and modules by leveraging the new features of Node.js. Understand  the asynchronous single thread design of node and grasp all its features and patterns to take advantage of various functions. This unique guide will help you get the most out of Node.js and its ecosystem.",
      "coverImageUrl": "./fac9378d8338322b40d13a6765090cc7bb22fc8b0942e8ecdbba151ca0492925.png",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 298,
    "title": "The Components Gallery",
    "slug": "2022-11-07-285-the-components-gallery",
    "date": "2022-11-07",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "The Components Gallery",
        "url": "https://component.gallery/components",
        "description": "The Component Gallery is a collection of components from the best Design Systems. It's a great resource if you are working on your own component system and trying to brainstorm what kind of components you would need.",
        "imageUrl": "./412fe9611c0e6fb7fac9ab336273816e8628279294b70738a5dce3294c804cb3.jpg",
        "featured": true
      },
      {
        "title": "unfurl",
        "url": "https://github.com/jacktuck/unfurl",
        "description": "Unfurl is an open-source library that allows you to scrape metadata from a URL. It supports oEmbed, Twitter Cards and Open Graph Protocol and it is written in JavaScript (for Node.js). We wrote something similar (but much more primitive) for FullStack bulletin, so we are considering switching to Unfurl!",
        "imageUrl": "./92854604815dd5b2ce4e5d4d62bbac53f101583db33f2edf6f74434c1cd49ccb.jpg",
        "featured": false
      },
      {
        "title": "4 Ways to Fix CORS Errors",
        "url": "https://fatimamo.com/become-a-cors-wizard",
        "description": "CORS is great for our browser security, but let's face it, as developers, CORS can be a PITA! 🥵 This article helps us to solve some of the most common CORS errors and in time of need, it can be a lifesaver!",
        "imageUrl": "./1499cdd159f3fdc2da0356f9bb6851f5185123dd09dca82c332ee7b270869f98.png",
        "featured": false
      },
      {
        "title": "5 Best Node.js Logging Libraries",
        "url": "https://highlight.io/blog/highlight.io",
        "description": "Looking for a Node.js logging library to help you get your project off the ground? Check out our list of the five best options available!",
        "imageUrl": "./475d8f9a8db090f1c8f58e48c64e144686256aeb3bb8d67c38ad53a468f69285.jpg",
        "featured": false
      },
      {
        "title": "Secure JavaScript URL validation",
        "url": "https://snyk.io/blog/secure-javascript-url-validation",
        "description": "URL validation checks whether URLs follow proper URL syntax — the structure every URL must have. URL validation can save our applications from URL-based vulnerabilities like malicious script injection and server-side request forgery (SSRF). This article teaches us how to validate URLs correctly with JavaScript!",
        "imageUrl": "./c4519d2295880f0f567f107dd203a161bb542ba4e529ccd0b56e139374584ec5.jpg",
        "featured": false
      },
      {
        "title": "Setting up API monitoring with Treblle in Sails",
        "url": "https://blog.sailscasts.com/setting-up-api-monitoring-with-treblle-in-sails",
        "description": "Our dear [Kelvin](https://twitter.com/Dominus_Kelvin), recently discovered Treblle - an API monitoring service that lets you monitor your APIs in production and he shows us how to set it up in a Sails project.",
        "imageUrl": "./77b35f6f4deca1658712406e4382f413e5f049155783e9e756f8a8126e77eb3c.jpg",
        "featured": false
      },
      {
        "title": "OG Image Generation",
        "url": "https://vercel.com/docs/concepts/functions/edge-functions/og-image-generation",
        "description": "Vercel just launched a new interesting [open-source project](https://github.com/vercel/satori) to generate OpenGraph images from SVG and this service is also available online if you want to do that on demand.",
        "imageUrl": "./1a8d9f53bfb1a92dc4887fb34a1609f2f9b1f13aa8876453f874c7cb47086964.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 297,
    "title": "Python 3.11 is here, and it's faster",
    "slug": "2022-10-31-284-python-3-11-is-here-and-it-s-faster",
    "date": "2022-10-31",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2022",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "Python 3.11 is here, and it's faster",
        "url": "https://python.org/downloads/release/python-3110",
        "description": "Last week a new big release of the Python Programming Language happened, and version 3.11 brings significant innovation and performance to the table! Among the main additions: built-in support for [TOML](https://toml.io/), typings improvements, and 1.22x performance improvements on the standard benchmarks!",
        "imageUrl": "./ea83afed0b3b83d8d003b9fb640f5176ebb3d27b1105fc66ec6fb29c3c2676bf.png",
        "featured": true
      },
      {
        "title": "The HTTP crash course nobody asked for",
        "url": "https://fasterthanli.me/articles/the-http-crash-course-nobody-asked-for",
        "description": "As web developers and users of the web, we use HTTP pretty much all the time! But do we really know how HTTP works? I am sure that we kinda give it for granted, but we lack the understanding of many of its underlying implementation details. In this article, the amazing [Amos](https://twitter.com/fasterthanlime), gives us a World tour of HTTP 1.1, HTTP 2, HTTPS, and more. One of the best reads of the year for me!",
        "imageUrl": "./017d94f339514fdf9dee9e3c7d16119f06075048e39c571f54cf4f8c80808fdf.jpg",
        "featured": false
      },
      {
        "title": "JavaScript metaprogramming with the decorators API",
        "url": "https://2ality.com/2022/10/javascript-decorators.html",
        "description": "JavaScript decorators have finally reached stage 3! Their latest version is already supported by Babel and will soon be supported by TypeScript. This blog post covers the 2022-03 version (stage 3) of the ECMAScript proposal “Decorators” by Daniel Ehrenberg and Chris Garrett.",
        "imageUrl": "./9437bf20a108872aa5bdabcc15be8a96f152d2320635972268fde62da4ab8d5b.jpg",
        "featured": false
      },
      {
        "title": "Protect a Static Site with Auth0 Using Lambda@Edge and CloudFront",
        "url": "https://matt.martz.codes/protect-a-static-site-with-auth0-using-lambdaedge-and-cloudfront",
        "description": "In this post, you can learn how to use AWS CDK to deploy a static site to an S3 Bucket, distribute the site using CloudFront, and protect it with a CloudFront Lambda@Edge function that connects to Auth0.",
        "imageUrl": "./3f5cf0340dbf01715f745eff521fbaf26495f81f61c296b26b6ba44f3ff96097.jpg",
        "featured": false
      },
      {
        "title": "Practical Parsing in Rust with nom",
        "url": "https://naiveai.hashnode.dev/practical-parsing-nom",
        "description": "Parsing doesn't have to be complicated. In this tutorial, I'll demonstrate nom's simple functional approach, making parsers easy for practical use cases.",
        "imageUrl": "./7424794dcfb3e4546d74a2fe41e3b3c071cb8cdc4d0562a9d735bdc35e569007.jpg",
        "featured": false
      },
      {
        "title": "How We Improved React Loading Times by 70% with Next.js",
        "url": "https://causal.app/blog/next-js",
        "description": "This company switched from Create React App to Next.js and ended up reducing their initial page load times by 70% and unlocking a new level of developer experience. This article describes in detail the why of this performance boost.",
        "imageUrl": "./9b9e2e327e2e2646a3c2f200a8c51fafc36153a7b69d37d1150f9da77ac536fc.jpg",
        "featured": false
      },
      {
        "title": "5 Best Node.js Logging Libraries",
        "url": "https://highlight.io/blog/highlight.io",
        "description": "Looking for a Node.js logging library to help you get your project off the ground? Check out our list of the five best options available!",
        "imageUrl": "./475d8f9a8db090f1c8f58e48c64e144686256aeb3bb8d67c38ad53a468f69285.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 296,
    "title": "Choosing the best Node.js Docker image",
    "slug": "2022-10-24-283-choosing-the-best-node-js-docker-image",
    "date": "2022-10-24",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Choosing the best Node.js Docker image",
        "url": "https://snyk.io/blog/choosing-the-best-node-js-docker-image",
        "description": "Snyk's [Liran Tal](https://twitter.com/liran_tal) gets the spotlight again with this fantastic blog post that discusses strategies for choosing the best node.js Docker image. It's very easy to make your app vulnerable by just picking the wrong image or by not pinning its version. If you ship Node.js containers to production and you like to sleep at night, this is a must-read!",
        "imageUrl": "./8b797a25e0996e2ee10bee5522e11fab062aacdec604933347bfbf5d441c727f.jpg",
        "featured": true
      },
      {
        "title": "The State of AWS Security",
        "url": "https://datadoghq.com/state-of-aws-security",
        "description": "A very interesting article by DataDog where they analyze trends in the implementation of security best practices and took a closer look at various types of misconfigurations that contribute to the most common causes of security breaches. Another security article that is well recommended if you use AWS.",
        "imageUrl": "./c75b7dd2608ad7535cbc83074c3c1cbef896553a61501f4462cab8b20888a95d.jpg",
        "featured": false
      },
      {
        "title": "Trying New Programming Languages to Grow as a Software Engineer",
        "url": "https://cichocinski.dev/blog/trying-new-programming-languages-helped-grow-software-engineer",
        "description": "I always encourage devs to get out of their comfort zone and try new programming languages, especially the ones that are radically different from the ones they know already. You don't need to become an expert in all programming languages, but understanding different paradigms can really change the way you think about coding, for the better!",
        "imageUrl": "./49ddfd83febb48b7f6ec47db32d0935ba01b559591a0beeaa1203ff75957a370.jpg",
        "featured": false
      },
      {
        "title": "melonJS",
        "url": "https://melonjs.org/",
        "description": "A couple of issues ago we had an article about how to build a game in JavaScript from scratch and we also mentioned [Kaboom.js](https://kaboomjs.com/). If you like this kind of content, you should also know about melonJS, an open-source HTML5 game engine that comes with a lovely UI!",
        "imageUrl": "./65b87cefe0e14bb2f2699320ea1505b125885fada200c5aced5f6cc56e84a689.png",
        "featured": false
      },
      {
        "title": "How I created a GameBoy-like game in 13kb",
        "url": "https://medium.com/hypersphere-codes/how-i-created-a-gameboy-like-game-in-13kb-5905bf6166b2",
        "description": "If you are loving content related to making games in JavaScript, here's an incredible case study: the history of Gravepassing, one of the games competing for js13kgames 2022. Yes, that means that the entire game is less than 13kb, assets included!",
        "imageUrl": "./11d634b468cf0c36153f5466dd63c436475deddbf637fc45e14fd38052aacc11.png",
        "featured": false
      },
      {
        "title": "AWS CDK - Best Practices From The Trenches",
        "url": "https://ranthebuilder.cloud/post/aws-cdk-best-practices-from-the-trenches",
        "description": "Best practices and guidelines for working with AWS CDK, learned from using AWS CDK, from development to production over the past 3 years.",
        "imageUrl": "./e2c04588abb93861e1d054c460421ab1c1f57d7226c2981da48f90a4f3565739.jpg",
        "featured": false
      },
      {
        "title": "A Pure CSS Gallery Focus Effect with :not",
        "url": "https://css-tricks.com/a-pure-css-gallery-focus-effect-with-not",
        "description": "Oftentimes in the past, I needed to figure out how to add styles to all elements inside the container but not the hovered one. This article shows how to do exactly that by using the new CSS ***:not*** pseudo-selector.",
        "imageUrl": "./ddf4d08eb2516e7af72fbead1bef8b7e44a63e5fef9226514ed9cd195f3eba1c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 295,
    "title": "Building a PDF Generator using AWS Lambda",
    "slug": "2022-10-17-282-building-a-pdf-generator-using-aws-lambda",
    "date": "2022-10-17",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "Building a PDF Generator using AWS Lambda",
        "url": "https://dev.to/aws-builders/building-a-pdf-generator-using-aws-lambda-4220",
        "description": "Did you ever need to generate a PDF programmatically? Who hasn't, right?! In this article, you can learn how to do this by using AWS Lambda, Amazon SQS, Amazon API Gateway, Amazon S3, AWS Lambda Layers, and Pulumi. Not just a nice intro to Serverless (in case you need one), but also the opportunity to build a generalized service for your future PDF generation needs!",
        "imageUrl": "./e7de831735e2cf0119fb16df9251b2acd65dda52730d60ffc0e70abdd909cf16.jpg",
        "featured": true
      },
      {
        "title": "Randoma11y",
        "url": "https://randoma11y.com/",
        "description": "Ok, if you have been following FullStack Bulleting for a while, you know we love this kind of color generation tool. Why is this one special though? It generates accessible color pairs! If you are like us and struggle to find good color combinations for your web projects, you are going to love this tool!",
        "imageUrl": "./3e84957d9ac0bd58dc1e80d77b3eee94bdd3c1d8e62600848b3e7b9e6c5590ac.png",
        "featured": false
      },
      {
        "title": "Performance Budgets: The Easiest Way to a Faster Site",
        "url": "https://calibreapp.com/blog/performance-budgets",
        "description": "Until you set specific goals, it’s not clear what metric you want to improve, how you’ll do it, and who’s in charge of getting it there. Learn how to set performance budgets to meet and maintain your speed goals.",
        "imageUrl": "./fb5cfce0a6935444fc9f8f556cec32cceac9d100d37300322ead838cfe8a9161.jpg",
        "featured": false
      },
      {
        "title": "Dracula UI 🧛",
        "url": "https://ui.draculatheme.com/",
        "description": "Ok, Halloween is just around the corner, so we couldn't pass on a new project with this cool name! Dracula UI is a dark-first collection of UI patterns and components. If you like dark-themed sites, you can find tons of useful components here!",
        "imageUrl": "./6463b47374977dee2131254c1a5d2f8064ead837921ea7881be5bc5cef520502.jpg",
        "featured": false
      },
      {
        "title": "Using Web Components With Next.js",
        "url": "https://css-tricks.com/using-web-components-with-next-or-any-ssr-framework",
        "description": "Did you know you can use regular Web Components in a Next.js project and have them server-rendered too? Well, we didn't and this article opened up a bunch of new ideas! If you are a heavy Next.js user and you always wanted to use external Web Components, you will find lot of value in this tutorial.",
        "imageUrl": "./dd7e4e44ab70d3d7b5fb999b487c19df5b88ae07b88413d684c95cfb8e06ce57.jpg",
        "featured": false
      },
      {
        "title": "Practical uses of the :has() relational pseudo class",
        "url": "https://utilitybend.com/blog/practical-uses-of-the-has-relational-pseudo-class",
        "description": "If you think that JavaScript is the only thing that keeps evolving all the time, you have been missing out on all the new stuff that is happening in the CSS work! One of these new things has been the \":has()\" pseudo-class. What can you do with it? Read this article to find out!",
        "imageUrl": "./e6ef78e05a7d9e1bcb4e013f9541c81117e8911849f1abba279bd01c066cbefd.jpg",
        "featured": false
      },
      {
        "title": "Functional programming in Go",
        "url": "https://bitfieldconsulting.com/golang/functional",
        "description": "Thanks to generics, there are some interesting new ways to program in Go. This article explains how we can use  functional programming  techniques like Map, Filter, and Reduce, and what kind of problems they might help us to solve.",
        "imageUrl": "./2a01411e40011c17c9d94fb1aa0c46750334e6a613fac0800ca240c329d91e6a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 294,
    "title": "How to Code a 2D Game Using JavaScript",
    "slug": "2022-10-10-281-how-to-code-a-2d-game-using-javascript",
    "date": "2022-10-10",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Should array indices start at 0 or 1?  My compromise of 0.5 was rejected without, I thought, proper consideration",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "How to Code a 2D Game Using JavaScript",
        "url": "https://freecodecamp.org/news/how-to-code-a-2d-game-using-javascript-html-and-css",
        "description": "Last week at NodeConfEU, the awesome [Liran Tal](https://twitter.com/liran_tal) thought me about [Kaboom.js](https://kaboomjs.com/), a JavaScript toolkit that can be used to easily create games in the browser! But if you feel really hardcore, you should know that you don't need a toolkit and you can just build everything from scratch with just JavaScript and a canvas. Do you want to learn how?",
        "imageUrl": "./55bd51c7a03d36229d40e6caa4e84b091786ca09bac585a9cfdf3fe35b373baf.jpg",
        "featured": true
      },
      {
        "title": "Preview.js",
        "url": "https://previewjs.com/",
        "description": "A VSCode plugin that allows you to have a preview pane to render the React, Solid, or Vue components that you are currently working on. I still have to try this but it seems like something that can save you a lot of time if you find yourself doing a lot of components!",
        "imageUrl": "./f759c5e83c6890ca06e8283225a2dd5c5693536c2a739730f5a3390ae46fbfa0.png",
        "featured": false
      },
      {
        "title": "The new wave of Javascript web frameworks",
        "url": "https://frontendmastery.com/posts/the-new-wave-of-javascript-web-frameworks",
        "description": "How did we get from 0 to React? And what's coming next? This article explores the history of JavaScript frameworks (and the evolution of the web really) making it easy to understand the proliferation of new Javascript web frameworks. I like the fact that MPAs (Multi Page Apps) are considered the new rage even though they existed forever... Sometimes innovation just goes in cycles!",
        "imageUrl": "./9437bf20a108872aa5bdabcc15be8a96f152d2320635972268fde62da4ab8d5b.jpg",
        "featured": false
      },
      {
        "title": "Where JavaScript is headed in 2022",
        "url": "https://infoworld.com/article/3674859/where-javascript-is-headed-in-2022.html",
        "description": "This article also explores the future of JavaScript, but rather than looking into frameworks it looks into JavaScript's new features and what those will enable. If you enjoyed the previous article, this one is a good complement!",
        "imageUrl": "./60af559f81459a5774230c52499df4976d3a670b0c7c1112290acfade3fc4f49.jpg",
        "featured": false
      },
      {
        "title": "Minimize Heap Allocations in Node.js",
        "url": "https://blog.appsignal.com/2022/09/28/minimize-heap-allocations-in-nodejs.html",
        "description": "If you care about performance in JavaScript (both frontend and backend) you should be concerned about when and how your code allocates memory in the heap. This article explains in great detail how all of that works and it shows how to prevent memory leaks and minimize heap allocation in your Node.js app.",
        "imageUrl": "./25e79241ab03a519e13d3a27020211333226858bef98082426e46da5f149f202.jpg",
        "featured": false
      },
      {
        "title": "Postgres WASM",
        "url": "https://supabase.com/blog/postgres-wasm",
        "description": "Last week we discussed how [WordPress can now be executed \"serverless\" using WASM](https://make.wordpress.org/core/2022/09/23/client-side-webassembly-wordpress-with-no-server/). More is happening in this space, and this week is the time of PostgreSQL, the king of open-source relational databases. If you are curious to see how this can help in the field of web development, well you just need to check out this article!",
        "imageUrl": "./887f6ad5e548d6d59193b56bffc1b05822b52723dda1b664933aae24ff5c41e1.jpg",
        "featured": false
      },
      {
        "title": "Leonardo Syndrome",
        "url": "https://thoughtfulatlas.bearblog.dev/leonardo-syndrome",
        "description": "This is a non-technical short article, but I think all software engineers (including aspiring ones) will enjoy it! Did you know that Leonardo Da Vinci didn't really have such a great reputation during his time? He was so curious that he was literally incapable of completing anything. He was always moved to explore something else. Apparently, Leonard was not unique in this and the Leonardo Syndrome defines people that suffer from the same overwhelming level of curiosity!",
        "imageUrl": "./4f39d1130c7c326b028399b7aba4fb009c52206c894001c17872d296a1780f8c.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor.  Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 293,
    "title": "Type-Level TypeScript",
    "slug": "2022-10-03-280-type-level-typescript",
    "date": "2022-10-03",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Type-Level TypeScript",
        "url": "https://type-level-typescript.com/",
        "description": "Last week [I learned about some advanced features of TypeScript](https://twitter.com/loige/status/1574800290481672194) and I was blown away. Some of them are crazy; basically, the type system is a Turing-complete language. If you are into TypeScript you might enjoy this advanced course!",
        "imageUrl": "./b4615b535be4448777936c4adb709960a6b81285488bab2f7fd78a916680180b.jpg",
        "featured": true
      },
      {
        "title": "Best practices for creating a modern npm package",
        "url": "https://snyk.io/blog/best-practices-create-modern-npm-package",
        "description": "If you are creating a new package for Node.js/JavaScript you should definitely check out this comprehensive tutorial. It explores step by step what you need to do to create an npm package using modern best practices (as of 2022).",
        "imageUrl": "./1f8f01d6f08b9616ccc6b7b6d535326c9571260fc8d8021cd8fe98ed3ec7b868.jpg",
        "featured": false
      },
      {
        "title": "Experimenting a new syntax to write SVG",
        "url": "https://yuanchuan.dev/experimenting-a-new-syntax-to-write-svg",
        "description": "The [CSS doodle](https://css-doodle.com/) project proposes a new interesting (and definitely more succinct) way of defining the content of an SVG image. I found it awesome to read, but I haven't tried authoring an SVG with it just yet! What do you think?",
        "imageUrl": "./0078317e5bdf8d17960c34b6dcbef9b78c1d37158fad5909c0da73be00c1f3d1.png",
        "featured": false
      },
      {
        "title": "How to Build AWS Lambdas with TypeScript",
        "url": "https://blog.appsignal.com/2022/09/21/how-to-build-aws-lambdas-with-typescript.html",
        "description": "Do you like AWS Lambda but also like to write code in TypeScript? I have to admit it's not yet obvious how to author and deploy Lambda code with TypeScript. In this first part of a four-part series, you can start to learn everything there's to know about this topic!",
        "imageUrl": "./11eba5b8ce3c7961ca20ec231dbbb5cc5c4be5808685de48b9cc15c14e231ce4.jpg",
        "featured": false
      },
      {
        "title": "Why You Shouldn't Mix Promise.then() With Async/Await Syntax",
        "url": "https://maximorlov.com/why-you-shouldnt-mix-promise-then-with-async-await",
        "description": "Mixing Promise.then() with async/await syntax is a recipe for bugs. Here's why you shouldn't do it and what to do instead.",
        "imageUrl": "./fef474f2e85964d28ab8baecfe525c7a6a6ec87018ab05bb3edbf918789fbdda.jpg",
        "featured": false
      },
      {
        "title": "Client-side WebAssembly WordPress with no server",
        "url": "https://make.wordpress.org/core/2022/09/23/client-side-webassembly-wordpress-with-no-server",
        "description": "This early demo runs a full WordPress directly in the browser without a PHP server! While it isn’t fully stable yet, it is a major breakthrough that could transform not just WordPress but the web industry as a whole!",
        "imageUrl": "./f00498a44b798ba846b373637d66ac584e71f89746a8420fedbdde09ac1baf2a.jpg",
        "featured": false
      },
      {
        "title": "Hex strings validation in TypeScript",
        "url": "https://catchts.com/hex-validation",
        "description": "If you liked the first article in this issue, this one provides a specific example of how you can use the TypeScript type system to be able to validate strings that should contain only hex characters (specifically to encode hex colors).",
        "imageUrl": "./8dcc5fde9371b88c71b7c62525e732b389f4fa8d9fbd6db8f483e6c1d6054541.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 292,
    "title": "Designing APIs for humans: error messages",
    "slug": "2022-09-26-279-designing-apis-for-humans-error-messages",
    "date": "2022-09-26",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "Designing APIs for humans: Error messages",
        "url": "https://dev.to/stripe/designing-apis-for-humans-error-messages-94p",
        "description": "Good error message or bad error message? In the words of the author here: *\"Error messages are like letters from the tax authorities. You’d rather not get them, but when you do, you’d prefer them to be clear about what they want you to do next\"*. Let's learn how to write great (and not scary) error messages!",
        "imageUrl": "./69402ef160d567bfee3ed93cc5d594555948defc3a4be6d8c9c13871bb489d0d.jpg",
        "featured": true
      },
      {
        "title": "Which fonts to use for your charts and tables",
        "url": "https://blog.datawrapper.de/fonts-for-data-visualization",
        "description": "If you find yourself designing dashboards or doing a decent amount of data-viz you might be impressed by the difference that a good font can have! Sans-serif or serif typefaces? Lining or oldstyle figures? Narrow or wide? Let's see which fonts work best for data visualizations!",
        "imageUrl": "./18a29abe4b603015a5634b3d9714873ab581a749a0ea943f092dbdede11663eb.jpg",
        "featured": false
      },
      {
        "title": "TinyBase",
        "url": "https://tinybase.org/",
        "description": "TinyBase is a tiny (of course), reactive JavaScript library for structured state and tabular data which can easily use local storage as persistence layer for your web apps. When you can afford to store stuff locally, why should you use a complex and (potentially expensive) cloud alternative?",
        "imageUrl": "./b7ee046c4c2fa52bb5490603dc3bb4c579abfd62a4d93d5af9df39900397f9ce.jpg",
        "featured": false
      },
      {
        "title": "Wasmtime Reaches 1.0: Fast, Safe and Production Ready!",
        "url": "https://bytecodealliance.org/articles/wasmtime-1-0-fast-safe-and-production-ready",
        "description": "As of today, the Wasmtime WebAssembly runtime is now at 1.0! This means that all of us in the Bytecode Alliance agree that it is fully ready to use in production. The production benchmarks from various companies are impressive... Does this mean we are going to see more and more web assembly soon?",
        "imageUrl": "./458dd9b1dc2cbdcd6945a71faca9693ae3dd040ef2821b69313d7149961d03ef.jpg",
        "featured": false
      },
      {
        "title": "Get Started with Astro and Redis",
        "url": "https://upstash.com/blog/getting-started-astro-redis",
        "description": "We talked about Astro before, a new shiny static site generator (and more) that is bringing a lot of innovation. In this article, you can learn how to use Astro together with Redis as a data storage layer.",
        "imageUrl": "./6c3bdbd721c90a170dc9cbbfed11b12c1e4e807283a6aa823a7f8a78a06ad2fc.jpg",
        "featured": false
      },
      {
        "title": "Japa - A simple yet powerful testing framework for Node.js",
        "url": "https://japa.dev/",
        "description": "Japa comes with all the tools you need to test your backend applications. Be it testing JSON APIs using Open API schema or writing browser tests using Playwright.",
        "imageUrl": "./6c96d7f60545167edeaa551a46d734427f3bf41798e2dd0fd0ef7d136165e599.jpg",
        "featured": false
      },
      {
        "title": "SafeQL",
        "url": "https://safeql.dev/",
        "description": "SafeQL is an ESLint plugin for writing SQL queries in a type-safe way. What it means is that it can warn you when you've misspelled a query (could be a column, table, function, etc.), **before you actually run your code!** That's gonna help save a lot of time!",
        "imageUrl": "./fd95c906ae9f47833925930adee697a674c68de0476542e8927d3710e3302866.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 291,
    "title": "How QRCode works",
    "slug": "2022-09-19-278-how-qrcode-works",
    "date": "2022-09-19",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "How QRCode works 🤯",
        "url": "https://typefully.com/DanHollick/qr-codes-T7tLlNi",
        "description": "If you know me, you have probably noticed that I am fascinated by QRCodes (I even wrote a [Rust decoder for the Covid certificates!](https://github.com/rust-italia/dgc)). I admit though I have never looked into how QRCodes actually encode the data. This post blew my mind. If you are curious to know how you could generate a QRCode from scratch check this one out. I promise it's really fascinating.",
        "imageUrl": "./ed137b194265f878c84831f2aeb9ce3674601125cc71ce18ccdcba3e18beeffd.png",
        "featured": true
      },
      {
        "title": "How the JavaScript DOM Works",
        "url": "https://freecodecamp.org/news/the-javascript-dom-a-practical-tutorial",
        "description": "OK, I admit the previous article was a bit off-topic... Let's look into something closer to the theme of full stack web development: how the DOM (Document Object Model) works! The DOM is a fundamental concept when writing frontend apps in JavaScript, so let's dive in!",
        "imageUrl": "./278f52cfa742300bbb0f75e30e8803cf327bbe61211fe6a0a39c556c80f6e09b.jpg",
        "featured": false
      },
      {
        "title": "useSyncExternalStore - The underrated React API",
        "url": "https://thisweekinreact.com/articles/useSyncExternalStore-the-underrated-react-api",
        "description": "If you are not satisfied with any of the **124354332** different ways of managing state in React, here's a new one for you: **`useSyncExternalStore()`**! It is a new React 18 hook to subscribe to external data sources. It is often used internally by state management libraries - like Redux - to implement a selector system.",
        "imageUrl": "./0c837a907bc5deb1a77fedb54a6c7f30098d21f9e25760f669b2bedeb8fa1968.jpg",
        "featured": false
      },
      {
        "title": "Lightning CSS",
        "url": "https://lightningcss.dev/",
        "description": "Rust disrupts the CSS world too! If you are finding yourself having to minify tons of CSS files in your build process, check Lightning CSS out. It's an extremely fast tool written in Rust, probably the fastest option to minify CSS today! I am planning to add it to the build process of my own website... not because there's a lot of CSS, but just because it can be a fun excuse to try it...",
        "imageUrl": "./ccc1ef33ca54a96bfca82ef590dab4eaba1ab09d2b32961bff5895a27f45ede4.jpg",
        "featured": false
      },
      {
        "title": "Introducing Signals",
        "url": "https://preactjs.com/blog/introducing-signals",
        "description": "Have you tried [SolidJS](https://www.solidjs.com/) already? I did and I loved it! But this is not about SolidJS. Well, it kinda is since **signals** are a concept popularised by Solid, and now it's finding its way into other frameworks. Signals are a way of expressing state that ensures apps stay fast regardless of how complex they get. The **Preact** team has built a generic signals library that you can use with many frameworks!",
        "imageUrl": "./601e3a6b4265f45d08119bdebbed00be217ace76667e77e46ca2a04a8481999c.png",
        "featured": false
      },
      {
        "title": "An overview of Node.js: architecture, APIs, event loop, concurrency",
        "url": "https://2ality.com/2022/09/nodejs-overview.html",
        "description": "The brilliant **Dr. Axel Rauschmayer** has been writing tons of awesome Node.js articles lately and this one is probably one of my favorites... This blog post gives an overview of how Node.js works: What its architecture looks like. How its APIs are structured. A few highlights of its global variables and built-in modules and a lot more!",
        "imageUrl": "./88a666b2abe596611ebbadead2ba85452a363f5c19592f84ac79b70492bee601.png",
        "featured": false
      },
      {
        "title": "Default Exports in JavaScript Modules Are Terrible",
        "url": "https://lloydatkinson.net/posts/2022/default-exports-in-javascript-modules-are-terrible",
        "description": "In JavaScript and Node.js, default exports can lead to mismatched and confusing names. Named exports should be used instead. This opinionated article goes into a lot more detail with many examples and... it has a point!",
        "imageUrl": "./8997a9497d4e8154203ddc4e61c9fe34800e32344343dbe8ac0ac9946b21fd10.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 290,
    "title": "Peter Eckersley, founder of Let's Encrypt, dies at 43",
    "slug": "2022-09-12-277-peter-eckersley-founder-of-let-s-encrypt-dies-at-43",
    "date": "2022-09-12",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "😢 Peter Eckersley, founder of Let's Encrypt, dies at 43",
        "url": "https://techspot.com/news/95870-peter-eckersley-tech-activist-founder-encrypt-dies-43.html",
        "description": "Just a couple of weeks ago I wrote a tweet saying that [Letsencrypt has been one of the best innovations of the latest decade and that it should get more credit](https://twitter.com/loige/status/1565313039884320769?s=21&t=0E_-IFuf51qQH4zB_Um5Pw)… little did I know that Peter Eckersley, Letsencrypt founder, was about to pass away 😢… Peter is not one of the most well-known names in the computer industry, but his contribution to modern internet and technology are notable, so it’s only fair to read a bit about him and discover what he has accomplished!",
        "imageUrl": "./34dcbc190fed1a317d63a3f4ebcc281de4ebf6fe0795e9f85f37a7e0c031e65b.jpg",
        "featured": true
      },
      {
        "title": "IdreesInc/Monocraft: A programming font based on the typeface used in Minecraft",
        "url": "https://github.com/IdreesInc/Monocraft",
        "description": "If you are looking for a new and original programming font to impress your colleagues in your next pairing session, seek no more! Monocraft is a programming font based on the typeface used in Minecraft. I am thinking to use it in one of my [next streams](https://twitch.tv/loige)…",
        "imageUrl": "./abbbe6e2e06cd60665dfb2ea01b22307ea7fad0eba3ec119748c876ac7c0684c.jpg",
        "featured": false
      },
      {
        "title": "uncino: Fast, hooks system for Javascript and Node.js",
        "url": "https://github.com/riktar/uncino",
        "description": "Uncino is a fast, tiny and solid hooks system for Javascript and Node.js. When do you need something like this? When you are writing code that might need to be extended in ways you might not foresee or when you are writing a library that needs to expose some kind of plugin interface.",
        "imageUrl": "./f706d9f02a8e919400bf4f94a9ca3c3761c9d87630945c13f12e5bfe73fb0c2e.jpg",
        "featured": false
      },
      {
        "title": "4 Ways to Minimize Your Dependencies in Node.js",
        "url": "https://blog.appsignal.com/2022/08/31/4-ways-to-minimize-your-dependencies-in-nodejs.html",
        "description": "Less dependencies generally means faster and safer applications! So, let's dive into four methods to minimize your Node.js code!",
        "imageUrl": "./f9f847845082858e573ec27cab7a29778f2be383f5631aaf3e1721c9c198f546.jpg",
        "featured": false
      },
      {
        "title": "So your designer wants stuff to overlap",
        "url": "https://chenhuijing.com/blog/so-your-designer-wants-stuff-to-overlap",
        "description": "Overlapping content can be tricky to achieve in web design with CSS. This article explores a few different techniques that can help you if you are trying to implement a design with overlapping content.",
        "imageUrl": "./fcae74f1386ea418ab9408f58bbbfe0908ca61bc8d1042109a345e0ead92c662.jpg",
        "featured": false
      },
      {
        "title": "Installing and running Node.js bin scripts",
        "url": "https://2ality.com/2022/08/installing-nodejs-bin-scripts.html",
        "description": "The package.json property \"bin\" lets an npm package specify which shell scripts it provides. If we install such a package, Node.js ensures that we can access these shell scripts (so-called bin scripts). This is how things like the serverless framework install themselves into your system. Are you curious to find out more about this?",
        "imageUrl": "./f9d0de9efd05617b7601ccc26917ec7af475bad4b94197adbee2693218894785.jpg",
        "featured": false
      },
      {
        "title": "Adding Social Share Links in Eleventy",
        "url": "https://raymondcamden.com/2022/08/22/adding-social-share-links-in-eleventy",
        "description": "A quick example of adding social sharing links to your Eleventy site. If your readers like your (static) content, you can easily allow them to share it on socials!",
        "imageUrl": "./c8f5f300728ba64ecc949f441933ed317a7b386d69f646fc53d44dde60220252.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449344682/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 289,
    "title": "Time Till Open Source Alternative",
    "slug": "2022-09-03-276-time-till-open-source-alternative",
    "date": "2022-09-03",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "Time Till Open Source Alternative",
        "url": "https://staltz.com/time-till-open-source-alternative.html",
        "description": "In this article, Andre Staltz, presents a very interesting theory: for every successful online business, an open source competitor will eventually emerge. Andre does an awesome job at backing this theory with some data and the data even shows that the time to an OSS alternative is getting shorter and shorter. If you want to start an ambitious open source project, this is probably the right time to do that!",
        "imageUrl": "./7f274d7fd215d591fb7e88c53f60512edd442a2a0d4d8c8b295ace7e681c2cbd.jpg",
        "featured": true
      },
      {
        "title": "soketi: simple, fast, and resilient open-source WebSockets server",
        "url": "https://github.com/soketi/soketi",
        "description": "Soketi is another simple, fast, and resilient open-source WebSockets server. What makes it stand out from the crowd is its modern codebase. Worth a try if you need a web socket server 😉",
        "imageUrl": "./bee14ae1cebfc0cc5be3dda633bf1cd0f7e1ec85a79b82f8507ca5bf32e39fc6.jpg",
        "featured": false
      },
      {
        "title": "Popular Node.js patterns and tools to re-consider",
        "url": "https://practica.dev/blog/popular-nodejs-pattern-and-tools-to-reconsider",
        "description": "Node.js is maturing. Many patterns and frameworks were embraced - as a consequence, developers' productivity dramatically increased in the past years. One downside of maturity is habits - we now reuse existing techniques more often. How is this a problem?",
        "imageUrl": "./623a853d77d724320ca69a3d8b8cd3dcdb3698c94c52addb3ebca680b4c6b75e.jpg",
        "featured": false
      },
      {
        "title": "mozilla/node-convict: Featureful config library for Node.js",
        "url": "https://github.com/mozilla/node-convict",
        "description": "Mentioned as a best practice library in the previous article, node-convict deserves its own space in this issue. This is a quite complete configuration management library for Node.js which you can use to generalise and standardise configuration across your Projects.",
        "imageUrl": "./fb01d0787fcd501f044abd2fa7a48180a20d7d294a8fb3ccdf6065e5028c6bba.jpg",
        "featured": false
      },
      {
        "title": "How to use OpenTelemetry to trace Node.js applications",
        "url": "https://developers.redhat.com/articles/2022/08/23/how-use-opentelemetry-trace-nodejs-applications",
        "description": "Discover how to instrument your Node.js application to troubleshoot production errors in this 5-step demonstration.",
        "imageUrl": "./fbee1c87bdcff06cd93937558506a3ed754c283fab115a1b7d5a7a5921cd5b45.jpg",
        "featured": false
      },
      {
        "title": "Making a Morphing 3D Sphere in Javascript with Three.js",
        "url": "https://fjolt.com/article/javascript-three-js-morphing-sphere",
        "description": "3D effects on the web are becoming more common, and can add something extra to a webpage. Let's look at how to create this 3D morphing sphere effect.",
        "imageUrl": "./712292ed2a9839323c6baabc866eba03687ee0366591ae85dc00f117aa507c7f.jpg",
        "featured": false
      },
      {
        "title": "Types Of Barcodes - 1D & 2D - Scanbot SDK",
        "url": "https://scanbot.io/blog/types-of-barcodes",
        "description": "Ok this is not full stack material, but nonetheless an incredible read. If you are (weird) like me and you are fascinated by QRCodes and other barcodes you will certainly enjoy this overview on the most-used barcode types (1D- and 2D) for retail, logistics, ticketing and more.",
        "imageUrl": "./50ff37dbc0d53443f2ba8d7fcd6b88ee5d1c9f396082c55604eae37980551301.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 288,
    "title": "Why React Re-Renders",
    "slug": "2022-08-29-275-why-react-re-renders",
    "date": "2022-08-29",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "Why React Re-Renders",
        "url": "https://joshwcomeau.com/react/why-react-re-renders",
        "description": "If you really want to understand React (and use it correctly), you need to understand how React manages the rendering lifecycle... And to do that you need to understand when React decides to re-render one or more components! Once again Josh W. Comeau is on the case with an excellent article that can teach us everything there's to know about React rendering (and re-rendering)! Check it out!",
        "imageUrl": "./16e6f29caa9fae9fb3531f003e0822adbfb989d153bac52ab829b91b525ad3f7.jpg",
        "featured": true
      },
      {
        "title": "devbox",
        "url": "https://github.com/jetpack-io/devbox",
        "description": "Instant, easy, predictable shells and containers. **Devbox** promises a much better experience to create containers that can be optimized for consistent local development but also for production, with minimal effort and with faster build times than **buildpacks**. I haven't tried it yet but it seems very promising!",
        "imageUrl": "./8f8be498ca22b7b108c135e4c2b3c8a3e6c7b4beeb442a9f4cd9ea0aed7e0045.jpg",
        "featured": false
      },
      {
        "title": "Dynamic Rendering Is A Workaround",
        "url": "https://seroundtable.com/google-dynamic-rendering-workaround-33897.html",
        "description": "So, Google has been saying that they have been able to process JavaScript SPAs with no problems for the last few years. Now they are taking that back and saying that they won't support JavaScript-rendered websites anymore. This might have a massive impact on SEO for people using JavaScript only frontends, so watch out!",
        "imageUrl": "./c5244624328c6a9fc77494a1b4886e11b063b40cc0aab9c39b1212de32d5fea8.jpg",
        "featured": false
      },
      {
        "title": "Useful media queries",
        "url": "https://mediaquery.style/",
        "description": "What was that media query code again? Yeah, I ask that myself every time I have to touch some CSS... For whatever reason, my brain simply cannot memorize the media query syntax. If you are like me, you might enjoy this awesome website showcasing some of the most common media query expressions and making it super easy to copy-paste them into your CSS.",
        "imageUrl": "./2fefd4ff5fe3e9f35db300de6022d194aff5e6b65a0d8133b4eda87aa02b64e1.jpg",
        "featured": false
      },
      {
        "title": "Constraint Based Design Systems",
        "url": "https://colepeters.dev/posts/an-introduction-to-constraint-based-design-systems",
        "description": "What is a design system really? What are some effective rules that can help you to come up with a great consistent design? Effective designs optimize for constraints. These constraints are not just useful, they are critical! If you want to learn more about this, check out this awesome essay by Cole Peters.",
        "imageUrl": "./7f274d7fd215d591fb7e88c53f60512edd442a2a0d4d8c8b295ace7e681c2cbd.jpg",
        "featured": false
      },
      {
        "title": "How to define dark/light mode images in GitHub Markdown",
        "url": "https://stefanjudis.com/notes/how-to-define-dark-light-mode-images-in-github-markdown",
        "description": "GitHub has recently announced a new syntax to allow us to easily support different images for light/dark modes. Finally, we won't have those invisible diagrams for users looking at our repos in dark mode 🥲",
        "imageUrl": "./92b566bbf89df81d0769db5094d4a1cb2259a00840cdf0a798f69731cf177da0.jpg",
        "featured": false
      },
      {
        "title": "The minimum TypeScript you need for React",
        "url": "https://ente.io/blog/tech/typescript-for-react",
        "description": "Most people love TypeScript. I am still in a kinda love/hate relationship with it, but that's probably just me! 😅 If you like TypeScript, you should definitely take advantage of it, but you shouldn't buy too much into it! So what's the right balance? In the context of a React project you can get a lot of value from TypeScript with minimal effort and this article does a great job at showcasing a possible setup.",
        "imageUrl": "./ff19495c0c5a2f7e76bf0a4e7fa17335ebb20642226da4c79dbec97363f84306.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 287,
    "title": "JavaScript Visualized: Event Loop",
    "slug": "2022-08-22-274-javascript-visualized-event-loop",
    "date": "2022-08-22",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "JavaScript Visualized: Event Loop",
        "url": "https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif",
        "description": "The event loop is probably one of the most misleading and misunderstood pieces of the JavaScript ecosystem. This article does a fantastic job by explaining how it work in a clear way using illustrations and animations. Get finally rid of the fear of the event loop!",
        "imageUrl": "./6424d6b0fd3c155b6f675cc60977dd873b0f9994ca6412c9e441f4a79e249182.jpg",
        "featured": true
      },
      {
        "title": "Redis Explained",
        "url": "https://architecturenotes.co/redis",
        "description": "If the event loop doesn't scare you, but instead you are trying to get more comfortable with Redis and understand its inner workings, make sure to check out this other awesome illustrated article!",
        "imageUrl": "./61ef35b363fdff9f5163be40db60d4859930f1a3ade3beb7f51ebe0548223fed.jpg",
        "featured": false
      },
      {
        "title": "How To Use Multithreading in Node.js",
        "url": "https://digitalocean.com/community/tutorials/how-to-use-multithreading-in-node-js",
        "description": "Who said that JavaScript and Node.js are single-threaded!?! That's true, but also not! How? Check out this article to find out that you can actually use threads with Node.js if you really want to!",
        "imageUrl": "./2de4d73672780e7643fbb0d342def1e0e96a83a94bc1870202b241a424e6d647.jpg",
        "featured": false
      },
      {
        "title": "SSH Tips and Tricks",
        "url": "https://carlosbecker.dev/posts/ssh-tips-and-tricks",
        "description": "SSH is one of those tools that you never know enough! This article does a great job explaining some of the more advanced features that might come in handy when using SSH heavily during your daily routine!",
        "imageUrl": "./40eee4a4596fd1a20794b81350ed98081485ff108d1ea796ceb389ef2552639b.png",
        "featured": false
      },
      {
        "title": "Accounting for Developers",
        "url": "https://moderntreasury.com/journal/accounting-for-developers-part-i",
        "description": "In this first part of a two-part series, we walk through basic accounting principles for anyone building products that move and track money. This is a really interesting topic which can also teach you a thing or two about how to accounting correctly!",
        "imageUrl": "./6b6124d685658b1ed182cf22026343ba3f1ccc804f2216113979b7a93fc62269.jpg",
        "featured": false
      },
      {
        "title": "GoogleChromeLabs/dark-mode-toggle",
        "url": "https://github.com/GoogleChromeLabs/dark-mode-toggle",
        "description": "A ready-made custom element that allows you to easily put a Dark Mode 🌒 toggle or switch on your site. Directly by GoogleLabs!",
        "imageUrl": "./f6f5c85ae159392844c2878167d9542106601fce385765eeabf278cd8c782342.png",
        "featured": false
      },
      {
        "title": "How to Minify your JavaScript Code",
        "url": "https://getbutterfly.com/code-golfing-tips-tricks-how-to-minify-your-javascript-code",
        "description": "Whether you are into code golfing (the art of writing crazy short snippets of code that do crazy things) or just looking to minify your code, here’s a collection of tips and tricks to help you understand JavaScript intricacies and make your code shorter.",
        "imageUrl": "./e7e3ec58dff3399db15ab7de0ee5705c86e590e6e3b76ea7faac7e0d59de8701.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 286,
    "title": "Boost Your Web Performance",
    "slug": "2022-08-15-273-boost-your-web-performance",
    "date": "2022-08-15",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Boost Your Web Performance",
        "url": "https://smashingmagazine.com/2022/08/core-web-vitals-tools-boost-performance",
        "description": "Identify, compare, analyze and fix your Core Web Vitals scores to boost the web performance of your sites. This article proposes a collection of valuable tools to help you do exactly that.",
        "imageUrl": "./7d529cabe5989c6d6349aad15e1f352291ba0a9b359ea0869a5af02565b2bc6e.jpg",
        "featured": true
      },
      {
        "title": "system.css",
        "url": "https://sakofchit.github.io/system.css",
        "description": "I believe retro-UIs are somewhat timelessly charming. In some previous editions we saw UI toolkits to build windows style websites (including windows 3.1!) Now it's time for a design system for building retro Apple interfaces! I am sure you are going to love it!",
        "imageUrl": "./f9f68582f770b1aaf520d8b82d870de32050b0dd7cc6b05dbd20900c590d385b.png",
        "featured": false
      },
      {
        "title": "GDPR For Developers By Example",
        "url": "https://blog.blether.chat/2022/08/03/gdpr-for-developers-by-example",
        "description": "GDPR has been in place for years now, and we’re starting to learn more and more about how it’s going to be enforced and what it really means.This awesome article presents some learnings directly based on litigation and court decisions!",
        "imageUrl": "./a0ff58b4dbbeaadd7a003a8524877343696ab6d9a18f56e04a37e7795c64ed62.png",
        "featured": false
      },
      {
        "title": "A deep dive into Rust iterators and closures",
        "url": "https://blog.logrocket.com/rust-iterators-closures-deep-dive",
        "description": "One of my favorite things in Rust is the support for iterators in the standard library! In this article, you can learn a lot about how iteration works, but also about closures, another hot Rust topic!",
        "imageUrl": "./d809f9baa37cc0794e554a41156505ce730b1682ab08bb4e0b45a632d6cf67ed.jpg",
        "featured": false
      },
      {
        "title": "Checking if a JavaScript native function is monkey patched",
        "url": "https://mmazzarolo.com/blog/2022-07-30-checking-if-a-javascript-native-function-was-monkey-patched",
        "description": "Have you ever wondered how could you know if a given native JavaScript method has been monkey patched? The author of this article definitely did! In this article, you can deep dive into the available options to check if a JavaScript native function is still clean or has been monkey patched.",
        "imageUrl": "./1058f4b490228b0b42b6b694ee7ff31f80155a23f5150f21f413bb7755db43a2.jpg",
        "featured": false
      },
      {
        "title": "Committing CSS Crimes",
        "url": "https://css-tricks.com/committing-css-crimes",
        "description": "This article talks about CSS crimes... not really if you ask me! I think there are some really clever and original techniques being discussed here! But I will not spoil them: you can check them out yourself! :)",
        "imageUrl": "./34cf0585015dfca154f1e3dea5b96e35a9f86663d1bfc910b3df16e53a9f7abe.jpg",
        "featured": false
      },
      {
        "title": "Astro 1.0",
        "url": "https://astro.build/blog/astro-1",
        "description": "The first stable release of Astro is out now! In case you missed it, Astro is one of the most promising static site generators that allows you to build fast, content-focused websites using the Island architectures and the frontend framework of your choice (among React, Vue, Svelte, and even SolidJS).",
        "imageUrl": "./c5caf0a9fea95a4a76b6226e8bb012c295ca9685d8da6325a1050b30dfddcaf0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 285,
    "title": "Why is JavaScript so messy?",
    "slug": "2022-08-08-272-why-is-javascript-so-messy",
    "date": "2022-08-08",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "Why is JavaScript so messy?",
        "url": "https://twitter.com/loige/status/15549227112263925787",
        "description": "Last week, I wrote a Twitter thread giving my perspective on the history of JavaScript and why its ecosystem might look a bit messy in the eyes of a newcomer to the language. It got quite a bit of positive feedback so I wanted to re-share it here! If you like it give me a follow and consider a re-tweet! Thanks ❤️",
        "imageUrl": "./59dd89ae7b23e24a2c4a15b75025bcbc4be4a49ed9913d1df103534b9a81993c.jpeg",
        "featured": true
      },
      {
        "title": "Cloudscape – AWS own Design System",
        "url": "https://cloudscape.design/",
        "description": "Recently AWS launched Cloudscape, a design system that offers user interface guidelines, front-end components, design resources, and development tools for building user experiences for the cloud. It's interesting to see AWS finally investing in proper UI/UX and I personally look forward to seeing how this product will influence AWS itself (before the broader open source community)!",
        "imageUrl": "./e5edb9aa51be9c6729bae7c67276e06f5d769f4ed6db924991779a6786e886bc.jpg",
        "featured": false
      },
      {
        "title": "Vimified: Learn Vim the Simple Way",
        "url": "https://vimified.com/",
        "description": "I always wanted to get more proficient at Vim. And yet, every time I tried to get better at it I was quickly discouraged and went back to Sublime, Atom or Visual Studio code. But last week I found this new interactive vim training resource which looks awesome! Maybe it's time to give learning Vim properly another shot!",
        "imageUrl": "./1745cc85347b675ec4b25a3037772a9886e90c1de118c22a621f6715b88f4fe8.png",
        "featured": false
      },
      {
        "title": "Roll your own JavaScript runtime",
        "url": "https://deno.com/blog/roll-your-own-javascript-runtime",
        "description": "The folks at Deno wrote a very interesting walk-through that showcases how to create a CLI that executes JavaScript files. This is done in Rust reusing some of the V8 binding libraries written for Deno. After this article, Deno, Bun, and even Node.js should look less magical to you!",
        "imageUrl": "./8f7208390368f6320cc40e3b47f584292acf2995828dab95d3595b4a5c17a181.jpg",
        "featured": false
      },
      {
        "title": "Serverless testing strategy",
        "url": "https://jeromevdl.medium.com/serverless-testing-strategy-b12ada2252f",
        "description": "This article describes and rates different testing options for serverless applications on AWS, and gives a recommended testing strategy. Test is important in every application, but it's even more important in the context of serverless where things are sometimes a bit hard to fully test locally!",
        "imageUrl": "./6713ed980b4ca7982d2904c971ed1a35ee0b73f3e70bda7d75afba729aeeda4d.jpg",
        "featured": false
      },
      {
        "title": "Serverless Internationalisation",
        "url": "https://leejamesgilmore.medium.com/serverless-internationalisation-cf8c8f39a65b",
        "description": "Are you building a product that needs to support multiple languages? Are you building it with Serverless technologies? Well, if you answered YES to both questions I am sure you'll love this article. It provides a great example of building serverless solutions that can easily be extended to support multiple languages and locales.",
        "imageUrl": "./7790675320a3a68106af778a56d76f1736e9f9674dde1783c4b3296b0ecb90f4.jpg",
        "featured": false
      },
      {
        "title": "Load Testing: An Unorthodox Guide",
        "url": "https://marcobehler.com/guides/load-testing",
        "description": "Load test is somewhat of an arcane art. It's hard to do it well and it's hard to get consistent and reliable results. If you want to learn more about this topic, check out this guide to understand how to properly execute load tests, what data to collect during load tests and how to interpret that data.",
        "imageUrl": "./649f68df7b02fcbb96c64b7d63704db100b8ff466c4e120993928dea158a1e2d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 284,
    "title": "Mantine - React components library",
    "slug": "2022-08-01-271-mantine-react-components-library",
    "date": "2022-08-01",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "Mantine - React components library",
        "url": "https://mantine.dev/",
        "description": "Mantine recently published their new 5.0 version of their awesome component library for React. It contains more than 100 customizable components and 40 hooks to cover some of the most common use cases when building a frontend application.",
        "imageUrl": "./02759c246236e42e1bdb102be3ad6c5814318241df76927373f3d58ef23e1165.jpg",
        "featured": true
      },
      {
        "title": "Five Practical Interview Questions Related To Promises",
        "url": "https://rehansattar.dev/five-practical-interview-questions-related-to-promises",
        "description": "Promises are the bane of every JavaScript developer. It doesn't really matter how much time you have spent coding in JavaScript... Promises are still there, waiting to trick you in some unexpected way! It's time to overcome promises and learn some of the most common questions and quirks around JavaScript promises!",
        "imageUrl": "./022c7e31d61e1500c8fc45f3aa9b58654b4663ba627eb1b72691c8df83a33355.png",
        "featured": false
      },
      {
        "title": "SQLite Internals: Pages & B-trees",
        "url": "https://fly.io/blog/sqlite-internals-btree",
        "description": "A nerdy in-depth article about SQLite: if you have always wondered what's inside a database and how a database like SQLite stores its data, you will enjoy this read!",
        "imageUrl": "./b145f9b7c6f36f739b1504d1cc9ac346d5b4f285b2f1a48daae553a27ac12487.jpg",
        "featured": false
      },
      {
        "title": "Can SVG Symbols affect web performance?",
        "url": "https://bstefanski.com/can-svg-symbols-affect-web-performance",
        "description": "When it comes to repeatable SVGs, most people would create a component and reuse it anywhere they want. There's a high chance, that you would be missing some performance freebies. If you're striving for that bang-for-the-buck kind of performance, this article might be interesting for you.",
        "imageUrl": "./dd09b23cf0906bfcccc3fa114394ded7a6bc9baabd87cd111083ac4849e75d46.jpg",
        "featured": false
      },
      {
        "title": "Using Grids in Interface Designs",
        "url": "https://nngroup.com/articles/using-grids-in-interface-designs",
        "description": "Grids help designers create cohesive layouts, allowing end users to easily scan and use interfaces. A good grid adapts to various screen sizes and orientations, ensuring consistency across platforms.",
        "imageUrl": "./7fd9f4c9996e2942ffa0e50426c6d0bfecdef40984c7b86648b025df1bc5829d.jpg",
        "featured": false
      },
      {
        "title": "How to: Make your multilingual website suitable for RTL",
        "url": "https://voorhoede.nl/en/blog/how-to-multilingual-website-rtl-html-css",
        "description": "Making a multilingual website? Here are 4 knowledgeable things to make your website suitable for RTL and LTR languages with just HTML and CSS!",
        "imageUrl": "./332cfcbe2e64cef4a9ce01376ac757fbd24b2b3d45e08b8bee0189db79975a2d.jpg",
        "featured": false
      },
      {
        "title": "Serverless Authorisation 🚀",
        "url": "https://leejamesgilmore.medium.com/serverless-authorisation-e5bd9288f0ff",
        "description": "Part 1 of a series of articles discussing how to implement authorisation in a serverless project. It presents examples of authorisation in serverless solutions alongside both machine to machine and user authentication, using Cognito & Lambda.",
        "imageUrl": "./7c84c8bd7221626f748f994f74276d32c2806d69dc430b0801bd10f0815f094b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 283,
    "title": "Papers for Software Engineers",
    "slug": "2022-07-25-270-papers-for-software-engineers",
    "date": "2022-07-25",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Papers for Software Engineers",
        "url": "https://github.com/facundoolano/software-papers",
        "description": "A curated list of papers for Software Engineers, open source... on GitHub of course! Why should you care? Because you can learn tons of cool stuff about the **history of computing**, how the main **data structures** work or even how **Bitcoin** and **DynamoDB** work behind the scenes.",
        "imageUrl": "./9f01fbc4349984e79c0ea9aa8e922694eeea741d9319794bdf85e3dfb090fd01.jpg",
        "featured": true
      },
      {
        "title": "React Hooks: The Deep Cuts",
        "url": "https://css-tricks.com/react-hooks-the-deep-cuts",
        "description": "Hooks are reusable functions. They allow you to use state and other features (e.g. lifecycle methods and so on) without writing a class. You have probably seen **useState** and **useEffect**, but how much do you know about **useReducer**, **useRef**, **useImperativeHandle**, **useMemo**, and **useCallback**?",
        "imageUrl": "./80738251aba8e9e3c3f89e692c76046c3f57d8d1296ca074ad58629c6d22abdb.jpg",
        "featured": false
      },
      {
        "title": "Async Rust: What is a runtime? How tokio works under the hood",
        "url": "https://kerkour.com/rust-async-await-what-is-a-runtime",
        "description": "This is a very specific Rust article, but it explore a topic that is extremely interesting even if you have been using **async/await** in languages such as **JavaScript**, **Python** or **C#**. There's no better way to understand how async/await works than looking under the hood and seeing how an async executor is made!",
        "imageUrl": "./d757e753c9a8bf45dcb34298f15bc2565a88888b602e46b36d56a64c2c2d0f8f.jpg",
        "featured": false
      },
      {
        "title": "îles",
        "url": "https://iles-docs.netlify.app/",
        "description": "îles (self-proclaimed as \"The Joyful Site Generator\"), is a new static site generator that implements the **island architecture** (made famous by Astro) and supports **partial hydration**. It has out of the box for some of the most common frontend frameworks such as **Preact**, **VueJS**, **Svelte,** and even **SolidJS**!",
        "imageUrl": "./35622ca2d39190d605e27b748550f2abea26be4862e1e2ca522954cae68cb524.jpg",
        "featured": false
      },
      {
        "title": "Lessons Learned From Running Serverless in Production",
        "url": "https://lumigo.io/blog/lessons-learned-running-serverless-in-production",
        "description": "Some great Serverless production tips from Yan Cui, long-time serverless expert, and AWS Hero. Do you want a teaser? What about observability, using multiple AWS accounts, and loading data securely?",
        "imageUrl": "./42d05c4695720e12aeda45719851d283e2f6cfa09a1302b06c59ef90fa00b7c5.jpg",
        "featured": false
      },
      {
        "title": "Rust, SolidJS, and Tauri: Create a cross-platform desktop app",
        "url": "https://blog.logrocket.com/rust-solid-js-tauri-desktop-app",
        "description": "Tauri is a new framework that aims to replace Electron, offering a much more lightweight runtime built in Rust. In this article you can learn how to leverage Tauri with Rust on the backend and SolidJS on the frontend to build very performant desktop applications.",
        "imageUrl": "./2652ba404c2e9f0e1406fdeca17e8b25d66b7c22173562c235fc4698e7cf5864.jpg",
        "featured": false
      },
      {
        "title": "How to Use the Call, Apply, and Bind Functions in JavaScript",
        "url": "https://freecodecamp.org/news/understand-call-apply-and-bind-in-javascript-with-examples",
        "description": "Some of the most misunderstood features of JavaScript are the functions call, apply and bind. If you have been confused by these topics in the past, this article provides an excellent explanation and a bunch of very good examples!",
        "imageUrl": "./8b722419838415fdc457834bd5726bfdff584f22219904f9b512463cbf9d7013.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 282,
    "title": "React components that extends native tags",
    "slug": "2022-07-18-269-react-components-that-extends-native-tags",
    "date": "2022-07-18",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "React components that extends native tags",
        "url": "https://dev.to/fabiobiondi/how-to-write-react-uikit-components-in-typescript-that-extends-native-elements-1f2k",
        "description": "Have you ever created a **`Button`** component in React?! Well, if you have done your tiny share of React, I am sure it did happen! Well, did you ever wanted an easy way to allow your button component to accept all the properties that you could pass to a native **`<button>`** component and have those type-checked by TypeScript? If the answer is yes, make sure to read about this neat trick!",
        "imageUrl": "./ed0e2aead2babbc71dc1df2a5e410ca8819d4817eb255fadb33ec023762a424d.jpg",
        "featured": true
      },
      {
        "title": "CSS Style queries",
        "url": "https://una.im/style-queries/",
        "description": "You may have heard of **container queries** and the new **contain-level-3** spec which is currently in experimental browsers, but have you heard of **style container queries**, which are also a part of this (very exciting) spec?",
        "imageUrl": "./3f2b4c639646faddea94111d463f60d29439f3d413ebf14d40f9ad3f8c0dafeb.png",
        "featured": false
      },
      {
        "title": "Body Margin 8px",
        "url": "https://miriamsuzanne.com/2022/07/04/body-margin-8px",
        "description": "All browsers add an **8px margin** on the body element – it’s part of the w3c-recommended default stylesheet which browsers generally use as a starting point for their own ‘user agent’ styles. But why 8px? Where does that come from?",
        "imageUrl": "./88d5bf8fadffa6b3b194aaadf91e23af2e238cacedf60df76bc2caa568509f5d.jpg",
        "featured": false
      },
      {
        "title": "The new wave of React state management",
        "url": "https://frontendmastery.com/posts/the-new-wave-of-react-state-management",
        "description": "Is Redux dead?! Certainly not, but we cannot ignore the new wave of frontend state management libraries! In this article, the author explores modern approaches and patterns that can be found in libraries like **Recoil**, **Jotai**, **Zustand**, **Valtio** and how others like **React tracked** and **React query** fit into the ever evolving landscape.",
        "imageUrl": "./d18a0ed1b64a6655d600119e076f3403d25c0e612afb3142b7ec0a0063b705f0.png",
        "featured": false
      },
      {
        "title": "CSS complexity: it's complicated",
        "url": "https://projectwallace.com/blog/css-complexity",
        "description": "There's lots of places in CSS to have complexity, but we tend to focus on selectors most of the time. Let's have a look at other places too.",
        "imageUrl": "./3c9b910cdcd614728f1749201d9d80b64560f99710b95e7e64c163b0f00b5f13.png",
        "featured": false
      },
      {
        "title": "Vite 3.0 is out!",
        "url": "https://vitejs.dev/blog/announcing-vite3.html",
        "description": "Vite is quickly becoming the frontend tool of reference (and for good reasons, that's for sure!). Last week we saw the announcement of a new polished major release: Vite 3! Check out what's new and why you should make the switch to Vite (if you haven't done that already).",
        "imageUrl": "./ba4bc41e72b1b9c18e5d59d9b33fde3e367c07958078226daad8ed638a959dfd.png",
        "featured": false
      },
      {
        "title": "How to Import SVGs in a React and Vite app",
        "url": "https://freecodecamp.org/news/how-to-import-svgs-in-react-and-vite",
        "description": "Are you having difficulties importing SVGs into your React app? This is a problem that many developers face, especially when setting up a new React app with a module bundler like Vite. In this article, you can learn a few different ways of importing SVGs in React and getting your favourite module bundler to play nice with it!",
        "imageUrl": "./412e5d64f3161bb68e0d291064bf0b0b46cacec647f78af08edde47754e4cdd0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Effective Software Testing: A Developer's Guide",
      "author": "Maurício Aniche",
      "description": "Go beyond unit tests! Great software testing makes the entire development process more efficient, from understanding your code before you write it to catching bugs in tricky corner cases.Effective Software Testing teaches you a systematic approach to software testing. You’ll master easy-to-apply techniques to create strong test suites that are specifically engineered for your code.",
      "coverImageUrl": "./6c57ceb468e904ed2311df450f0879ac293e74619b940a790d96497327735e63.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 281,
    "title": "Bun is a fast all-in-one JavaScript runtime",
    "slug": "2022-07-11-268-bun-is-a-fast-all-in-one-javascript-runtime",
    "date": "2022-07-11",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Bun is a fast all-in-one JavaScript runtime",
        "url": "https://bun.sh/",
        "description": "Another day in JS land, another big news! This is the time of Bun, an ambitious new project that iams to be a new all-in-one tool to bundle, transpile, install and run JavaScript & TypeScript projects. Bun is promising also for its performance characteristic and for using the Webkit Core JavaScript engine (rather than V8) while trying to be as compatible as possible with Node.js and Npm. Give it a spin if you are curious!",
        "imageUrl": "./3778a050ed9b8ee3f88a3f1dbb91d76c0d8a52c4640a5bb08b927d7011e1c22f.jpg",
        "featured": true
      },
      {
        "title": "Things You Should Know About Databases",
        "url": "https://architecturenotes.co/things-you-should-know-about-databases",
        "description": "As software engineers we use databases all the time, but often we don't go to deep in understanding how they really work. With this article you could appreciate some of technical details that every engineer should now about DBs like indexes and transactions. Bonus feat: all beautifully illustrated!",
        "imageUrl": "./25401aff965c315838f1bdd8873e0b3bf06f08a3198199a6c0def0afbc62e121.jpg",
        "featured": false
      },
      {
        "title": "ES2022 features list",
        "url": "https://h3manth.com/ES2022",
        "description": "ES2022 is here and it comes with some new interesting features. This page offers a great practical summary of all the new things you can now do with JavaScript by virtue of EcmaScript2022!",
        "imageUrl": "./45d76feab71d2c02c15a68303ef2ac7e6646f940f93980c6c87948ce0e198489.jpg",
        "featured": false
      },
      {
        "title": "Better scrolling through modern CSS",
        "url": "https://blog.mayank.co/better-scrolling-through-modern-css",
        "description": "There's more to scrollbars than you might expect! This article looks at some of the things we can do in 2022 to improve the scrolling experience for our users. Spoiler: finally browsers are giving us more standard access into scrollbars and customisation options, so we can stop creating custom scrollbars!",
        "imageUrl": "./d290db97d20d5e01414a9160ed83b5d99a90b9be19eba93bec5e2bb9d4fec936.png",
        "featured": false
      },
      {
        "title": "create-rust-app",
        "url": "https://github.com/Wulf/create-rust-app",
        "description": "Are you enjoying using Rust in the backend and React in the frontend? Well, if yes, this project is for you! Like **create-react-app**, but it also scaffolds an entire rust backend for you!",
        "imageUrl": "./731c6afdec8dae73ebd00c113a1f9c16e4be55a00a82ea95c3b6bc2181806213.jpg",
        "featured": false
      },
      {
        "title": "Serverless VS PHP shared hosting.",
        "url": "https://blog.hulacorn.com/2022/06/25/serverless-vs-php-shared-hosting/",
        "description": "This is a short rant on what is the promise of Serverless and how does it compare to the old days of running PHP on a shared hosting. Whether you agree with Roberto's perspective or not, it is definitely worth asking ourselves \"*Is technology really evolving, or are we just re-inventing the wheel in a slightly different fashion every time?*\"",
        "imageUrl": "./7846faf6f7bfe792b87b4a9447f8ab2c2f5604c8b34ba4397c71cd91c7d119ce.jpeg",
        "featured": false
      },
      {
        "title": "The Guide To Windows High Contrast Mode",
        "url": "https://smashingmagazine.com/2022/06/guide-windows-high-contrast-mode",
        "description": "In this article, we’ll see how to make our sites friendly for Windows High Contrast Mode by using a good set of practices, including the media query `forced-colors` and its toolset.",
        "imageUrl": "./60d7e505fbcdfad6fb919b77bcc6dafdb19476fbe8b8b085ce77c96698145a2b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 280,
    "title": "Defensive CSS",
    "slug": "2022-07-04-267-defensive-css",
    "date": "2022-07-04",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Defensive CSS",
        "url": "https://defensivecss.dev/",
        "description": "A great selection of practical CSS and design tips that helps in building future-proof user interfaces. Delivered to us by **Ahmad Shadeed**, whose brilliant CSS and design articles we have been covering here multiple times!",
        "imageUrl": "./b1f1838b52b010907574cc221bac4d082cba24a1481a5931cd48104d237f77e8.jpg",
        "featured": true
      },
      {
        "title": "tRPC - End-to-end typesafe APIs made easy",
        "url": "https://trpc.io/",
        "description": "If you like gRPC but mostly write TypeScript for your frontend and backends you should check out tRPC. A new take on RPC that promises automatic typesafety & autocompletion inferred from your API-paths, their input data, & outputs (all thanks to TypeScript).",
        "imageUrl": "./af80a0d576959eeba0d9a90ec8dfa34fdd9f77c2e9a22e9839bae691fd9bf00e.jpg",
        "featured": false
      },
      {
        "title": "When is it OK to cheat on AWS?",
        "url": "https://awsbites.com/43-when-is-it-ok-to-cheat-on-aws/",
        "description": "In this controversial episode of **AWS Bites podcast**, **Eoin** and **Luciano** discuss the controversial topic of when it is ok to ditch AWS for some other SaaS services! Have you ever preferred **Auth0** to **AWS Cognito**? Don't worry we do to and it's ok to cheat on AWS!",
        "imageUrl": "./85ee2ce506798a63858d5c856d02bbfee3dfa2368f481556fd115c55766fdfc5.jpeg",
        "featured": false
      },
      {
        "title": "How We Built Hydrogen: A React Framework for Building Custom Storefronts",
        "url": "https://shopify.engineering/how-we-built-hydrogen",
        "description": "We’ve been building Hydrogen for more than a year. Here’s a look behind the scenes at how we did it, what we learned from making big bets, and what it was like building a new framework from the ground up on experimental technology.",
        "imageUrl": "./5c97d304e872145971aae065984f50359407f08f73b410ad75a8117e86ef3250.jpg",
        "featured": false
      },
      {
        "title": "rust-phf: the perfect hash function",
        "url": "https://simplabs.com/blog/2022/06/23/the-perfect-hash-function",
        "description": "This is for the nerdy algorithms and data structure lovers! In this brilliant article, Tobias Bieniek shows how they made MIME type handling in the crates.io server infinitely faster by using perfect hash functions with the rust-phf crate and moving work from runtime to compile time.",
        "imageUrl": "./fad9c9bd305805fc92825062bb49dc8684545c0c1469df0d6ed41cc5c7894d70.jpg",
        "featured": false
      },
      {
        "title": "My Wonderful HTML Email Workflow",
        "url": "https://joshwcomeau.com/react/wonderful-emails-with-mjml-and-mdx",
        "description": "If you've ever had the misfortune of being tasked with building a template for HTML emails, you know it's tricky business! In this blog post, I share the approach I took to build responsive, client-friendly emails without a single  tag.",
        "imageUrl": "./ce35408c758c125f29dd1dfdfebede9e4852db37a32055a6aea9e1f2cb41f6d5.jpg",
        "featured": false
      },
      {
        "title": "The Right Space Around Headings in Web Typography",
        "url": "https://pimpmytype.com/hugo-md",
        "description": "Typographic Review of Hugo’s blog. We dive into the spacing around headings, talk about font sizes, how to style captions, and I adore his marginalia and favicon. This is an article and a video, so you can pick your favourite medium!",
        "imageUrl": "./cfac2bfe183d0a9fd7a6657cbc613d15125fce74fb74cdf28b0ae1dad287bce4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 279,
    "title": "Vitest",
    "slug": "2022-06-27-266-vitest",
    "date": "2022-06-27",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Vitest",
        "url": "https://vitest.dev/",
        "description": "A blazing fast unit test framework powered by Vite. It is compatible with Jest and it supports TypeScript, ESM and JSX out of the box!",
        "imageUrl": "./e172992081a7891a003026d99c9f556208ab854281e2273d4f90b6f37d177e4c.jpg",
        "featured": true
      },
      {
        "title": "Mobile-First CSS: Is It Time for a Rethink?",
        "url": "https://alistapart.com/article/mobile-first-css-is-it-time-for-a-rethink",
        "description": "Is mobile-first CSS always the best option? Patrick Clancey explores the pros and cons of the classic methodology, as well as when other solutions might work better.",
        "imageUrl": "./613df530420276b1dbddaa8aa505cf364c2242d24c60dd01b01d9db81c966303.jpg",
        "featured": false
      },
      {
        "title": "Object VS Map in JavaScript",
        "url": "https://zhenghao.io/posts/object-vs-map",
        "description": "When should you use a plain JavaScript object as a map or when you should use the more specific `Map` class instead? Which one is faster, which one uses less memory and under which circumstances? In this article you will find some interesting answers to these questions! Spoiler: there is no silver bullet, it always \"depends\".",
        "imageUrl": "./a78070eac0ba915960cd42a0047206753da386e603a0534ddc393180f04c311a.png",
        "featured": false
      },
      {
        "title": "AbortController is your friend",
        "url": "https://whistlr.info/2022/abortcontroller-is-your-friend",
        "description": "The AbortController is ostensibly for fetch, but it has some other ways we can use it too. Do you need examples outside fetch? What about closing **websocket** connections, or removing **event handlers**, or even **React hooks**?",
        "imageUrl": "./983b06834145f8fee443ff9cba75742d940f5c5bd93365f1fcc8b516cb68d871.jpg",
        "featured": false
      },
      {
        "title": "Zero-config TypeScript build and development toolkit",
        "url": "https://github.com/sonnyt/just",
        "description": "**Just** is a new open source projects that aspires to be an excellent Zero-config TypeScript build and development toolkit. Check it out on GitHub!",
        "imageUrl": "./d6681500f07ad97a1c1d681c4fac10c5484b101c19c8659a0cf3d8780a46ca68.jpg",
        "featured": false
      },
      {
        "title": "Monolith, Microservices and Micro Monoliths, A story on rightsizing teams to services.",
        "url": "https://blog.hulacorn.com/2022/06/19/monolith-microservices-and-micro-monoliths-a-story-on-rightsizing-teams-to-services/",
        "description": "This article offers a very interesting take on how going blindly into microservices can introduce too much complexity and lead to disaster. Microservices architectures are not necessarily silver bullets and therefore they need to be used only in the right context!",
        "imageUrl": "./630220ba84d1334b1f1483a1ddf3ce7fa7bb09c38d321b520a1876624acc1a9b.png",
        "featured": false
      },
      {
        "title": "The cost of convenience",
        "url": "https://surma.dev/things/cost-of-convenience",
        "description": "It is tempting to build abstractions so developers have to do less and build more. However, this can easily end up causing frustrations with developers if not done right.",
        "imageUrl": "./3dde5236986f0a8ea019f36f687febbcc7a4cfa0b3e8408ee906ecb87ba57b17.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "AI as a Service",
      "author": "Eóin Shanaghy & Peter Elger",
      "description": "Companies everywhere are moving everyday business processes over to the cloud, and AI is increasingly being given the reins in these tasks. As this massive digital transformation continues, the combination of serverless computing and AI promises to become the de facto standard for business-to-consumer platform development—and developers who can design, develop, implement, and maintain these systems will be in high demand! AI as a Service is a practical handbook to building and implementing serverless AI applications, without bogging you down with a lot of theory. Instead, you'll find easy-to-digest instruction and two complete hands-on serverless AI builds in this must-have guide!",
      "coverImageUrl": "./3ad85ca00f1a077be7e902b50f2e3c5d0f340ed37eac07cc002daaa8c92ab0db.jpeg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 278,
    "title": "Software Engineering - The Soft Parts",
    "slug": "2022-06-20-265-software-engineering-the-soft-parts",
    "date": "2022-06-20",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "Software Engineering - The Soft Parts",
        "url": "https://addyosmani.com/blog/software-engineering-soft-parts",
        "description": "The famous Addy Osmany shares their take on the necessary soft skills that software engineers must develop today. Based on Addy's experience after 10 years at Google, in this article you will learn about mastery, how to think critically, how to build a strong foundation of skills and a lot more! Really well worth your time to read this, if you ask us!",
        "imageUrl": "./7d565dd7352da602f4c336a38944f97e5ed3b5e69744003cab7d20f696e8999a.jpg",
        "featured": true
      },
      {
        "title": "Building Interoperable Web Components That Work",
        "url": "https://css-tricks.com/building-interoperable-web-components-react",
        "description": "This post will show you how to build low-level UI web components once, in a framework-agnostic way, and then re-use them between frameworks.",
        "imageUrl": "./fdc6c04c9df471fd071c29d5af8a132aab36bbc790dcd5be5c93f4ca4aaf335d.jpg",
        "featured": false
      },
      {
        "title": "Using GraphQL with Strawberry, FastAPI, and Next.js",
        "url": "https://blog.logrocket.com/using-graphql-strawberry-fastapi-next-js",
        "description": "Use FastAPI, Strawberry, and GraphQL in a Next.js app that improves developer experience by using types and automating the code generation. A great read if you like GraphQL and you want to write your backend in Python!",
        "imageUrl": "./3619e1ff4fd08e11e26ee87c2e0599fdb0060db12383da6ddc696796348d738e.jpg",
        "featured": false
      },
      {
        "title": "Writing Parsers With nom Parser Combinator Framework",
        "url": "https://iximiuz.com/en/posts/rust-writing-parsers-with-nom",
        "description": "What is a parser combinator framework? Essentially, it's a library that makes heavy use of the builder pattern to help you define a parser for a custom data format. If you want to do this with Rust, you should check out **nom**, a fantastic parser combinator framework that can be used for both text-based and even binary protocols.",
        "imageUrl": "./c07c0d2dc1f08c1cd3ae8737976eacc83d7b188dd1dc6c4c14f677dd82b9f9ab.jpg",
        "featured": false
      },
      {
        "title": "Implementing a robust digital identity",
        "url": "https://github.blog/2022-06-10-implementing-a-robust-digital-identity",
        "description": "Identity management, authentication and authorization are tricky subjects. And yet, we are often confronted with having to deal with these topics! In this article the GitHub team shares their insights on how you can robustly assert and identify a user’s identity.",
        "imageUrl": "./b27ebeb491d49746a8cc38cc39e7bdf7f17ad9638cb67b14e08de061fcf84cc4.jpg",
        "featured": false
      },
      {
        "title": "Makefile for lazy developers",
        "url": "https://localheinz.com/blog/2018/01/24/makefile-for-lazy-developers",
        "description": "I admit I try to avoid makefiles as much as I can and I have been vocal abut it! This was until Andreas Möller, reached out to me sharing an amazing article they wrote a few years back (still very relevant). If you have been hating makefiles with a passion, read this one, it will most likely change your mind.",
        "imageUrl": "./988b457ae46ac0665976aac215bfb0cec25afb3e0d70806f9a76205dd6996558.jpg",
        "featured": false
      },
      {
        "title": "Inconsistent thoughts on database consistency",
        "url": "https://alexdebrie.com/posts/database-consistency",
        "description": "A great blog post by Alex DeBrie (the DynamoDB master!) that thoroughly explains the different concepts of consistency as applied to distributed databases, as well as some issues with the conversation of consistency.",
        "imageUrl": "./1260645f9ee171f7ed1e9255386eb8880d69cd5686ad29edd1434e951980a532.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 277,
    "title": "The end of LocalHost",
    "slug": "2022-06-13-264-the-end-of-localhost",
    "date": "2022-06-13",
    "templateType": "old-mailchimp",
    "intro": "News: I started a new newsletter with the friends of Hulacorn where we share articles and some amazing resources about software engineering. [Check it out](https://hulacorn.ck.page/posts/welcome-to-hulacorn-4)!",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "The end of LocalHost",
        "url": "https://dx.tips/the-end-of-localhost",
        "description": "When building cloud application leveraging more and more SaaS services like Lambda, SQS, and DynamoDB we are faced with an interesting dilemma: **should we still try to develop locally or should we just embrace the cloud as a development environment?** This article offers an interesting take on this question!",
        "imageUrl": "./989d07eb3c0ef42ea63c27117dc8bf27ce895901da71bf49d5ceb346a262e82a.png",
        "featured": true
      },
      {
        "title": "What do you need to know about IAM?",
        "url": "https://awsbites.com/40-what-do-you-need-to-know-about-iam/",
        "description": "Identity Access Management, also known as IAM, can be an intimidating service when getting started with AWS. But IAM is also one of those core services that you can’t really avoid. In this episode of AWS Bites we try to distill down everything that you need to know to understand IAM and start to use it proficiently.",
        "imageUrl": "./699eac681d59c74c55cfcd06b02eaa5bd8ebec5b45c4c6219cd1d0659c2ab9ec.jpg",
        "featured": false
      },
      {
        "title": "A Perfect Table of Contents With HTML + CSS",
        "url": "https://css-tricks.com/a-perfect-table-of-contents-with-html-css",
        "description": "A table of contents is easy to generate in word processing tools, but trickier to pull off in plain HTML and CSS. But I have an approach that works.",
        "imageUrl": "./ca7f1d90b35b543e170ad5f571f455d8c1915455d67da8b20af2a594d7145cbd.jpg",
        "featured": false
      },
      {
        "title": "8 Shocking HTML tips you probably don't know about",
        "url": "https://dev.to/babib/7-shocking-html-tips-you-probably-dont-know-about-ggd",
        "description": "If JavaScript and CSS are becoming more and more powerful, you should not think that there isn't much innovation in the land of HTML. In this article you will find a collection of HTML tips that might blow your mind. Your probably didn't think HTML could be so powerful!",
        "imageUrl": "./4be75c3ba2e05748649bb7e5c4e01d65eac331b3889e76a0cb11e516fec1321c.jpg",
        "featured": false
      },
      {
        "title": "What’s the best lossless image format? PNG, WebP, AVIF, and JPEG XL compared",
        "url": "https://siipo.la/blog/whats-the-best-lossless-image-format-comparing-png-webp-avif-and-jpeg-xl",
        "description": "In a blog post last year, I took a look at lossy image formats and how they stack up. This time, I thought it might be interesting to do a comparison of lossless image formats.",
        "imageUrl": "./5fc2c21a92045ebb18e96d2cfc3967a3f7b353c79190f44739b0fbd33f22ac74.jpg",
        "featured": false
      },
      {
        "title": "Manage Accessible Design System Themes With CSS Color-Contrast()",
        "url": "https://smashingmagazine.com/2022/05/accessible-design-system-themes-css-color-contrast",
        "description": "From working with design handoffs to supporting custom themes in a design system, the CSS `color-contrast()` function can become a cornerstone for developers by enforcing accessible UIs.",
        "imageUrl": "./cbeb8ed999ed826a7c850a346380ca25ce0b101a1315c71fea096cb1489e4dbf.jpg",
        "featured": false
      },
      {
        "title": "How we converted our Node.js library to Deno",
        "url": "https://edgedb.com/blog/how-we-converted-our-node-js-library-to-deno-using-deno",
        "description": "A general purpose methodology for converting a Node.js package to Deno.",
        "imageUrl": "./fac780c8f815a6daa7dbbd10665c674c7ff0cd2f6028e032a1bb5afb03a0fdd4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 276,
    "title": "uroboros program",
    "slug": "2022-06-06-263-uroboros-program",
    "date": "2022-06-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #22, 2022",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "uroboros program",
        "url": "https://github.com/mame/quine-relay",
        "description": "Here's a crazy thing: a ruby script that generates itself passing though generated code in 100+ programming languages. Is this useful? Definitely not, but it shows that there is really no limit to creativity in what you can do with code! ❤️",
        "imageUrl": "./e8c291de1b4bbc93b7b33d078f78cb37bddf5a03d74ca59bcc3f8abf0eec2028.jpg",
        "featured": true
      },
      {
        "title": "UI Coach - Find Inspiration",
        "url": "https://uicoach.io/",
        "description": "UI Coach is an awesome website that generates challenges for you to test your design skills! You get a task, a palette and some other resources. Such a great way to improve your web design skills!",
        "imageUrl": "./6fb95af70a4846f40556d42bb9a873288b87db7ed7e3e9caf0a5b4a9ed7494c0.jpg",
        "featured": false
      },
      {
        "title": "Readability: The Optimal Line Length",
        "url": "https://baymard.com/blog/line-length-readability",
        "description": "The length of text lines substantially impacts their readability — yet this is often overlooked in e-commerce. Let's see some practical piece of advice on how to use line length to improve readability.",
        "imageUrl": "./04dcfe85e33ac43ce618d2fb85c62cd5e0774b78a2024d399b46db38e393c374.jpg",
        "featured": false
      },
      {
        "title": "Interactive Typography Tutorial",
        "url": "https://learnui.design/tools/typography-tutorial.html",
        "description": "If you are looking for more design goodness, here is another great resource for you to learn the fundamentals of typography through this gamified walkthrough with real-time feedback and logic-based principles.",
        "imageUrl": "./9c6e8fb26a439d3a6b7ae35aad86979449b1012375b34aafcd6ef9152d1d2f9b.jpg",
        "featured": false
      },
      {
        "title": "Glide Data Grid",
        "url": "http://grid.glideapps.com/",
        "description": "Glide Data Grid is a no compromise, outrageously fast data grid for your React project, with rich rendering and TypeScript support.",
        "imageUrl": "./560b8dc183d5a855e5a9eddb6bd06cd156b9339df9f1569b7560377633367cd8.jpg",
        "featured": false
      },
      {
        "title": "Eva Icons",
        "url": "https://akveo.github.io/eva-icons",
        "description": "Eva Icons is a pack of 480 delightful icons available for free. Download Eva Icons to use them in your products for mobile and web apps. Available as SVG, PNG, Web Font and Sketch. Open Source, built by the Nebular team.",
        "imageUrl": "./11307659581ed34bc11c4fb90f04ff0f1826a0935135448fc951cfef845b81a6.png",
        "featured": false
      },
      {
        "title": "Google CrUX for performance benchmarks",
        "url": "https://smashingmagazine.com/2022/05/google-crux-analysis-comparison-performance-javascript-frameworks",
        "description": "In this article, Dan Shappir analyzes the performance cost associated with various frameworks and explains the wide variety of framework and platform choices that are currently available to front-end and fullstack developers.",
        "imageUrl": "./ff358fc6eff78878cd2002158d8345a430620a1264a217e73c55ec58d7a66665.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 275,
    "title": "Introduction to Reactivity with SolidJS",
    "slug": "2022-05-30-262-introduction-to-reactivity-with-solidjs",
    "date": "2022-05-30",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "Introduction to Reactivity with SolidJS",
        "url": "https://youtube.com/watch?v=J70HXl1KhWE",
        "description": "SolidJS is all the rage right now and we believe it's for good reasons. So why should you be interested in this framework. Our opinion is that SolidJS is a modern take on frontend development which tries to take the best from React, VueJS and Svelte and leaves out the rest. It also has an interesting approach to reactivity. Check out this video to find out more!",
        "imageUrl": "./2ebbba776415f215f67b8830f7a94c190398a79612947d806bfbf9f58e200fb4.jpg",
        "featured": true
      },
      {
        "title": "First Look At The CSS object-view-box Property",
        "url": "http://ishadeed.com/article/css-object-view-box",
        "description": "A new CSS property that will help in cropping images similar to how we use the viewBox in SVG. This new CSS property can be a great tool for image heavy websites!",
        "imageUrl": "./81d72c5ab65d7ef068b7de36635609bca88d48f024a12cc9075f1755294365a0.jpg",
        "featured": false
      },
      {
        "title": "How to use EventBridge as a Cross-Account Event Backbone",
        "url": "https://dev.to/eoinsha/how-to-use-eventbridge-as-a-cross-account-event-backbone-5fik",
        "description": "If you have ever built big **AWS apps divided into several Micro service applications spread across multiple AWS accounts**, well first of all great stuff! This is a seriously advanced cloud architecture use case, you should be proud! Secondly, how did you **manage communication between services** in such case? In this article the great and mighty Eoin Shanaghy shows us how to do that using EventBridge as a cross-account **event backbone**.",
        "imageUrl": "./93e0e695f1016ed3ba100bc81bcc52a612aa7cf8934537fe5326c747f9cf8392.jpg",
        "featured": false
      },
      {
        "title": "Pure vs Impure Functions",
        "url": "https://suprabhasupi.hashnode.dev/pure-vs-impure-functions",
        "description": "A topic that never gets old and that, in all its simplicity, can have a dramatic effect on how readable, composable, and testable a code base could be. If you still have doubts about why you should think more in terms of pure functions, check out this article!",
        "imageUrl": "./5c857a284bb4ae041663851d13ff19d056f71af1801045543bb437b56c721c91.png",
        "featured": false
      },
      {
        "title": "nathants/libaws: AWS should be easy",
        "url": "https://github.com/nathants/libaws",
        "description": "An interesting open source project that aims at simplify how to manage infrastructure as code with AWS. Something we definitely want to play with. We don't have a strong opinion right now, but we thought it was worth sharing and supporting this ambitious project. If you have tried it, let us know what you think!",
        "imageUrl": "./0a0ff66d8bff72e2c0089449bf5539570ae0ca728ab937b61caa10da034b62e5.jpg",
        "featured": false
      },
      {
        "title": "You don't need void 0 in JavaScript",
        "url": "https://p42.ai/blog/2022-05-10/you-dont-need-void-0",
        "description": "Have you ever seen **`void 0`** in a piece of JavaScript code? I did, but I think this happened to me just a handful of times... So if you are asking what the heck **`void 0`** means and whether you need it or not... well, all the answers you are looking for are in this article!",
        "imageUrl": "./35a4682daa5f2f17ef2b475ddd08ac3a880e073037feb1a33f75b4cbba715375.jpg",
        "featured": false
      },
      {
        "title": "How I Built a Music Player to Showcase my own Tracks 🎵😍",
        "url": "https://madza.hashnode.dev/how-i-built-a-music-player-to-showcase-my-own-tracks",
        "description": "A fantastic case study on how you could build a fully fledged music player on a website using web technologies (yes, I mean JavaScript). Check it out if you are looking to build a media heavy website and want to make it look special and unique!",
        "imageUrl": "./6f378a5347f58df27657ce7fee5a173c925bd8b31e289d654990a9157e56b921.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 274,
    "title": "The Modern JavaScript Tutorial",
    "slug": "2022-05-23-261-the-modern-javascript-tutorial",
    "date": "2022-05-23",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "The Modern JavaScript Tutorial",
        "url": "https://javascript.info/",
        "description": "Modern JavaScript Tutorial is a simple, but detailed explanations with examples and tasks, including: closures, document and events, object oriented programming and more. Everything you need to know to be able to write modern JavaScript code!",
        "imageUrl": "./4d84ca344d3b8ec00190a45b1a319be0fdc56f04bd338d5c550d55765c61ac80.jpg",
        "featured": true
      },
      {
        "title": "Web Applications 101",
        "url": "https://robinwieruch.de/web-applications",
        "description": "Robin Wieruch has recently published a fantastic article that goes into great length about everything you need to know about web applications in modern web development. It's not JavaScript specific and it covers the idea of **traditional websites**, **full-stack web applications**, **client-side** and **server-side rendering/routing**, **single-page applications**, **code splitting**, **APIs**, **microservices**, **static site generation** and more!",
        "imageUrl": "./440281e38da005dd815bcded51766e6f4dabea80b24d9ab574919f3f226f6f27.jpg",
        "featured": false
      },
      {
        "title": "The Surprising Truth About Pixels and Accessibility",
        "url": "https://joshwcomeau.com/css/surprising-truth-about-pixels-and-accessibility",
        "description": "“Should I use pixels or rems?”. In this comprehensive blog post, Josh Comeau answers this question once and for all. You'll learn about the accessibility implications, and how to determine the best unit to use in any scenario.",
        "imageUrl": "./e4bc56e6609dbf5ebe90d696785cc1aa9eb2b6b3f2f143121a80feda23781915.jpg",
        "featured": false
      },
      {
        "title": "How to Use the GitHub Pulls API to Manage Pull Requests",
        "url": "https://fusebit.io/blog/github-pulls-api-manage-prs",
        "description": "The GitHub API is powerful, but getting started might be frustrating. In this post, we'll walk you through a GitHub API pull request.",
        "imageUrl": "./a7cae23ea39bf79d325c691e82a1e5b45db9032d0d3c09b122edf6b658019fa7.jpg",
        "featured": false
      },
      {
        "title": "Web Performance case study",
        "url": "https://eman.hashnode.dev/web-performance-renderlands-saga-book-1",
        "description": "An interesting case study by Renderland showcasing their journey with web performance optimisations. This article covers client and server side rendering, time to first byte, first paint, and other interesting web performance metrics.",
        "imageUrl": "./b9325a606ef5d139935900dbc4b5ffe3150fc0e305e0e4cd6db4ca4ee0352320.png",
        "featured": false
      },
      {
        "title": "How to Design Better APIs",
        "url": "https://quastor.substack.com/p/how-to-design-better-apis",
        "description": "Designing good programmatic API is not easy. This article looks into how Database Storage Engines work: Log Structured vs. Page Oriented. It's a bit of an advanced use case but there is definitely a lot to learn about how to think in terms of APIs for these systems.",
        "imageUrl": "./613e0ed68c1778174f34c701ae844e9daeb787e7f2c96dd640db34267af4e561.jpg",
        "featured": false
      },
      {
        "title": "JavaScript iteration protocols workshop",
        "url": "https://github.com/lmammino/iteration-protocols-workshop",
        "description": "I have been busy in the last couple of weeks designing an open source workshop that covers iteration in JavaScript and Node.js. It explores **generator functions** and **sync/async iteration protocols** and offers tons of **examples** and **exercises**. I hope you will enjoy it!",
        "imageUrl": "./b2004dbdef8cff2073fc2e572ad7734c08e7ff372dacde6c2e1c30ecdfe785d3.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 273,
    "title": "React useEvent RFC",
    "slug": "2022-05-16-260-react-useevent-rfc",
    "date": "2022-05-16",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "React useEvent RFC",
        "url": "https://github.com/reactjs/rfcs/pull/220",
        "description": "React has recently kicked off a new initiative: manage new features through an open RFC process. This is great to see for a framework who has won the bigger share of the current frontend market. If you want to contribute to the future of React, check out the first RFC under discussion: the `useEvent` hook.",
        "imageUrl": "./187450fa3c9e6fb9c6d095cf9b0cb73bf379565fc091646e7d664c9501f667d6.jpg",
        "featured": true
      },
      {
        "title": "JSON Patch",
        "url": "http://jsonpatch.com/",
        "description": "Have you ever heard of JSONPath? No worries if you didn't, this is what we are here for :) JSON Patch aims to be a (relatively) new standard to describe how to update objects. It can be used to implement your own CRUD API in a flexible and generic way. Just make sure to use it only in those cases where you can update without particular business constraints.",
        "imageUrl": "./fd95c906ae9f47833925930adee697a674c68de0476542e8927d3710e3302866.jpg",
        "featured": false
      },
      {
        "title": "If Programming Languages Were Futurama Characters",
        "url": "https://netmeister.org/blog/futurama.html",
        "description": "There is always space for a bit of humor in tech (thankfully). Add to that that everyone has their own favourite (and hated) programming languages. Jan Schaumann, tries to think what programming languages would look like if they were Futurama characters. We believe the result is quite hilarious (and somewhat accurate) and hopefully this article can make your Monday shine a bit more!",
        "imageUrl": "./ae6fa4090a0b9ba3dc67f71371e83fddfc473e1b16e4e34341d77d5807e4a3b0.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Containers",
        "url": "https://tinyclouds.org/javascript_containers",
        "description": "JavaScript is everywhere. JavaScript is a *platform* of its own! But what if we could use JavaScript to be a platform for even more generic compute? What if we can have JavaScript containers?",
        "imageUrl": "./41781d9108ade5d2c3febfa6c0280757cafc90ce79eb7da0517ae2d252ba94cc.jpg",
        "featured": false
      },
      {
        "title": "Magical shell history",
        "url": "https://github.com/ellie/atuin",
        "description": "Apparently there is a trend of rewriting classic unix utilities in Rust. Also, this trend seems to be producing a lot of innovation in a space that allegedly hasn't changed that much in a few decades... This time the tool that was rewritten is `history` and the result is `atuin`. Atuin offers a fresh take on the space of shell history. If you are a unix nerd we are sure you are going to love this!",
        "imageUrl": "./5c9e3cd4fff242e44a7219b1a5c3117ed8070d304dec9c9347894134c748f428.jpg",
        "featured": false
      },
      {
        "title": "Can you use a WebP file as an Open Graph Protocol image?",
        "url": "https://ctrl.blog/entry/webp-ogp.html",
        "description": "Have you ever wondered if it's safe to use more modern web image formats (yes we are talking about WebP) for your Open Graph images? The answer might be a bit complicated than you might want, but it's still a really interesting topic to explore if you care about web, SEO and social sharing.",
        "imageUrl": "./169dada04ca1d14f3ea4790fd87ef7665f5c275d704f561a4b0128afd9852728.jpg",
        "featured": false
      },
      {
        "title": "Managing third party scripts",
        "url": "https://jameshill.dev/articles/managing-third-party-scripts-performance",
        "description": "Negotiating the friction between business and engineering teams over third party scripts. It's definitely not easy, so let's discuss a few important tips!",
        "imageUrl": "./b32528faa23f1e2c6072c64a26c36d9566b7463bff8a7e6655ca00566f7c0e82.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 272,
    "title": "Phosphor Icons",
    "slug": "2022-05-09-259-phosphor-icons",
    "date": "2022-05-09",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "Phosphor Icons",
        "url": "https://phosphoricons.com/",
        "description": "Our favourite pick of the week is Phosphor: a flexible icon family for interfaces, diagrams, presentations... whatever, really. It offers more than **6000 icons**, **multiple line widths** and even a **duotone mode**. Do you already have a project in mind where you could use some new cool icons?",
        "imageUrl": "./5390a86b435e092ed3ff94d2dd1b2e6a179e3395fe4edc913fe8afc1a0304327.jpg",
        "featured": true
      },
      {
        "title": "Wireit for npm scripts",
        "url": "https://github.com/google/wireit",
        "description": "If you ever wanted to turn your npm scripts into something more powerful you should check out this new open source project by Google: Wireit. Wireit allows you to specify dependencies between scripts and to execute them like if they were part of a make file. Probably an overkill for most projects, but if you have a complex build process this can be really useful!",
        "imageUrl": "./b1bf4d48698bdfd9f29295688ce46e42887fd5088789beca5588170178d84b20.jpg",
        "featured": false
      },
      {
        "title": "Building a JavaScript Bundler",
        "url": "https://cpojer.net/posts/building-a-javascript-bundler",
        "description": "Let's face it, we like to believe that JavaScript module bundlers are magic and we don't really want to know what's happening behind the scene when they do their work... But if you ever want to dispel that magic, check out this article (and a video!) to learn the basics of building a JavaScript bundler (from scratch). Brought to use by one of the authors of Jest.",
        "imageUrl": "./218637b6f38bbb7c9a6e2327d780b58c7a60e1f93224fa49f72131111fc77b0c.png",
        "featured": false
      },
      {
        "title": "Designing A Better Carousel UX",
        "url": "https://smashingmagazine.com/2022/04/designing-better-carousel-ux",
        "description": "Carousels don’t have a good reputation, and rightfully so. But we can make them more useful. In this article you can find some interesting examples and tons of Best practices and guidelines to improve the carousel design with honest scrolling direction, labels, thumbnails and grouped prev/next-buttons.",
        "imageUrl": "./026ed61a310445dc0e2dde32638079e6cd2cdfd0949ec70cfdcd9244aff7aee2.jpg",
        "featured": false
      },
      {
        "title": "Lerna has gone. Which Monorepo is right for a Node.js BACKEND now?",
        "url": "https://medium.com/autodesk-tlv/lerna-has-gone-which-monorepo-is-right-for-a-node-js-backend-fc075cad51b0",
        "description": "Did you hear the news? Lerna, one of the most famous tools to handle JavaScript monorepos has been discontinued... Sad news, but what now? Michael Solomon and Yoni Goldberg are here to rescue us and provide us with a few interesting alternatives!",
        "imageUrl": "./e0985d07ac525eb958a273abf457418b243a0625fb4ba174c158d772d1b869f3.jpg",
        "featured": false
      },
      {
        "title": "htmlparser2: The fast & forgiving HTML and XML parser",
        "url": "https://github.com/fb55/htmlparser2",
        "description": "If you ever need to write a Node.js script that extracts data from HTML pages or XML documents (e.g. you are writing a crawler), you should check out this amazing open source library: **htmlparser2**. It is a fast & forgiving HTML and XML open source parser.",
        "imageUrl": "./d56d22cc12bc7bb6010961ff6ac4c31e60a9cf6b6d26bb339095fa14c36fa0bd.jpg",
        "featured": false
      },
      {
        "title": "Lunatic - An Erlang-inspired runtime for WebAssembly",
        "url": "https://lunatic.solutions/",
        "description": "Let's finish up with something a bit ***futuristic***. Lunatic is an open-source WebAssembly runtime and platform for running server-side applications. WebAssembly has the potential to be the future of backend and frontend and if you like Erlang and Elixir, this project might be worth a shot!",
        "imageUrl": "./a5d636484d5a42d8b2fbc2a933e677b949fcb976ac86c3fc8da5f7b5bf7619b9.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 271,
    "title": "daisyUI — Tailwind CSS Components",
    "slug": "2022-05-02-258-daisyui-tailwind-css-components",
    "date": "2022-05-02",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "daisyUI — Tailwind CSS Components",
        "url": "https://daisyui.com/",
        "description": "Last week we discovered DaisyUI, which is a Tailwind-based components library (open and free). This can be a great resource if you enjoy using Tailwind and are looking for ways of speeding up frontend development while maintaining a consistent look-n-feel.",
        "imageUrl": "./bde0c4b68bb92b401b4ead331c506716fc05fd9d5a6bcbd16eedff369c5c7b6c.jpg",
        "featured": true
      },
      {
        "title": "Loaders",
        "url": "https://uiball.com/loaders",
        "description": "MOAR FRONTEND GOODIES PLEAZE! 😛 We hear you!\n\nIf you also find annoying having to think about loading indicators, fear no more! With Loaders you can access a wide collection of free loaders & spinners for your next project. Built with HTML, CSS and SVG. Available for copy-pasta or as a tree-shakeable React component library!",
        "imageUrl": "./77257d8510baa7ee942bb438b09409759632c1da14941fd817f75bffd411826d.jpg",
        "featured": false
      },
      {
        "title": "When To Use Generics in Go",
        "url": "https://go.dev/blog/when-generics",
        "description": "When to use generics when writing Go code, and when not to use them. If you are into Go, you probably heard that Generics all the new rage. But, as with anything, they are not a silver bullet that solves all the problems, so let's learn how to use them best (and when to avoid them).",
        "imageUrl": "./f28ed3e04441f2f9c135fc7511e22034fe1c4c8943fb0eff9d12c6893377fe22.jpg",
        "featured": false
      },
      {
        "title": "Hydration is Pure Overhead",
        "url": "https://builder.io/blog/hydration-is-pure-overhead",
        "description": "A very interesting take on client side hydration (the process of making server-rendered pages interactive on the client side). Most modern frameworks like React consider hydration an integral and unavoidable part of their server-side rendering support. This article begs to differ and makes the point that hydration is not just unnecessary but also it makes your apps slow. But what should we do instead?",
        "imageUrl": "./33c7f6fae8a064cab00a2b1febac8187bdad4cf73f9bfc305da4e488d7aa9a7d.jpg",
        "featured": false
      },
      {
        "title": "The Ultimate Guide To Push Notifications For Developers",
        "url": "https://smashingmagazine.com/2022/04/guide-push-notifications-developers",
        "description": "What are the benefits of using push notifications and what can you use them for? In this article, Lee Munroe explains how to implement them and which practices are best to follow.",
        "imageUrl": "./c777cfafab13ab4b5167cd91f9eda39a582b88c5a3f82a6596e7803c2cd9c467.jpg",
        "featured": false
      },
      {
        "title": "The Front-End Developer's Guide to the Terminal",
        "url": "https://joshwcomeau.com/javascript/terminal-for-js-devs",
        "description": "If you want to learn a modern JavaScript framework like React or Angular, you better be familiar with the terminal! So many frameworks and tools assume that you're proficient with it, without ever explaining it. This blog post is your missing manual, covering all of the most important fundamentals.",
        "imageUrl": "./9ed12bac83bce7959e6fdba21488e380d9cdfc3983db9f05da5eb9a7351806fc.jpg",
        "featured": false
      },
      {
        "title": "CSS Parent Selector",
        "url": "http://ishadeed.com/article/css-has-parent-selector",
        "description": "If you didn't have enough frontend material for this week, let's close this issue with a deep-dive into the CSS `:has` parent selector with some use-cases and examples.",
        "imageUrl": "./ff4e388fe93b3a84359eb4106a1d65658d4de90b7ae07c36a904b405b27530ae.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 270,
    "title": "Amazon Aurora Serverless v2 Generally Available",
    "slug": "2022-04-25-257-amazon-aurora-serverless-v2-generally-available",
    "date": "2022-04-25",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Amazon Aurora Serverless v2: Generally Available",
        "url": "https://aws.amazon.com/blogs/aws/amazon-aurora-serverless-v2-is-generally-available-instant-scaling-for-demanding-workloads",
        "description": "Have you ever needed to install and manage your own relational database? If you did, you know it's always a pain to get scalability and backups right. Even with services like RDS, there is always a lot to configure and it can get very expensive for a casual user! Aurora is fully serverless SQL alternative (compatible with Postgres and MySQL) that promises to take away all this pain and have serverless scalability and pricing. With v2 being generally available we are very excited to see how this can improve our developer experience!",
        "imageUrl": "./4b9e7a33bba9e8d26c4e540193b1cd2b1ceff7d60ad672e5f875cabf3b07242f.jpg",
        "featured": true
      },
      {
        "title": "Picture perfect images with the modern element",
        "url": "https://stackoverflow.blog/2022/03/28/picture-perfect-images-with-the-modern-element",
        "description": "You may not think about images as part of your web dev work, but they can affect your web app's performance more than any other part of your code. This article explores some of the most common image optimization techniques that you can (and should!) use on the web!",
        "imageUrl": "./04122b64985ceb50acf102059e34794dc38599ff689d6f748c8391857fa55d69.jpg",
        "featured": false
      },
      {
        "title": "Chalk.ist - Create beautiful images of your source code",
        "url": "https://chalk.ist/",
        "description": "We are big fans of Carbon when it comes to create nice pictures to share code snippets on social media. Chalk.ist is a new take which promises even better results and more configuration options!",
        "imageUrl": "./62834870c665b94e11091fb07895a8a8245c0a2e0a9d946df045af947943ae3c.jpg",
        "featured": false
      },
      {
        "title": "SVG passthrough precision",
        "url": "https://bjango.com/articles/svgpassthroughprecision",
        "description": "This article is a very interesting piece of research! Have you ever wondered what happens when you load an SVG with an editing software and save it again (without changes)? You might expect your SVG not to change, but in reality almost every software will change a lot of things, including coordinates precision! If that sounds scary, you should check this article out for more details!",
        "imageUrl": "./d854a1a2e6efd5c4f3230233e4311ccb8764f3cb1531385f8b095eb61c5a248b.png",
        "featured": false
      },
      {
        "title": "Node.js v18.0.0 is out! 😱",
        "url": "https://nodejs.org/en/blog/release/v18.0.0",
        "description": "A new major version of Node.js is out and this one comes with a bang 💥 There are a few new additions that we are particularly excited about: native **fetch** support (experimental) and **built-in test runner** (also experimental). But also **Web Streams API** is here! Check the official release notes for more details and examples!",
        "imageUrl": "./99927eff412db92b1d6ca79b4b0ff287f5e62adb5d08b10284e23bff61c8cad8.jpg",
        "featured": false
      },
      {
        "title": "TypeScript and Set Theory",
        "url": "https://ivov.dev/notes/typescript-and-set-theory",
        "description": "OK, I am sure you are wondering what Set Theory has to do with TypeScript... well, actually a lot! This article will show you how does set theory help to understand type assignability and resolution in TypeScript! Worth checking it out if you are trying to strengthen your understanding of type theory and TypeScript!",
        "imageUrl": "./71c5b79a5f6f3136bb8ea7c25f080cd543b9279d369340014e6fec0a8accccca.png",
        "featured": false
      },
      {
        "title": "1x Programming",
        "url": "https://tim.mcnamara.nz/post/667318290442600448/1x-programming",
        "description": "We had a lot of fun joking about 10x engineering lately. But let's take the topic a little bit more seriously now. Our friend Tim McNamara (author of the awesome book [Rust in Action](https://www.rustinaction.com/)) just released a beautiful essay that shows that It’s actually okay to be a 1x programmer... or even a 0.7x programmer!",
        "imageUrl": "./c8cca3c48ac1d2909aee26173d704d88cd5abf53541046755bd153c5c1daee62.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 269,
    "title": "A Guide To Hover And Pointer Media Queries",
    "slug": "2022-04-18-256-a-guide-to-hover-and-pointer-media-queries",
    "date": "2022-04-18",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "A Guide To Hover And Pointer Media Queries",
        "url": "https://smashingmagazine.com/2022/03/guide-hover-pointer-media-queries",
        "description": "In this article, you'll discover how to adapt a site to the different scenarios of a device pointer: whether it has a pointer or not, or how accurate it is. This is important to make sure you provide a great experience to all kinds of users and devices: not just desktop, tablets and mobile phones but also smart TVs!",
        "imageUrl": "./444c3113d7911d1ab9dedb0bed888ab2f6d3e53790472a14ece7328d5718454a.jpg",
        "featured": true
      },
      {
        "title": "JSZip",
        "url": "https://stuk.github.io/jszip",
        "description": "Did you know you can create .zip files using JavaScript? With this library you can even do that in the browser! That's a great way to pre-package downloadable content in one convenient file, on the fly!",
        "imageUrl": "./235766593b25ab7dfbb70a3cb812d8fb0d224064a5d13ccd54a8be8d3fb32c58.png",
        "featured": false
      },
      {
        "title": "Agnostic UI",
        "url": "https://agnosticui.com/",
        "description": "Do you need a UI library but you are not sure which frontend framework you are going to use yet? Or maybe you'll need to use more than one framework... With Agnostic UI you can get a UI library that works well with multiple framework, so it feels like the right choice for the undecided!",
        "imageUrl": "./6f446ca22032ef6ca865985c34f75f4b70993d54df676607158c7d74b2bd9436.png",
        "featured": false
      },
      {
        "title": "Writing Redux Reducers in Rust",
        "url": "https://fiberplane.dev/blog/writing-redux-reducers-in-rust",
        "description": "If you are a web developer and are looking for new excuses to use Rust here is a new one: write Redux reducers with it! Seriously, you can use the power of WASM to do that. Should you really do it, though? Maybe not for the majority of use cases, but it could be fun anyway!",
        "imageUrl": "./2c1cfd60b40fc16e3d8a892f49ee9f1930108492e70203ed799d003ff66efaaa.jpg",
        "featured": false
      },
      {
        "title": "How to Build Lightning Fast APIs with AWS Step Functions",
        "url": "https://readysetcloud.io/blog/allen.helton/how-to-build-lightning-fast-apis-with-aws-step-functions",
        "description": "Step Functions are quickly turning into the de facto standard for building workflows in AWS. Discover how you could configure them to work with your REST APIs.",
        "imageUrl": "./3f33a975658478eb1aebe6b4d0573ec110d404756d93524a55be9cfc2ccc5fbf.jpg",
        "featured": false
      },
      {
        "title": "Optimising a JavaScript library with WebAssembly, a failed attempt!",
        "url": "https://antoniovdlc.me/optimising-a-javascript-library-with-webassembly-a-failed-attempt",
        "description": "Let's talk more about WASM and Rust... One of the main benefit of using it is that it is more performant than plain JavaScript code. Well, it turns out that this is not always the case, so you should think twice before rewriting every JavaScript library in Rust!",
        "imageUrl": "./623a853d77d724320ca69a3d8b8cd3dcdb3698c94c52addb3ebca680b4c6b75e.jpg",
        "featured": false
      },
      {
        "title": "10 CloudWatch Logs Insights examples for serverless applications",
        "url": "https://cloudash.dev/blog/cloudwatch-logs-insights-examples",
        "description": "If you are building distributed systems on AWS, chances are that you are using CloudWatch to centralise all your logs. CloudWatch Log Insights is a great tool to query across all your log streams, but you need to learn how to write queries. This articles contains several examples that will make your life easier when you are using Log Insights for Serverless applications.",
        "imageUrl": "./9f3d2e9fe0e57551b1521128cae5d8b860a3f54bcd74126ba352259993877e3e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 268,
    "title": "Understanding Layout Algorithms",
    "slug": "2022-04-11-255-understanding-layout-algorithms",
    "date": "2022-04-11",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "Understanding Layout Algorithms",
        "url": "https://joshwcomeau.com/css/understanding-layout-algorithms",
        "description": "As front-end developers, we often learn CSS by focusing on individual properties. Instead, we should focus on how the language uses those properties to calculate layouts. In this blog post, we'll pop the hood on CSS and see how the language is structured, and how to learn it effectively.",
        "imageUrl": "./8df88ab52157860b920e0fbb719c54f3c1c0717909d0001449a918b8a614d858.jpg",
        "featured": true
      },
      {
        "title": "Those HTML Attributes You Never Use",
        "url": "https://smashingmagazine.com/2022/03/html-attributes-you-never-use",
        "description": "In this article, Louis Lazaris describes and demonstrates some interesting HTML attributes that you may or may not have heard of and perhaps find useful enough to personally use in one of your projects.",
        "imageUrl": "./b6ecd6142318845ba6166db100606007d7d38ebc89004875a1df42a2541af032.jpg",
        "featured": false
      },
      {
        "title": "How to use Props in React",
        "url": "https://robinwieruch.de/react-pass-props-to-component",
        "description": "Everything you need to know about props in React. How to pass props to components, how to set default props, how to know the difference between props and state, and how to pass components or functions as props!",
        "imageUrl": "./9dc8778496addc74491419c3a5f9539b3d7fcdf986c1883eb552f19b92433d6f.jpg",
        "featured": false
      },
      {
        "title": "Deep dive into the CSS :where() function",
        "url": "https://blog.logrocket.com/deep-dive-css-where-function",
        "description": "Learn about the :where() pseudo-class function and show how it can be used in production. See some specific use cases.",
        "imageUrl": "./415a3a2b2311086303e1428298a02896405f430f750b3a7e07e56adaa68fd6af.jpg",
        "featured": false
      },
      {
        "title": "Optimising Largest Contentful Paint",
        "url": "https://csswizardry.com/2022/03/optimising-largest-contentful-paint",
        "description": "Largest Contentful Paint (LCP) is an important, user-centric metric for measuring perceived load speed because it marks the point in the page load timeline when the page's main content has likely loaded—a fast LCP helps reassure the user that the page is useful. In this article we can learn a few ways to optimise our LCP.",
        "imageUrl": "./7424794dcfb3e4546d74a2fe41e3b3c071cb8cdc4d0562a9d735bdc35e569007.jpg",
        "featured": false
      },
      {
        "title": "Build Serverless APIs with Node.js and AWS Lambda",
        "url": "https://blog.appsignal.com/2022/03/23/build-serverless-apis-with-nodejs-and-aws-lambda.html",
        "description": "Serverless and Lambda are among our favourite pieces of tech (this whole neswletter [is built with Serverless and Lambda](https://github.com/FullStackBulletin/sls-create-newsletter-issue)!). In this article, you can learn how to create and deploy Lambda functions with Node.js and AWS SAM in this introduction to AWS Lambda.",
        "imageUrl": "./e870cefb2f53cde840ed756ffa58d5e4b5edca91081d6ef2fa47b44e04d81de2.jpg",
        "featured": false
      },
      {
        "title": "Conquering JavaScript Hydration",
        "url": "https://dev.to/this-is-learning/conquering-javascript-hydration-a9f",
        "description": "When you build Single Page Applications (SPAs), most often you have ways to pre-render the content of a page for the server and then, once the page is loaded in the browser, the client side application will walk the DOM and add all the interactive bits and pieces. This process is called hydration and it is much more complicated than it seems. Many frameworks have tried to tackle this problem correctly for years and in this article you can get a good summary about what works and what doesn't!",
        "imageUrl": "./4f36a97c698ddbb1d911ce39cd99abf502710dc3c3bb3a4b029b056007cc0b12.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5",
      "author": "Robin Nixon",
      "description": "The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension. Build interactive, data-driven websites with the potent combination of open-source technologies and web standards, even if you only have basic HTML knowledge. With this popular hands-on guide, you'll tackle dynamic web programming with the help of today's core technologies: PHP, MySQL, JavaScript, jQuery, CSS, and HTML5.",
      "coverImageUrl": "./4dd383a9368aaa6ed632aede9e478cdc0678ed0fe58e1cd4ac7a53fa88dfa423.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491918667/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491918667/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 267,
    "title": "Tao of Node - Design, Architecture & Best Practices",
    "slug": "2022-04-04-254-tao-of-node-design-architecture-best-practices",
    "date": "2022-04-04",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "Tao of Node - Design, Architecture & Best Practices",
        "url": "https://alexkondov.com/tao-of-node",
        "description": "One of the main benefits of JavaScript is that it runs both in the browser and the server and that's probably the main reason for JavaScript success in the world of full stack web development. But we have to admit that JavaScript is pretty flexible. Yes, this is a good thing, but at the same time we need to ask ourselves how to design applications that are well architected and easy to maintain!",
        "imageUrl": "./f93b374b01ae75258166abfb2626e5c890b06bdf5299825db28311fa58bb0a28.jpeg",
        "featured": true
      },
      {
        "title": "Guiding principles after 20 years of programming",
        "url": "https://alexewerlof.medium.com/my-guiding-principles-after-20-years-of-programming-a087dc55596c",
        "description": "What would a software engineer with 20 years of experience recommend you? Here's a few \"pick the right tool for the job\", \"don't get attached to one specific technology\", \"write code for humans and only secondarily for machines\", \"remember that all code will die\"... If these sounds interesting, check out the whole article for more!",
        "imageUrl": "./3f5cf0340dbf01715f745eff521fbaf26495f81f61c296b26b6ba44f3ff96097.jpg",
        "featured": false
      },
      {
        "title": "An Introduction To Generics",
        "url": "https://go.dev/blog/intro-generics",
        "description": "Go Generics have been one of the most requested features since the language came out. And yet a good chunk of the community fought back against introducing generics. The language core value is to stay simple and minimal, so how did the core team finally manage to introduce generics in the language without violating one of their core principles? Let's find out (with some intriguing examples)!",
        "imageUrl": "./86f24630afdea8e02b184d519a8946546110cfd88c97c831942cf2f582cd718c.png",
        "featured": false
      },
      {
        "title": "Vim Reference Guide",
        "url": "https://learnbyexample.github.io/vim_reference/Introduction.html",
        "description": "I admit I have always been intrigued by Vim. Seeing pro users using it always gave me a profound sense of control and productivity. And yet every time I tried Vim I eventually felt defeated and gave up. Maybe it's time to give Vim another shot by using this excellent reference guide... what do you think?",
        "imageUrl": "./f66e2a6eabff22bb8d51508fcda13cb6af5f6569bed0ea69fec0f9e4d3779b35.png",
        "featured": false
      },
      {
        "title": "Building A Chess App In React",
        "url": "https://dev.to/fredlitt/my-experience-building-a-chess-app-in-react-2hl6",
        "description": "Who said that you can't use React to build games? Probably nobody! In fact here you can find a fantastic use case of how Fred built an entire chess game by using React and learn about some of the challenges and the design decisions! I really enjoyed this article last week!",
        "imageUrl": "./c34e786079177eeea610a579f92bdf6002cd8f40578ab47057a53de671111bf2.png",
        "featured": false
      },
      {
        "title": "A Taste of Kotlin and Functional Programming",
        "url": "https://kessler.tech/programming-languages/kotlin-fun",
        "description": "Another resource to inspire you to go outside your comfort zone and try something new. Have you heard about Kotlin? Apparently is a modern multi paradigm language that many people love. You can even do functional programming with it, so if you are into functional, here's one more reason for you to check out Kotlin.",
        "imageUrl": "./6a6b1bf9f6f7307d5ac79106c79b201d7c578bdb87d217b3f1bc2eca62a10362.png",
        "featured": false
      },
      {
        "title": "Creating Realistic Art with CSS",
        "url": "https://frontend.horse/articles/realistic-art-with-css",
        "description": "Frontend Horse is one of my favourite resources for getting my weekly dose of web-related creativity (by the way, check out [Alex Trost's Twitch channel](https://www.twitch.tv/trostcodes) if you are into coding live streams)! In this article, we can learn the incredible techniques of CSS artist, Ben Evans. Did you ever expect to see photo-realistic art... made with CSS?!",
        "imageUrl": "./db900634cd09d5a9dc606e78426c157e60142dfc314cc88ca63c690152703994.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 266,
    "title": "fetch() In Node.js Core: Why You Should Care",
    "slug": "2022-03-28-253-fetch-in-node-js-core-why-you-should-care",
    "date": "2022-03-28",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponsored by: \n\n\n\n\n\nDesign systems? [Yes please!](https://www.belkadigital.com/migrating-design-system-sketch-figma-subito)",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "fetch() In Node.js Core: Why You Should Care",
        "url": "https://fusebit.io/blog/node-fetch",
        "description": "Node.js v17.5 introduces support for `fetch()`, a cross-platform HTTP client API that works in browsers and Web/Service Workers – as an experimental core feature. This is another huge step forward for the Node.js ecosystem and another bit of progress in reducing the gap between Node.js and the web platform. But there's more to it, so let's find out with this article why fetch matters!",
        "imageUrl": "./73d52afeb25a8ea3b70397ab4cbf050c575d56a9ee10ee0354d49b2f9493e2b2.jpg",
        "featured": true
      },
      {
        "title": "The Code Review Pyramid",
        "url": "https://morling.dev/blog/the-code-review-pyramid",
        "description": "When it comes to code reviews, it’s common to put a lot of focus on long-winded discussions around aspects like code formatting and style, whereas important aspects (does the code do what it is supposed to do, is it performant, is it backwards-compatible, etc) tend to be overlooked. This article can help us to focus more on what matters during a code review!",
        "imageUrl": "./2432e71b158010419ad582b6de913e494931003b0765ac8d0d705b6b180d18ec.png",
        "featured": false
      },
      {
        "title": "Learning Rust: My 6 Key Moments",
        "url": "https://apollolabsblog.hashnode.dev/learning-rust-my-6-key-moments",
        "description": "If you’ve tried learning Rust or looked into it at least, you might have read somewhere how it has a steep learning curve. This article dispels 6 key concepts that can make Rust look more intuitive and familiar!",
        "imageUrl": "./d2b131bda6268a275beee506910c3a0cee573888dc8693810330cf11c13f85f6.jpeg",
        "featured": false
      },
      {
        "title": "What can you do with EventBridge?",
        "url": "https://www.fourtheorem.com/blog/what-can-you-do-with-eventbridge",
        "description": "EventBridge is one of the newest and most promising event services available in AWS. With EventBridge you can easily distribute custom events between domains in a micro-service architecture or you can react to AWS events in your account (a new file is created in S3, a container is stopped, etc.). But there is a lot more to EventBridge, so let's find out with this comprehensive article.",
        "imageUrl": "./4e295058dd3f370e9dcf9751f441803575e778c1c65f6854ca633ec07e427408.png",
        "featured": false
      },
      {
        "title": "React arborist 🌲",
        "url": "https://github.com/brimdata/react-arborist",
        "description": "React arborist is a sortable, virtual, customizable tree component for React. Did you ever have the need to display hierarchical data in an interactive way? It's a quite common problem and now there is a great open source solution for this! Check out the repo...",
        "imageUrl": "./9cbcf499e8846c2cb4ff4c1adaf1b0a69d7b68e3e6e0ff1fa296ea69beb00e43.png",
        "featured": false
      },
      {
        "title": "Migrating a big design system from Sketch to Figma",
        "url": "https://www.belkadigital.com/migrating-design-system-sketch-figma-subito",
        "description": "When the global pandemic hit, Subito’s designers moved to work from home. Sketch had served them well since that day, but the new setup started causing serious bottlenecks. Something had to be done. With more than 11m active monthly users, this was kind of a big deal. sponsored",
        "imageUrl": "./3462efecc0ae9d3995d6d69f81528817639737e8d04fd4e27bdbbce85671f2c2.gif",
        "featured": false
      },
      {
        "title": "Regexes are Cool and Good",
        "url": "https://buttondown.email/hillelwayne/archive/regexes-are-cool-and-good",
        "description": "A common joke in our industry is that if you solve a problem using Regular Expressions, now you have a new problem! What if instead we can use regexes and actually solve our problems?",
        "imageUrl": "./b86aa9a248e6f4ea18fc00af60500d83f350e9923d58d1a614544c5b86988c4e.gif",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 265,
    "title": "pppalette: your friendly color palette generator",
    "slug": "2022-03-23-252-pppalette-your-friendly-color-palette-generator",
    "date": "2022-03-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #11, 2022",
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "pppalette: your friendly color palette generator",
        "url": "https://fffuel.co/",
        "description": "I personally find picking colors still a bit of an arcane art. For this reason I love tools such as pppalette that can automatically generate palettes with great color harmony. Another great tool to keep in mind for your next project!",
        "imageUrl": "./776e6ea2db5b47fcde6e8c5b2498e73aa6afcbc573140abe50f509ac6471b69c.jpg",
        "featured": true
      },
      {
        "title": "Dive into Node.js Streams",
        "url": "http://nodesource.com/blog/dive-into-NodeJs-streams",
        "description": "Well, if you know me, you know I love Node.js. And what's my favourite thing about Node.js? Yes, Node.js streams! If you still have managed to avoid Node.js streams, make sure to check out this comprehensive article! Then, if you haven't had enough, you can also check [my free workshop material](https://github.com/lmammino/streams-workshop) and [an article I wrote recently](https://www.nodejsdesignpatterns.com/blog/node-js-stream-consumer/).",
        "imageUrl": "./5b35d6733e814c3d51633724bf10636a26b5154d79c583c3006ee9925cfc539a.jpg",
        "featured": false
      },
      {
        "title": "A Complete Guide To TypeScript’s Never Type",
        "url": "https://www.zhenghao.io/posts/ts-never",
        "description": "If you are hungry for more TypeScript knowledge, check out this awesome article by Zhenghao He explaining what is the TypeScript **never** type and how to use it! Spoiler alert, it is a much better alternative to the **any** type, but make sure to check out why!",
        "imageUrl": "./72880ca3b2e10487b295d6b53d107b87e61e5957cc76578b5b265ab4cdbd111f.png",
        "featured": false
      },
      {
        "title": "HTML and CSS in Emails: What Works in 2022?",
        "url": "https://designmodo.com/html-css-emails",
        "description": "It's 2022 and we are all still writing tons of emails. And this is not going to change anytime soon! So what if you want to automate cool emails with great graphics? What HTML and CSS features work for email templates? Let's check it out!",
        "imageUrl": "./083b11939c4c4d0977392e91f19996ef2ca2220647e3889a5ab720c1a243d51d.jpg",
        "featured": false
      },
      {
        "title": "Making the world’s fastest website, and other mistakes",
        "url": "https://dev.to/tigt/making-the-worlds-fastest-website-and-other-mistakes-56na",
        "description": "An interesting case study about making an e-commerce website as fast as possible. Tons of lessons learned here that will make the performance addicted here very happy! Also, performance is proven to be correlated to e-commerce revenue, so... just one more reason to be interested in this topic!",
        "imageUrl": "./560299c1c4c78ecec1dbcdb12f9068ec34ca2e684d763e63c4dd0846c5a62943.jpg",
        "featured": false
      },
      {
        "title": "Deno by Example",
        "url": "https://examples.deno.land/",
        "description": "You know I like Node.js more than anything else, but can't ignore Deno... The Deno developers recently shipped an interesting website that showcases some of Deno's capability with a series of examples.",
        "imageUrl": "./eff71ea727f453cb5fb02d6d0ce8e851211cb68dbb2a09ba15baa4ec367846b2.jpg",
        "featured": false
      },
      {
        "title": "Texture — Generative Snacks",
        "url": "https://georgefrancis.dev/writing/texture-generative-snacks",
        "description": "Geore Francis has done it again: another brilliant article on generative art applied to web development. In this last masterpiece you can learn how to bring your generative work to life with three simple textures inspired by the natural world.",
        "imageUrl": "./1448c03690f366d8e8ae599b0866c69b2e3cc6e4dce4c9997b5e315c9261110e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "UX Strategy: How to Devise Innovative Digital Products that People Want",
      "author": "Jaime Levy",
      "description": "User experience (UX) strategy requires a careful blend of business strategy and UX design, but until now, there hasn’t been an easy-to-apply framework for executing it. This hands-on guide introduces lightweight strategy tools and techniques to help you and your team craft innovative multi-device products that people want to use. Whether you’re an entrepreneur, UX/UI designer, product manager, or part of an intrapreneurial team, this book teaches simple-to-advanced strategies that you can use in your work right away.",
      "coverImageUrl": "./fb5bfe56ce390883cd7e92437fbc707fe0ce9062ff82c591ed2eba65ee4daa8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372864/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372864/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 264,
    "title": "#264: A Proposal For Type Syntax in JavaScript",
    "slug": "2022-03-14-251-264-a-proposal-for-type-syntax-in-javascript",
    "date": "2022-03-14",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "A Proposal For Type Syntax in JavaScript",
        "url": "https://devblogs.microsoft.com/typescript/a-proposal-for-type-syntax-in-javascript",
        "description": "If you know us, you probably know we are not big fans of TypeScript, not because it's not useful but because of the added complexity. We also said we wished JavaScript would get optional typings built in the language like PHP, Python and Ruby did in the last few years. Well this new proposal goes exactly in this direction and we are very curious to see where it's going to go!",
        "imageUrl": "./6d4269ad253d95e69fa5164fe3483b74c366fe45bf1aa61935c509b870b257d1.jpg",
        "featured": true
      },
      {
        "title": "TypeScript Exercises",
        "url": "https://typescript-exercises.github.io/",
        "description": "Speaking of typings and TypeScript, what if you want to get better at these topics? Well, check out this amazing website! TypeScript exercises will give you a bunch of interactive challenges (yes, you can write code directly in the browser) that you can solve by fixing TypeScript definitions in an existing codebase. We had a lot of fun going through this last week!",
        "imageUrl": "./f51e0808e80dd97297cb16ed36d326ee934164767da37cbf2e477c96ddd72835.jpg",
        "featured": false
      },
      {
        "title": "Four tricky JavaScript concepts in one line of code",
        "url": "https://dev.to/perenstrom/four-tricky-javascript-concepts-in-one-line-of-code-3i3p",
        "description": "Sometimes a single line of JavaScript code might look really clever and expressive to one person and unintelligible to another! Why? Because modern JavaScript packs a lot of syntactic sugars and if you combine a few of them together, well... You might get a lot done with very little code, but also newcomers might easily get lost while reading it. This article provides a great example...",
        "imageUrl": "./2ee32cc5aac09dba4e3c3c02d88d4be9c8588ddf3a8c11281937ac5df12d719c.jpg",
        "featured": false
      },
      {
        "title": "It's Prisma Time",
        "url": "https://dev.to/this-is-learning/its-prisma-time-introduction-3a3h",
        "description": "Luca del Puppo, engineer at Flowing, has compiled a wonderful series of articles to introduce you to Prisma, one of the most promising ORM libraries currently available in the Node.js ecosystem. Check it out!",
        "imageUrl": "./652065f90ad991931e76d3d4de384433bfc98c72764f010ee97bb2b4656bf87c.jpg",
        "featured": false
      },
      {
        "title": "Doodle icons",
        "url": "https://khushmeen.com/icons.html",
        "description": "We never have enough royalty free illustrations and icons for our web projects, so here's a newcomer to this space! Doodle icons can bring a fresh and cartoonish style to your next project, so it's definitely worth a look if that's the kind of feeling you want to convey!",
        "imageUrl": "./ba8e8c360191c688ca0fe22fe87c5ab1778400fc7b8fadbc46ad76f66827285e.png",
        "featured": false
      },
      {
        "title": "More Awesome Git Aliases",
        "url": "https://davidwalsh.name/more-awesome-git-aliases",
        "description": "We use git everyday and we need to be proficient with it. So if you are looking for new tips and trick and new cool aliases to make your git experience better, make sure to check out this article!",
        "imageUrl": "./601330fd00c1ccd41dc6cbe724f863462c63202c655f126bc5e7557d06e8fe68.jpg",
        "featured": false
      },
      {
        "title": "WebGPU — All of the cores, none of the canvas",
        "url": "https://surma.dev/things/webgpu",
        "description": "WebGPU is an upcoming Web API that gives you low-level, general-purpose access GPUs. What can you do with it? A bunch of exciting things, check it out!",
        "imageUrl": "./8936839f99b71cb86355cb5d4a12cd404c086b87ad72c25fd9ee434a87ae9c98.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 263,
    "title": "Comparing Gatsby and Next.js for website development",
    "slug": "2022-03-07-250-comparing-gatsby-and-next-js-for-website-development",
    "date": "2022-03-07",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "Comparing Gatsby and Next.js for website development",
        "url": "https://dev.to/alex_barashkov/comparing-gatsby-and-nextjs-for-website-development-13b7",
        "description": "Gatsby and Next.js, from a first glance, could look pretty much the same. Both are React-based and allow you to build static website as well as more dynamic ones. But there are some fundamental differences, so which one should you pick for your next project? Let's find out!",
        "imageUrl": "./43ab2400e4959ab69f5af1cf44d2970b805ea6592955e05d7d66e91245a4ca3a.jpg",
        "featured": true
      },
      {
        "title": "How does UTF-8 turn “😂” into “F09F9882”?",
        "url": "https://sethmlarson.dev/blog/utf-8",
        "description": "If you're anything like me, you love emojis! Emojis appear like an image on the screen, but they aren't an image like a PNG or JPEG. What do emojis look like to computers?",
        "imageUrl": "./ca09a7e35048162bf7610e3a75c6ca6a121f366234ed0efb9aa821c3942b72fb.png",
        "featured": false
      },
      {
        "title": "Javascript Records and Tuples",
        "url": "https://fjolt.com/article/javascript-records-and-tuples",
        "description": "Records and Tuples are a new immutable primitive coming to Javascript. Let's look at how they work and how you can use them in your code today.",
        "imageUrl": "./2b3355883abaeef6b789dffc471ab31cc3bca06da4b2aff05f111aa12aee463f.jpg",
        "featured": false
      },
      {
        "title": "Solid.js feels like what I always wanted React to be",
        "url": "https://typeofnan.dev/solid-js-feels-like-what-i-always-wanted-react-to-be",
        "description": "What is Solid.js and how does it compare to React? What are some things that Solid.js actually does better (and maybe in a more intuitive way) in respect to React? Let's see a few interesting examples!",
        "imageUrl": "./17fba80650d0ea8ce059cb2c6de19d3b629fd865f2494c5dca1055615bc71104.jpg",
        "featured": false
      },
      {
        "title": "Practical Guide to Solving Hard Problems",
        "url": "https://praeclarum.org/2022/02/19/hard-problems.html",
        "description": "I sometimes find myself in a position of needing to write some code\nthat I’m just not sure how to write. Been there have you?\nHere are the steps I take when I’m stumped.\nNo huge revelations here, just hard-earned advice.",
        "imageUrl": "./871dfe484169d74238ab230798fbf697ea081f25a15582f2170a15be9fb527f8.jpg",
        "featured": false
      },
      {
        "title": "Optimizing third-party script loading in Next.js",
        "url": "https://web.dev/script-component",
        "description": "This article discusses the Next.js Script component and demonstrates how it can be used for better sequencing of third-party scripts.",
        "imageUrl": "./eae36c8a4783a0198b57ed4ed0efbc110d6d926bb041f744263e070f084b746f.jpg",
        "featured": false
      },
      {
        "title": "Testing Pipeline 101 For Frontend Testing",
        "url": "https://smashingmagazine.com/2022/02/testing-pipeline-101-frontend-testing",
        "description": "You don’t need to be a full DevOps engineer if you want to introduce a testing build routine. With the help of some testing frameworks and GitHub actions, Ramona Schwering gives a short kick-off to help you get on the right track.",
        "imageUrl": "./e4a7ea8af84e97a1f21f63367df5eea31ecfc0bb81dd9d8bc429023db9f890b2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 260,
    "title": "Vue 3 is the New Default",
    "slug": "2022-02-14-249-vue-3-is-the-new-default",
    "date": "2022-02-14",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "One machine can do the work of fifty ordinary men.  No machine can do the work of one extraordinary man",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "Vue 3 is the New Default",
        "url": "https://blog.vuejs.org/posts/vue-3-as-the-new-default.html",
        "description": "In this official blog post, Evan You, the creator of Vue, finally announces that Vue 3 is out of beta and it's the new stable version of the framework. The post also illustrates how in the last couple of years the Vue community has grown and how an entire ecosystem matured around Vue.",
        "imageUrl": "./59721ada2fc068f06963166b2623fb512df5d273712f0a32773c30b1fd9db6ca.png",
        "featured": true
      },
      {
        "title": "What Web Frameworks Solve And How To Do Without Them",
        "url": "https://smashingmagazine.com/2022/01/web-frameworks-guide-part1",
        "description": "In this article, Noam Rosenthal dives deep into a few technical features that are common across frameworks, and explains how some of the different frameworks implement them and what they cost.",
        "imageUrl": "./fb8f2b51cadbd63753e70cfd7283e7f92e99f0b49b3bf8575a6deb33f6610b1e.jpg",
        "featured": false
      },
      {
        "title": "npm: A Free Guide for Beginners",
        "url": "https://css-tricks.com/a-complete-beginners-guide-to-npm",
        "description": "This npm guide helps you understand what npm is, what what makes npm a package manager, and how to use npm from a beginner's view.",
        "imageUrl": "./4650a6f020e8ba13f0960aad8466817ca40f0412479f7cd1883e62333efc664d.jpg",
        "featured": false
      },
      {
        "title": "How to write performant React code: rules, patterns, do's and don'ts",
        "url": "https://developerway.com/posts/how-to-write-performant-react-code",
        "description": "Looking into patterns that lead to poor performance of React apps, why they are bad, and how to recognise and avoid them.",
        "imageUrl": "./065abbbd4e63914ce93c178c0ca5d415e6c108807ea8a237b499df1346b34352.jpg",
        "featured": false
      },
      {
        "title": "Immutability isn't free",
        "url": "https://swizec.com/blog/immutability-isnt-free",
        "description": "Immutable data structure are awesome! Until they aren't anymore... In this blog post you can learn about a real use case where using immutable data structure made an API much slower than it should have been. This post can show you why is that and make you understand the tradeoffs that come with immutable data structures.",
        "imageUrl": "./38a59a2b44d643276dd4b8365adb646bc2b5307929f883c4bb4b64946d00e464.jpg",
        "featured": false
      },
      {
        "title": "Creating Generative SVG Grids",
        "url": "https://frontend.horse/articles/generative-grids",
        "description": "With this beautiful tutorial by Frontend Horse, you can learn how to create colorful, generative grid designs with JavaScript and SVG!",
        "imageUrl": "./19fd522e7ce14d924e25ca9ad73f6ab5ead33819c627ad4f7d0e8fa6310fd1f2.jpg",
        "featured": false
      },
      {
        "title": "spark-joy",
        "url": "https://github.com/sw-yx/spark-joy",
        "description": "If you are looking for even more ways to add design flair, user delight, and whimsy to your product, check out this beautiful repository with hundreds of ideas and links curated by sw-yx!",
        "imageUrl": "./69739ad7d8e05834c021123c190c48f6453ab8e1b6578344faf60431968fda93.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "E. Gamma, R. Helm, R. Johnson, J. Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.",
      "coverImageUrl": "./3d2f9c2ee1c817b2dcd3443fbb6f71d7fcb0499b00de983a9ffe8f8c6058fa29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 259,
    "title": "How we fail to take accessibility seriously",
    "slug": "2022-02-07-248-how-we-fail-to-take-accessibility-seriously",
    "date": "2022-02-07",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "3 Ways We Fail to Take Accessibility Seriously",
        "url": "https://css-tricks.com/why-dont-developers-take-accessibility-seriously",
        "description": "This article covers perspectives on accessibility in web design that could help us bridge the great divide between users and designers/developers. Accessibility is one of these topics that we still fail to prioritise and that's a bit of a shame...",
        "imageUrl": "./c15cd6513c5d23394009fd76ef6dc9c4900f963a4195e0a59355a1e4b10f8145.jpg",
        "featured": true
      },
      {
        "title": "Use Streams to Build High-Performing Node.js Applications",
        "url": "https://blog.appsignal.com/2022/02/02/use-streams-to-build-high-performing-nodejs-applications.html",
        "description": "Find out how to use the `stream` module in Node.js to build high-performing applications.",
        "imageUrl": "./073a7dd0472a5ee520609b66634d23cce9db867e769d17672b2727cc54fc4f1f.jpg",
        "featured": false
      },
      {
        "title": "Add Less",
        "url": "https://css-tricks.com/add-less",
        "description": "When you're about to start a new website, what do you think first? Do you start with a library or framework you know, like React or Vue, or a meta-framework. Well, truth to be told, the secret for having faster websites is to add less. Do you really need to use React for this website?",
        "imageUrl": "./0a36ea81a796c0ec5643a4bbf00957f05129a8609463a8ccf7a4359fdba9b51c.jpg",
        "featured": false
      },
      {
        "title": "Building The Real App With React Query",
        "url": "https://smashingmagazine.com/2022/01/building-real-app-react-query",
        "description": "In this article, Georgii Perepecho explains the most common React Query features that you need to be familiar with when creating a real-life application that is stable when testing.",
        "imageUrl": "./70d0dd73c2bc88ab37a1f6c4302010b1d6db7b4676a49bdc3c455d26ffbf4751.jpg",
        "featured": false
      },
      {
        "title": "A Pixel's Color",
        "url": "https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/pixels_color.md",
        "description": "Do you know what's \"inside\" a pixel? Or, to phrase this in a better way, what it takes to color a pixel on the screen? How can we encode color information so that the pixel is actually displayed on the screen as we expect? An interesting essay for the curious ones that are looking to know more!",
        "imageUrl": "./24390bfa89eea82933f46f53cfc0880f477cd2af5610fa322d1733381b3c91dd.png",
        "featured": false
      },
      {
        "title": "Introduction to WebAssembly (WASM)",
        "url": "https://medium.com/dscvitpune/introduction-to-webassembly-wasm-54d505d6d569",
        "description": "WebAssembly is becoming more and more a reality. With this tutorial, you can finally have an excuse to get your hands dirty and build your first WebAssembly-powered website.",
        "imageUrl": "./09afd1934e97eade1ddcaa465a944159d33edcad17e2cda66f7ec3735c79b09f.jpg",
        "featured": false
      },
      {
        "title": "Crafting Component Libraries: The Elements",
        "url": "https://jonyablonski.com/articles/2022/crafting-component-libraries-the-elements",
        "description": "A step through an opinionated process for crafting the foundational elements that make up a component library based on design fundamentals that can grow and evolve to fit the needs of any interface.",
        "imageUrl": "./73cb03c14cd8555ea5c88f8613fe8cd3eea0353ca92f4c3da7b8d84b8b6ea881.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 258,
    "title": "DynamoDB: 10 years later",
    "slug": "2022-01-31-247-dynamodb-10-years-later",
    "date": "2022-01-31",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "Amazon’s DynamoDB — 10 years later",
        "url": "https://www.amazon.science/latest-news/amazons-dynamodb-10-years-later",
        "description": "Amazon DynamoDB was introduced 10 years ago today; one of its key contributors reflects on its origins, and discusses the 'never-ending journey' to make DynamoDB more secure, more available and more performant.",
        "imageUrl": "./ddfd72e58297dcd2fd513bb92df7823f21ae6fb170fa8280780fadaa2d602ed1.jpg",
        "featured": true
      },
      {
        "title": "CSS Gradient Text",
        "url": "https://cssgradient.io/blog/css-gradient-text",
        "description": "We have seen this trend more and more throughout 2021 and we are sure we will see more of this, sooo do you know how to make text gradients with CSS? Because... if you don't you can check out this tutorial to learn more! 😜",
        "imageUrl": "./b76979d19464f8469a2a5ff9a838482e950fee5324e4720b0c7e5a7d0346faed.jpg",
        "featured": false
      },
      {
        "title": "Two Phase Commit",
        "url": "https://martinfowler.com/articles/patterns-of-distributed-systems/two-phase-commit.html",
        "description": "Two Phase Commit is an interesting Design Pattern for distributed systems that allows you to update resources on multiple nodes in one atomic operation. If you are interested in learning more about distributed systems this is definitely a hot topic to look at!",
        "imageUrl": "./94e932f04cc2a9c3eaceb198b6f9c43e084fdd81688a6eeac0146c3af297a616.jpg",
        "featured": false
      },
      {
        "title": "Becoming a Better Writer in Tech",
        "url": "https://blog.pragmaticengineer.com/becoming-a-better-writer-in-tech",
        "description": "Writing is an increasingly important skill for engineers at all levels. In this article you can learn a few interesting tactics for more clear, more frequent and more confident technical writing.",
        "imageUrl": "./2c8241ffe3732f022a098e232b214a386d7666a172bafc0e5838c15fae36717b.jpg",
        "featured": false
      },
      {
        "title": "Monio: Monads in JavaScript",
        "url": "https://github.com/getify/monio",
        "description": "Monio is an interesting JavaScript library that allows you to use the idea of Monads (Functional Programming) and use it with promise based async code. What's even better about Monio is that it has an excellent documentation that can be used as a soft introduction to functional programming in JavaScript. Check it out!",
        "imageUrl": "./589ab9016030e7c6291dc586822969cd319da4428ef02a90d2723918330a85b5.jpg",
        "featured": false
      },
      {
        "title": "Should I get an AWS certification?",
        "url": "https://youtube.com/watch?v=qf0CuUOtPEI",
        "description": "Is it worth getting an AWS certification? In this episode of AWS Bites podcast, Eoin and Luciano discuss why a certification can be important from the perspective of individuals and companies, what are the certifications available and how are they grouped. Finally they provide some suggestions for a study plan and give various useful resources and tips.",
        "imageUrl": "./4c671a7081227adccb2d7e71ddf871bd43b28086bdda9ed320b42aa97468b0c3.jpg",
        "featured": false
      },
      {
        "title": "Good advice on JSX conditionals",
        "url": "https://thoughtspile.github.io/2022/01/17/jsx-conditionals/index.html",
        "description": "Conditional rendering is a cornerstone of any templating language. React / JSX bravely chose not to have a dedicated conditional syntax (like `ng-if` or `v-if`) and to rely on JS boolean operations instead. In this article you can find more about this topic. If you do any React, you can learn how to avoid some pitfalls and how to write more expressive conditionals.",
        "imageUrl": "./53637a94632c7b77a08e6b7347c258104c3e784112aa826675be02d32dd0f11d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 257,
    "title": "JavaScript Rising Stars",
    "slug": "2022-01-24-246-javascript-rising-stars",
    "date": "2022-01-24",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "JavaScript Rising Stars",
        "url": "https://risingstars.js.org/2021/en",
        "description": "Let's have a look at the most successful and rising JavaScript project of 2021. What's getting more traction and what's worth learning? Our favourite picks: **Fastify**, **SWC**, **Slidev**, **Eleventy**, **Vanilla-extract** & **Vitest** but, trust us, there is a lot more to explore!",
        "imageUrl": "./5331bc5bff9d2c824d0ad527d67cca0d5e3534d96e1d8afe024e44f4dfd56db2.jpg",
        "featured": true
      },
      {
        "title": "Slidev",
        "url": "https://sli.dev/",
        "description": "We liked this one so much that we wanted to put it in its own spotlight! Slidev is a super-simple yet powerful way to create technical slides by just using markdown! How cool is that? We can't wait to use this in our next talk!",
        "imageUrl": "./a2c26addabbd0f92746ff7f2b7947a6c0e837964ad25c9ae854fc7d975b001ed.png",
        "featured": false
      },
      {
        "title": "SSH Bastion host best practices",
        "url": "https://goteleport.com/blog/security-hardening-ssh-bastion-best-practices",
        "description": "If you have been doing a little bit of networking and systems design you might have to build and provision your bastion host. Let's learn some best practices to build and deploy a security-hardened SSH bastion host based on OpenSSH server.",
        "imageUrl": "./618e27e9e7cef3ea92103cd232af5407a99612f1467ed1ce72a5c4ee357a63f2.jpg",
        "featured": false
      },
      {
        "title": "Writing a Lua VM in Rust",
        "url": "https://notes.eatonphil.com/lua-in-rust.html",
        "description": "Are you thinking to expand your webdev horizons a little bit? If you want to try something new you could follow this tutorial to get to play with Rust a little bit while learning how to write a minimal Lua implementation with a virtual machine from scratch!",
        "imageUrl": "./beafbcc79b0f3bd276f2689761c6349e41b02a72398e5f8a17756181eae810ad.png",
        "featured": false
      },
      {
        "title": "TypeScript features to avoid",
        "url": "https://executeprogram.com/blog/typescript-features-to-avoid",
        "description": "**Enums**, **Namespaces**, **Decorators**, **Private** keyword: 4 TypeScript features that it's better to avoid for the author of this post. Are you curious to find out why? And most importantly, do you agree?",
        "imageUrl": "./7cffb0387e6fc455a7ad35f70e10fd19a988a25436c904314af4830bb3ecc2a3.png",
        "featured": false
      },
      {
        "title": "The 60 Hottest Front-end Tools of 2021",
        "url": "https://css-tricks.com/hottest-front-end-tools-in-2021",
        "description": "A complete list of the most popular front-end tools in 2021, according to the Web Tools Weekly newsletter. See which resources made the list.",
        "imageUrl": "./2a627830b9176f09a45b079fae2521da6911b6f2c9f4ef0c5e86a0a1c1e1f84d.jpg",
        "featured": false
      },
      {
        "title": "Layout patterns",
        "url": "https://web.dev/patterns/layout",
        "description": "A collection of layout patterns built using modern CSS APIs that will help you build common interfaces such as cards, dynamic grid areas, and full-page layouts.",
        "imageUrl": "./f4e3cc5108240bf731f243b3ae31fd00c80b9f209e037ec2bdecdd1adc815de7.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 256,
    "title": "Advanced Git Concepts You Should Know",
    "slug": "2022-01-17-245-advanced-git-concepts-you-should-know",
    "date": "2022-01-17",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nPower your content experiences with high fidelity data. Retrieve analytics & insights with [the Nudge API](https://giveitanudge.com/?ndg_source=fs).",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "Advanced Git Concepts You Should Know",
        "url": "https://dev.to/ruppysuppy/advanced-git-concepts-you-should-know-nle",
        "description": "Have you gotten accustomed to the basics of git, but the advanced concepts make you scratch your head? This article, introduces you to the advanced git concepts, but also show you how to use them in a real-world scenario!",
        "imageUrl": "./f95943667dde083d1cf848c9a4eab531159c1b92bbf8432be8890aae7ea90031.jpg",
        "featured": true
      },
      {
        "title": "Databases in 2021: A Year in Review",
        "url": "https://ottertune.com/blog/2021-databases-retrospective",
        "description": "Andy Pavlo's take on 2021 database industry happenings, a year marked by the dominance of  PostgreSQL and the rise of new databases based on the PostgreSQL wire protocol.",
        "imageUrl": "./06fed38943d967f990974de65e13d143df56893d92e3451ad876ff3099fd07fa.jpg",
        "featured": false
      },
      {
        "title": "A New Container Query Polyfill That Just Works",
        "url": "https://css-tricks.com/a-new-container-query-polyfill-that-just-works",
        "description": "There is an easy-to-use CSS container query polyfill now. You essentially conditionally load it and forget about it. Then write spec-compliant container queries code.",
        "imageUrl": "./c7da50d7cac228f07372fe38d050cf8a40c1ddf157d5af02d6f4401eee1f7ddb.jpg",
        "featured": false
      },
      {
        "title": "How to mentor software engineers",
        "url": "https://xdg.me/mentor-engineers",
        "description": "If you have been around the tech block long enough, chances are you might have mentored (or will have to mentor) more junior engineers. Mentoring is a complex activity and it should not be triviliasied. This article gives a number of tips and suggestions to make sure you can do a great job as a mentor!",
        "imageUrl": "./b723bb36b2715ce35d8d08fb70a328eff6055206b0da3e1023bb4fb9230f6781.jpg",
        "featured": false
      },
      {
        "title": "Generate Mesh Gradients",
        "url": "https://meshy.uxie.io/",
        "description": "Are you looking for a quick and effective way to generate a background for a picture or for a website design? With this tool, you can easily generate & customizse beautiful and colorful mesh gradients and export them to PNG.",
        "imageUrl": "./a3b117a204aa12bb1c68b049502c8107e808709a464c415f3a57b4d45103a34b.jpg",
        "featured": false
      },
      {
        "title": "useRainbow()",
        "url": "https://sonnet.io/posts/use-rainbow",
        "description": "`potato.horse` is an artistic website with an interesting effect on the page background. As you scroll to the page, the background changes color following the colors of the rainbow. In this post, the author of `potato.horse`, describes how they achieved this effect by using a React hook.",
        "imageUrl": "./37d5049f8dd149d2d3acba229f07857c5931a802c6f54acf399d54481769b624.jpg",
        "featured": false
      },
      {
        "title": "An In-Depth Guide To Implementing JWT Authentication in Laravel",
        "url": "https://adevait.com/laravel/implementing-jwt-authentication-in-laravel",
        "description": "In this tutorial, you’ll learn how to create new custom guards, issue and verify JWT tokens manually, and a few other things.",
        "imageUrl": "./b40eff41a0eda78faaf0c1b98671e41e229a257a3972165e8683ce63aa5a9653.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 255,
    "title": "3D & WebGL Background Animations",
    "slug": "2022-01-10-244-3d-webgl-background-animations",
    "date": "2022-01-10",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nPower your content experiences with high fidelity data. Retrieve analytics & insights with [with the Nudge API](https://giveitanudge.com/?ndg_source=fs).",
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "3D & WebGL Background Animations",
        "url": "https://vantajs.com/",
        "description": "Vanta.js is a library that helps you to build customizable plug & play animated backgrounds using three.js. Great if you want to give your next website a memorable vivid style!",
        "imageUrl": "./d3fd75389b89c07b847beb34c6224c4a71622f2a62648e5007ac612e08345fc4.jpg",
        "featured": true
      },
      {
        "title": "Frontend Developer Resources 2022",
        "url": "https://iamdeveloper.com/posts/frontend-developer-resources-2022-4cp2",
        "description": "A wondeful list of resources that every fullstack web developer should know about in 2022. Organised in different sections: JavaScript, HTML, CSS, Accessibility, JAMStack, etc.",
        "imageUrl": "./44fffaef9cc7ea90db5c6d38e5a7d6b8a49afe8d2c61db80534287d9214c13a5.jpg",
        "featured": false
      },
      {
        "title": "Frontend Web Performance: The Essentials",
        "url": "https://medium.com/@matthew.costello/frontend-web-performance-the-essentials-0-61fea500b180",
        "description": "If you want to learn how to make performant frontend applications you need to start from the basics and learn about the Browser Rendering Cycle and Hardware Acceleration & Compositor Laye‍rs.",
        "imageUrl": "./26ac5f2e1431296fbaf40c167a5ea7760502c425cb7661ddc02d615fed6db03c.jpg",
        "featured": false
      },
      {
        "title": "The Nudge Platform",
        "url": "https://giveitanudge.com/docs/?ndg_source=fs",
        "description": "Content measurement provides an essential building block for any smart web experience. The Nudge Docs shows you how you can measure the right things, to provide the best experience for your users.\nsponsored",
        "imageUrl": "./26b2f67a8029b9c7220e824e810019cba63a5212304bb1c5bb33c43eaf88edc2.png",
        "featured": false
      },
      {
        "title": "Video-Intro to Monads",
        "url": "https://youtube.com/watch?v=C2w45qRc3aU",
        "description": "As a software engineer chances are you have already heard about monads, but also, as a software engineer, you are probably still struggling to understand what a monad is why it's useful... Fear no more, this video makes it very easy and quick to finally understand monads and it's full of great examples!",
        "imageUrl": "./a6518ba7299849749f6917260456d51395c4f2380b674a15b10c7126fc671872.jpg",
        "featured": false
      },
      {
        "title": "Why a Developer Should Be a Bit of a Cloud Engineer",
        "url": "https://dzone.com/articles/why-a-developer-should-be-a-bit-of-a-cloud-engineer",
        "description": "The shift to the cloud is real and we cannot ignore it. In this article you can learn more about why, as a software engineer, you should consider learning more and more about the cloud.",
        "imageUrl": "./212e4e5b7685ef166bdf93d4e01106a0a9897d3c097bba70e994f08fe7334c50.jpg",
        "featured": false
      },
      {
        "title": "You don't need that CORS request",
        "url": "https://nickolinger.com/blog/2021-08-04-you-dont-need-that-cors-request",
        "description": "Have you ever wondered what that `OPTIONS` request is executing before your actual `GET`/`POST`/`PUT`/`DELETE` when making requests to `api.foobarbaz.app`? And what kind of performance impact can an extra request have in a large app? Find out more in this amazing article!",
        "imageUrl": "./17924e04990981b783aa831a5a1cc6d05ed57dbbad795e9f73291edd50a278b9.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 243,
    "title": "Papers with Code",
    "slug": "2022-01-03-243-papers-with-code",
    "date": "2022-01-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #52, 2021",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Papers with Code",
        "url": "https://paperswithcode.com/",
        "description": "If in 2022, you are looking into expanding your horizons and start to dive into machine learning, \"Papers With Code\" is a great resource that highlights trending Machine Learning research and the code to implement it.",
        "imageUrl": "./1c91bf919440004dcff7bf5d9560aee816f1ff4af636defadbfe672a93824129.jpg",
        "featured": true
      },
      {
        "title": "Modern Web App Design Patterns",
        "url": "https://patterns.dev/",
        "description": "Patterns.dev is a free book on design patterns and component patterns for building powerful web apps with vanilla JavaScript or React.",
        "imageUrl": "./0c26c601b6dc1d1f08643ae97c75b729ac2ed0ebdb8cf9bfeb38fc686d2a0c72.jpg",
        "featured": false
      },
      {
        "title": "Rust Is The Future of JavaScript Infrastructure",
        "url": "https://leerob.io/blog/rust",
        "description": "Why is Rust being used to replace parts of the JavaScript web ecosystem like minification (Terser), transpilation (Babel), formatting (Prettier), bundling (webpack), linting (ESLint), and more?",
        "imageUrl": "./61f00976fcb7b8f924b9dbd97b378b6597c3d5a746d0df7915e7ca6bd2b7debe.jpg",
        "featured": false
      },
      {
        "title": "Processing billions of events in real time at Twitter",
        "url": "https://blog.twitter.com/engineering/en_us/topics/infrastructure/2021/processing-billions-of-events-in-real-time-at-twitter-",
        "description": "How the engineering team at Twitter architected a system to process large scale data in real time while reducing latency and improving accuracy.",
        "imageUrl": "./c2532cc2ff6ded4472138adc5f7c0aceb0a18bdf0c525d742d73107d74320380.png",
        "featured": false
      },
      {
        "title": "free SVG generators, web design tools & modern HTML templates",
        "url": "https://fffuel.co/",
        "description": "A collection of free & fun SVG generators + other tools for web designers. Also, an upcoming collection of beautiful & modern HTML templates.",
        "imageUrl": "./4a6a10d29cc05b9b7c7e77df4387f9a204996bf2add895b0532e9def6b551532.jpg",
        "featured": false
      },
      {
        "title": "Live Coder Jon Gjengset Gets into the Nitty-Gritty of Rust",
        "url": "https://nostarch.com/blog/software-engineer-jon-gjengset-gets-nitty-gritty-rust",
        "description": "We expect that Rust will become even more prominent in 2022. If want to get a perspective on why is that, you can check out this interesting interview with Jon Gjengset, author of the book Rust for Rustaceans.",
        "imageUrl": "./6d8200d01b93b25b7ce82970bf06001ba8efa3f95c62eafabea0b4d3d7b8ffa4.png",
        "featured": false
      },
      {
        "title": "What’s new in Next.js 12",
        "url": "https://blog.logrocket.com/whats-new-next-js-12",
        "description": "Next.js has been one of the most successful web frameworks of 2021. During the year, version 12 came out bringing a bunch of intersting features and improvements.",
        "imageUrl": "./98f014930a4eedf2935eb8bdb3d4bb11f7019771b728d7b2f8d2377dc3e191db.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 242,
    "title": "How to win at CORS",
    "slug": "2021-12-27-242-how-to-win-at-cors",
    "date": "2021-12-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #51, 2021",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "How to win at CORS",
        "url": "https://jakearchibald.com/2021/cors",
        "description": "CORS (Cross-Origin Resource Sharing) is hard. It's hard because it's part of how browsers fetch stuff, and that's a set of behaviours that started with the very first web browser over thirty years ago. Since then, it's been a constant source of development; adding features, improving defaults, and papering over past mistakes without breaking too much of the web. In this article you can learn the 'how' and 'why' of CORS, from start to finish!",
        "imageUrl": "./77eae7025bd8f3df708e962ee029288e17d4e085dde6ac7eb2689236f57f8b6f.jpg",
        "featured": true
      },
      {
        "title": "Deep-copying in JavaScript using structuredClone",
        "url": "https://web.dev/structured-clone",
        "description": "For the longest time, you had to resort to workarounds and libraries to create a deep copy of a JavaScript value. The Platform now ships with `structuredClone()`, a built-in function for deep-copying.",
        "imageUrl": "./a55a44b079f9b4e755771b962904034925753803838fd22b65070b9f920161fd.jpg",
        "featured": false
      },
      {
        "title": "Implementing RSA in Python from Scratch (Part 1)",
        "url": "https://coderoasis.com/implementing-rsa-from-scratch-in-python",
        "description": "I'm sure many programmers, particularly web developers have heard of the RSA cryptography system. RSA is an asymmetric cryptography system, meaning that one key is used for encryption and the other for decryption. Sometimes building is the best way to learn something and with this article you can learn how to build RSA from scratch using Python.",
        "imageUrl": "./f398fd5add3e044efec870c0773bf3edc1072ebe2885f36934f2058c74fe521d.jpg",
        "featured": false
      },
      {
        "title": "Top Docker alternatives for 2022",
        "url": "https://blog.logrocket.com/top-docker-alternatives-2022",
        "description": "Explore seven of the top alternatives to Docker in 2022 for building, running, and distributing container images.",
        "imageUrl": "./7bfbc4f90b2da3bba3f13b03819209d5f4bc5036e07eb80e1e5025ede24fca16.jpg",
        "featured": false
      },
      {
        "title": "How to Use the .github Repository",
        "url": "https://freecodecamp.org/news/how-to-use-the-dot-github-repository",
        "description": "GitHub supports a special folder called `.github` in every repo. You can put files with a particular name and format in this folder to enable some cool behaviours in your repository: build pipelines, contribution guidelines, and much more!",
        "imageUrl": "./85e69776695d1b1c40d0b6dde1d4dab54ad3b0f34a2eb10b9df6ca7867704abf.jpg",
        "featured": false
      },
      {
        "title": "UNO CSS",
        "url": "https://unocss.antfu.me/",
        "description": "UNO CSS is an interesting younger alternative to TailwindCSS that is designed with flexibility and performance in mind. In UnoCSS, there are no core utilities; all functionalities are provided via presets. Check it out if you want to try something new in this space.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Starting a Prisma + TypeScript Project",
        "url": "https://sabinadams.hashnode.dev/starting-a-prisma-typescript-project",
        "description": "With such a rich selection of ORMs out there, choosing which one to use for your JavaScript-based project can be tough. If you are using TypeScript, you might be interested in Prisma and this article is the first one of a series dedicated to Prisma and TypeScript, a great resource to get started with these technologies.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 241,
    "title": "5 Developer Mistakes to Avoid",
    "slug": "2021-12-20-241-5-developer-mistakes-to-avoid",
    "date": "2021-12-20",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "5 Developer Mistakes to Avoid",
        "url": "https://cult.honeypot.io/reads/5-big-mistakes-developers-should-avoid/",
        "description": "With the new year around the corner, it's a great time to reflect on our careers and figure out what can we do to improve. We love this article because it brings a very human and collaborative perspective on the topic. Do you need a teaser? What about mistake #1 *\"Putting code before people\"*? And there are other 4 gems like this one...",
        "imageUrl": "./d69d20c3b163f154093936f2f534b199d15e7f5a871137992c763c01e56e7022.png",
        "featured": true
      },
      {
        "title": "TAMAGUI - React design system",
        "url": "https://tamagui.dev/",
        "description": "A lovely design system for both the web and React Native. There is not shortage of options in this space, so why do we like TAMAGUI? Well, first of all for the lovely logo, but more seriously, it's very focused on performance, it gives you some nice primitives without making strong design decisions for you and, finally, it supports theming out of the box!",
        "imageUrl": "./5cacc3e485cda3e1e836e8d55cd7507c1250d45eb921f1e10a4d7a9c486632e5.png",
        "featured": false
      },
      {
        "title": "What’s new in TypeScript 4.5",
        "url": "https://blog.logrocket.com/whats-new-typescript-4-5/",
        "description": "TypeScript 4.5 was recently released and it comes with some interesting new features: the new `Awaited` type (pun intended), possibility to replace built-in types using libraries in `node_modules`, template strings as discriminants and much more.",
        "imageUrl": "./9a615a3e5ff06f2185becf9a027f1551a7dc12d8303b1654a0abd9d01917f51f.png",
        "featured": false
      },
      {
        "title": "Building a pixel art CSS generator",
        "url": "https://fjolt.com/article/css-pixel-art-generator",
        "description": "Did you know you can use CSS to create pixel art? It's a bit tricky though, so why not creating a visual editor using HTML and JavaScript? Yes, this article will guide you exactly through this idea... and there is already a pixel editor already available if you just want to play with that!",
        "imageUrl": "./dd29013fc649ac3720f8304ff4657949a2a137db194c56a3224dea4f5d1f90d6.png",
        "featured": false
      },
      {
        "title": "Automations you can run on GitHub",
        "url": "https://github.blog/2021-12-16-5-automations-every-developer-should-be-running/",
        "description": "You can use GitHub workflows to automate a lot of tedious tasks that can help you to make sure your code is always reaching great standards. For example, avoid security vulnerabilities, make sure all your buttons work, be notified if your website is running slow after a change, or even automating writing release notes.",
        "imageUrl": "./b806a6c3735fcd42bd8a816a53d6f1211abc172682fedc64670428f4d32c4055.png",
        "featured": false
      },
      {
        "title": "Pico.css",
        "url": "https://picocss.com/",
        "description": "Another interesting entry in the field of CSS and styling. Pico.css is a new minimal CSS framework for semantic HTML. This means that you can get a pretty nicely styled page without having to write a line of css or use special classes. But if you want to go a bit further, Pico.css also gives you classes and other utilities (including themes!) to be able to customise your style.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Coding font tournament",
        "url": "https://www.codingfont.com/",
        "description": "*\"Hey what's this cool coding font you are using?\"*How many times did you hear (or ask) this question? 😅\n\n\n\nOk, let's come up with our own favourite coding font! How? Through a tournament, of course! Play a game of eliminating competing coding fonts, until your unique favourite will emerge victorious! ⚔️",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 240,
    "title": "#240: Introducing Svelte",
    "slug": "2021-12-13-240-50-introducing-svelte",
    "date": "2021-12-13",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nBelka design and develop digital products.\n\n[We can help you with your next project.](https://belkadigital.com/)",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "Introducing Svelte",
        "url": "https://joshcollinsworth.com/blog/introducing-svelte-comparing-with-react-vue",
        "description": "Now that Rich Harris, the creator of Svelte, has joined Vercel to work full time on Svelte, we can definitely expect an even brighter future for this framework. In this article you can find a great introduction to Svelte and a comparison with other mainstream frontend frameworks such as React.",
        "imageUrl": "./2df2c01b4b36550531d4cba4edb94306c3fa691b4667f61d0657c30ea5616b74.jpg",
        "featured": true
      },
      {
        "title": "Get started with validation in Node.js",
        "url": "https://simonplend.com/get-started-with-validation-in-node-js",
        "description": "Adding validation to your backend Node.js applications doesn't need to be a headache! In this article you can learn how to do that using `ajv` and JSON Schema.",
        "imageUrl": "./42ed34c06137b84b1280ab4472ff2cc71278726beab1e01b46b8f93ee2c1fc26.jpg",
        "featured": false
      },
      {
        "title": "A Visual Guide to React Rendering",
        "url": "https://alexsidorenko.com/blog/react-render-refs",
        "description": "A React Trivia: How to disable a button after 3 clicks without re-rendering the component the first 2 times? It turns out you can do that by using Refs. How much do you know about them?",
        "imageUrl": "./0298b0bd2b3bc78aa88bf5980c6f8ec0fd1e7f630e65a12dc7d51e1f519959e9.png",
        "featured": false
      },
      {
        "title": "Various ways to include comments on your static site",
        "url": "https://darekkay.com/blog/static-site-comments",
        "description": "This article provides a selection of different techniques to implement comments using a static site generator. A great resource if you are currently working on a static website (maybe your own blog) and you want to enable comments in your pages!",
        "imageUrl": "./422c877757ed91629e34bbcd39d09fefa6c8941f7861aa4f21018683a280f781.jpg",
        "featured": false
      },
      {
        "title": "UX Design is useless and it slows down the software development",
        "url": "https://www.belkadigital.com/articles/ux-design-slows-down-development",
        "description": "Adding the design activities to a software development process is not easy. This is how we do it!\nsponsored",
        "imageUrl": "./4fc7d0c1c57555d2461cfe7b915d8c15aa38b4e3bd22435eeeb5ebb727ab68ca.jpg",
        "featured": false
      },
      {
        "title": "Tailwind CSS v3 is here!",
        "url": "https://tailwindcss.com/blog/tailwindcss-v3",
        "description": "Tailwind CSS v3 has recently been announced by its creator Adam Wathan. This new version brings incredible performance gains, huge workflow improvements, and a seriously ridiculous number of new features. The most impressive of them is Just-in-Time compilation (originally experimental, now it's the default).",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "How to build a Netflix clone",
        "url": "https://th3wall.hashnode.dev/proud-to-present-you-fakeflix-a-netflix-clone-built-with-react-redux-firebase-and-framer-motion",
        "description": "Have you ever wondered what it would take to build a frontend application for something like Netflix? Davide Mandelli asked himself the same question and he come up with Fakeflix, a Netflix clone built using React, Redux, Firebase and Framer Motion. An excellent example made totally open source!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 239,
    "title": "#239: Creating the Perfect Commit in Git",
    "slug": "2021-12-06-239-49-creating-the-perfect-commit-in-git",
    "date": "2021-12-06",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "Creating the Perfect Commit in Git",
        "url": "https://css-tricks.com/creating-the-perfect-commit-in-git",
        "description": "With a little bit of care, a commit message can be something that helps us stay on top of things. It can be a container for related changes that belong to one and only one topic, and thereby make it easier for us to understand what happened.\nIn this post, you'll learn what it takes to produce the latter type of commit or, in other words: the “perfect” commit.",
        "imageUrl": "./aa101f656ee4759fedb359f355e45aee6c0f1781277326ed99c62990f6ce2a7a.jpg",
        "featured": true
      },
      {
        "title": "Open Props: sub-atomic styles",
        "url": "https://open-props.style/",
        "description": "Open source CSS custom properties to help accelerate adaptive and consistent design. Available from a CDN or NPM, as CSS or Javascript. In some ways, it reminds us of TailwindCSS but with a more standardise and lean approach to it.",
        "imageUrl": "./e7c75a0f1675f337b54ea9ffbecbfa601612fd92ee69c679eacb5452dc6f09bb.jpg",
        "featured": false
      },
      {
        "title": "My Custom CSS Reset",
        "url": "https://joshwcomeau.com/css/custom-css-reset",
        "description": "In his latest article, Josh shares is own custom CSS Reset and, while you don't not necessarily  have to agree with everything inside it, you can still learn a trick or two by looking at it.",
        "imageUrl": "./ba8660ae8c0bcc7c71278cd07eb81f14c149f6d3ff8946d8c405452e146b825f.jpg",
        "featured": false
      },
      {
        "title": "Lighthouse user flows",
        "url": "https://web.dev/lighthouse-user-flows",
        "description": "Lighthouse has a new programmatic API that you can use with Puppeteer to measure performance and best practices throughout a particular user flow. With this API you can build tests to make sure that the most important user flow in your application are always performant!",
        "imageUrl": "./9ed9214dc40ac3aee24f425c8c987f86ae33c2422547456c588afca2e821293a.png",
        "featured": false
      },
      {
        "title": "Engineering Fundamentals Checklist",
        "url": "https://microsoft.github.io/code-with-engineering-playbook/ENG-FUNDAMENTALS-CHECKLIST",
        "description": "An interesting checklist by Microsoft to help you with following the most recent best practices around managing code in a software project.",
        "imageUrl": "./f1563c49009bf69d926fb3c6daa932d342da90309d615d5575e6cb0e62f2a4cc.png",
        "featured": false
      },
      {
        "title": "7 Ways to Improve Node.js Performance at Scale",
        "url": "https://blog.appsignal.com/2021/11/24/7-ways-to-improve-nodejs-performance-at-scale.html",
        "description": "Read some practical tips to help you scale your Node.js application to handle more traffic.",
        "imageUrl": "./54fb790c9f40be30c37ea895656e5f7a1c0736dccf57aadcae01391fbd3ade78.jpg",
        "featured": false
      },
      {
        "title": "A Showcase Of Lovely Little Websites",
        "url": "https://smashingmagazine.com/2021/11/showcase-lovely-little-websites",
        "description": "Instead of spending your coffee break scrolling through your social feeds, how about a lovely little website instead? We came across some fantastic ones that are just too good not to be shared. But be warned, your break might take a bit longer than intended.",
        "imageUrl": "./2d652c1bbf0fcebdda8fee79129b0deefc8040f888fadb6779e962856f34be9d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 238,
    "title": "Remix - Build Better Websites",
    "slug": "2021-11-29-238-remix-build-better-websites",
    "date": "2021-11-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #47, 2021",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Remix - Build Better Websites",
        "url": "https://remix.run/",
        "description": "Remix is a new promising full stack web framework based on React. Its promise is to let you focus on the user interface and work back through web fundamentals to deliver a fast, slick, and resilient user experience.",
        "imageUrl": "./b6f39679d9d690b6fddcaf0ff9af3fb0b59a868fc6db3e2d789818de5e3a477a.jpg",
        "featured": true
      },
      {
        "title": "I test in production",
        "url": "https://increment.com/testing/i-test-in-production",
        "description": "Seriously, *\"testing in production\"* might sound like a joke at first. But believe us when we say that, if done well, testing in production can be one of the most powerful ways of testing changes before shipping them to all our users. Check out this opinion piece by Charity Majors if you are intrigued about this topic!",
        "imageUrl": "./ccb3f1b9f3eec961a11902c8275e4f7edaba35c72a7acf4c9f226a23ffbef3a0.jpg",
        "featured": false
      },
      {
        "title": "emojimix",
        "url": "https://tikolu.net/emojimix",
        "description": "*\"Combine two emojis into one. Thousands of combinations are available.\"*\n\nSimply our favourite website of the week. Have a nerdy peek at the source code if you want to learn a trick or two!",
        "imageUrl": "./490531898931f16dbe6b9d9c98c8bc3a602f07da77ee25919e10e75028c78b2c.png",
        "featured": false
      },
      {
        "title": "3 Ways to Read SSM Parameters",
        "url": "https://dev.to/eoinsha/3-ways-to-read-ssm-parameters-4555",
        "description": "If you have been using AWS long enough you have probably bumped into SSM parameters at least once. In this article you can get a very comprehensive view of what are the best ways to consume SSM parameters during the lifecycle of an APP (build time, deploy time, runtime). Each approach comes with its own pros and cons!",
        "imageUrl": "./77bcf18ce94e88f76e0148da8cd8ffe56ca5959eac3a86c2aba6ddcb759fe31b.jpg",
        "featured": false
      },
      {
        "title": "Understanding Kafka with Factorio",
        "url": "https://ruurtjan.medium.com/understanding-kafka-with-factorio-74e8fc9bf181",
        "description": "A very engaging article that manages to explain the main concepts of Apache Kafka (and streams systems in a more general way) using analogies with the game Factorio. Most recommended read, especially if you have played the game :)",
        "imageUrl": "./7018ed215c0c692785fedd7010ab5951914773a307ce19d28a09f4fad698e036.jpg",
        "featured": false
      },
      {
        "title": "The Only stock resources library you will ever need.",
        "url": "https://abhirajb.hashnode.dev/the-only-stock-resources-library-you-will-ever-need",
        "description": "A seriously good list of all the websites you can use to find royalty free stock resources that you can use for your next projects.",
        "imageUrl": "./d95240d90566b1e247818253f044d08e1f1cc983b1b1c552a7ec889ae9c69f23.png",
        "featured": false
      },
      {
        "title": "Using the Spotify API with Next.js",
        "url": "https://leerob.io/blog/spotify-api-nextjs",
        "description": "Did you know that Spotify offers an API? The first thing that I thought when I found out about this was to create a widget to show in real-time the song I am currently listening to on my personal blog. Apparently I wasn't the first one to have this idea 😅",
        "imageUrl": "./5ea8022efd169d61262a0eeccdd107752a2391eba60539c941fc5fcf84516e99.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 237,
    "title": "#237: Cooklang – Recipe Markup Language",
    "slug": "2021-11-22-237-47-cooklang-recipe-markup-language",
    "date": "2021-11-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #46, 2021",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Cooklang – Recipe Markup Language",
        "url": "https://cooklang.org/",
        "description": "Cooklang is a markup language for recipes. If you are considering to build any food related app or website, you should definitely consider having a look at Cooklang. This is also an interesting use case of how sometimes domain-specific languages can make a huge difference.",
        "imageUrl": "./f59417dfe811083acac242fc67e0b2356611d4f74f1aafc124eeec485c10c866.png",
        "featured": true
      },
      {
        "title": "Data Fabric vs. Data Mesh: What's the Difference?",
        "url": "https://blog.starburst.io/data-fabric-vs.-data-mesh-whats-the-difference",
        "description": "Data is becoming more and more a maker or a breaker of entire organisations. Being able to manage data proficiently is really an important topic and this is creating new approaches and terminology. Do you know about the data fabric and the Data Mesh and what's the difference between them?",
        "imageUrl": "./4ebf082948774ff1ebb87fbadc29f31c5ad2be45c3d47810c892c051d2558602.jpg",
        "featured": false
      },
      {
        "title": "Understanding why our build got 15x slower with Webpack 5",
        "url": "https://engineering.tines.com/blog/understanding-why-our-build-got-15x-slower-with-webpack",
        "description": "A very interesting case study where, all of a sudden, building a front-end went from taking a few seconds to taking a few minutes. This is was due to a particular Webpack configuration and with this article you can certainly learn a lot about how to keep Webpack performant!",
        "imageUrl": "./e3aabb9730669faf03b2d23b7377445df1353e0c9a0e4792d811913a96c4c78f.jpg",
        "featured": false
      },
      {
        "title": "TypeScript, event handlers in the DOM, and the this keyword",
        "url": "https://valentinog.com/blog/this",
        "description": "In this quick post you'll learn how to make TypeScript play well with the infamous this keyword when working with event handlers in the DOM.",
        "imageUrl": "./49d468dc33d2a942da0b48f2e8283efa0231a38967dca3ced2e2b38f736945b1.jpg",
        "featured": false
      },
      {
        "title": "How to Grasp Containers - Efficient Learning Path",
        "url": "https://iximiuz.com/en/posts/container-learning-path",
        "description": "What is a Container? Container vs. VM? Docker vs. Kubernetes. How to organize the learning efficiently? There is certainly a lot to learn when it comes to container and this article makes a great job of explaining the main concepts and giving you an organised study path to build up more experience.",
        "imageUrl": "./e5448226705c9c0eb3ad59e3e2334709030d4a8b962a42e83fe420257e5eca5c.jpg",
        "featured": false
      },
      {
        "title": "Responsive design: quick tips",
        "url": "https://dev.to/fidalmathew/responsive-design-css-tips-nhj",
        "description": "A short post that presents some practical advices on what is important to consider when creating responsive designs. How should margin and padding change between a mobile and a desktop version? What about using em, rem or percentage units?",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Building the blob menu",
        "url": "https://yosracodes.hashnode.dev/blob-menu",
        "description": "An interesting tutorial that can teach you how to build an animated menu with a popup blob effect. This approach uses JavaScript and CSS to achieve this interesting effect. Definitely worth checking it out!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 236,
    "title": "How To Learn Stuff Quickly",
    "slug": "2021-11-15-236-how-to-learn-stuff-quickly",
    "date": "2021-11-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #45, 2021",
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible",
      "author": "Alvin Toffler",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "How To Learn Stuff Quickly",
        "url": "https://joshwcomeau.com/blog/how-to-learn-stuff-quickly",
        "description": "As software developers, we're always learning new things; it's practically the whole gig! If we can learn to quickly pick up new languages/frameworks/tools, we'll become so much more effective at our job. It's sort of a superpower.",
        "imageUrl": "./a34696e07d563530f7d69e3a7901a43363111b0a12e5bcdab08367c21e505a34.jpg",
        "featured": true
      },
      {
        "title": "React Aria",
        "url": "https://react-spectrum.adobe.com/react-aria/index.html",
        "description": "A library of React Hooks that provides accessible UI primitives for your design system.",
        "imageUrl": "./16f9b8ce7a0de868079879b3d6debdb2a6407e821a40df4545841940fd86d80c.jpg",
        "featured": false
      },
      {
        "title": "How to integrate MongoDB in your Fastify application",
        "url": "https://backend.cafe/how-to-use-fastify-and-mongodb",
        "description": "Learn step by step how to connect your Fastify application to MongoDB and create a CRUD REST-API to manage a to-do list service",
        "imageUrl": "./b32528faa23f1e2c6072c64a26c36d9566b7463bff8a7e6655ca00566f7c0e82.jpg",
        "featured": false
      },
      {
        "title": "Favicons: How to Make Sure Browsers Only Download the SVG Version",
        "url": "https://css-tricks.com/favicons-how-to-make-sure-browsers-only-download-the-svg-version",
        "description": "A small trick that can save you thousands of requests (and even keep your access logs cleaner!). Check it out if you are already serving your favicons in png format!",
        "imageUrl": "./321b730655ec31afe53656acf553ade0e5456fe27b39917fb9e9f2ee5810a9ba.jpg",
        "featured": false
      },
      {
        "title": "Does the Next Generation of Static Site Generators Make Building Sites Better?",
        "url": "https://css-tricks.com/does-the-next-generation-of-static-site-generators-make-building-sites-better",
        "description": "What is the future of static site generators? It seems that they are increasingly doing more and more by supporting one or more frontend frameworks and server side rendering. But is this what the web needs?",
        "imageUrl": "./04d8c4b004f44cd67d80dc8150c796397bbe2e78545a053b670b936d30711ac9.jpg",
        "featured": false
      },
      {
        "title": "Improving overconstrained Rust library APIs",
        "url": "https://blog.logrocket.com/improving-overconstrained-rust-library-apis",
        "description": "In this guide, we’ll demonstrate how to make Rust library APIs more lenient without losing any functionality. If you are learning Rust, this is definitely a great read!",
        "imageUrl": "./4e292b59a18193be58eee0395c404280d35dada184d11739bf0b3e98a19e7afc.jpg",
        "featured": false
      },
      {
        "title": "How to get started with AWS",
        "url": "https://www.youtube.com/watch?v=M6KAb1RQh9E",
        "description": "AWS Bites is a new weekly podcast started by Eoin Shanaghy and Luciano Mammino and it tries to answer interesting AWS questions in about 5 minutes. A great resource if you want to have a bite sized approach to learning more about AWS! In this episode, you can learn how to get started with AWS!",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Third Edition",
      "author": "Mario Casciaro and Luciano Mammino",
      "description": "Get the best out of Node.js by mastering  its most powerful components and patterns to create modular and scalable applications with ease. Create reusable patterns and modules by leveraging the new features of Node.js. Understand  the asynchronous single thread design of node and grasp all its features and patterns to take advantage of various functions. This unique guide will help you get the most out of Node.js and its ecosystem.",
      "coverImageUrl": "./c43f4eab2ae5c2f9e708d07e695dc5aa745b0027fdf14ba4a1f426c13a06105f.png",
      "amazonUs": "https://www.amazon.com/dp/1785885588/?tag=fullstackbulletin-20",
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 235,
    "title": "#235: The New CSS Reset",
    "slug": "2021-11-08-235-45-the-new-css-reset",
    "date": "2021-11-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #44, 2021",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "The New CSS Reset",
        "url": "https://css-tricks.com/an-interview-with-elad-shechter-on-the-new-css-reset",
        "description": "In an interview with CSS Tricks, Elad Shechter dicloses his new project \"The New CSS Reset\" and explains why something like this is needed in 2021. If you have been doing a lot of CSS, you will certainly enjoy this interview!",
        "imageUrl": "./01f48362add43623bd8bc0ef24099ff0b6c928cae50a913962a825a5ce99d775.jpg",
        "featured": true
      },
      {
        "title": "Grid scroll 10x faster: 1 line of CSS",
        "url": "https://medium.com/@johan.isaksson/how-i-made-googles-data-grid-scroll-10x-faster-with-one-line-of-css-78cb1e8d9cb1",
        "description": "In this article you can learn how Johan Isaksson managed to make a Google data table 10 times faster (scrolling) by just changing 1 line of CSS. More than this you can get a peek of what was their debugging process that lead up to this interesting optimisation.",
        "imageUrl": "./42f18a76c5f85ac4593a96a2133fe257fb401f02a51e2fcc352d2e642d057bf8.jpg",
        "featured": false
      },
      {
        "title": "Accessibility Maze",
        "url": "https://de.ryerson.ca/games/accessibility",
        "description": "A fun way to learn about web accessibility challenges and solutions.",
        "imageUrl": "./7f520155443d56fc33e99171f9a323c2d4878e6de2b969b11a5a97c103bd4c15.jpg",
        "featured": false
      },
      {
        "title": "Async Ruby",
        "url": "https://brunosutic.com/blog/async-ruby",
        "description": "Async Ruby is a powerful and highly scalable concurrency feature. It's available today, it's production-ready, and it's an awesome addition to Ruby language!",
        "imageUrl": "./99ced116b2f35018c1638559dd12f83d6087658cce3ba534995ff3eedf438a9e.jpg",
        "featured": false
      },
      {
        "title": "CSS-ing Candy Ghost Buttons",
        "url": "https://css-tricks.com/css-ing-candy-ghost-buttons",
        "description": "A very interesting use case on how to create an interesting \"ghost-like\" effect for styling buttons with CSS.",
        "imageUrl": "./09fb8f7f4f8c18af2f115a9ec085f6de9982bcf930a1457dd66ce6017f1ae640.jpg",
        "featured": false
      },
      {
        "title": "Respecting Users’ Motion Preferences",
        "url": "https://smashingmagazine.com/2021/10/respecting-users-motion-preferences",
        "description": "The `prefers-reduced-motion` media query has excellent support in all modern browsers going back a couple of years. In this article, Michelle Barker explains why there’s no reason not to use it today to make your sites more accessible.",
        "imageUrl": "./cf11656bf8317afb1eecb42062eeab1c74d1785cfc3604814f40766642627020.jpg",
        "featured": false
      },
      {
        "title": "Useful React APIs For Building Flexible Components With TypeScript",
        "url": "https://smashingmagazine.com/2021/10/react-apis-building-flexible-components-typescript",
        "description": "React with JSX is a fantastic tool for making easy-to-use components. Typescript components make it an absolute pleasure for developers to integrate your components into their apps and explore your APIs. Learn about three lesser-known React APIs that can take your components to the next level.",
        "imageUrl": "./738d0f41bcd8612183630777fd5fe7b5a17429c62549006a3937a990ffe87aa4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 234,
    "title": "Photoshop's journey to the web",
    "slug": "2021-11-01-234-photoshop-s-journey-to-the-web",
    "date": "2021-11-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2021",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "Photoshop's journey to the web",
        "url": "https://web.dev/ps-on-the-web",
        "description": "Over the last three years, Chrome has been working to empower web applications that want to push the boundaries of what's possible in the browser. One such web application has been Photoshop. The idea of running software as complex as Photoshop directly in the browser clearly shows us what are the capabilities that we can get from modern web apps!",
        "imageUrl": "./829859f976a9a169499cb422c3ac2c44d297e0a3831198bc0d94dcc935e18612.png",
        "featured": true
      },
      {
        "title": "How I built a modern website in 2021",
        "url": "https://kentcdodds.com/blog/how-i-built-a-modern-website-in-2021",
        "description": "Kent C. Dodds shares with us how he rebuilt his personal website using a bunch of new tech including **React** (of course!), **Remix**, **XState** and **Prisma**! But there is a lot (seriously a lot) more in this post!",
        "imageUrl": "./cbaaf856779941c46e7f903cea2eaac46ce7aa0ebda7c03b9efd0d499ae5c6e3.jpg",
        "featured": false
      },
      {
        "title": "React's new documentation (beta)",
        "url": "https://beta.reactjs.org/learn",
        "description": "The React team has been working for a while on a new version of the documentation website and it is finally available in beta. This new version seems much more interactive (with interactive snippets you can edit directly on the website) so it promises a much friendlier learning experience!",
        "imageUrl": "./18bd9063ca176bdaee31e75c4dd029557ac51a1146af12bde0ceba59bec76865.png",
        "featured": false
      },
      {
        "title": "Local Testing A Serverless API",
        "url": "https://smashingmagazine.com/2021/10/local-testing-serverless-api-gateway-lambda",
        "description": "Have you ever struggled with testing cloud services locally? Specifically, have you ever struggled with locally testing an API that uses API Gateway and Lambda, with the Serverless framework, on AWS? In this article, you can learn a few tricks that might make your life easier!",
        "imageUrl": "./e4cc8a005d2757fe6b5d8d5f0d3143f9df0f8c0c036d4e5d32e7204adae9a3c0.jpg",
        "featured": false
      },
      {
        "title": "Lets create a screen recorder with JS",
        "url": "https://dev.to/0shuvo0/lets-create-a-screen-recorder-with-js-3leb",
        "description": "Did you know that JavaScript on the browser has the capability of screen recording? Well, in this tutorial you can actually use this capability to create your own web based screen recording tool!",
        "imageUrl": "./900710452f0edc9ecbd322160ee523f10cd53a651cc6658f68935e1347195e58.jpg",
        "featured": false
      },
      {
        "title": "HTML with Superpowers",
        "url": "https://daverupert.com/2021/10/html-with-superpowers",
        "description": "If you were using Web Components before 2020 you were an early adopter and you probably have some scars to show for it. But in 2021, now that all modern browsers support Web Components, they’re worth investigating and using more. Find out more in this amazing talk by Dave Rupert.",
        "imageUrl": "./3b4f473807890daa9b5afdb3e5fa46afa97660cdcd4c606c1f45ba33d8f1b1db.jpg",
        "featured": false
      },
      {
        "title": "Serverless WebSockets on AWS",
        "url": "https://dev.to/aws-builders/serverless-websockets-on-aws-3nm9",
        "description": "With AWS, developers have multiple choices on how to implement real-time communication. Let us go through some of the options.",
        "imageUrl": "./e1b2312fe3d023dad7e61ca97858f957ff8827a1149a3dea3818014b02d9526f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 233,
    "title": "Processing CPU-intensive Jobs in Node.js",
    "slug": "2021-10-25-233-processing-cpu-intensive-jobs-in-node-js",
    "date": "2021-10-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #42, 2021",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Processing CPU-intensive Jobs in Node.js",
        "url": "https://dev.to/eunovo/processing-cpu-intensive-jobs-in-nodejs-5epd",
        "description": "CPU intensive work will block the Node.js event loop, so it's not a great thing to do in Node.js. But what if you really have to do some CPU intensive work? This article explores the `worker_threads` module and how it can be used to offload CPU intensive work to another thread, so that our event loops does not get blocked.",
        "imageUrl": "./fac5582f06f88b8a22962b4968564a0bd95e4b91d3eec3028e39e62a4b971dda.jpg",
        "featured": true
      },
      {
        "title": "Solving CLS Issues In A Next.js-Powered Website",
        "url": "https://smashingmagazine.com/2021/10/nextjs-ecommerce-cls-case-study",
        "description": "Cumulative Layout Shift (CLS) is one of the hardest core web vital to debug. In this article, we go through different tools to investigate CLS, when to use them (and when not), and solutions to some of the CLS issues we faced in our Next.js-based e-commerce website.",
        "imageUrl": "./442a2b41ff1c5b71f063fb64f9838a67b04c0157368d25dd382829270e613f2a.jpg",
        "featured": false
      },
      {
        "title": "JAMstack Developers’ Favorite Frameworks of 2021",
        "url": "https://css-tricks.com/jamstack-developers-favorite-frameworks-of-2021",
        "description": "Which new framework should I learn this year? Is it time to ditch my CMS? What tools should I pick up if I want to scale my site? In this developer survey you can learn what are the web technologies most loved by JAMStack developers.",
        "imageUrl": "./b691623714a5ef6ad9fddbf562a1f81622a4b620033c629da870e022a7bf914a.jpg",
        "featured": false
      },
      {
        "title": "Best practices for using third-party embeds",
        "url": "https://web.dev/embed-best-practices",
        "description": "This article discusses performance best practices that you can use when loading third-party embeds, efficient loading techniques and the Layout Shift Terminator tool that helps reduce layout shifts for popular embeds.",
        "imageUrl": "./1b78357cd0849d5c85975edd1c9c848d929335ce4cb9818119a5ef4a3ff03e65.jpg",
        "featured": false
      },
      {
        "title": "Huge List of Database Benchmark",
        "url": "http://kokizzu.blogspot.com/2019/04/huge-list-of-database-benchmark.html",
        "description": "If you love databases and performance benchmarks in this article you can see an in-depth comparison between several different distributed databases.",
        "imageUrl": "./bf4c93f3b681b5963bda2bd374e529123f0c1d88dd5a1a638f3d6e9794563a8b.jpg",
        "featured": false
      },
      {
        "title": "Are you releasing as often as you can?",
        "url": "https://medium.com/@eugenserbanescu/are-you-releasing-as-often-as-you-can-ee38f2206562",
        "description": "Releasing software often is a good thing and it can improve the quality of your work and the dynamics within your teams. In this article you can find a more in-depth analysis of this idea.",
        "imageUrl": "./bb4b0bea94049372535b06065315f3daf7b8c16485e8466c2d81090dc28bdd93.jpg",
        "featured": false
      },
      {
        "title": "How to cancel an HTTP request in Node.js",
        "url": "https://simonplend.com/how-to-cancel-an-http-request-in-node-js",
        "description": "It's now possible to properly cancel an HTTP request in Node.js. Let's learn how the Abort API can help us.",
        "imageUrl": "./a939f950c17b69885b8be439675c51e9488f2ffee70fac558491684c6f3c7f22.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 232,
    "title": "GPU.js - GPU accelerated Javascript",
    "slug": "2021-10-18-232-gpu-js-gpu-accelerated-javascript",
    "date": "2021-10-18",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "GPU.js - GPU accelerated Javascript",
        "url": "https://gpu.rocks/",
        "description": "A powerful JavaScript library that allows you to perform massively parallel GPGPU computations using GPU. It works in Node.js too!",
        "imageUrl": "./fd8a811bdd2df5798cae69ea8b930f0f5d44bd67b53c371bbc765b6d08023cbf.png",
        "featured": true
      },
      {
        "title": "Clean Conventional Commits",
        "url": "https://dev.to/sublimegeek/clean-conventional-commits-40l8",
        "description": "Did you know that if you are diligent enough with your commit messages you can fully automate the release versioning? Conventional commits is a standard way of writing commit messages that, among other things, allows you to specify when a change is a breaking change and requires a new major release!",
        "imageUrl": "./ecce16b050c373d1d2fd280e685208ea3dd23b9ee88f32ad0868c682a3b97e15.jpg",
        "featured": false
      },
      {
        "title": "Most popular mistake to ruin Webpack bundle optimization",
        "url": "https://codecrumbs.io/library/most-popular-mistake-webpack",
        "description": "Building huge applications means putting together hundreds of different modules, packing, bundling and shipping that towards user. Control of bundle size becomes critical at this point, one module, one bad apple, can just ruin everything. Let's talk about that in this post.",
        "imageUrl": "./09c49b9435854ac8d870cdf944fae0b6be9356542f73c389364ae5672467bd9b.jpg",
        "featured": false
      },
      {
        "title": "The very first Eleventy 1.0 Beta Release",
        "url": "https://www.11ty.dev/blog/eleventy-v1-beta/",
        "description": "Eleventy, one of the fastest growing static site generators, is close to a version 1.0! This first beta release comes with some interesting new features. At the top of the list there's Eleventy Serverless:  a fantastic way to do dynamic server side rendering on request or lazily via Distributed Persistent Rendering. Find out all the new features in this blog post.",
        "imageUrl": "./013fc2d4b284e9a60f31fce15287686b84fa0f912fe8766bc77ff774e447b213.jpg",
        "featured": false
      },
      {
        "title": "Web Streams Everywhere (and Fetch for Node.js)",
        "url": "https://css-tricks.com/web-streams-everywhere-and-fetch-for-node-js",
        "description": "Chrome developer advocate Jake Archibald called 2016 \"the year of web streams.\" Clearly, his prediction was somewhat premature. The Streams Standard was announced back in 2014. It’s taken a while, but there’s now a consistent streaming API implemented in modern browsers (still waiting on Firefox…) and in Node (and Deno).",
        "imageUrl": "./5b1226e0f81b21e2bdde94e03160833789d77296a2384b4f63076d0c21967a89.jpg",
        "featured": false
      },
      {
        "title": "Lin Clark on the WebAssembly Component Model",
        "url": "https://infoq.com/podcasts/web-assembly-component-model",
        "description": "Using the metaphor of lego blocks, Lin Clark (a Senior Principal Software Engineer at Fastly) discusses WebAssembly Component model with Wes Reisz, including the background, roadmap, and design goals.",
        "imageUrl": "./60aa3b96c33284b94f1ce9ec7f05ed7bcb12b398d9d54877053c71593d9a9eba.jpg",
        "featured": false
      },
      {
        "title": "A Discord app with Fastify!",
        "url": "https://dev.to/eomm/a-discord-app-with-fastify-3h8c",
        "description": "A tutorial showing you how to builf a simple demo application using Fastify. In this tutorial you will learn how to implement login with Discord (using OAUTH2), how to secure the web application, test and deploy to Heroku.",
        "imageUrl": "./e3df4214e1838ff7caef0317f197fb1e04c50f1689b6edfa9f22e0d105742795.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 231,
    "title": "Partitioning GitHub’s relational databases to handle scale",
    "slug": "2021-10-04-231-partitioning-github-s-relational-databases-to-handle-scale",
    "date": "2021-10-04",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Partitioning GitHub’s relational databases to handle scale",
        "url": "https://github.blog/2021-09-27-partitioning-githubs-relational-databases-scale",
        "description": "An interesting case study from GitHub showing how partitioning a relational database can unlock the next level of scalability. A very interesting read if you want to understand better how relational database work and learn more about system scalability.",
        "imageUrl": "./5fd26be8c3b3b754d4aa2ebd17e7b6023bcd42c0e7eed93593541b94d08eb4de.jpg",
        "featured": true
      },
      {
        "title": "You don't need moment.js",
        "url": "https://github.com/you-dont-need/You-Dont-Need-Momentjs",
        "description": "List of functions which you can use to replace moment.js and an awesome ESLint Plugin that will help you to refactor the parts of your code using moment.js. Check out this repository if you want to get rid of moment.js.",
        "imageUrl": "./95466ed22fc864bfb3d03817a0987de154a1c1929d78ee6b1b402e173f69a480.jpg",
        "featured": false
      },
      {
        "title": "Node.js Garbage Collection Explained",
        "url": "https://blog.risingstack.com/node-js-at-scale-node-js-garbage-collection",
        "description": "Learn how Node.js garbage collection and memory management works in practice. Code-level explanation and garbage collection examples inside.",
        "imageUrl": "./fbd36f1f301313ab2b8dd96557fac4a045a3017764da806bc0b2d221e24cc319.jpg",
        "featured": false
      },
      {
        "title": "Twitter's div Soup and Uglyfied CSS, Explained",
        "url": "https://giuseppegurgone.com/twitter-html",
        "description": "If you ever tried to have a look at Twitter's HTML code you might have noticed that it's full of DIVs and it looks rather ugly. In this article, Giuseppe goes into great detail explaining why that is the case and illustrates how React Native for web works.",
        "imageUrl": "./e82c35b1c4944cf4fad0da6d3767a80157a7000bbb9b3f9a03df6aaf87aea1b7.jpg",
        "featured": false
      },
      {
        "title": "Accessible Palette: stop using HSL for color systems",
        "url": "https://wildbit.com/blog/2021/09/16/accessible-palette-stop-using-hsl-for-color-systems",
        "description": "An interesting deep dive on what it takes to build accessible color palettes and an introduction to Accessible Palette, an app for building color systems with consistent lightness and predictable contrast ratios across color levels.",
        "imageUrl": "./f809aa2d1a293963c646148ed2d08883ee1d5d0e02cd75bf78bfab7fae32fb87.jpg",
        "featured": false
      },
      {
        "title": "Best Way to Format And Manipulate Numbers In JavaScript",
        "url": "https://devdojo.com/myogeshchavan97/best-way-to-format-and-manipulate-numbers-in-javascript",
        "description": "This short article introduces **Numeral**, a simple and small JavaScript library that can be used to format numbers in many different ways.",
        "imageUrl": "./15fb7378632fde1551b8db53184687ae2109e715959b7c99871c22cfd25c5731.png",
        "featured": false
      },
      {
        "title": "How to Implement Logging in a Node.js Application With Pino-logger",
        "url": "https://css-tricks.com/how-to-implement-logging-in-a-node-js-application-with-pino-logger",
        "description": "Logging, on its own, is a key aspect of any application. In this article you can learn how to implement logging best practices for Node.js projects using pino as a logging library.",
        "imageUrl": "./fbaae5c4e785de43ba2f6e1d209414a971d92761bbab872ffc72e402c4c81d92.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 230,
    "title": "Demos Over Deadlines",
    "slug": "2021-09-27-230-demos-over-deadlines",
    "date": "2021-09-27",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "Demos Over Deadlines",
        "url": "https://medium.com/javascript-scene/demos-over-deadlines-8ed8dcdecb6",
        "description": "Eric Elliot is back with a new interesting article that focuses more on management than JavaScript. In this article, Eric talks about the constant time pressure that most software engineers constantly have to face and suggests a more healthy approach that favours frequent demos over deadlines.",
        "imageUrl": "./cc8b034990873de81b9f62e7ec674a9ab37e8e5805a3d028c77f99bc1a1045e6.jpg",
        "featured": true
      },
      {
        "title": "Running React Native everywhere",
        "url": "https://mmazzarolo.com/blog/2021-09-11-running-react-native-everywhere",
        "description": "How to run a React Native app on Android, iOS, macOS, Windows, the web, a browser extension, and Electron, using a Yarn Workspaces monorepo. Yes, React Native, can really run everywhere.",
        "imageUrl": "./1058f4b490228b0b42b6b694ee7ff31f80155a23f5150f21f413bb7755db43a2.jpg",
        "featured": false
      },
      {
        "title": "Vector? Raster? Why Not Both!",
        "url": "https://zachleat.com/web/vector-raster-split",
        "description": "An interesting image optimization case study by Zach Leatherman (the inventor of Eleventy) that shows how you can effectively combine raster and vector to achieve great performance without having to compromise on quality.",
        "imageUrl": "./ef94b651f64175bb3cd147f3dfb6dbdb6c342f8cf31fb82c221cb1837151268a.jpg",
        "featured": false
      },
      {
        "title": "Exploring the CSS Paint API: Blob Animation",
        "url": "https://css-tricks.com/exploring-the-css-paint-api-blob-animation",
        "description": "A very interesting animation effect is here: the blob! In this article you can see it done in many different ways, but relying heavily on the CSS Paint API!",
        "imageUrl": "./4277439531a58e8c1baadfd20bcb6a80f7349f893a38a0ea4c3e4032affc07d8.jpg",
        "featured": false
      },
      {
        "title": "A Guide to React Context and useContext() Hook",
        "url": "https://dmitripavlutin.com/react-context-and-usecontext",
        "description": "The React context provides data to components no matter how deep they are in the components hierarchy.",
        "imageUrl": "./4c9c42c7f42dd231b04c0ba776e1b8713307f4d29eb3cb3f6db547cd964b10c9.jpg",
        "featured": false
      },
      {
        "title": "Observability is key to the future of software (and your DevOps career)",
        "url": "https://stackoverflow.blog/2021/09/08/observability-is-key-to-the-future-of-software-and-your-devops-career",
        "description": "Observability platforms enable you to easily figure out what’s happening with every request and to identify the cause of issues fast. Learning the principles of observability and OpenTelemetry will set you apart from the crowd and provide you with a skill set that will be in increasing in the years to come.",
        "imageUrl": "./dc0a66a42f8b5ecd3df69a2099f33701249496e9ece0b69796e07944087eda3b.jpg",
        "featured": false
      },
      {
        "title": "How to shuffle songs?",
        "url": "https://engineering.atspotify.com/2014/02/28/how-to-shuffle-songs",
        "description": "This article is a bit old, but still quite a piece of gold (pun intended). It's not strictly relevant for web development but nonetheless can help you to learn a few tricks that you can use to craft amazing web experiences. Did you ever wonder how the song shuffling works in Spotify? If the answer is \"yes\", here you can find some answers. If the answer is \"no\", trust us, this is still well worth reading! :)",
        "imageUrl": "./e4d885772da523c53c24eb6f4968d84e8ed05022d7671056d30a0c0d56f41fe4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 229,
    "title": "#229: Math as code",
    "slug": "2021-09-20-229-38-math-as-code",
    "date": "2021-09-20",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "Math as code",
        "url": "https://github.com/Jam3/math-as-code",
        "description": "A beautiful cheat-sheet for mathematical notation in code form. A great resource to be able to visualise maths from the perspective of software engineers!",
        "imageUrl": "./6e18b2afe5d1fe4aea6bbb6ecf5d4999faf980795eb02c078def63c57dd5ad08.jpg",
        "featured": true
      },
      {
        "title": "Interactive Learning Tools For Front-End Developers",
        "url": "https://smashingmagazine.com/2021/09/interactive-learning-tools-front-end-developers",
        "description": "Let's admit it: learning is hard and can be tiring. Gamifying learning is a great way to reduce some of the stress related to learning and it can make the whole experience a lot more enjoyable. This article presents a large collection of interactive coding tools to help you learn CSS, JavaScript, SQL, React, Vim, regular expressions and JAMstack.",
        "imageUrl": "./aae4d183a093649a0d1ff124d033e9cea19844dfd034873a7a87a199ad7c8512.jpg",
        "featured": false
      },
      {
        "title": "htmlq: Like jq, but for HTML.",
        "url": "https://github.com/mgdm/htmlq",
        "description": "Did you ever need to extract some information from a webpage using a quick command line command? Well maybe you didn't because you didn't think it was possible or that it was too complicated... Now you can use htmlq, a command line tool that works pretty much like jq, but for HTML.",
        "imageUrl": "./20604f775d338b4efe681031441eabdfb6a411838ed75f39577663b1128dea4d.jpg",
        "featured": false
      },
      {
        "title": "Web Scraping with Javascript and Node.js - ZenRows",
        "url": "https://zenrows.com/blog/web-scraping-with-javascript-and-nodejs",
        "description": "Learn how to build a web scraper with Javascript and Node.js. Add anti-blocking techniques, a headless browser, and parallelize requests with a queue.",
        "imageUrl": "./e4e15d2e5624d34176bdab3d5a901ea762d79e0f078af0c896e1503b06d2af0f.jpg",
        "featured": false
      },
      {
        "title": "gobang — access databases from the CLI",
        "url": "https://github.com/TaKO8Ki/gobang",
        "description": "A cross-platform TUI database management tool written in Rust. It can be particularly useful if you want a quick way to explore a remote databases from a bastion host or a private network where you only have CLI access.",
        "imageUrl": "./1fb5a0f0a18d642a8aebb4409fb0cbfce4ed5f31acae575480d6dcffe2453107.jpg",
        "featured": false
      },
      {
        "title": "Writing Well-Documented Code - Learn from Examples",
        "url": "https://codecatalog.org/2021/09/04/well-documented-code.html",
        "description": "How to document code is always a highly debated topic. Some think that code should be self descriptive, other have a series of tips to add documentation here and there. This article tries to provide an interesting take on the topic by giving a number of interesting example of how to write well documented code.",
        "imageUrl": "./74654798ca0a1b92694a3e0334eb90b1d2b3867e7d9cef948c8e0006fae792a0.jpg",
        "featured": false
      },
      {
        "title": "So you want to mock an API?",
        "url": "https://getsynth.com/docs/blog/2021/09/07/mocking-a-production-api",
        "description": "This blog post is an overview of a 5 day prototyping journey building a mock API.",
        "imageUrl": "./e712d5aaf277d97446ac2220df8ebf22cff2c4574d0a8bfc6fc341b46e124880.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 228,
    "title": "Migrating from Docker to Podman",
    "slug": "2021-09-13-228-migrating-from-docker-to-podman",
    "date": "2021-09-13",
    "templateType": "old-mailchimp",
    "intro": "**Serverless Database** for **Redis** with low latency data and per-request pricing.\n\n[Start FREE in 30 seconds](https://console.upstash.com/)!",
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "Migrating from Docker to Podman",
        "url": "https://marcusnoble.co.uk/2021-09-01-migrating-from-docker-to-podman",
        "description": "Docker has recently announced that Docker Desktop will soon require a subscription and, based on the size of your company, may require a paid subscription. In this article you can learn how to switch from Docker to Podman.",
        "imageUrl": "./86bff445bc624159f266816e1a7ac93f2c1197e035599e19795e679b2035d15e.jpg",
        "featured": true
      },
      {
        "title": "Best Practices for Logging in Node.js",
        "url": "https://blog.appsignal.com/2021/09/01/best-practices-for-logging-in-nodejs.html",
        "description": "Logging is one of those underestimated topics. It seems simple on the surface but it's actually tricky to get it right. Good logs are a valuable tool, especially when you need to troubleshoot something going wrong. In this article, you can learn some invaluable practical tips to help you write more useful log entries in Node.js.",
        "imageUrl": "./871e5275bc63eb6f17d30d7a7b3da373ba0ac03b08de94531c73565120da83ef.jpg",
        "featured": false
      },
      {
        "title": "Building a serverless email delivery service on AWS",
        "url": "https://medium.com/schibsted-engineering/building-a-serverless-email-delivery-service-on-aws-9269f55533a0",
        "description": "Using AWS Lambda and other AWS services to build a cost efficient, highly available email formatting and delivery service.",
        "imageUrl": "./f73d1cb8f0a83899a5fb2b52f21cf6eae88cf16b95f18f0c5c2e46a0c8683518.jpg",
        "featured": false
      },
      {
        "title": "Stateful AWS Lambda with Redis REST",
        "url": "https://blog.upstash.com/aws-lambda-redis-rest",
        "description": "One of the main challenges of Lambda is managing state. Most of the popular data stores are connection-based and managing connections can become painful in serverless. In this article, you will learn how to take advantage of Upstash Redis and its high performance REST API for building stateful Lambda functions. sponsored",
        "imageUrl": "./9c85601afef543f1730b3a63325023163259a2bbc44ce22f87fdff3107dc4501.png",
        "featured": false
      },
      {
        "title": "Global vs. Local Styling In Next.js",
        "url": "https://smashingmagazine.com/2021/07/global-local-styling-nextjs",
        "description": "Next.js has strong opinions about how to organize JavaScript but not CSS. How can we develop patterns that encourage best CSS practices while also following the framework’s logic? The answer is surprisingly simple — to write well-structured CSS that balances global and local styling concerns.",
        "imageUrl": "./068e45f07ace8e13fdae5038ea71183fa92f18494e0d98d213eec0e89219d957.jpg",
        "featured": false
      },
      {
        "title": "Using Liquid Blocks in Eleventy Layouts",
        "url": "https://raymondcamden.com/2021/08/19/using-liquid-blocks-in-eleventy-layouts",
        "description": "A look at using multiple blocks and having them render in Liquid templates. A very useful tips to organise more complex static websites.",
        "imageUrl": "./45d4f04e40ae96e488416d5dcf1f2c128f4a92d2b5f4d3bbd2d1b51a52f183a3.jpg",
        "featured": false
      },
      {
        "title": "Using AbortSignal in Node.js",
        "url": "https://nearform.com/blog/using-abortsignal-in-node-js",
        "description": "The AbortController and AbortSignal APIs are quickly becoming the standard mechanism for cancelling asynchronous operations in the Node.js core API. If you haven't looked at these new APIs yet, check out this article!",
        "imageUrl": "./c243643238ee682e35df4f0806e7ce7ba85cc8ff1a2ee956303bd0669960f124.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449344682/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 227,
    "title": "Why are hyperlinks blue?",
    "slug": "2021-09-06-227-why-are-hyperlinks-blue",
    "date": "2021-09-06",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "Why are hyperlinks blue?",
        "url": "https://blog.mozilla.org/en/internet-culture/deep-dives/why-are-hyperlinks-blue",
        "description": "The internet has ingrained itself into every aspect of our lives, but there’s one aspect of the digital world that I bet you take for granted. Did you ever wonder why hyperlinks are traditionally blue?",
        "imageUrl": "./84d3e8e2d54dfbb84be416982d7e973fd0d7b81fb259f61d3b91e73094c8bb90.jpg",
        "featured": true
      },
      {
        "title": "Near Zero Downtime Migration from MySQL to DynamoDB",
        "url": "https://aws.amazon.com/blogs/big-data/near-zero-downtime-migration-from-mysql-to-dynamodb",
        "description": "Many companies consider migrating from relational databases like MySQL to Amazon DynamoDB, a fully managed, fast, highly scalable, and flexible NoSQL database service. For example, DynamoDB can increase or decrease capacity based on traffic, in accordance with business needs.",
        "imageUrl": "./3a501611f7e30ac974e71d87f3f3ae853f83434ceb9afe4652b3d6f24bb104f3.jpg",
        "featured": false
      },
      {
        "title": "The Proper Way to Write Async Constructors in JavaScript",
        "url": "https://dev.to/somedood/the-proper-way-to-write-async-constructors-in-javascript-1o8c",
        "description": "At the moment, there is no standardized way to write asynchronous constructors in JavaScript. However, this does not mean there aren't any workarounds! In this article, we will discuss the various ways to emulate `async` in `constructor`. Most of them are not-so-ideal, but in the end, we will have something that works!",
        "imageUrl": "./1d430f4f2f6f544cf5b2b210ee00d79be2cde5df1e03c8bac161126b1e3bb980.jpg",
        "featured": false
      },
      {
        "title": "Deploy React app to S3 & Cloudfront",
        "url": "https://dev.to/karanpratapsingh/deploy-react-app-to-s3-cloudfront-1cao",
        "description": "In this article, we will look at how we can deploy our frontend to AWS S3 with AWS Cloudfront as our CDN.",
        "imageUrl": "./4c35ec977ec85969f307f9c4adca5da6fa2e223cc0e1c30468f9dc74cc934129.jpg",
        "featured": false
      },
      {
        "title": "Procedurally generated fish drawings",
        "url": "https://github.com/LingDong-/fishdraw",
        "description": "This is one of the most amazing GitHub repositories we have seen in a while. If you have never stumbled into generative art, this repository might be your gateway into it!",
        "imageUrl": "./f96423e9c13748b738d4e12fa189abf279be15c104badb1526c3906f60a5c4f7.jpg",
        "featured": false
      },
      {
        "title": "The power of custom hooks in React",
        "url": "https://dev.to/mlevi1806/the-power-of-custom-hooks-in-react-responsive-design-example-4flb",
        "description": "Generally, custom hook is a great pattern in order to handle modularity and composition in your app. This article demonstrates this idea by showing an example of custom React hook to simplify responsive behaviours.",
        "imageUrl": "./539e881615e8959ea680a1834ba252696b49d8bd7b3ed7bd448dc780c241916c.jpg",
        "featured": false
      },
      {
        "title": "A graph database for Node.js and the Browser",
        "url": "https://github.com/levelgraph/levelgraph",
        "description": "Built on top of LevelUp and LevelDb, levelgraph is a fully functional graph database that you can use on the server (Node.js) but also on the browser!",
        "imageUrl": "./ab3b9abaf4ca4bd73ca941e244b2b7b9986e52ac8e468c2dca2202c8791d493b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 226,
    "title": "Loading Third-Party JavaScript",
    "slug": "2021-08-30-226-loading-third-party-javascript",
    "date": "2021-08-30",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "Loading Third-Party JavaScript",
        "url": "https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript",
        "description": "Third-party scripts provide a wide range of useful functionality, making the web more dynamic. Learn how to optimize the loading of third-party scripts to reduce their impact on performance.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": true
      },
      {
        "title": "How to Implement Drag and Drop in Vanilla JS",
        "url": "https://veewren.hashnode.dev/how-to-implement-drag-and-drop-in-vanilla-js",
        "description": "People expect to be able to drag and drop items. Many libraries implement drag and drop, but it is relatively easy to create in vanilla JS and HTML even if you don't want to install any packages.",
        "imageUrl": "./2c4ff5e06bbb43b08cd9cf7538dd824939d83bcb43c721cddd1ca401884d0d63.png",
        "featured": false
      },
      {
        "title": "6 Python f-strings tips and tricks",
        "url": "https://www.30secondsofcode.org/articles/s/6-python-f-strings-tips",
        "description": "Python's f-strings provide a more readable, concise and less error-prone way to format strings than traditional string formatting. They are packed with useful features that are sure to come in handy in day-to-day use. Let's take a look at some of them.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "10 tips to smash the code interview",
        "url": "https://loige.hashnode.dev/10-tips-to-smash-the-code-interview",
        "description": "Coding interviews are notoriously hard, for both junior and seasoned developers. In this article you will find a number of suggestions that can help you shine in your next coding interview!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "The 7 Most Common Types of Cybersecurity Attacks in 2021",
        "url": "https://auth0.com/blog/the-7-most-common-types-of-cybersecurity-attacks-in-2021/",
        "description": "Learn which cybersecurity tactics and tools will help you combat today's common cyberattacks and how to build more resilient web applications.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "State & DOM Manipulation with AlpineJS",
        "url": "https://devdojo.com/semirteskeredzic/state-dom-manipulation-with-alpinejs",
        "description": "AlpineJS is a new JavaScript frontend framework that aims to make it super simple to build interactive applications. In this post you will go through some of the concepts that AlpineJS uses for state management and DOM manipulation.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Asymptotic Notations",
        "url": "https://devdojo.com/algonoob/asymptotic-notations",
        "description": "In this post we'll learn about the concept of time complexity in a more detailed way. A mathematical way of representing the time complexity of an algorithm. It's definitely gonna include some uncomfortable looking mathematical equations. But don't worry yet! This post is gonna make things easier for you.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 3rd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./d82256ce05167104da4c306f454d5266cca352972d32d4121f3a0ea0ca20dbb7.jpg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 225,
    "title": "Windy, A React UI Kit Powered by Tailwind",
    "slug": "2021-08-23-225-windy-a-react-ui-kit-powered-by-tailwind",
    "date": "2021-08-23",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Windy, A React UI Kit Powered by Tailwind",
        "url": "https://windy-docs.vercel.app/",
        "description": "Windy is a new UI toolkit for React that will allow you to extend and customise your app layout by reusing Windy's own components and Tailwind micro classes.",
        "imageUrl": "./ce46fcd4559170fa3d3e8f72e6fada52c4290d96dc9c6867c0e1e88977353cb3.jpg",
        "featured": true
      },
      {
        "title": "Node.js Security - OWASP Cheat Sheet Series",
        "url": "https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html",
        "description": "This cheat sheet lists actions developers can take to develop secure Node.js applications. Each item has a brief explanation and solution that is specific to the Node.js environment.",
        "imageUrl": "./947d2f0e0383c91a5d34947678e10b5507d124fd89bc5f38eb51470d08e8a6d3.png",
        "featured": false
      },
      {
        "title": "A Tale of Two Copies",
        "url": "https://storj.io/blog/a-tale-of-two-copies",
        "description": "It was the best of times, it was the worst of times. That's when I hit a performance mystery that sent me down a multi-day rabbit hole of adventure. I was writing some code to take some entries, append them into a fixed size in-memory buffer, and then flush that buffer to disk when it was full.",
        "imageUrl": "./6f2fb1bbe8d2ddce2a9647cb4bb3559c483c95468b6d2744e9a76b778ef161a3.jpg",
        "featured": false
      },
      {
        "title": "What's new in ES2022?",
        "url": "https://yagmurcetintas.com/journal/whats-new-in-es2022",
        "description": "In this article, we briefly talk about what's new in ECMAScript 2022 and what features has been added to JavaScript in the last few years.",
        "imageUrl": "./80d36813d888dd093ac9ea3a684204eb8e46231e6ed0f7c10f5b80720f74b9af.png",
        "featured": false
      },
      {
        "title": "HTTP/3 From A To Z: Core Concepts (Part 1)",
        "url": "https://smashingmagazine.com/2021/08/http3-core-concepts-part1",
        "description": "What exactly is HTTP/3? Why was it needed so soon after HTTP/2 (which was only finalized in 2015)? How can or should you use it? And especially, how does this improve web performance? Let’s find out.",
        "imageUrl": "./918b0b4ff201c84841043766c2983dd59b52484fe0cf9153c0b4d9783daef7f2.jpg",
        "featured": false
      },
      {
        "title": "react-hot-toast - The Best React Notifications in Town",
        "url": "https://react-hot-toast.com/",
        "description": "Add beautiful notifications to your React app with react-hot-toast. Lightweight. Smoking hot by default.",
        "imageUrl": "./2301a6968183b2af112e34d29dca768629044224a6ad63b3862c46d6aa8b138e.jpg",
        "featured": false
      },
      {
        "title": "Rust Adventure",
        "url": "https://www.rustadventure.dev/",
        "description": "This short e-mail course will provide an enjoyable introduction to the Rust programming language. Are you curious to find out what's all the hype about? This is a great way to do that :)",
        "imageUrl": "./9c84b5949cc478b3e35c4d1513e850e6bb4c86cba64141498d5a7898fd5b61d9.png",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 224,
    "title": "Worker Threads in Node.js",
    "slug": "2021-08-16-224-worker-threads-in-node-js",
    "date": "2021-08-16",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Worker Threads in Node.js",
        "url": "https://yarin.dev/nodejs-cpu-bound-tasks-worker-threads",
        "description": "An interesting tutorial that will teach you how to use worker threads to run CPU-intensive tasks in Node.js. Something that can be pretty useful in certain circumstances.",
        "imageUrl": "./62a026521bf014ce7249f8d05fbaed7515353cd6b9d7efa124479076e11445ad.jpg",
        "featured": true
      },
      {
        "title": "Yarn 3.0 is here",
        "url": "https://dev.to/arcanis/yarn-3-0-performances-esbuild-better-patches-e07",
        "description": "Not long after the release of Yarn 2, here a new major release of the most famous alternative JavaScript / Node.js package manager after npm. Yarn 3 comes packed with interesting features and capabilities. Check it out if you use Yarn already.",
        "imageUrl": "./a175c6e1ee1b8677a42c645a8fe28a3f9aa21ed75f16e1909d0bffd629a0a0fe.jpg",
        "featured": false
      },
      {
        "title": "Visualizing a codebase",
        "url": "https://octo.github.com/projects/repo-visualization",
        "description": "OCTO Project: How can we “fingerprint” a codebase to see its structure at a glance? Let’s explore ways to automatically visualize a GitHub repo, and how that could be useful.",
        "imageUrl": "./3673cc9f1deb6a649f27705df56b608e7bb77f38d558a057190dbc529d5631d2.jpg",
        "featured": false
      },
      {
        "title": "Running a Next.js Site on Cloudflare Pages",
        "url": "https://opstrace.com/blog/nextjs-on-cloudflare",
        "description": "Did you know you could host a static website built with Next.js on CloudFlare? In this tutorial you will learn how to set this up by using Cloudflare Pages.",
        "imageUrl": "./5dcb4997ad46c036da93134350a41b447d75e7805d581376be353920fbe32d01.jpg",
        "featured": false
      },
      {
        "title": "Frustrating Design Patterns: Disabled Buttons",
        "url": "https://smashingmagazine.com/2021/08/frustrating-design-patterns-disabled-buttons",
        "description": "How can we make disabled buttons more inclusive? When do they work well, and when do they fail on us? And finally, when do we actually need them, and how can we avoid them? Let’s find out.",
        "imageUrl": "./4602ebe83798e24d87c4570791875604dfc999132c638db214ccabd3dc3f484e.jpg",
        "featured": false
      },
      {
        "title": "Reducing Next.js page size by 3.5x",
        "url": "https://papyrus.dev/@PapyrusBlog/how-we-reduced-next.js-page-size-by-3.5x-and-achieved-a-98-lighthouse-score",
        "description": "An interesting use case showing how it is possible to massively reduce the bundle size of files generated by Next.js and achieve a way higher LightHouse score (98%).",
        "imageUrl": "./fcfe738ca149381c57e87cb052714fe0f9876a68bc00430c3df24e79ef01b756.png",
        "featured": false
      },
      {
        "title": "How MDN’s autocomplete search works",
        "url": "https://hacks.mozilla.org/2021/08/mdns-autocomplete-search",
        "description": "Autocomplete search added to MDN Web Docs allows you to quickly jump to the document you're looking for by typing parts of the document title. Building autocomplete boxes is notoriously a hard business and this case study can give you some great insights if you want to build something similar!",
        "imageUrl": "./71e3892a8338f868f38c0d46d90d642237e84705a7dc9910b5201a8e2a5021a1.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 223,
    "title": "Hosting SQLite databases on Github Pages",
    "slug": "2021-08-09-223-hosting-sqlite-databases-on-github-pages",
    "date": "2021-08-09",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "Hosting SQLite databases on Github Pages",
        "url": "https://phiresky.netlify.app/blog/2021/hosting-sqlite-databases-on-github-pages",
        "description": "An extremely interesting experiment showing that is possible to host (and query!) a SQLite database from a static website. This technique has a lot of potential and we might see more widespread usage over the next few years! Check it out if you want to manage a lot of \"stable\" data from a static website.",
        "imageUrl": "./bf4c93f3b681b5963bda2bd374e529123f0c1d88dd5a1a638f3d6e9794563a8b.jpg",
        "featured": true
      },
      {
        "title": "Can Redis be used as a Primary database?",
        "url": "https://youtube.com/watch?v=VLTPqImLapM",
        "description": "This is a rather common question and the answer is not so straightforward as it might seem. This video explores some interesting details on how Redis actually works to help you gauge whether it makes sense for you to use Redis as a primary data storage and not just as a disposable caching layer.",
        "imageUrl": "./5609b8349132220b8b219324dce398062007d845ce7fdff4d212a69154fc759f.jpg",
        "featured": false
      },
      {
        "title": "DigitalOcean vs. Lightsail vs. Linode vs. UpCloud vs. Vultr",
        "url": "https://joshtronic.com/2021/08/01/vps-showdown-digitalocean-lightsail-linode-upcloud-vultr",
        "description": "Are you torn trying to decide what kind of VPS (Virtual Private Server) should you pick for you latest side project? If that's the case, this article goes quite in depth in comparing all the most common options in terms of pricing, features and performance.",
        "imageUrl": "./339a73ad4378616bcde1da5f560ac735d60448298feadae6e950a696d51fe359.jpg",
        "featured": false
      },
      {
        "title": "Tempura: A light, crispy, and delicious template engine 🍤",
        "url": "https://github.com/lukeed/tempura",
        "description": "A new JavaScript-based templating engine has landed. This one aims to be simple to use without penalising performance. Check it out if you want to try something new!",
        "imageUrl": "./ee82cd1726e069b165cdaef1e9a4578fe5555ec5d5f3d3706d24810d4ff99d67.jpg",
        "featured": false
      },
      {
        "title": "Microservices Authentication Strategies: Theory to Practice",
        "url": "https://aspecto.io/blog/microservices-authentication-strategies-theory-to-practice",
        "description": "In this article, we will walk through common ways of implementing authentication microservices. We'll cover the theory, then move to practice.",
        "imageUrl": "./37856b143be8f86e2bbaa34cc172336720035ddf52f1ed82e8cd7a2e8e6e3ad9.jpg",
        "featured": false
      },
      {
        "title": "How to use RabbitMQ and Node.js with Docker and Docker-compose",
        "url": "https://geshan.com.np/blog/2021/07/rabbitmq-docker-nodejs",
        "description": "Learn how to use RabbitMQ with Node.js publisher and consumer, set up easily with Docker and Docker-compose step-by-step for better productivity.",
        "imageUrl": "./e1726b85f4794343bf81d55cbd02adfd98dfcc939e9eb24b0defb9692434d496.jpg",
        "featured": false
      },
      {
        "title": "Resource inlining in JavaScript frameworks",
        "url": "https://web.dev/aurora-resource-inlining/",
        "description": "Font inlining and critical CSS inlining are 2 interesting techniques that might greatly improve the loading speed of web pages and web applications. This article discusses these 2 techniques and how they are being implemented by some of the major web frameworks.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 222,
    "title": "Differences between WebSockets and Socket.IO",
    "slug": "2021-08-02-222-differences-between-websockets-and-socket-io",
    "date": "2021-08-02",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "Differences between WebSockets and Socket.IO",
        "url": "https://www.youtube.com/watch?v=YIRXIe_bZok%3Futm_source%3Dfullstackbulletin.com",
        "description": "In this video, we're going to see the differences between WebSockets and Socket.io. Which one will you choose for your next project?",
        "imageUrl": "./9d8709dedacd40fc70e3586a9da69da86360bba84a686c3747b785c2c17a1d28.png",
        "featured": true
      },
      {
        "title": "The Future Of The Web",
        "url": "https://hazem.cool/blog/the-future-of-the-web",
        "description": "The web as we know it is changing, it's turning from being static, single-player, and centralized to being  immersive, multi-player, and decentralized.",
        "imageUrl": "./d0d5d74dbfba4ffc7dfe7d3d3feceec1a17d5ae3c81e0f0e9861b5897227b856.jpg",
        "featured": false
      },
      {
        "title": "How To Migrate From WordPress To A Headless CMS",
        "url": "https://smashingmagazine.com/2021/07/wordpress-headless-cms-storyblok",
        "description": "In this article, we will look at when it makes sense to migrate from a monolithic project to a headless setup and the benefits that come with it. Do you want to find out how to migrate a WordPress website to Storyblok Headless CMS?",
        "imageUrl": "./6ffaa151cd21135aed3234ae2f7e6ce359af3227d699e09af7d28cb354cb854a.jpg",
        "featured": false
      },
      {
        "title": "Inserting 130M SQLite Rows per Minute... from a Scripting Language!",
        "url": "https://blog.metaobject.com/2021/07/inserting-130m-sqlite-rows-per.html",
        "description": "A very interesting performance optimisation use case. Even if you don't need this level of write speed for you next project, this article will definitely teach you a bunch of interesting optimisation tricks that you could re-use in a variety of other situations!",
        "imageUrl": "./b739fa28c47069ffc3ae0da5dabe4d6c3e427c8b32b49132cae3b81370577bfe.jpg",
        "featured": false
      },
      {
        "title": "What use cases exist for async_hooks?",
        "url": "https://nodejs.medium.com/what-use-cases-exist-for-async-hooks-6eab74d7eefd",
        "description": "Have you ever heard of Async Hooks in Node.js? No? It's an API that has been introduced by the Diagnostic Working Group during the last few years to add some new interesting capabilities to the Node.js runtime. Let's see some use cases enabled by Async Hooks!",
        "imageUrl": "./4653ab3eedd4c23fe9b57c31dae39665e436ab58d1ac8a488d26f491b5fc610c.jpg",
        "featured": false
      },
      {
        "title": "Towards richer colors on the Web",
        "url": "https://darker.ink/writings/Towards-richer-colors-on-the-Web",
        "description": "Did you know that your color choices are somewhat limited when designing for the web? In this article you can find out more, but most importantly, you can understand how things are changing (for better) in the coming future!",
        "imageUrl": "./a66c10b038d8550338015920a787c9183ce09994f5deeab26ef5b36075519789.png",
        "featured": false
      },
      {
        "title": "Integrating Eleventy with GitHub Flat Data",
        "url": "https://raymondcamden.com/2021/07/14/integrating-eleventy-with-github-flat-data",
        "description": "Did you know about the Flat Data feature of GitHub? It's a grea tway to keep some flat data files in sync with your repository. In this article you can learn more about them and explore a very interesting use case that uses this feature to rebuild a static website written with Eleventy!",
        "imageUrl": "./9b9151230b2165264d8dc06d6d3d610c7e4af535e92b19d6714dfa93a8e433a0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 221,
    "title": "A Complete Guide to Grid",
    "slug": "2021-07-26-221-a-complete-guide-to-grid",
    "date": "2021-07-26",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "A Complete Guide to Grid",
        "url": "https://css-tricks.com/snippets/css/complete-guide-grid",
        "description": "A comprehensive guide to CSS grid, focusing on all the settings both for the grid parent container and the grid child elements.",
        "imageUrl": "./7393d6b72c344a65ace293f9d2f214c8795729334ac1c13a6010e84940eaf7d3.jpg",
        "featured": true
      },
      {
        "title": "WebAssembly from Scratch",
        "url": "https://github.com/diekmann/wasm-fizzbuzz",
        "description": "WebAssembly from Scratch: From FizzBuzz to DooM. A comprehensive and engaging guide on all things WebAssembly.",
        "imageUrl": "./6e06ef2cf3b26faa50d3342b80bbe6f8d1c092d3dfbb6702f46ebb8e943641bf.jpg",
        "featured": false
      },
      {
        "title": "Magic Link Authentication and Route Controls with Supabase and Next.js",
        "url": "https://dev.to/dabit3/magic-link-authentication-and-route-controls-with-supabase-and-next-js-leo",
        "description": "In this post, we'll build out a Next.js app that enables navigation, authentication, authorization, redirects (client and server-side), and a profile view.",
        "imageUrl": "./68d808075238cdc1581e620cadd38067379450ffd77c7cb5157c0cadd1d1713d.jpg",
        "featured": false
      },
      {
        "title": "Expansion of AWS Lambda states to all functions",
        "url": "https://aws.amazon.com/blogs/compute/coming-soon-expansion-of-aws-lambda-states-to-all-functions",
        "description": "AWS Lambda is now allowing you to track the lifecycle of your functions as they transition through the states (creation, pending, active, inactive, or failed). Find out how this might impact you and what new capabilities can this change allow.",
        "imageUrl": "./e9316b708106d6e9f46e8eebb6a99d68e0291ce453fb9a0342f6612e237adf12.png",
        "featured": false
      },
      {
        "title": "Decoupling on AWS: The Big Comparison",
        "url": "https://hackernoon.com/aws-decoupling-the-big-comparison-cm2x35lj",
        "description": "A comparisons between AWS services that allows you to dispatch and handle asynchronous messages: Kinesis, SQS, SNS. With these services you can decouple sending and receiving data. This post includes examples in Python examples.",
        "imageUrl": "./ef2f9597e7e715e58f2b33008de382af9d150cf974dee56bff6549c32b499a2d.jpg",
        "featured": false
      },
      {
        "title": "Using Redis with Node.js",
        "url": "https://sitepoint.com/using-redis-node-js",
        "description": "Need fast data interactions in your Node app? Learn how Redis speeds caching, message brokering, sessions, analytics, streaming and more.",
        "imageUrl": "./f49b64a34eaf1edd8d26b1949182235a17e4641f1e1591f126944404f35dd6d8.jpg",
        "featured": false
      },
      {
        "title": "The Database Ruins All Good Ideas",
        "url": "http://squarism.com/2021/07/08/databases-ruin-all-good-ideas",
        "description": "An interesting opinion piece on the role of databases in modern multi-tier distributed web applications. The database is often underestimated and this piece will highlight some pitfalls you need to be aware of when designing distributed architectures.",
        "imageUrl": "./b739fa28c47069ffc3ae0da5dabe4d6c3e427c8b32b49132cae3b81370577bfe.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 220,
    "title": "Hack the \"Deploy to Netlify\" Button",
    "slug": "2021-07-19-220-hack-the-deploy-to-netlify-button",
    "date": "2021-07-19",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "Hack the \"Deploy to Netlify\" Button",
        "url": "https://css-tricks.com/hack-the-deploy-to-netlify-button-using-environment-variables-to-make-a-customizable-site-generator",
        "description": "The \"Deploy to Netlify\" button allows you to create a boilerplate project that can easily be deployed by other users to their Netlify accounts. In this article you can learn more about this feature and some extra interesting options that come with it!",
        "imageUrl": "./cbdb438d1e676cbbea21f4ed191124833bf1f4cbc1204dc591ed77fe11a35308.jpg",
        "featured": true
      },
      {
        "title": "JavaScript Frameworks and Metagaming",
        "url": "https://dev.to/this-is-learning/javascript-frameworks-and-metagaming-pb5",
        "description": "The author of SolidJS looks at the framework from the perspective of game theory. Being an avid Magic The Gathering player, they try to explain what can you learn from the game and how these learnings can be applied to building web frameworks.",
        "imageUrl": "./3d978817bac4bd8a1b899419a18c7486ea35ad722f6dc82664aebb65ad09348e.jpg",
        "featured": false
      },
      {
        "title": "Saving data to Supabase and getting it back again",
        "url": "https://netlify.com/blog/2021/06/28/saving-data-to-supabase-and-getting-it-back-again",
        "description": "How to add a database to your web project with Supabase and interact with it using serverless functions.",
        "imageUrl": "./f54e78c8a2ea0b75d9faa94dc449f46205ac36b9136b7d644602dbfb000c5a97.jpg",
        "featured": false
      },
      {
        "title": "The great decoupling: Why web developers are looking at the edge",
        "url": "https://protocol.com/enterprise/jamstack-web-development-edge",
        "description": "Web development hasn't changed a lot in 10 years, but modern browsers and APIs are opening the door for a new, decentralized approach known as Jamstack.",
        "imageUrl": "./a03bab8feb8c35025cd9407f9bf0073478952053ff7f2cdebff732c0732af049.jpg",
        "featured": false
      },
      {
        "title": "Creating a dynamic color converter with 11ty Serverless",
        "url": "https://bryanlrobinson.com/blog/creating-a-dynamic-color-converter-with-11ty-serverless",
        "description": "11ty started out as a static site generator, but is quickly getting into the dynamic game. Use the templates and structure you love, but use them on the server, as well!",
        "imageUrl": "./07960e06f5de992a5ca409fa50bc06b9355d992cfeb207bef79770d399a336eb.jpg",
        "featured": false
      },
      {
        "title": "How To Choose A Headless CMS",
        "url": "https://smashingmagazine.com/2021/07/how-to-choose-a-headless-cms",
        "description": "There is an array of Headless CMSes out there. In this article, we delve into headless CMS features to satisfy your content editors, marketers and yourself as a developer.",
        "imageUrl": "./2839fb0714eaa8ed01a0c86445a9374c2289969b85a74ea0a09e55249826d424.jpg",
        "featured": false
      },
      {
        "title": "Mercurius",
        "url": "https://mercurius.dev/",
        "description": "Mercurius is a **GraphQL** adapter for **Fastify**. Mercurious has performance has first class citizen and a lot of other interesting features. Absoluterly recommended if you are building GraphQL APIs using **Node.js**.",
        "imageUrl": "./ec493df9eb49d34830d3eca00a82b16e32e8191f1e54fc916594cd73c501c0dc.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 219,
    "title": "How to Structure and Organize a React Application",
    "slug": "2021-07-12-219-how-to-structure-and-organize-a-react-application",
    "date": "2021-07-12",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "How to Structure and Organize a React Application",
        "url": "https://taniarascia.com/react-architecture-directory-structure",
        "description": "There is no consensus on the right way to organize a React application. React gives you a lot of freedom, but with that freedom comes the responsibility to design your own architecture.  This article, provides an opinionated guide to setting up the architecture for a new React application.",
        "imageUrl": "./2bc53ba004b762c6cb702eaf5a345bf28ec884262634a6cdf65cd5e765bf959e.jpg",
        "featured": true
      },
      {
        "title": "Unicode sorting is hard",
        "url": "https://devlog.hexops.com/2021/unicode-sorting-why-browsers-added-special-emoji-matching",
        "description": "You probably know Unicode and what's used for today... but there are sort of interesting tales about the nuances of Unicode encoding. In this article, you can learn something about Unicode sorting... Spoiler: it is \"interesting\" and \"hard\" at the same time!",
        "imageUrl": "./d387ddaab7107f62962f585b1a4d9c767bd3cd6270815c7bcfb4c2f136422ccd.png",
        "featured": false
      },
      {
        "title": "CSS Frameworks & Style Fundamentals",
        "url": "https://thenewstack.io/css-frameworks-in-vogue-but-dont-forget-style-fundamentals",
        "description": "CSS frameworks are here to stay, but don't become overly-reliant on frameworks. Learn the fundamentals below the abstractions.",
        "imageUrl": "./f84ad85bdde59eb15d693204c2a832956b329d63a4d18de11e4707d9bed5294d.png",
        "featured": false
      },
      {
        "title": "Web Publications — LaTeX Style",
        "url": "https://goessner.github.io/mdmath/publication.html",
        "description": "mdmath – how to use LaTex theme with markdown and spice up your web publications!",
        "imageUrl": "./dac813658f4b4716e37493bf187e60021eba660fa239e870f7d26f501ad17360.jpg",
        "featured": false
      },
      {
        "title": "Towards a better responsiveness metric",
        "url": "https://web.dev/better-responsiveness-metric",
        "description": "Learn about our thoughts on measuring responsiveness and give us feedback.",
        "imageUrl": "./2382b17b2ce26229c282d6270fccefde2c2da2d3f29a7923fcb367091cff5122.jpg",
        "featured": false
      },
      {
        "title": "When a Click is Not Just a Click",
        "url": "https://css-tricks.com/when-a-click-is-not-just-a-click",
        "description": "The click event is quite simple and easy to use; you listen for the event and run code when the event is fired. It works on just about every HTML element",
        "imageUrl": "./daf803ffccc8f4a39613dcf22664bb95a08b52e157f86cfae36bbc982458947b.jpg",
        "featured": false
      },
      {
        "title": "Encoding data for POST requests",
        "url": "https://jakearchibald.com/2021/encoding-data-for-post-requests",
        "description": "Don't do it like GitHub Copilot! Encoding HTTP POST requests requires a bit of diligence in following the protocol. Make sure you do that if you want to make sure requests can be correctly parsed by servers!",
        "imageUrl": "./9d7cc772b00308b28d82fb7c15ed39df8e2354d7a80948cbad5987abeb640953.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 218,
    "title": "Overlay Fact Sheet",
    "slug": "2021-07-05-218-overlay-fact-sheet",
    "date": "2021-07-05",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Overlay Fact Sheet",
        "url": "https://overlayfactsheet.com/",
        "description": "Overlays are a broad term for technologies aim to improve the accessibility of a website. They apply third-party source code (typically JavaScript) to make improvements to the front-end code of the website. In this website you can learn a ton about overlays and how they can make website more accessible. A must read for anyone who loves the web!",
        "imageUrl": "./d4c26051a736fab400f206dfe7c3eb148409e6d567063bb2239dbd21364ff7fa.png",
        "featured": true
      },
      {
        "title": "ES2021 features list",
        "url": "https://h3manth.com/ES2021",
        "description": "ES2021 as approved by the Ecma General Assembly and it will introduce 5 new interesting features to the language spec! Do you want to learn more abut: **logical assignment operators**, **numeric separators**, **AggregateError**, **replaceAll()**, and **WeakRefs**?",
        "imageUrl": "./e5200185b950e82658caaa7643ebabe0fc17b0f57b5dd3e25935b84a8f905f35.jpg",
        "featured": false
      },
      {
        "title": "Disasters I've seen in a microservices world",
        "url": "https://world.hey.com/joaoqalves/disasters-i-ve-seen-in-a-microservices-world-a9137a51",
        "description": "An interesting take on microservice architectures. Although they are great, they always come with a baggage of complexity that is often underestimated. Learning to deal with microservice architectures and their complexity always comes at the cost of a disaster or two...",
        "imageUrl": "./c3514b719804c86acc1999cf3399dea4dc6d93d5bd1d06b5a095baa1637256ee.jpg",
        "featured": false
      },
      {
        "title": "4 Useful fzf Tricks for Your Terminal",
        "url": "https://pragmaticpineapple.com/four-useful-fzf-tricks-for-your-terminal",
        "description": "Improve the workflow inside the terminal with handy fzf tricks up your sleeve.",
        "imageUrl": "./eced0394a719f859e0c45ac44f45da34f1d19d910cd0c69875fc914dd4a0f534.jpg",
        "featured": false
      },
      {
        "title": "Building Generative Grid Layouts With Quadtrees",
        "url": "https://georgefrancis.dev/writing/generative-grid-layouts-with-quadtrees",
        "description": "Learn to create harmonious generative grids based on random numbers, source images, user input, and more! Something cool to spice up your designs!",
        "imageUrl": "./e575b01b62d34c74742723688ddfaf85ca08b32df6a05c42cf62c69b478c55cc.jpg",
        "featured": false
      },
      {
        "title": "How to build a database-driven Jamstack site",
        "url": "https://netlify.com/blog/2021/06/10/how-to-build-a-database-driven-jamstack-site",
        "description": "Learn how to use StepZen to build a Jamstack site with a MySQL backend. This approach works with works for any SSG, including Next.js and Hugo, and data sources like REST APIs and Postgres.",
        "imageUrl": "./bd021b6ade64f6348bc5bc86259cbaf9a5f19139f3f6406728f9a0ef94e840e3.jpg",
        "featured": false
      },
      {
        "title": "Everyday GoLang, a new book about Go",
        "url": "https://blog.alexellis.io/i-wrote-a-book-about-golang",
        "description": "Alex Ellis, famous open source software developer, published his first eBook on Go called \"Everyday Golang\". In this article by Alex himself, you can learn about what to expect from the book and a bit about the story behind it.",
        "imageUrl": "./c694ac350827743f76224fc94981f1c78687103db4c83b00b1e5657e0f6f9439.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 217,
    "title": "Next.js 11",
    "slug": "2021-06-28-217-next-js-11",
    "date": "2021-06-28",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Next.js 11",
        "url": "https://nextjs.org/blog/next-11",
        "description": "The famous React-based web framework Next.js 11 has just released a new major version and it's pumped with interesting features and improvements. Check it out!",
        "imageUrl": "./fe50839e4fc9afea9a1346543d8d426465e2e5ea25d0c645f79386ca9962a9a3.jpg",
        "featured": true
      },
      {
        "title": "Will `.at()` be something useful?",
        "url": "https://dev.to/edo78/will-at-be-something-useful-3fcf",
        "description": "An interesting opinion about the new .at() method of JavaScript arrays. Is this new functionality really useful? Let's find out!",
        "imageUrl": "./0bfb0c850ce9a6c516dd1b6a890a673631efe4e3d329d72751f4f1875efb045d.jpg",
        "featured": false
      },
      {
        "title": "AWS Step Functions Workflow Studio",
        "url": "https://aws.amazon.com/blogs/aws/new-aws-step-functions-workflow-studio-a-low-code-visual-tool-for-building-state-machines",
        "description": "AWS Step Functions allow you to build scalable, distributed applications using state machines. Until today, building workflows on Step Functions required you to learn and understand Amazon State Language (ASL). Today, you can use Workflow Studio, a low-code visual tool.",
        "imageUrl": "./c63cf8081b3b3dee75bfb6108e22dce0a2dd5f3bb332830348d61b0fa38eee4e.jpg",
        "featured": false
      },
      {
        "title": "Beginner's Guide to Running Rust on AWS Lambda",
        "url": "https://dev.to/nicholaschiasson/beginner-s-guide-to-running-rust-on-aws-lambda-277n",
        "description": "A start-to-finish tutorial demonstrating how to build a simple AWS Lambda written in Rust and manage its deployment with AWS CDK.",
        "imageUrl": "./7ea9e826bd40c5b64d03cc372122555f26c1c3448b390193f3cfa3a74645b300.jpg",
        "featured": false
      },
      {
        "title": "Building a 3D Cheeseburger Drum Kit",
        "url": "https://youtube.com/watch?v=VtmsuVT7BGI",
        "description": "I think that, with a title like this, you just need to click the link and watch the video... Seriously, it is a lot of fun... no need for spoilers!",
        "imageUrl": "./46c24711838069b1d687647dab9dbebae71b9666e624c77769ff1f62bdce79df.jpg",
        "featured": false
      },
      {
        "title": "A Beginner's Guide To The File System Module In Node.js",
        "url": "https://catalins.tech/a-beginners-guide-to-the-file-system-module-in-nodejs",
        "description": "The fs module is one of the most useful modules in Node.js. It allows you to interact with the filesystem in a number of ways: read and write files, list directories, create directories, etc. In this article, you can learn almost everything that there's to know about it!",
        "imageUrl": "./dac813658f4b4716e37493bf187e60021eba660fa239e870f7d26f501ad17360.jpg",
        "featured": false
      },
      {
        "title": "How To Add Animations to React Apps with React-Lottie",
        "url": "https://digitalocean.com/community/tutorials/how-to-add-animations-to-react-apps-with-react-lottie",
        "description": "Lottie is a program developed by Airbnb Design that allows you to use After Effects animations in real-time in a lightweight and flexible format. Lottie takes JSON data from an After Effects extension called Bodymovin and turns it into a usable animation that you can easily include in many contexts, including React applications.",
        "imageUrl": "./b8b5aea4555dd7879ecd112a578e8847316d2bbf45432eebe3e70fd4a9238355.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rust in action",
      "author": "Tim McNamara",
      "description": "Rust in action is probably one of our favourite books to learn Rust. It has been in the works for a good number of years and it's finally ready for the press. The reason why we enjoyed this book so much is that it takes a very practical stance. Rust concepts are taught by building interesting projects such as your own floating-point number implementation, a CPU emulator, a custom file format, a key-value store database, etc.\n\nWith this book, you won't be learning only about the Rust programming language, but also an additional number of concepts and ideas that are useful for every software engineer.",
      "coverImageUrl": "./19bb7e0216973850839c0c300aec616cbc4ec4bcc6e6c197c5dec7bbfa02c233.jpeg",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 216,
    "title": "#216: Learn Python with these Jypyter notebooks",
    "slug": "2021-06-21-216-25-learn-python-with-these-jypyter-notebooks",
    "date": "2021-06-21",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "Learn Python with these Jupyter notebooks",
        "url": "https://github.com/norvig/pytudes",
        "description": "An open source collection of Jupyter notebooks meant for those who are studying Python and are looking for some inspirational challenges (with solutions). You can even check out the notebooks online, no need for any installation!",
        "imageUrl": "./705cb7f6d166314cf733554870b8cae77dae2cee6361abba3d9414de05f73839.jpg",
        "featured": true
      },
      {
        "title": "How To Fix Cumulative Layout Shift (CLS) Issues",
        "url": "https://smashingmagazine.com/2021/06/how-to-fix-cumulative-layout-shift-issues",
        "description": "Google’s Core Web Vitals initiative has taken the SEO and Web Performance worlds by storm and many sites are busy optimizing their Page Experience to maximize the ranking factor. The Cumulative Layout Shift metric is causing trouble to a lot of sites, so let’s have a look at ways of addressing any potential issue you might have with it!",
        "imageUrl": "./6bd508858f2ecf09b19938f1827cd2b53f6e20c105c53269eb850db3d3586929.jpg",
        "featured": false
      },
      {
        "title": "Serverless Functions: The Secret to Ultra-Productive Front-End Teams",
        "url": "https://css-tricks.com/serverless-functions-the-secret-to-ultra-productive-front-end-teams",
        "description": "Modern apps put high demands on frontend devs. Use serverless functions to avoid complexity & helps your team ship more with less stress.",
        "imageUrl": "./c1889353fd1e4019f3207e8f535064c2a29c779ba00c7a80f01c61996ea31f97.jpg",
        "featured": false
      },
      {
        "title": "The Great Unbundling: JAMstack and the Future of the Web",
        "url": "https://thenewstack.io/the-great-unbundling-jamstack-and-the-future-of-the-web",
        "description": "The JAMstack is a philosophy, methodology, and set of tools for building web applications that are faster, more secure, and more scalable than applications built with traditional monolithic web architectures.",
        "imageUrl": "./dbe136d2af9906609a9464a9666b692b984a40d402a4e519ff3c9311f93af4c7.jpg",
        "featured": false
      },
      {
        "title": "Finding a Needle in a Haystack: How Facebook Serves Millions of Images per Second",
        "url": "https://sayedalesawy.hashnode.dev/finding-a-needle-in-a-haystack-how-facebook-serves-millions-of-images-per-second",
        "description": "A very interesting article exploring the distributed architecture that allows Facebook to serve millions of images per second. In this article you will learn about the architecture of SeaweedFS, a distributed storage system used by Facebook to address this particular challenge.",
        "imageUrl": "./3fb9d08d715b1e5b7ea0bfb424570acf302d7dca6e2ce97db93aa3e5a3c5fa3c.png",
        "featured": false
      },
      {
        "title": "Cypress vs Other Test Runners",
        "url": "https://glebbahmutov.com/blog/cypress-vs-other-test-runners/index.html",
        "description": "How does Cypress compare with other end-to-end (E2E) test runners? In this article, you can explore what are the major benefits of using Cypress.",
        "imageUrl": "./52153c64b630555a80ddaa53e9ab54000a2da8cb4e113d7ea278a3f52d0de8bf.jpg",
        "featured": false
      },
      {
        "title": "Configure ESlint and StandardJS",
        "url": "https://loige.hashnode.dev/configure-eslint-and-standardjs",
        "description": "A simple article that shows how easy it is to configure a new JavaScript project adopting ESLint and StandardJS.",
        "imageUrl": "./106aa0c290c8c0c6bd06935b7101a9502cfb48846cba6ea7c3a372c1e093c96e.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 215,
    "title": "The Plan for React 18",
    "slug": "2021-06-14-215-the-plan-for-react-18",
    "date": "2021-06-14",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "The Plan for React 18",
        "url": "https://reactjs.org/blog/2021/06/08/the-plan-for-react-18.html",
        "description": "The React team is excited to share a few updates on what's to be expected for React 18. Here are some spoilers: there's a working group to take care of the gradual adoption of new features; performance improvements (batching); streaming server-side renderer. Check out the article to find out more.",
        "imageUrl": "./eab28b4cb123d5a9b6ac4b48c908fe17fdd77002cdfa9b67248a632b13d28983.jpg",
        "featured": true
      },
      {
        "title": "Graphqurl - curl like CLI for GraphQL",
        "url": "https://blog.graphqleditor.com/graphqurl",
        "description": "Have you ever wanted something like curl but with a more in-depth integration with GraphQL? Well, dream no more: Graphqurl is here and it's quite a feat! With built-in auto-completion and tons of other useful features, accessing GraphQL APIs from the CLI it's going to be a breeze!",
        "imageUrl": "./d849e20f7340883bb91b96031c820593d49cb92932657428d4ddc3746ec7b279.png",
        "featured": false
      },
      {
        "title": "Have you ever hurt yourself from your own code?",
        "url": "https://blog.nikitas.link/have-you-ever-hurt-yourself-from-your-own-code",
        "description": "Have you ever accidentally caused harm to yourself or others from your code? In this article, you will find a story that shows how it is possible to accidentally hurt oneself by writing buggy code! What can you do to avoid this from happening?",
        "imageUrl": "./80a44ebd8f8137070311bc3bc309d0c38cff45b7109ff916621e93d782af5860.png",
        "featured": false
      },
      {
        "title": "Windmill UI",
        "url": "https://windmillui.com/",
        "description": "React meets Tailwind CSS in Stunning components for faster web development. You must check this one out if you enjoy using these two pieces of tech!",
        "imageUrl": "./3939e40ded5347e8e897a49bfbd5e85a62e45b0d82973c7459ab3506c1785f5a.jpg",
        "featured": false
      },
      {
        "title": "Lazy-loading React components",
        "url": "https://dev.to/aman_singh/lazy-loading-react-components-no-rocket-science-ejn",
        "description": "How can you build a React application that only loads the portion of the website that your user is about to see and interact with? Of course, if you have a large website, you don't want to provide your user with MBs of JavaScript just in case they are going to visit every single corner of the website!",
        "imageUrl": "./f0f17cd82f1847fb823e7db5b752f2f33666748e0e63dadbab6f817f5f8cd704.jpg",
        "featured": false
      },
      {
        "title": "How to Test",
        "url": "https://matklad.github.io/2021/05/31/how-to-test.html",
        "description": "An excellent article describing an opinionated approach to testing (in the broader term). What is worth testing and how? Hom much unit test vs integration and end to end testing? Test-driven or test \"later\"? What about data-driven testing? We promise this article will let you think a lot more about how to write your tests!",
        "imageUrl": "./49cacd1f07096d582b136b5aefc727271fe3b0abf98079463727524eb845bd39.jpg",
        "featured": false
      },
      {
        "title": "You Don't Need to Rebuild Your Development Docker Image on Every Code Change",
        "url": "https://vsupalov.com/rebuilding-docker-image-development",
        "description": "If you use Docker for your local development you should know that you can mount code from your development machine into a container and save yourself tedious waiting build times during development, for every single code change!",
        "imageUrl": "./61df902a1841a15c138fa26750bdff04671736073fca5fa4e70f901d7ece90de.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 214,
    "title": "Creating Data Visualizations with D3 and React",
    "slug": "2021-06-07-214-creating-data-visualizations-with-d3-and-react",
    "date": "2021-06-07",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "Creating Data Visualizations with D3 and React",
        "url": "https://dev.to/codesphere/creating-data-visualizations-with-d3-and-reactjs-10ei",
        "description": "D3 is a lot more than just a graphing library, it's a toolset for efficiently editing the DOM and create stunning interactive visualizations for the web. In this article, you will learn how you can combine the power of D3 with React!",
        "imageUrl": "./a795072d7d654d4d8407ddbb671f629f6b22237e4a40f015a3bfde8dd5f13fae.jpg",
        "featured": true
      },
      {
        "title": "Tunnel Run (Game)",
        "url": "https://slicker.me/javascript/tunnel/tunnel_run.htm",
        "description": "Tunnel Run is an interesting game entirely written in JavaScript. Why is it interesting you may ask... Well, because it's written in ONLY 170 lines of JS. Are you curious to play it and check out the code plus a very interesting explaination? Warning, it contains some maths :)",
        "imageUrl": "./71c8d6bfea93745161d3cd5dde76718d5830947d201ac4f666e90b084a666321.png",
        "featured": false
      },
      {
        "title": "Making Disabled Buttons More Inclusive",
        "url": "https://css-tricks.com/making-disabled-buttons-more-inclusive",
        "description": "Let’s talk about disabled buttons. Specifically, let’s get into why we use them and how we can do better than the traditional disabled attribute in HTML.",
        "imageUrl": "./97160a1ce140b6535e327144864b53c72a00e9e85fa2ad10396608a49d533e8f.jpg",
        "featured": false
      },
      {
        "title": "Building A Rich Text Editor (WYSIWYG)",
        "url": "https://smashingmagazine.com/2021/05/building-wysiwyg-editor-javascript-slatejs",
        "description": "Let’s build a rich text, WYSIWYG-editor that supports rich text, images, links and some nuanced features from word processing apps. We will use SlateJS to build the shell of the editor and then add a toolbar and custom configurations.",
        "imageUrl": "./103e92f4f322fad3a244c8e31e98eb1c97621036bc4d48ff34c5c3983210c58c.jpg",
        "featured": false
      },
      {
        "title": "Using Forms in React",
        "url": "https://daveceddia.com/react-forms",
        "description": "Learn how to build forms with React, the difference between controlled and uncontrolled inputs, and which to use.",
        "imageUrl": "./c1ba36b5e6cb35b675b01e104bcda7d9c487dce55bfc2a9771e9ffdb0aed2508.jpg",
        "featured": false
      },
      {
        "title": "Get Started With React By Building A Whac-A-Mole Game",
        "url": "https://smashingmagazine.com/2021/05/get-started-whac-a-mole-react-game",
        "description": "Want to get started with React but struggling to find a good place to start? This article should have you covered. We’ll focus on some of the main concepts of React and then we’ll be building a game from scratch!",
        "imageUrl": "./51b0151717ace6f3460ef0785d021c9ecb4974a9577ac6e2ef0eef443e5bfdd2.jpg",
        "featured": false
      },
      {
        "title": "How to Delegate your React Dialogs",
        "url": "https://around25.com/blog/how-to-delegate-your-react-dialogs",
        "description": "An interesting article that shows how you can manage modal dialogs using React and Chakra UI.",
        "imageUrl": "./f25a369200021c56553d5ab8208a9dd95a7e40c2a2481063354951a64fd4bd47.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 213,
    "title": "The modern guide to React state patterns",
    "slug": "2021-05-31-213-the-modern-guide-to-react-state-patterns",
    "date": "2021-05-31",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "The modern guide to React state patterns",
        "url": "https://blog.logrocket.com/modern-guide-react-state-patterns/",
        "description": "**How do we handle complex state using React?** React has been around for a while now, but this question keeps coming up every so often! Managing state is a never ending struggle for software engineers and React is no exception. This article tries to take a modern stance on this topic and explores some new ways to manage state in React!",
        "imageUrl": "./86e95f0cf91b9c3bd56bcaf49db4e0fb6f9f5eacd19d923da836dc49f4acdef8.png",
        "featured": true
      },
      {
        "title": "Explore DOM Events",
        "url": "https://domevents.dev/",
        "description": "Have you ever wondered how DOM Events actually work? If you have been doing any web development, chances are you have been dealing with them in a way or another. But if you really want to understand DOM events in-depth, you should definitely play with this wonderful interactive **DOM Event simulator**!",
        "imageUrl": "./c870220c960385aa4b00b05d9f2fd4209965183edc6eaaf4a1f3e38d775882f9.jpg",
        "featured": false
      },
      {
        "title": "What is High Availability?",
        "url": "https://digitalocean.com/community/tutorials/what-is-high-availability",
        "description": "While handling increased system load is a common concern, decreasing downtime and eliminating single points of failure are just as important. High availability is a quality of infrastructure design at scale that addresses these latter considerations.",
        "imageUrl": "./a1f1f6e18e2ff8f4fbacce43346def8e8212ef019ae839d6c77a1ba02390ec3d.jpg",
        "featured": false
      },
      {
        "title": "TypeScript - Poor man's async await using generators",
        "url": "https://fnune.com/typescript/2020/07/31/typescript-series-4-poor-mans-async-await-in-typescript-using-generators",
        "description": "Async/Await is one of those magic things that you can do in JavaScript. But is it really magic? Well, of course, it isn't! In this article, you can see an async engine re-implemented in TypeScript using generator functions. This will not just help you to demystify how Async/Await actually works but it will also help you to make the pattern type-safe!",
        "imageUrl": "./ec493df9eb49d34830d3eca00a82b16e32e8191f1e54fc916594cd73c501c0dc.jpg",
        "featured": false
      },
      {
        "title": "Everything you need to know about DynamoDB Partitions",
        "url": "https://alexdebrie.com/posts/dynamodb-partitions",
        "description": "Understanding DynamoDB partitions will make you a better user of DynamoDB. In this post, you'll learn how DynamoDB partitions work and how they should affect your data modeling.",
        "imageUrl": "./ceb9332fb3321a82b76764a6a724b4044adacdaaff81701865ca1def21e9e1a9.jpg",
        "featured": false
      },
      {
        "title": "How To Handle Command-line Arguments in Node.js Scripts",
        "url": "https://digitalocean.com/community/tutorials/nodejs-command-line-arguments-node-scripts",
        "description": "In this article, you will learn how to use arguments in your Node.js scripts and then you will recreate the script with the commander library.",
        "imageUrl": "./3a19aa62473dccf7fd11d03a117e86b0da507698be6c5089411a0a37135e4523.jpg",
        "featured": false
      },
      {
        "title": "claytongulick/bit-sync",
        "url": "https://github.com/claytongulick/bit-sync",
        "description": "Bit-sync is a utility for synchronizing arbitrary data using the rsync algorithm in pure js. If you need to build apps that require data synchronization features, this library might become your next best friend!",
        "imageUrl": "./5de77eee3897f953e776c4708672c44bf264504d3fca1c834d6a7b4ed1875028.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 212,
    "title": "Learn CSS",
    "slug": "2021-05-24-212-learn-css",
    "date": "2021-05-24",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "Learn CSS",
        "url": "https://web.dev/learn/css",
        "description": "CSS is a fundamental skill for web developers. You don't have to become an expert but you certainly can use knowing the basics. This is an evergreen CSS course and reference to level up your web styling expertise.",
        "imageUrl": "./8f7c4e8548c7be522ed2d7d593cd88a3a071fdcda916ab89b86c5e723dfa9d6f.jpg",
        "featured": true
      },
      {
        "title": "Serverless Land",
        "url": "https://serverlessland.com/",
        "description": "If you are currently learning Serverless, this is a great resource (by AWS and focused on AWS technology) that explores several different integration patterns that can be very useful in serverless architectures.",
        "imageUrl": "./548a66ba39be8e0fb0e73bbda1c5d404628546a7a94e0e812b61436a16aac358.jpg",
        "featured": false
      },
      {
        "title": "Iconoir: SVG Icons Library",
        "url": "https://iconoir.com/",
        "description": "**Iconoir** is a new shiny library of SVG icons. Other than providing a set of beautiful hand-crafted icons that would suit most projects, it is open source and provides a very permissive free license!",
        "imageUrl": "./cb55d1096f9bab7bfa438a22358ed1d74ddd433e306b2d29a19d3f4988c1dab9.jpg",
        "featured": false
      },
      {
        "title": "Go Modules Cheat Sheet",
        "url": "https://encore.dev/guide/go.mod",
        "description": "For those learning Go, modules are one of the things that differentiate the language from most other programming languages. This cheat sheet has you covered with all the important details that you should know and remember about the Go module system.",
        "imageUrl": "./8d3e9bbc86278e59a1797e17b19a199933def6761ee75c68685297e581bea3be.jpg",
        "featured": false
      },
      {
        "title": "5 steps to faster web fonts",
        "url": "https://iainbean.com/posts/2021/5-steps-to-faster-web-fonts",
        "description": "Fonts are one of the main elements for providing uniquely crafted web experiences. But when you start to adopt custom fonts, then you have to manage them and make sure they load as fast as possible. In this article, you can learn how to fine-tune your font files and optimize your loading strategy for maximum speed + minimum FOUT.",
        "imageUrl": "./5eae83426d1b1efdbc559d017aec69882431e45f596313c4d0db814f1b124b80.jpg",
        "featured": false
      },
      {
        "title": "Extreme HTTP Performance Tuning: 1.2M API req/s",
        "url": "https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million",
        "description": "This post walks you through a performance tuning journey that led Marc Richards to build a web server capable of serving **1.2 million JSON \"API\" requests per second** from a 4 vCPU AWS EC2 instance. Quite interesting to see how many things you can tune across the stack!",
        "imageUrl": "./ea80172da8abbac143f78573a3c61a04924928e91ff18aef12c1229cfac6959f.png",
        "featured": false
      },
      {
        "title": "How To Style a Table with CSS",
        "url": "https://digitalocean.com/community/tutorials/how-to-style-a-table-with-css",
        "description": "If you are in need of more **CSS** **knowledge**, in this tutorial, you will run through an example of styling an element. The first half will focus on a common table layout that uses the browser’s default styles for table elements. Browser defaults are the starting point of working with CSS, so it is",
        "imageUrl": "./8aac04af01bf179c7344ac8aaef3af9f42f6c07cb403c2b56153be8af22cd4e6.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 211,
    "title": "HTML tags and CSS for emails",
    "slug": "2021-05-17-211-html-tags-and-css-for-emails",
    "date": "2021-05-17",
    "templateType": "old-mailchimp",
    "intro": "This issue is kindly sponspored by:\n\n\n\n\n\nWe help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "HTML tags and CSS for emails",
        "url": "https://caniemail.com/",
        "description": "Did you ever have to work on the HTML content for an e-mail? If you did you probably realized how much more constrained email clients are compared to fully-fledged browsers. As a result of that, you cannot simply use all the tags and CSS rules that you love, but only a limited subset. Thanks to this website you can check what is safe for use in an email context.",
        "imageUrl": "./2d1e55930a3cf34e2c58bec58c566a4ed3bf6ea2d23e4fc6d0541fa3995cfac1.jpg",
        "featured": true
      },
      {
        "title": "Optimizing Web Vitals using Lighthouse",
        "url": "https://web.dev/optimize-vitals-lighthouse",
        "description": "This brilliant article by Google covers new tooling features in Lighthouse, PageSpeed, and DevTools to help identify how your site can improve on the Web Vitals.",
        "imageUrl": "./6514760c3d0068edbd75b91c444d0a45ecc2094f64e647dae6470aa1cd745fe0.jpg",
        "featured": false
      },
      {
        "title": "UX Lexicon",
        "url": "https://curiositytank.com/ux-lexicon",
        "description": "An evolving, interactive glossary of UX research terms. As a web developer, you are probably working with UX professionals. In these cases, it's great to have a common language to be able to collaborate effectively and build great products for your users!",
        "imageUrl": "./816c94f76839d687fe8902f3c2ca3dbd04ec6f22af4b078a0e3ea89b09993dbc.png",
        "featured": false
      },
      {
        "title": "Solving a Mystery Behavior of parseInt() in JavaScript",
        "url": "https://dmitripavlutin.com/parseint-mystery-javascript",
        "description": "Solving a mystery of how parseInt() parses small float numbers in JavaScript.",
        "imageUrl": "./48a48f5f87f3408ac8fd490f1d871b95954358c4241c2d77e21caafbf8f71eae.jpg",
        "featured": false
      },
      {
        "title": "The Critical Request: How to Prioritise Requests to Improve Speed",
        "url": "https://calibreapp.com/blog/critical-request",
        "description": "Are you trying to build fast and performant web experiences? Of course, you are! One great way to improve the feeling of snappiness of web pages is to carefully prioritize the order of loading different assets. In this article, you can learn how to apply this idea in practice.",
        "imageUrl": "./1bfadc2aab0515baffa973db09871410f4ffa7a6f79d4badabed277a26ebc214.png",
        "featured": false
      },
      {
        "title": "ES Temporal: 2 Minute Standards",
        "url": "https://bkardell.com/blog/TemporalIn2Min.html",
        "description": "If you have done enough JavaScript, you probably know that the language lacks when it comes to handling dates and times. Thankfully there is a new proposal called ES Temporal that introduces a much more robust set of functionalities that will make handling temporal data a much nicer experience! Check out this article for the details!",
        "imageUrl": "./7ff7b0c263293f52ed047b98504171c58ac9335bf74f52445628e15aa766592f.png",
        "featured": false
      },
      {
        "title": "Tree-Shaking: A Reference Guide",
        "url": "https://www.smashingmagazine.com/2021/05/tree-shaking-reference-guide/",
        "description": "“Tree-shaking” is a must-have performance optimization when bundling JavaScript. In this article, we dive deeper on how exactly it works and how specs and practice intertwine to make bundles leaner and more performant. Plus, you’ll get a tree-shaking checklist to use for your projects.",
        "imageUrl": "./83bb37645a44e61797759a41245d5ac428e2de6da0d68c9d2bb61e6c15b10153.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 210,
    "title": "Modern CSS Pseudo-Class Selectors",
    "slug": "2021-05-10-210-modern-css-pseudo-class-selectors",
    "date": "2021-05-10",
    "templateType": "old-mailchimp",
    "intro": "We help upcoming influencers and businesses do big things 🚀\n\n\t\t\tStart scheduling content today for free [here](https://feedhive.io/).",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "Modern CSS Pseudo-Class Selectors",
        "url": "https://smashingmagazine.com/2021/04/guide-supported-modern-css-pseudo-class-selectors",
        "description": "The CSS Working Group Editor’s Draft for Selectors Level 4 includes several pseudo-class selectors that already have proposal candidates in most modern browsers. This guide will cover ones that currently have the best support along with examples to demonstrate how they work.",
        "imageUrl": "./cd0ab3d1fab2df361342e48892ca0c3d24f92e84595dcf963c2de25019add3de.jpg",
        "featured": true
      },
      {
        "title": "How we ship code faster and safer with feature flags",
        "url": "https://github.blog/2021-04-27-ship-code-faster-safer-feature-flags",
        "description": "GitHub improves existing features and works on new ones all the time. This is possibly by using feature flags and it leads to shipping faster and with a lower risk for deployments.",
        "imageUrl": "./043e6fedb454b758da8046b2703e31fadaea60a6e69dbc4a92620f41a518b048.jpg",
        "featured": false
      },
      {
        "title": "CSS Tips",
        "url": "https://markodenic.com/css-tips",
        "description": "Some interesting CSS tips and tricks you will not see in most of tutorials. Want an example? What about pure-CSS typing effect? :)",
        "imageUrl": "./d8aeea129dbe755a647421ac80b86f2821d07ab7e3a9804516ebec431a75e934.jpg",
        "featured": false
      },
      {
        "title": "Incremental Static Regeneration With Next.js",
        "url": "https://smashingmagazine.com/2021/04/incremental-static-regeneration-nextjs",
        "description": "Incremental Static Regeneration (ISR) is a new evolution of the Jamstack, allowing you to update static content instantly without needing a full rebuild of your site. The hybrid approach of Next.js allows you to use ISR for e-commerce, marketing pages, blog posts, ad-backed media, and more.",
        "imageUrl": "./f30f3cf4dc369291fbde76a5131918fa06c0cf254bd6bdb3d646141b04a95f1b.jpg",
        "featured": false
      },
      {
        "title": "JavaScript async iterators",
        "url": "https://nodejsdesignpatterns.com/blog/javascript-async-iterators",
        "description": "An in-depth exploration of JavaScript iteration protocols with a special focus on async iterators.",
        "imageUrl": "./db8ccccd815e71b916403b0bb099cdc171339417df4b3166268f6b3edf5bfb2f.jpg",
        "featured": false
      },
      {
        "title": "The 10 Best Practices for Remote Software Engineering",
        "url": "https://cacm.acm.org/opinion/articles/252174-the-10-best-practices-for-remote-software-engineering/fulltext",
        "description": "Focusing on the human element of remote software engineer productivity.",
        "imageUrl": "./445052f1dc5b3d1b2f443bcb696f3ea9c51b156dbc622e7cafa84a2c23dc2d0e.jpg",
        "featured": false
      },
      {
        "title": "Customizing Tailwind CSS",
        "url": "https://allround.io/quick-tips/customizing-tailwind-css",
        "description": "Just like in the golden days of Bootstrap, popular CSS frameworks like Tailwind involve the danger of many websites looking very similar. In this article you will learn how to customise your Tailwind setup so that your website can have the unique look it deserves!",
        "imageUrl": "./f4c74c52ecb19ac6fbc5006b6d1d91ff10f252cf9d6f3e1acb5cdc2930dc8896.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 209,
    "title": "Prisma – The Complete ORM for Node.js & TypeScript",
    "slug": "2021-05-03-209-prisma-the-complete-orm-for-node-js-typescript",
    "date": "2021-05-03",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "Prisma – The Complete ORM for Node.js & TypeScript",
        "url": "https://prisma.io/blog/prisma-the-complete-orm-inw24qjeawmb",
        "description": "After more than two years of development, we are excited to share that all Prisma tools are ready for production.",
        "imageUrl": "./fa0b2d1a142a4eb491d9135c207e7af1a6c6879e82ac0843cfc86282045ca82b.jpg",
        "featured": true
      },
      {
        "title": "The True Meaning of Technical Debt",
        "url": "https://refactoring.fm/p/the-true-meaning-of-technical-debt",
        "description": "Technical Debt is widely used and discussed within engineering teams, however do we really know what these words actually mean or why and when technical debt actually happens? This brilliant article tries to shed some light on these questions!",
        "imageUrl": "./34fc725d10b1cc1279e4931d1d0f5b8d1ea166df403aef9dbfca3aa4d4940d31.jpg",
        "featured": false
      },
      {
        "title": "A new HTML boilerplate",
        "url": "https://matuzo.at/blog/html-boilerplate",
        "description": "I don't know about you, but every time I have to start writing a new HTML page from scratch I always feel like I am forgetting something important in my markup. I recently came across this brilliant HTML boilerplate which is quite comprehensive and well documented.",
        "imageUrl": "./ffbae4633f9a44884dd9f203a45e19aad4a24fed61a7259ef29afb9293d021d6.png",
        "featured": false
      },
      {
        "title": "Styled Components Best Practices",
        "url": "https://robinwieruch.de/styled-components",
        "description": "A comprehensive list of Styled Components Best Practices for React developers, particularly useful when working on larger projects with multiple frontend developers.",
        "imageUrl": "./29ed4f431a01d0533d31efb13619636cf226cf0d41673b6c964301a2acfcb994.jpg",
        "featured": false
      },
      {
        "title": "How Secure are your Cybersecurity tools?",
        "url": "https://blog.dashlane.com/how-secure-are-your-cybersecurity-tools/",
        "description": "Before you deploy a cybersecurity solution, you should ensure that the tool you plan to use is secure itself. One easy way to do that is through third-party ratings from companies such as SecurityScorecard.\nSecurityScorecard provides easy-to-understand ratings in 10 risk categories. These ratings evaluate a company’s cybersecurity risk based on data-driven insights that continuously evolve. sponsored",
        "imageUrl": "./87bb90af74543dc111c4a6046ba5abff1cb6a9ac3142a4c7caaecaa97c45d083.png",
        "featured": false
      },
      {
        "title": "How to make your blog images stand out",
        "url": "https://stephaniewalter.design/blog/how-to-make-your-blog-images-stand-out-reflect-your-identity",
        "description": "Stock photos, illustrations, mosaics, abstract patterns: ideas and 40 + tools and real world advice from an experienced designer for better images.",
        "imageUrl": "./d92265ad7ab389e5b7223f54a7171cd32d982577dff3507a034a4dd7ca2d3c43.jpg",
        "featured": false
      },
      {
        "title": "JS classes are not “just syntactic sugar”",
        "url": "https://webreflection.medium.com/js-classes-are-not-just-syntactic-sugar-28690fedf078",
        "description": "An in-depth article exploring the differences between using the `class` keyword in JavaScript VS using plain prototype chain. Really interesting read if you want to have a better grasp on JS internals.",
        "imageUrl": "./dd89caede24ffedb3380375bcddd820bd55fe31d42d96acd19272e07883c441d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 208,
    "title": "Say Hello To CSS Container Queries",
    "slug": "2021-04-26-208-say-hello-to-css-container-queries",
    "date": "2021-04-26",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Say Hello To CSS Container Queries",
        "url": "http://ishadeed.com/article/say-hello-to-css-container-queries",
        "description": "Let's learn about how CSS container queries work with lots of examples and use-cases. This new addition to CSS has the power to revolutionize the way frontend components can adapt to all sorts of different scenarios!",
        "imageUrl": "./7e7f8d09d64d28994f7e1d8949961429e37f6d2b4917de4071d053031aec5654.jpg",
        "featured": true
      },
      {
        "title": "How often do people actually copy and paste from Stack Overflow?",
        "url": "https://stackoverflow.blog/2021/04/19/how-often-do-people-actually-copy-and-paste-from-stack-overflow-now-we-know",
        "description": "April Fool's may be over, but once we set up a system to react every time someone typed Command+C, we realized there was also an opportunity to learn about how people use our site. Here’s what we found.",
        "imageUrl": "./ff8ded6db0f0ae01e03d905cad19d0de6c8613360683bad7bca0c34f519fa55e.jpg",
        "featured": false
      },
      {
        "title": "A Complete Guide To HTML Email",
        "url": "https://smashingmagazine.com/2021/04/complete-guide-html-email-templates-tools",
        "description": "Recently we’ve covered CSS generators, SVG generators and accessible front-end components. This time we look into HTML email, with tools, templates and guides for designers and developers.",
        "imageUrl": "./51e9120f7fbb5c6d004ec8cd5863f2a7010bd147b14e0ff63a15b07885576a23.jpg",
        "featured": false
      },
      {
        "title": "Practical Guide to Cybersecurity",
        "url": "https://go.dashlane.com/eBook-Guide-to-Cybersecurity-with-a-PWM.html",
        "description": "Implementing a password manager into your cybersecurity plans empowers your employees to do their part in keeping company data secure.\nIn this guide, we discuss the simple steps you can take to improve cybersecurity in your organization and maintain the cyberhealth of your business and its people, partners, services and products. sponsored",
        "imageUrl": "./c05c2d154e79c4dd5f7ca37052e04a99aa339b0f5279312fa6f18f3325174426.png",
        "featured": false
      },
      {
        "title": "How to actually test UIs",
        "url": "https://storybook.js.org/blog/how-to-actually-test-uis",
        "description": "Testing UIs is awkward. Users expect frequent releases packed with features. But every new feature introduces more UI and new states that you then have to test. Every testing tool promises “easy, not flaky, fast”, but has trade-offs in the fine print. In thist article you will find testing techniques used by leading engineering teams!",
        "imageUrl": "./be4b3b6312a5160f31d9f1e8132463b567bc36e9fa5a100824f0d6fa086bda1f.png",
        "featured": false
      },
      {
        "title": "OAuth 2.0 flows explained in GIFs",
        "url": "https://dev.to/hem/oauth-2-0-flows-explained-in-gifs-2o7a",
        "description": "OAuth 2.0 is possibly the most important authentication protocol on the web these days... It is certainly important for a full-stack developer to understand it in depth!\n\nIn this post, we will be covering all OAuth 2.0 flows using GIFs that are simple and easier to understand.",
        "imageUrl": "./26cc2757be083b76431ff9ad46c365d6ff026c3e2855900bb05e38413d60267c.jpg",
        "featured": false
      },
      {
        "title": "Comparing the New Generation of Build Tools",
        "url": "https://css-tricks.com/comparing-the-new-generation-of-build-tools",
        "description": "A bunch of new developer tools have landed in the past year and they are biting at the heels of the tools that have dominated front-end development over the last decade. Should you be interested in these new tools? Yes, and here's why!",
        "imageUrl": "./306bf6bf3c0c52fd1adce4a610215718792fabf003df9bb1397f2bc864ed9a8f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 207,
    "title": "How branches work in Git",
    "slug": "2021-04-19-207-how-branches-work-in-git",
    "date": "2021-04-19",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "How branches work in Git",
        "url": "https://stackoverflow.blog/2021/04/05/a-look-under-the-hood-how-branches-work-in-git",
        "description": "Git branches allow you to keep different versions of your code cleanly separated. Here's a look at how they work and why you should know about them.",
        "imageUrl": "./19281abc5a8191f1d4bc364de2d94189f9692b1e18f0c77e3c5ef821a55e1153.jpg",
        "featured": true
      },
      {
        "title": "Integrate SSO with PWM",
        "url": "https://go.dashlane.com/Why-You-Should-Integrate-PWM-SSO.html",
        "description": "Single sign-on (SSO) alone cannot protect every employee credential. Threat actors, meanwhile, have realized that stealing credentials is a high-reward, low-effort way to access company data. That’s why protecting credentials requires a password management solution to complement SSO technology. sponsored",
        "imageUrl": "./9b8e47e421134780f8188cd11dbea98b8ab8bad7018b89a3a2b8760278ae5ca3.png",
        "featured": false
      },
      {
        "title": "Tailwind CSS v2.1",
        "url": "https://blog.tailwindcss.com/tailwindcss-2-1",
        "description": "Tailwind CSS v2.1 was recently released with a new exciting features: the new JIT engine (which makes compilation super fast and generated files smaller), first-class CSS filter support, and much more!",
        "imageUrl": "./7b0e405ad8402e5b5a87b5886dfa3e3e0e9b3d7b7f36b354d8b2e4238e223ff5.jpg",
        "featured": false
      },
      {
        "title": "Vanilla JavaScript Code Snippets",
        "url": "https://smashingmagazine.com/2021/04/vanilla-javascript-code-snippets",
        "description": "A guide to vanilla JavaScript code snippets — with resources and lightweight libraries to help you solve a problem without a large overhead or third-party dependencies.",
        "imageUrl": "./2f1186cbd564550d59bdb0ebdb49db12cc6fb0694c1f3c25f40f646a9bd25b97.jpg",
        "featured": false
      },
      {
        "title": "You-Dont-Need-GUI",
        "url": "https://github.com/you-dont-need/You-Dont-Need-GUI",
        "description": "Stop relying on Graphic User Interfaces (GUIs) with this opinionated (yet interesting) repository which helps you to embrace the art of the command line more. Check it out, you might learn a trick or two!",
        "imageUrl": "./be7e1006baa4572cd79756c963eed35b0d98c1d92af2543ea309194989862109.jpg",
        "featured": false
      },
      {
        "title": "Sticky Headers: 5 Ways to Make Them Better",
        "url": "https://nngroup.com/articles/sticky-headers",
        "description": "Persistent headers can be useful to users if they are unobtrusive, high-contrast, minimally animated, and fit user needs. With this article you can learn some new interesting ways to handle sticky headers in your web pages.",
        "imageUrl": "./b848865a52b7251150ebfec139f6138cb8a4d7d3cacab776d67fa86c5bf198a1.jpg",
        "featured": false
      },
      {
        "title": "Space Jam",
        "url": "https://mxb.dev/blog/space-jam",
        "description": "I'm running a speed test on the new Space Jam site: the 1996 version on dial-up VS. the 2021 version on a 3G connection. Who will win?",
        "imageUrl": "./1cb4116818fe2e9358182931e61d6974dc0baa938ebd154e817131a232d06c79.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 206,
    "title": "How to Manage Multiple Threads in Node.js",
    "slug": "2021-04-12-206-how-to-manage-multiple-threads-in-node-js",
    "date": "2021-04-12",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "How to Manage Multiple Threads in Node.js",
        "url": "https://dev.to/johnjardincodes/managing-multiple-threads-in-node-js-3mpc",
        "description": "While it is true that Node.js is a single-threaded JavaScript runtime, it is possible to spin additional processes or threads on demand. This article explores few interesting techniques: **child processes**, the **cluster module** and **worker threads**.",
        "imageUrl": "./23d9061dd863d010be324ef2518a952b49a08152f34d0b23285f158d64854bad.png",
        "featured": true
      },
      {
        "title": "Font size is useless... let’s fix it!",
        "url": "https://tonsky.me/blog/font-size",
        "description": "What happens when you set `fontSize: 32` in your favorite editor? If you expect that the size of a character should become `32px`, you'd better give this wonderful article a chance... you'll be surprised!",
        "imageUrl": "./b63bfb7dd5aba7d1be8cd0ec5357f2aff4bd4366ae2fb76e2c4f37aa8cd28921.png",
        "featured": false
      },
      {
        "title": "New Attacks Targeting Remote Workers",
        "url": "https://blog.dashlane.com/attacks-targeting-remote-workers-cisa-report/",
        "description": "On January 13th, the Cybersecurity and Infrastructure Security Agency (CISA) published a report highlighting an increase in successful phishing attacks exploiting cybersecurity weaknesses of remote and distributed teams. Successful attacks gave hackers access to companies’ cloud services via both personal and corporate devices. sponsored",
        "imageUrl": "./0f8be629b7a2bfef77c01d016a48997dc0ce2735f38e55c9a7d2f48418b96d0e.png",
        "featured": false
      },
      {
        "title": "Go for Node.js developers",
        "url": "https://github.com/miguelmota/golang-for-nodejs-developers",
        "description": "This GitHub repository presents and extensive collection of common Golang snippets compared to Node.js equivalents. A great resource for learning Go if you are coming from JavaScript/Node.js.",
        "imageUrl": "./899da634c39d7e6e2a72560d6e5eb2d28df39adc2c1324afb49b3f17b08ba4b3.jpg",
        "featured": false
      },
      {
        "title": "Developing For Imperfect",
        "url": "https://moderncss.dev/developing-for-imperfect-future-proofing-css-styles",
        "description": "How do we plan future-proof styles in a world with an infinite degree of device and user ability variance? Let's explore how things can break and how modern CSS provides solutions.",
        "imageUrl": "./0d10c532dc7e6a560133e8ee790faf42bedce611a69f2bc3a42b3e23042fa3f7.jpg",
        "featured": false
      },
      {
        "title": "Building a Magical 3D Button",
        "url": "https://joshwcomeau.com/animation/3d-button",
        "description": "Every action we take on the web starts with a button click, and yet most buttons are ho-hum and uninspired. In this tutorial, we'll build an animated 3D button with HTML and CSS that sparks joy.",
        "imageUrl": "./7bad985f026c4590a1eb6cf5bde0c8f320ff1cb55814a42f842a7514df67710e.jpg",
        "featured": false
      },
      {
        "title": "React Context for Dependency Injection Not State Management",
        "url": "https://blog.testdouble.com/posts/2021-03-19-react-context-for-dependency-injection-not-state",
        "description": "Dive into the concept that React Context API is primarily a tool for injecting dependencies into a React tree and how we can use that to improve testability, reusability, and maintainability of our application (and not for state management).",
        "imageUrl": "./234ef5ab9a43e7dacb58abd841948e83b6c008421c41849cf0c0f5a20bebd806.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5",
      "author": "Robin Nixon",
      "description": "The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension. Build interactive, data-driven websites with the potent combination of open-source technologies and web standards, even if you only have basic HTML knowledge. With this popular hands-on guide, you'll tackle dynamic web programming with the help of today's core technologies: PHP, MySQL, JavaScript, jQuery, CSS, and HTML5.",
      "coverImageUrl": "./4dd383a9368aaa6ed632aede9e478cdc0678ed0fe58e1cd4ac7a53fa88dfa423.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491918667/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491918667/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 205,
    "title": "A Generative SVG Starter Kit",
    "slug": "2021-03-29-205-a-generative-svg-starter-kit",
    "date": "2021-03-29",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "A Generative SVG Starter Kit",
        "url": "https://dev.to/georgedoescode/a-generative-svg-starter-kit-5cm1",
        "description": "SVG is a fantastic medium for generative art. It can scale to any resolution, is a joy to debug, and has a multitude of incredible filters/effects built-in. With this post you can explore the idea of using SVG for generative art and you might learn one trick or two that can make your websites way more interactive and fun!",
        "imageUrl": "./f1aa26770ced383520b95989e0e01911d3a3fae65d2f4f5073b627d462f40d1c.jpg",
        "featured": true
      },
      {
        "title": "Introducing Amazon S3 Object Lambda",
        "url": "https://aws.amazon.com/blogs/aws/introducing-amazon-s3-object-lambda-use-your-code-to-process-data-as-it-is-being-retrieved-from-s3",
        "description": "When you store data in Amazon Simple Storage Service (S3), you can easily share it for use by multiple applications. However, each application has its own requirements and may need a different view of the data. With S3 Object Lambda you can finally modify the content on the fly!",
        "imageUrl": "./179f1e4ea87845e1796b411bb816eddcde54a41ff1dffbf589362d937b3432a2.jpg",
        "featured": false
      },
      {
        "title": "Responsibilities of a Senior Dev",
        "url": "https://dev.to/kaydacode/responsibilities-of-a-senior-dev-4i3i",
        "description": "What are the responsibilities of a senior developer? In this post, you will hear the real story of a senior engineer, their daily responsibilities and required awareness, and how their responsibilities shifted while they progressed through their career.",
        "imageUrl": "./3a948b3651df7efbe8992bca3a33c3910b0da85272446514598f2a8ffd5db90b.jpg",
        "featured": false
      },
      {
        "title": "Rust vs. Go: Why They’re Better Together",
        "url": "https://thenewstack.io/rust-vs-go-why-theyre-better-together",
        "description": "Go and Rust are not competitors. This article goes in-depth to analyse the strengths and weakness of both languages and shows how they are not competitive nor mutually exclusive. In certain cases you'd be better off picking Go, in other cases, you should prefer Rust!",
        "imageUrl": "./ae559054590caff6bb0c0a0b8098bc28142cfbb8cf483bfe31ee07aeb37edc29.jpg",
        "featured": false
      },
      {
        "title": "Identity and Access Management",
        "url": "https://go.dashlane.com/Identity-and-Access-Management-101.html",
        "description": "As the frequency and sophistication of cyberattacks rise, small- and medium-size businesses need stronger and more secure ways to fend off threat actors and protect sensitive assets. In *“Identity and Access Management 101”*, we explain how you can flexibly and securely manage user identities by automating authentication and authorization. sponsored",
        "imageUrl": "./9e02d5f64ae6616199a364a1fc8d82981abf754d0b00eceec313df6cff8c443d.png",
        "featured": false
      },
      {
        "title": "Understanding Streams in Node.js",
        "url": "http://nodesource.com/blog/understanding-streams-in-nodejs",
        "description": "Streams are one of the fundamental concepts that power Node.js applications. This blog post provides a wonderful introduction that can help with understanding them!",
        "imageUrl": "./ccf65e4bd464d6bd648cdf27237619da868ee802783c927fde88253b68c4d7d2.png",
        "featured": false
      },
      {
        "title": "Javascript and the next decade of data programming",
        "url": "http://benschmidt.org/post/2020-01-15/2020-01-15-webgpu",
        "description": "A beautiful article with tons of interactive visualizations that tries to make the point of how JavaScript is in a unique position for providing efficient visualization tools on the web.",
        "imageUrl": "./1bdeb2b264980d2b0a642c9b697fcc64348918919d9bb528756e60be8baf741b.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 204,
    "title": "#204: Before You memo()",
    "slug": "2021-03-15-204-11-before-you-memo",
    "date": "2021-03-15",
    "templateType": "old-mailchimp",
    "intro": "Make the keys to everything you do online easier and safer. Stop resetting passwords and filling out forms. Try Dashlane on your first device for free [here](https://www.dashlane.com/fullstackbulletin).",
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "Before You memo()",
        "url": "https://overreacted.io/before-you-memo",
        "description": "There are many articles written about React performance optimizations. In general, if some state update is slow, you need to do a number of checks and eventually you might end up memoizing expensive computations with `useMemo()`.\nIn this article Dan Abramov explores some simpler alternative techniques to `useMemo()`.",
        "imageUrl": "./be1a8ad0db100320c522cdfc57b7b84b8fd16d3f2d76a5cffb226c83c23eb443.png",
        "featured": true
      },
      {
        "title": "The Future of the Web Is HTML-over-WebSockets",
        "url": "https://alistapart.com/article/the-future-of-web-software-is-html-over-websockets",
        "description": "The future of web app development is taking shape, and it’s changing the way we think about server-side app architecture. In this article, Matt E. Patterson shows why a new WebSockets-driven approach where the server is pushing updates all the time might become the future of dynamic web apps.",
        "imageUrl": "./70d6679181e894092a0506773b21ef86a15ff31f86fb48d31e036f58096670e6.png",
        "featured": false
      },
      {
        "title": "The State of Security in the Workplace",
        "url": "https://blog.dashlane.com/state-of-workplace-security/",
        "description": "Dashlane recently conducted a survey with Harris Poll that explored what U.S. employees think about online security and password management. Over 1,200 workers responded, and one thing became very clear: many passwords are weak and reused. sponsored",
        "imageUrl": "./a9591af86946a7249246e74e2b0efccbff92a53dea0cf74f797d066ab970cf2a.png",
        "featured": false
      },
      {
        "title": "Build a react-router clone from scratch",
        "url": "https://dev.to/thomascullen/build-a-react-router-clone-from-scratch-38dp",
        "description": "Did you ever think *\"how complicated would it be to build an alternative to the famous `react-router`... from scratch?!\"* Well, this article explores exactly this thought and it is a great way to learn more about React and how `react-router` works!",
        "imageUrl": "./684c067b2c077080ef06bd69e4120cc1802730ec33170df40feff13f1eead2ca.jpg",
        "featured": false
      },
      {
        "title": "Building A Discord Bot Using Discord.js",
        "url": "https://smashingmagazine.com/2021/02/building-discord-bot-discordjs",
        "description": "An introduction to building a Discord bot using the Discord.js module. The bot will share random jokes, assign or revoke user roles, and post tweets of a specific account to a Discord channel.",
        "imageUrl": "./f0bec1cc42357402acddcba7b1be04638912b0c31524425a8575cd525e7acecf.jpg",
        "featured": false
      },
      {
        "title": "HTTPWTF",
        "url": "https://httptoolkit.tech/blog/http-wtf",
        "description": "HTTP is fundamental to modern development, from frontend to backend to mobile. But like any widespread mature standard, it's got some funky and there are a lot of weird things that you might want to be aware about!",
        "imageUrl": "./1411a6b6ee124e2c91e062aa94cc56bd9d45c11f0b077f4c0e093fba763d5aa6.jpg",
        "featured": false
      },
      {
        "title": "This Code Does Not Exist",
        "url": "https://doesnotexist.codes/",
        "description": "An extremely interesting experiment (and a game!) This website will propose you random snippets of code. The thing is, can you guess if that snippet was written by a human or if it was generated by GPT2! Effectively a Turing test for software engineers! 😱",
        "imageUrl": "./17cecd741198087e1fbcd71bfb91a1e3f52887e3e12db78fd9836ac49450db89.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 203,
    "title": "In the shadows",
    "slug": "2021-03-08-203-in-the-shadows",
    "date": "2021-03-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #10, 2021",
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "In the shadows",
        "url": "https://css-tricks.com/getting-deep-into-shadows/",
        "description": "Everything that there's to know about creating shadows with CSS in one article. Moreover, you won't just learn about the CSS bits, but, in this article, you will also find a great introduction on the design theory around shadows and lights.",
        "imageUrl": "./b80156dc19e37393c156b907cff0f000d5932686b6d6732dc8cf8a36e6b5bcd6.png",
        "featured": true
      },
      {
        "title": "An Exploration of JSON Interoperability Vulnerabilities",
        "url": "https://labs.bishopfox.com/tech-blog/an-exploration-of-json-interoperability-vulnerabilities",
        "description": "Learn more about how the same JSON document can be parsed with different values across microservices, leading to a variety of potential security risks.",
        "imageUrl": "./dc73e09ea931a42256e6d8f9f403d3afc437b943f87913f43d4bdb6485bc0aed.jpg",
        "featured": false
      },
      {
        "title": "10 Software Engineering Laws Everybody Loves to Ignore",
        "url": "https://netmeister.org/blog/software-engineering-laws.html",
        "description": "Sure, we\nall pretend to know them, but rarely do we think they\napply to us. Your manager certainly doesn't...",
        "imageUrl": "./4baf4eb7cffade491172a7a055ed64433715f66e99e6660a97a27d9717ddcde2.jpg",
        "featured": false
      },
      {
        "title": "ericchiang/pup",
        "url": "https://github.com/ericchiang/pup",
        "description": "Pup is a fantastic tool that allows you to parse HTML using CSS selectors directly from the convenience of the command line. Something you could probably use for many automation tasks involving HTML.",
        "imageUrl": "./200586a9427533c82bfb99c6437f57d22b340b35dc4bb41134213d2fdb9619ea.png",
        "featured": false
      },
      {
        "title": "Time for Next-Gen Codecs to Dethrone JPEG",
        "url": "https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg",
        "description": "Learn how several next-gen image codecs (JPEG 2000, WebP, AVIF, and JPEG XL) compare to JPEG in compression density, features, etc. as its potential replacement.",
        "imageUrl": "./75c7ade78903492bfe0da6dc10e484fe5975515df416edb8ffe4dd0144dafacb.jpg",
        "featured": false
      },
      {
        "title": "Rust for web development: 2 years later",
        "url": "https://kerkour.com/blog/rust-for-web-development-2-years-later/",
        "description": "An interesting take about Rust for web development by a software engineer who has been using Rust to build JSON web APIs for the last 2 years.",
        "imageUrl": "./d757e753c9a8bf45dcb34298f15bc2565a88888b602e46b36d56a64c2c2d0f8f.jpg",
        "featured": false
      },
      {
        "title": "Server Side Rendering (SSR) with React",
        "url": "https://blog.asayer.io/server-side-rendering-ssr-with-react",
        "description": "Server Side rendering has been the popular way of rendering web applications before the advent of JavaScript frontend libraries. In this article, we will be looking at how to build an SSR application using React but first let’s take a detour to explain what Client-side Rendering and Server-side rendering are.",
        "imageUrl": "./bf1aa8c803ebae3b86fa941e8700c5a549d30e86751a7233b900ed1a332bceda.png",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 202,
    "title": "10 UX lessons I learned building my product from scratch",
    "slug": "2021-03-01-202-10-ux-lessons-i-learned-building-my-product-from-scratch",
    "date": "2021-03-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #9, 2021",
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor and Author",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "10 UX lessons I learned building my product from scratch",
        "url": "https://thenextweb.com/growth-quarters/2020/09/14/10-ux-lessons-i-learned-building-my-product-from-scratch-syndication/",
        "description": "UX is such a fundamental skill for building any good product. As web developers, we should be able to understand the basics of UX to build our own products or to influence the product direction in our company. This article provides 10 great lessons that are worth embracing!",
        "imageUrl": "./b5a39dd908efe5ed97d4bb06a2c4d675bd439f790b47177dcd51c0894d6fb298.png",
        "featured": true
      },
      {
        "title": "Announcing Vite 2.0",
        "url": "https://dev.to/yyx990803/announcing-vite-2-0-2f0a",
        "description": "Vite is a new kind of build tool for frontend web development. Think a pre-configured dev server + bundler combo, but leaner and faster. It leverages browser's native ES modules support and tools written in compile-to-native languages like esbuild to deliver a snappy and modern development experience.",
        "imageUrl": "./2c06b86573d7e12b3d07a2b0dc333e28479192a1d9231584d252f97870e5cdba.jpg",
        "featured": false
      },
      {
        "title": "Interview with Ryan Dahl, Node.js & Deno creator",
        "url": "https://evrone.com/ryan-dahl-interview",
        "description": "In an interview with Evrone, Ryan Dahl speaks about the main challenges in Deno, the future of JavaScript and TypeScript, and tells how he would have changed his approach to Node.js if he could travel back in time.",
        "imageUrl": "./b3087fbf406974d8b33a27b766aea6b291efb29f01742dafcaf8e4fc206c37d6.jpg",
        "featured": false
      },
      {
        "title": "SmolCSS",
        "url": "https://smolcss.dev/",
        "description": "A very useful website collecting minimal snippets for modern CSS layouts and components. Ready available for when you need some snippets in your daily web development!",
        "imageUrl": "./0d9ea866837c5cb842c8ab3266e380a98ee6ab55eff1156fc6da74b52692d999.jpg",
        "featured": false
      },
      {
        "title": "Go Security cheatsheet",
        "url": "https://snyk.io/blog/go-security-cheatsheet-for-go-developers",
        "description": "If you write web services in Go, then you would probably find this cheat sheet to be a little useful gem to make sure your code is solid and free from most common security vulnerabilities.",
        "imageUrl": "./986a285f3c301e31e2bfc11cd09c80095f87b455a3d6d53346872110f674973a.png",
        "featured": false
      },
      {
        "title": "Zsh Tricks to Blow your Mind",
        "url": "https://twilio.com/blog/zsh-tricks-to-blow-your-mind",
        "description": "As web developers, we spend tons of time typing on the terminal. If you use `zsh` as your shell of choice, you might want to check out this article to learn some interesting tips that will make you even more productive.",
        "imageUrl": "./b301ff7eab60461e809260954eb6f89df5ca01d0e78885b3ce7b0612f2ebd570.jpg",
        "featured": false
      },
      {
        "title": "Time, Clocks and the Ordering of Events in a Distributed System",
        "url": "https://microsoft.com/en-us/research/publication/time-clocks-ordering-events-distributed-system",
        "description": "If you are building scalable web platforms you must certainly appreciate the complexity of distributed systems. This award-winning research paper tries to shine a light on the importance of ordering events in a distributed system and shows how clocks should be synchronised to guarantee correctness.",
        "imageUrl": "./9a7bbc3f9038b631b33491caf857fe7fa32bc3ce91d03156cb8959d00ea9a293.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld",
      "description": "Information architecture (IA) is far more challenging—and necessary—than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond.To guide you through this broad ecosystem, this popular guide—now in its fourth edition—provides essential concepts, methods, and techniques for digital design that have withstood the test of time.",
      "coverImageUrl": "./6479919bd4c4e1ab7a2cbc0f5cf23b45ee7ca46af986574798fd02163903111f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 201,
    "title": "Making GitHub’s new homepage fast and performant",
    "slug": "2021-02-15-201-making-github-s-new-homepage-fast-and-performant",
    "date": "2021-02-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #7, 2021\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "One machine can do the work of fifty ordinary men.  No machine can do the work of one extraordinary man",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "Making GitHub’s new homepage fast and performant",
        "url": "https://github.blog/2021-01-29-making-githubs-new-homepage-fast-and-performant",
        "description": "This post is the third instalment of the five-part series on building GitHub’s new homepage. In particular, this post presents how the globe feature was built: how the data is collected and used.",
        "imageUrl": "./4c377031e69fbacad34534be0dff35ad19871d23e6a2499f8d54b614dffd5be0.jpg",
        "featured": true
      },
      {
        "title": "Achieving 11M IOPS & 66 GB/s IO on a Single ThreadRipper Workstation",
        "url": "https://tanelpoder.com/posts/11m-iops-with-10-ssds-on-amd-threadripper-pro-workstation",
        "description": "This article goes outside the comfort zone of many full-stack web developers as it covers topics such as hardware and servers and how to achieve great performance in terms of IOPS on a single machine. If you are looking to expand your horizon a little bit, you might enjoy this article.",
        "imageUrl": "./9a7bbc3f9038b631b33491caf857fe7fa32bc3ce91d03156cb8959d00ea9a293.jpg",
        "featured": false
      },
      {
        "title": "SVG Path Visualizer",
        "url": "https://svg-path-visualizer.netlify.app/",
        "description": "Enter an SVG path data (the string inside the `d` attribute) to visualize it and discover all its different commands. A great way to learn how SVG paths work!",
        "imageUrl": "./1f354fca70ae38450694d9f4a3d88da024af17a6933eebf434c53b4811f83181.jpg",
        "featured": false
      },
      {
        "title": "Things You Can Do With CSS Today",
        "url": "https://smashingmagazine.com/2021/02/things-you-can-do-with-css-today",
        "description": "The present and future of CSS are very bright indeed and if you take a pragmatic, progressive approach to your CSS, then things will continue to get better and better on your projects, too.",
        "imageUrl": "./d37c1e090485b362432feeee2f25debd0381c778e1978294e650f19b4cbe0bd6.jpg",
        "featured": false
      },
      {
        "title": "The styled-components happy path",
        "url": "https://joshwcomeau.com/css/styled-components",
        "description": "styled-components is a wonderfully powerful styling library for React, and over the years I've learned a lot about how to use it effectively. This article shares my personal “best practices”.",
        "imageUrl": "./37aec989004d6c94590d030c89f75b10844a69642ff4d3af8107647b00c3e373.jpg",
        "featured": false
      },
      {
        "title": "Progressive Enhancement reading list",
        "url": "https://www.quirksmode.org/blog/archives/2021/02/progressive_enh.html",
        "description": "Progressive enhancement is still one of the fundamental ideas to design web pages that are functional and yet accessible to a wide range of users and devices. In this post, you will find a great number of resources to deep dive into such an important topic for every web developer.",
        "imageUrl": "./c3af77dcc3731f392a972d6e0e42caf02aea191ec4da22ac3c40f5d5ff9372fb.png",
        "featured": false
      },
      {
        "title": "argyleink/transition.css",
        "url": "https://transition.style/",
        "description": "Drop-in CSS transitions",
        "imageUrl": "./b9185c5385fdc61da25c8a02ac8b0230c9e7c3ff01dc996f113c957d4a5e90cb.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "E. Gamma, R. Helm, R. Johnson, J. Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.",
      "coverImageUrl": "./3d2f9c2ee1c817b2dcd3443fbb6f71d7fcb0499b00de983a9ffe8f8c6058fa29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 200,
    "title": "rqlite - distributed SQLite",
    "slug": "2021-02-08-200-rqlite-distributed-sqlite",
    "date": "2021-02-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #6, 2021\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "rqlite - distributed SQLite",
        "url": "https://github.com/rqlite/rqlite",
        "description": "rqlite is a lightweight, distributed relational database, which uses SQLite as its storage engine. Forming a cluster is very straightforward, it gracefully handles leader elections, and tolerates failures of machines, including the leader.",
        "imageUrl": "./0176221f5881e4041765f5ba7035e98d8d7ff471181004b33e8b44d7b7ba40fa.png",
        "featured": true
      },
      {
        "title": "The Best Static Site Generator for 2021",
        "url": "https://snipcart.com/blog/choose-best-static-site-generator",
        "description": "If 2020 was the year of static websites and static website generators, which generator is the best one? This article explore the strength and weaknesses of the main contenders on the scene!",
        "imageUrl": "./991232e7dec1890a0d465858680009fb32b30d079fcb2b1c18830b010e72463d.jpg",
        "featured": false
      },
      {
        "title": "Understanding Rendering in React",
        "url": "https://dev.to/teo_garcia/understanding-rendering-in-react-i5i",
        "description": "A solid but quite approachable walkthrough about how rendering works with React. This article will go through concepts such as VirtualDOM, render lifecycle, reconciliation and commit phases.",
        "imageUrl": "./cca67476c87c0044df8220c15b78ea9b4604c7cd8b2498eacf95b7f62f955a6a.jpg",
        "featured": false
      },
      {
        "title": "Life with ESM",
        "url": "https://css-tricks.com/life-with-esm",
        "description": "ESM, meaning ES Modules, meaning JavaScript Modules. Like, `import`, `export` and friends. Browsers support it these days. There is plenty of nuance, but as long as you’ve dropped IE, the door is fairly open. This article explores the idea of dropping npm entirely by looking at new approaches and new tools.",
        "imageUrl": "./b4ef428c6582ff88d301289695863f467c9c1bb26616abb1f674fdc2c0806233.png",
        "featured": false
      },
      {
        "title": "10 bad TypeScript habits to break this year",
        "url": "http://startup-cto.net/10-bad-typescript-habits-to-break-this-year",
        "description": "TypeScript and JavaScript have steadily evolved over the last years, and some of the habits we built over the last decades have become obsolete. Some might never have been meaningful. Here's a list of 10 habits that we all should break.",
        "imageUrl": "./d1416da2d83f7c8470d41df9520d1e3565fda38cc36680ca29676c6badb644a6.jpg",
        "featured": false
      },
      {
        "title": "Elm at Rakuten",
        "url": "https://dev.to/lucamug/elm-6m8",
        "description": "The story of adopting the Elm language in Rakuten. The lessons we learned, likes and dislikes.",
        "imageUrl": "./d46eac6f950ad336a1c47f3433774ed7c774b11a51e9e7d71f0816bc7a9727c4.jpg",
        "featured": false
      },
      {
        "title": "Why React Context is Not a \"State Management\" Tool",
        "url": "https://blog.isquaredsoftware.com/2021/01/context-redux-differences",
        "description": "You probably heard already people complaining about the React Context API not being meant to be used as a state management alternative. This article provides some definitive answers and clarification on the purpose and use cases for Context and Redux.",
        "imageUrl": "./6d5672f15354240d161ccb1f24f914a7d4981ad46626ae88f19e92b529ea36c7.png",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 199,
    "title": "Vue Native",
    "slug": "2021-02-01-199-vue-native",
    "date": "2021-02-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #5, 2021\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "Vue Native",
        "url": "https://vue-native.io/",
        "description": "If you prefer Vue to React and you always wished there was something like React Native, but using Vue, well now you can finally cheer up and use Vue even for mobile apps development!",
        "imageUrl": "./4647a39728e92fb93409e3228d7bf517f630b7c14621c53ffb34198bdb47461f.jpg",
        "featured": true
      },
      {
        "title": "kettanaito/naming-cheatsheet",
        "url": "https://github.com/kettanaito/naming-cheatsheet",
        "description": "An interesting repository presenting a comprehensive and language-agnostic guide on variables naming",
        "imageUrl": "./f9a5fd5d084432d48e464eec296a5c73d76e0131ce259f69ed7e1c83bbbf1c05.png",
        "featured": false
      },
      {
        "title": "How We Improved SmashingMag Performance",
        "url": "https://smashingmagazine.com/2021/01/smashingmag-performance-case-study",
        "description": "In this article, we’ll take a close look at some of the changes we made on Smashing Magazine, now running on JAMStack with React, to optimize the web performance and improve the Core Web Vitals metrics.",
        "imageUrl": "./dd5ca781598cb22d234cd1c21e43f4f8332ca6b4989c3c28cdcee543769ad81c.jpg",
        "featured": false
      },
      {
        "title": "Responsible Web Applications",
        "url": "https://responsibleweb.app/",
        "description": "HTML and CSS Tips and Tricks for creating applications that are both responsive and accessible out of the box.",
        "imageUrl": "./fec7f5de77206ec9331ea0edcbe531840c99f49d5053f0bdd4465b889c7190a2.jpg",
        "featured": false
      },
      {
        "title": "Why Rust Has a Bright Future in the Cloud",
        "url": "https://qovery.com/blog/why-rust-has-a-bright-future-in-the-cloud",
        "description": "This high-level article explores some of the most important characteristics of Rust and highlights why it will be a successful language for the development of cloud applications.",
        "imageUrl": "./934edbe809ed15ebe54e28fdb7045acafb3b5101116382a89fb1d1ef75721177.jpg",
        "featured": false
      },
      {
        "title": "Cache poisoning in popular open source packages",
        "url": "https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages",
        "description": "This blog post provides an introduction to web cache poisoning and demonstrates why open source maintainers should take this issue into account.",
        "imageUrl": "./b24053a7172304dadcb5ef2702087de2933c12771413dac22653f4229f4d7356.png",
        "featured": false
      },
      {
        "title": "Analysing Algorithms: Worst Case Running Time",
        "url": "https://thatcomputerscientist.com/analysing-algorithms-worst-case-running-time",
        "description": "Have you ever been asked about Big O Notation in an interview? Do you feel like you need to understand more about it? If that's your case, this article is a great resource that goes in detail about analyzing algorithms today, specifically the worst-case running time of algorithms.",
        "imageUrl": "./2bff2f8cbb82e454e78d35e13300ff454cdc19d4a9e0aaf7ce5ff5796302bda8.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 198,
    "title": "Snowpack v3.0",
    "slug": "2021-01-25-198-snowpack-v3-0",
    "date": "2021-01-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #4, 2021\n\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "Snowpack v3.0",
        "url": "https://snowpack.dev/",
        "description": "Snowpack v3.0 is here! This new release includes some serious new features, including pre-bundled streaming imports, built-in bundling & optimizations, new JavaScript APIs, and more.",
        "imageUrl": "./87a47f2e3eee3e103e279eba7bf842f68850d51e3ad084ed37f07ea6f03a65c0.jpg",
        "featured": true
      },
      {
        "title": "Front-End Performance Checklist 2021",
        "url": "https://smashingmagazine.com/2021/01/front-end-performance-2021-free-pdf-checklist",
        "description": "Let’s make 2021… fast! An annual front-end performance checklist (available as PDF, Apple Pages, MS Word), with everything you need to know to create fast experiences on the web today, from metrics to tooling and CSS/JavaScript techniques.",
        "imageUrl": "./fabd9bc2c8636cd75dc9a90aa642ede11c1348e3b7ebf4fac1bd629a0e403671.jpg",
        "featured": false
      },
      {
        "title": "The Art of Building Real-life Components",
        "url": "http://ishadeed.com/article/building-real-life-components",
        "description": "A walkthrough on building a professional and production-ready component with HTML & CSS. A very detailed post that you will particularly enjoy if you are currently working on a design systems or building components for a new project.",
        "imageUrl": "./eecb8e21a9bd41561b249baffaf77e58018b667ee0a510a95aae75aa63dbb1d4.jpg",
        "featured": false
      },
      {
        "title": "sindresorhus/ow",
        "url": "https://github.com/sindresorhus/ow",
        "description": "A JavaScript library that provides an easy way to validate function arguments. It offers a nice chainable API and lots of built-in validators. Of course, you can always add your custom ones if you have special needs!",
        "imageUrl": "./a90ca8e99b7a858b673ee172ea467df13f7709766f3c1bc0505d8c18d740edc2.png",
        "featured": false
      },
      {
        "title": "AWS Lambda is winning, but first it had to die",
        "url": "https://acloudguru.com/blog/engineering/aws-lambda-is-winning-but-first-it-had-to-die",
        "description": "Major feature changes have successfully pushed Lambda workloads into the mainstream, even if FaaS purists feel betrayed Is serverless winning? If you ask AWS, they’ll say definitely. Nearly half of all new applications built inside Amazon this year are running on Lambda!",
        "imageUrl": "./1c565dcbe03b85942d4f3d422c9017ad3d0f02849e32b0351fe509fd292b0d76.jpg",
        "featured": false
      },
      {
        "title": "Rust GUI: Introduction, a.k.a. the state of Rust GUI libraries",
        "url": "https://dev.to/davidedelpapa/rust-gui-introduction-a-k-a-the-state-of-rust-gui-libraries-as-of-january-2021-40gl",
        "description": "If you are doing Rust and you are curious to find out what are the best ways to build desktop and web UIs, this article provides a comprehensive walkthrough to the current status of the art for Rust GUI libraries!",
        "imageUrl": "./63edf21f7368a94ce812a4cb81ff4352a0d178e0a8646d0ed5def0fd50b59a3c.jpg",
        "featured": false
      },
      {
        "title": "Design Principles For The Web",
        "url": "https://adactio.com/articles/17733",
        "description": "The opening presentation from An Event Apart Online Together: Front-End Focus held online in August 2020. A beautiful presentation by Jeremy Keith about what are the principles we should follow while designing for the web. A must-read for every web developer!",
        "imageUrl": "./c6fa82a6faa17e297a742b5cd4001c4504d69f8acbc652f14df6ee666e2aa64f.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 197,
    "title": "IDEA - nonverbal algorithm assembly instructions",
    "slug": "2021-01-18-197-idea-nonverbal-algorithm-assembly-instructions",
    "date": "2021-01-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #3, 2021\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "IDEA - nonverbal algorithm assembly instructions",
        "url": "https://idea-instructions.com/",
        "description": "IDEA is a series of nonverbal algorithm assembly instructions. It is a great resource to learn about computer science topics such as **asymmetric encryption** or **binary search**. Guess where the inspiration is coming from?",
        "imageUrl": "./a340ff2731eb6df5dd0929de30608433d37c82a1a012361035f816fc8170c211.jpg",
        "featured": true
      },
      {
        "title": "Ditherpunk",
        "url": "https://surma.dev/things/ditherpunk",
        "description": "A wonderful walkthrough about monochrome image dithering. These techniques can be extremely interesting if you are trying to create a design with a unique look and feel or if you are just curious about image processing.",
        "imageUrl": "./6f3cc14b3c3e18ffe16bc7dc50aa0703357083bb8eed19a3117ac68826e2f850.jpg",
        "featured": false
      },
      {
        "title": "10 best practices to containerize Node.js web applications",
        "url": "https://snyk.io/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker",
        "description": "Are you looking for best practices on how to build Node.js Docker images for your web applications? Then this article probably has all you need to know!",
        "imageUrl": "./6c9f259fdbc3716a9421da2c8fd50fb1cf83c075437c71c425e7835a5a9931f6.png",
        "featured": false
      },
      {
        "title": "hexops/dockerfile",
        "url": "https://github.com/hexops/dockerfile",
        "description": "On the topic of dockerizing applications, this repository illustrates several great best practices that you can apply to any kind of application.",
        "imageUrl": "./d61eed2e4ac005fdd98a34ff45ff1522bbd85d9374d92df58ba1e657368876eb.jpg",
        "featured": false
      },
      {
        "title": "How to Fall In Love With Single Div Illustrations",
        "url": "https://dev.to/albertwalicki/how-to-fall-in-love-with-single-div-illustrations-1a5",
        "description": "Do you know that you can use a single `<div>` to create nice CSS illustrations? There are few interesting techniques that allow you to apply multiple styling rules to the same div. Check it out if you are curious. It also contains a bunch of really nice artsy examples!",
        "imageUrl": "./8c0813579518c7495751a591781648789a9b20e56063ab8f29b808215c3e1af5.jpg",
        "featured": false
      },
      {
        "title": "Memory Leaks Demystified",
        "url": "http://nodesource.com/blog/memory-leaks-demystified",
        "description": "Tracking down memory leaks in Node.js has been a recurring topic, people are always interested in learning more about due to the complexity.",
        "imageUrl": "./d2ae9ed824d8dc7cbb10ee8ffefd5a832073efefdf3719f32f86a8ee3c623f3a.png",
        "featured": false
      },
      {
        "title": "3 experiments with CSS paper effects",
        "url": "https://dev.to/s_aitchison/3-experiments-with-css-paper-effects-2o56",
        "description": "A series of interesting experiments about recreating paper effect using CSS. A great way to learn one or two new CSS tricks and to take inspirations for your next web design!",
        "imageUrl": "./45d2050aa24da79e002e5bb5ec24b012e8ea8229e04c5d9d4249493bdde365d4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 196,
    "title": "GitHub repositories to improve your programming skills",
    "slug": "2021-01-11-196-github-repositories-to-improve-your-programming-skills",
    "date": "2021-01-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #2, 2021\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "GitHub repositories to improve your programming skills",
        "url": "https://denic.hashnode.dev/github-repositories",
        "description": "A wonderful list of 15 different GitHub repositories aiming to help you to ramp up your coding skills in different areas: coding interview preparation, developer roadmap, public APIs, get better at Node.js, JavaScript or Python, etc...",
        "imageUrl": "./1ab9e6d7abf89458153aeafb565b4661ed8cc4eca457b8d949c6a1de737c7c21.png",
        "featured": true
      },
      {
        "title": "How we built the GitHub globe",
        "url": "https://github.blog/2020-12-21-how-we-built-the-github-globe",
        "description": "The new GitHub home page presents a fantastic animation where a 3D globe is rendered and animated in real-time based on actual commits happening as you watch! Aren't you curious to find out how this was built?",
        "imageUrl": "./4c377031e69fbacad34534be0dff35ad19871d23e6a2499f8d54b614dffd5be0.jpg",
        "featured": false
      },
      {
        "title": "Front-end predictions for 2021",
        "url": "https://www.browserlondon.com/blog/2021/01/04/front-end-predictions-2021/",
        "description": "If 2020 has proven anything, it’s that predicting the future is a mug’s game. With that said, here are some interesting predictions for where front-end development is heading over the next 12 months!",
        "imageUrl": "./cd192daf8f8a1215c26bc1f754432241225190a81eb487fdfc5bedf84aa7e7f4.png",
        "featured": false
      },
      {
        "title": "Get Started With TypeScript the Easy Way",
        "url": "https://austingil.com/typescript-the-easy-way/",
        "description": "This article is intended for JavaScript developers that have heard of TypeScript and are interested in getting started with it, or anyone that has already tried TypeScript and want to give it another perspective. It will focus on minimizing the technical requirements to follow along. We will get up and running with TypeScript without opening a terminal, installing dependencies, or even initializing an NPM project.",
        "imageUrl": "./b254fa22a92d10f93c976ef893aa110a3520f5c4738db1aaa89f98bb3d5017b6.png",
        "featured": false
      },
      {
        "title": "Parametric Color Mixer",
        "url": "https://colormixer.web.app/",
        "description": "A color palette composer inspired by audio parametric equalizers. Create beautiful color palettes with a scientific precision.",
        "imageUrl": "./b769e81e3fa186f8d5e44e2daf88c4d6fa3d8da1e54669eb31dbb43cb7d1b1ab.jpg",
        "featured": false
      },
      {
        "title": "We need tool support for keyset pagination",
        "url": "https://use-the-index-luke.com/no-offset",
        "description": "Pagination without OFFSET has many benefits but one problem: there is no tool support. Please help changing this.",
        "imageUrl": "./c702e1415102fe5fddf3aa50a5c48d6ea0ec25a3bdda9c323955153c1cc79f58.jpg",
        "featured": false
      },
      {
        "title": "CandyMail - Email Automation for Node.js",
        "url": "https://saasbase.dev/candymail",
        "description": "CandyMail makes it easy to trigger and send multi-step email sequences in Node.js using a single JSON file. Built for bootstrappers, indie makers with special care.",
        "imageUrl": "./ace26e4489ab3cfb59f4207e22aa3b520301ed6a5fe778218363ca0c8bbb8dab.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 195,
    "title": "Introducing Zero-Bundle-Size React Server Components",
    "slug": "2021-01-04-195-introducing-zero-bundle-size-react-server-components",
    "date": "2021-01-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #53, 2021",
    "quote": {
      "text": "It's supposed to be automatic, but actually you have to push this button",
      "author": "John Brunner",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Brunner"
    },
    "links": [
      {
        "title": "Introducing Zero-Bundle-Size React Server Components",
        "url": "https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html",
        "description": "The React team just shared their research into zero-bundle-size React Server Components. If you do any serious React, you should check out their announcement and the attached video.",
        "imageUrl": "./b58c89ea6b40f1e8c0d982280e9da17525ca428388d587d0e21024c8fca50cd1.png",
        "featured": true
      },
      {
        "title": "HTML Over The Wire",
        "url": "https://hotwire.dev/",
        "description": "Hotwire is an alternative approach to building modern web applications without using much JavaScript by sending HTML instead of JSON over the wire.",
        "imageUrl": "./0e703d95fa6b5d3a34dcba332124282a4763f218e65fc5f678b6962b42a66dbb.png",
        "featured": false
      },
      {
        "title": "AnimXYZ",
        "url": "https://animxyz.com/",
        "description": "AnimXYZ is a framework-agnostic library that allows you to build composable CSS animations!",
        "imageUrl": "./1d160698c98ff193d72a38e7acabe17d0b990e38a1b994ca6b45c7e8cf99920a.png",
        "featured": false
      },
      {
        "title": "How Do Computers Remember?",
        "url": "https://youtube.com/watch?v=I0-izyq6q5s",
        "description": "A very engaging video that explores some of the basics of computer memory: latches, flip flops, and registers.",
        "imageUrl": "./e6177efb1c6b0255116b17dd73300729d67e4c54792e12707429f981a76bc5f2.jpg",
        "featured": false
      },
      {
        "title": "API pagination design",
        "url": "https://solovyov.net/blog/2020/api-pagination-design",
        "description": "Returning all results for a given query could be a challenge for an API, especially if there are thousands of results. This article explores few options about how you might go implementing a pagination for such an API.",
        "imageUrl": "./23cce807b86fd1f38bf668937defd8416fa73da20a164d0131d41ba8a42494fd.png",
        "featured": false
      },
      {
        "title": "Here Lies Flash",
        "url": "https://mikeindustries.com/blog/archive/2020/12/here-lies-flash",
        "description": "On December 31, 2020 Flash was officially decommissioned... We just said our final goodbyes to one of the most important internet technologies that ever lived... What happens now?",
        "imageUrl": "./ab17834c88c400cac9cdd3935917f06edcd5b8210e0b789ec0d7a03188db5846.png",
        "featured": false
      },
      {
        "title": "How to Favicon in 2021: Six files that fit most needs",
        "url": "https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs",
        "description": "Prefer SVG over PNG, trust browsers to downscale, drop obscure formats—the ultimate, exhaustive guide to favicons for modern web. Includes steps for static HTML and Wepback!",
        "imageUrl": "./1db1ccc6f9825cb1cd3e933c9e59335f4116993cbc3070c76f7d44c529b6e750.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Laravel: Up and Running: A Framework for Building Modern PHP Apps",
      "author": "Matt Stauffer",
      "description": "What sets Laravel apart from other PHP web frameworks? Speed and simplicity, for starters. This rapid application development framework and its vast ecosystem of tools let you quickly build new sites and applications with clean, readable code. With this practical guide, Matt Stauffer -a leading teacher and developer in the Laravel community- provides the definitive introduction to one of today's most popular web frameworks. The book's high-level overview and concrete examples will help experienced PHP web developers get started with Laravel right away.",
      "coverImageUrl": "./244d94ae8a7a30f1f37a9bf6173d81b66dc1261d49ec40f0c2aa199dd474ab8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491936088/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491936088/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 194,
    "title": "Centering in CSS",
    "slug": "2020-12-28-194-centering-in-css",
    "date": "2020-12-28",
    "templateType": "old-mailchimp",
    "intro": "🎄 Best 7 links of week #52, 2020 🎁\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Centering in CSS",
        "url": "https://web.dev/centering-in-css",
        "description": "Follow 5 centering techniques as they go through a series of tests to see which one is the most resilient to change. Because centering things in CSS is never boring and always a challenge!",
        "imageUrl": "./d600a51ed93a71237bb196649886611c90fba89ed443f4de62cc4a9805ebae88.jpg",
        "featured": true
      },
      {
        "title": "Acing CSS Grid Model in 2021 with 5 Exercises",
        "url": "https://dev.to/joyshaheb/acing-css-grid-model-in-2021-with-5-exercises-css-2021-51ci",
        "description": "A very practical way to finally master CSS grids through 5 increasing challenging exercises!",
        "imageUrl": "./c419529ba9eac457d76a60c40d1b16015b764b104b8aa0cf44731fc788e5f1dc.jpg",
        "featured": false
      },
      {
        "title": "What Can You Put in a CSS Variable?",
        "url": "https://codersblock.com/",
        "description": "CSS variables (also known as CSS custom properties) can hold all sorts of things. Some of these things were are obvious, others are not. In this article, you will learn everything that can be a CSS Variable!",
        "imageUrl": "./9e662fb3b6cf84d854195d1679bfefab68bf16a7bd71632d92a1adecbe0ac0e4.jpg",
        "featured": false
      },
      {
        "title": "5 Ways to install Node.js",
        "url": "https://www.nodejsdesignpatterns.com/blog/5-ways-to-install-node-js/",
        "description": "Are you interested in getting started with Node.js and you are trying to figure out what's the simplest and best way to get Node.js installed in your development machine? If that's the case this article is definitely for you. But even if you are a seasoned Node.js developer, this article can provide you some useful tips to make you even more productive with Node.js.",
        "imageUrl": "./b79fecb9d07a8647ed1ea19816d66e39792353f39fd32cb1afe41e79f9f44244.jpg",
        "featured": false
      },
      {
        "title": "Sticky Table Header with React Hooks",
        "url": "https://webup.org/blog/sticky-header-table-with-react-hooks",
        "description": "Long tables with an endless scroll. Tables are great presentational medium for data, but it's not straightforward to stick their headers on top. Confronting that limitation with React hooks.",
        "imageUrl": "./4f77046b1d95b6761c1a23ab141b318d4483b095295dfbc377f1178fa7bc995a.png",
        "featured": false
      },
      {
        "title": "Jamstack in 2020",
        "url": "https://almanac.httparchive.org/en/2020/jamstack",
        "description": "Jamstack chapter of the 2020 Web Almanac covering the use of Jamstack, the performance of popular Jamstack frameworks, as well as an analysis of real-user experience using the Core Web Vitals metadata.",
        "imageUrl": "./e8ae4ed8f0d397afffbf1f4a73e23c3463c552a8210eefec7168e1b23ce4ffde.jpg",
        "featured": false
      },
      {
        "title": "The art of code",
        "url": "https://www.youtube.com/watch?v=6avJHaC3C2U",
        "description": "Considered by many the best technical talk of 2020, this presentation by Dylan Beattie gives an entertaining look at the art of code. From Conway's Game of Life to the 1970s demoscene and the earliest Obfuscated C competitions. Esoteric languages and quines - how can you create a program that prints its own source code? Code golf and generative art, the phenomenon of live coding as performance - from the pioneers of electronic music to modern algoraves and live coding platforms like Sonic Pi.",
        "imageUrl": "./d389fc408f7d2fb007e6f39ec1bbc4f103ddfc176465faa0ec30dce7adeb27f2.png",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 193,
    "title": "How to Make Your Code Reviewer Fall in Love with You",
    "slug": "2020-12-21-193-how-to-make-your-code-reviewer-fall-in-love-with-you",
    "date": "2020-12-21",
    "templateType": "old-mailchimp",
    "intro": "🎅🏻 Best 7 links of week #51, 2020\n\n\n⭐️ FullStack Bulletin has outgrown its free plan! If you enjoy this newsletter, consider supporting us:\n\n\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponsorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "How to Make Your Code Reviewer Fall in Love with You",
        "url": "https://mtlynch.io/code-review-love",
        "description": "Submitting Pull Requests is such a fundamental part of our job these days. Whether is for a work project or an open-source project, chances are that every time you are adding new functionality or fixing a bug you will submit a PR. Communication around PRs can be tricky and sometimes it might lead to conflict. This beautiful article will provide you with some of the best practices for code review when you're the author.",
        "imageUrl": "./4461621b68fc2d4ae6302f32a913cb83aff5c919596157f1a445e81504eee9e6.jpg",
        "featured": true
      },
      {
        "title": "The Import On Interaction Pattern",
        "url": "https://addyosmani.com/blog/import-on-interaction",
        "description": "A new interesting UI pattern that suggests to \"lazy-load\" non-critical resources when a user interacts with the piece of UI that requires it. This approach will make sure that your main application bundle will be as minimal as possible and the user will get additional functionalities incrementally as needed.",
        "imageUrl": "./4acfb4f42d93e011b92db939d46093974adbe2b66127167472def6e4007a149e.jpg",
        "featured": false
      },
      {
        "title": "Command Line Interface Guidelines",
        "url": "https://clig.dev/",
        "description": "An open-source guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.",
        "imageUrl": "./099f640e20cfe27a79d69d64869f791e221769c286c4574e1413448b8c8f725b.jpg",
        "featured": false
      },
      {
        "title": "mkirchner/linked-list-good-taste",
        "url": "https://github.com/mkirchner/linked-list-good-taste",
        "description": "Linus Torvalds' linked list argument for good taste, explained - mkirchner/linked-list-good-taste",
        "imageUrl": "./6b2e95632ef221680dcaa8ad8c2d3ddb60ce61ef3c472b8974f5852464427491.jpg",
        "featured": false
      },
      {
        "title": "From Callback Hell to Callback Heaven",
        "url": "https://dev.to/loreanvictor/from-callback-hell-to-callback-heaven-4i0c",
        "description": "Remember the time when a lot of \"callback-driven\" JavaScript code looked like a pyramid of doom? Thankfully today we have async/await to help us keeping things nice and tidy... But was it really a callback issue? Can we write nice and readable code by only using callbacks? Spoiler alert: YES WE CAN!",
        "imageUrl": "./919ae11b2d56a5704956472f5e8d2c89728f3c73fc3399b050a6e407ca1e5705.jpg",
        "featured": false
      },
      {
        "title": "The Rules of Margin Collapse",
        "url": "https://joshwcomeau.com/css/rules-of-margin-collapse",
        "description": "“Margin collapse” has a dastardly reputation, one of the trickier parts of CSS. Fortunately, it gets a lot easier once you learn a few rules! In this tutorial, we take a deep dive into the governing principles, and learn how to use them to our advantage.",
        "imageUrl": "./2a5828cacb9e19a3c69e3848165c85b47bc95257e29e0761e33d4ea9ee096928.jpg",
        "featured": false
      },
      {
        "title": "Swizec/useAuth",
        "url": "https://github.com/Swizec/useAuth",
        "description": "A simple way to add authentication to your React app using a convenient hook. It supports various providers such as Auth0 and Netlify Identity.",
        "imageUrl": "./14fda5ca16a0a7707729420c7ec209b6c04540a4463115b3dbd2168da17f2942.png",
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 192,
    "title": "Understand JavaScript Reduce With 5 Examples",
    "slug": "2020-12-14-192-understand-javascript-reduce-with-5-examples",
    "date": "2020-12-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #50, 2020\n\n \n\n⭐️ FullStack Bulletin has outgrown its free plan! Now... we need some help! 🤗\n[Donate on Patreon](https://patreon.com/lucianomammino) - [Discuss sponshorship](https://fstack.link/sponsor)",
    "quote": {
      "text": "In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg",
      "author": "Bjarne Stroustrup",
      "authorTitle": "Computer scientist and C++ inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Bjarne_Stroustrup"
    },
    "links": [
      {
        "title": "Understand JavaScript Reduce With 5 Examples",
        "url": "http://thecodebarbarian.com/javascript-reduce-in-5-examples",
        "description": "Here's 5 examples to help you understand how to use `Array#reduce()` in JavaScript, including 4 common use cases and one not-so-common use case.",
        "imageUrl": "./ceb9332fb3321a82b76764a6a724b4044adacdaaff81701865ca1def21e9e1a9.jpg",
        "featured": true
      },
      {
        "title": "Awesome Go",
        "url": "https://awesome-go.com/",
        "description": "A curated list of awesome Go frameworks, libraries and software",
        "imageUrl": "./43d5a89c958c1c187dc98374f4f7c255e8b5910ba3e2d3b95bead02a697ac6e6.jpg",
        "featured": false
      },
      {
        "title": "Container Image Support for AWS Lambda",
        "url": "https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support",
        "description": "With AWS Lambda, you upload your code and run it without thinking about servers. Many customers enjoy the way this works, but if you’ve invested in container tooling for your development workflows, it’s not easy to use the same approach to build applications using Lambda. Well, until now…",
        "imageUrl": "./51facd3f3dd1d75cdd3b7f1ce00083b230f5a7864ada2fb059fa97b6146655a4.jpg",
        "featured": false
      },
      {
        "title": "Styling Comment Threads",
        "url": "https://css-tricks.com/styling-comment-threads/",
        "description": "Comment threads are one of those things that look really simple when executed right. When designing them yourself, you may find that they are rather deceptively simple. There is a lot that goes into designing nice and usable comment threads, and in this article, you will walk through the steps to building a comment thread, that is great to look at, and a joy to use.",
        "imageUrl": "./9345be3f87c51ff933f68aef2488e96dee381d444ac3b427db76e40d76ec5791.png",
        "featured": false
      },
      {
        "title": "Writing testable serverless apps",
        "url": "https://dev.to/aws-heroes/writing-testable-serverless-apps-and-preventing-vendor-lock-in-using-hexagonal-architecture-3mi5",
        "description": "What is the scariest thing about serverless? For some people its testing, for others is vendor lock-in... This article explains how to write testable serverless applications and how to avoid vendor lock-in by leveraging the hexagonal architecture pattern.",
        "imageUrl": "./dd00eaa32dd4867cf44b24b61e5ed60b014f353f44a6cb90033518c4a143ef2d.jpg",
        "featured": false
      },
      {
        "title": "Futures explained in 200 lines of Rust",
        "url": "https://cfsamson.github.io/books-futures-explained/introduction.html",
        "description": "Rust futures and Async/Await are two of the most interesting and well-tought features of the language. In this article, you can explore in more depth how these features actually work and have a peek at them by looking at some code.",
        "imageUrl": "./372671ed295c97e38465309313c365ff0ddd373636e139393d0f37c8d327fff9.png",
        "featured": false
      },
      {
        "title": "Container orchestration tools explained",
        "url": "https://dev.to/sarmadsaleem/container-orchestration-tools-explained-1c4i",
        "description": "The way we write, ship, and maintain software today has evolved drastically in the last few years thanks to docker and containers... In this article you can deep dive on how container orchestration tools actually work!",
        "imageUrl": "./af778f3b43eff201e46acbb6fbdaa76b5ccb8047d8f07375929fe27bced11705.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Docker in Action",
      "author": "Jeff Nickoloff",
      "description": "After starting with a clear explanation of the Docker model, you will learn how to package applications in containers, including techniques for testing and distributing applications. You will also learn how to run programs securely and how to manage shared resources. Using carefully designed examples, the book teaches you how to orchestrate containers and applications from installation to removal. Along the way, you'll discover techniques for using Docker on systems ranging from dev-and-test machines to full-scale cloud deployments.",
      "coverImageUrl": "./f7904cb457d00eac2148258f1c19521c542a8bdd85bebcf49fa71431fd10b07f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633430235/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633430235/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 191,
    "title": "Building Your Color Palette",
    "slug": "2020-12-07-191-building-your-color-palette",
    "date": "2020-12-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #49, 2020",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "Building Your Color Palette",
        "url": "https://refactoringui.com/previews/building-your-color-palette",
        "description": "Learn how to design awesome UIs by yourself using specific tactics explained from a developer's point-of-view.",
        "imageUrl": "./795ee26af6ea568da17e555a33ca1199fe1ac2a448be7388ba6cacf2b92c9244.png",
        "featured": true
      },
      {
        "title": "JavaScript optimization tips",
        "url": "https://sendilkumarn.com/blog/javascript-optimization/",
        "description": "Some useful tips and tricks that will help you to write more efficient JavaScript code. For instance, do you know about SMI and heap numbers?!",
        "imageUrl": "./97b688fad34cbaf64198caafa659c04eceaaf5dbdd947ada1f84c6a952ddbb3c.png",
        "featured": false
      },
      {
        "title": "React component code smells",
        "url": "https://antongunnarsson.com/react-component-code-smells",
        "description": "How do you write good React components? Well, the answer to this question might not be easy, but this article will at least show you a wide collection of things to avoid when writing React components. Those should help you to evaluate and improve your components!",
        "imageUrl": "./f4f532fdec7c0f5d6dafb79a5da357bfdd2f875cc05539c962d49c972d97986a.jpg",
        "featured": false
      },
      {
        "title": "Beginner’s Guide to Static Site Generators",
        "url": "https://bejamas.io/blog/static-site-generators",
        "description": "World of static sites has grown beyond HTML, CSS, and occasional JS, and much of it is owed to static site generators. This article shows an incredibly detailed walkthrough into the world of Static Site Generators and the JAMStack!",
        "imageUrl": "./8e256b1624c8aa95b1e9a58ac186e6e5a26156e9bea671e96eef8ca1669624b2.jpg",
        "featured": false
      },
      {
        "title": "Ruffle",
        "url": "https://ruffle.rs/",
        "description": "What happens when Rust and WebAssembly meet Flash Player? Well, when this happens Ruffle is born! A new Flash Player emulator written in the Rust programming language which aims to make flash-based web games still available on the web today!",
        "imageUrl": "./9c1d77e3442674f108853e1c18c9505c465837b8c84102f9d98380939c65fd77.png",
        "featured": false
      },
      {
        "title": "3 amazing React Hooks to keep your code organized neatly",
        "url": "https://dev.to/dglsparsons/3-amazing-react-hooks-to-keep-your-code-organized-neatly-ghe",
        "description": "Have you ever used React hooks? If not, this article might be a great excuse to find out more about them and learn how they can help to make your code more expressive and organised.",
        "imageUrl": "./a0ed3caca76efb6c6933a9b499f6d7605a618f5ce45f482d208e8653a627a177.jpg",
        "featured": false
      },
      {
        "title": "🦀 Rust for JS developers",
        "url": "https://dev.to/codegram/rust-for-js-developers-1im9",
        "description": "Are you a web developer with significant JavaScript experience and thinking to learn Rust? If that's the case, this article is for you: how to approach Rust coming from the web and JavaScript!",
        "imageUrl": "./b9fc46987ebc209444583aa5cd6f2e39dd8aa6874f6731782790c86558c5120f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 190,
    "title": "The Atkinson Hyperlegible Font",
    "slug": "2020-11-30-190-the-atkinson-hyperlegible-font",
    "date": "2020-11-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #48, 2020",
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "The Atkinson Hyperlegible Font",
        "url": "https://brailleinstitute.org/freefont",
        "description": "Atkinson Hyperlegible is a new typeface optimized for legibility and readability for low vision readers. This font is named after Braille Institute founder, J. Robert Atkinson.  What makes it different from traditional typography design is that it focuses on letterform distinction to increase character recognition.",
        "imageUrl": "./36e53f548ae86a2b8f02ea3058374422f3c263b4c50bb4c09afef73adf90c19b.png",
        "featured": true
      },
      {
        "title": "A Complete Guide to CSS Gradients",
        "url": "https://css-tricks.com/a-complete-guide-to-css-gradients",
        "description": "Like how you can use the background-color property in CSS to declare a solid color background, you can use the background-image property not only to declare image files as backgrounds but gradients as well. Using CSS gradients is better for control and performance than using an actual image (of a gradient) file.",
        "imageUrl": "./eec0cdfbffaf09fbae7451146e3b44720f42be349910d7f2c0eb42ba0448f577.jpg",
        "featured": false
      },
      {
        "title": "Exploring How Computers Work",
        "url": "https://youtube.com/watch?v=QZwneRb-zqA",
        "description": "A little exploration of some of the fundamentals of how computers work. Logic gates, binary, two's complement; all that good stuff in a wonderful short video! A must-see for every software engineer and for everyone else that might be wondering how computers actually work! **Spoiler: kittens seem to like it too! 😻**",
        "imageUrl": "./d34135e295804d33faebddfd387ef91c2e9f11b5afa2181023585159d3eff6e0.jpg",
        "featured": false
      },
      {
        "title": "The Cleanest Trick for Autogrowing Textareas",
        "url": "https://css-tricks.com/the-cleanest-trick-for-autogrowing-textareas",
        "description": "This article introduces an interesting tecnique to make textareas auto-growable by replicating the content of the `<textarea>` in an element that *can* auto expand height, and match its sizing! Pure genius!",
        "imageUrl": "./52a1d263122ba176941757eb404f0c08caa00e8134e5ceaa400fee08770070a0.png",
        "featured": false
      },
      {
        "title": "Lightsail Containers: An Easy Way to Run your Containers in the Cloud",
        "url": "https://aws.amazon.com/blogs/aws/lightsail-containers-an-easy-way-to-run-your-containers-in-the-cloud",
        "description": "Lightsail is an interesting services from AWS that aims to make it even easier to launch containerized workloads and applications in the cloud!",
        "imageUrl": "./a5f35de88234481f546c4eb4534957c95e83e831de013ced65ae9ba5663a9ea4.jpg",
        "featured": false
      },
      {
        "title": "From JavaScript to WebAssembly in three steps",
        "url": "https://engineering.q42.nl/webassembly",
        "description": "A journey of improving the performance of an ultra-resolution storytelling tool called Micrio by upgrading the JavaScript-only client to WebAssembly.",
        "imageUrl": "./97bc1c6cafd7d3702ebcd10f6842b7c958dc2bf3aea6803ffde1d59044a50230.jpg",
        "featured": false
      },
      {
        "title": "9 Companies That Use Rust in Production",
        "url": "https://serokell.io/blog/rust-companies",
        "description": "Who uses Rust, and what are the benefits of choosing this programming language for your stack? Find out the answer in stories from 9 successful companies.",
        "imageUrl": "./5fa0c6a2e94fc34be36208e90ce58deec7c45281416431b7d87c59173618d814.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 189,
    "title": "Tailwind CSS v2.0",
    "slug": "2020-11-23-189-tailwind-css-v2-0",
    "date": "2020-11-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #47, 2020",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Tailwind CSS v2.0",
        "url": "https://blog.tailwindcss.com/tailwindcss-v2",
        "description": "Tailwind has definitely been the CSS framework of the year. This new release (Tailwind CSS v2.0) comes with some new interesting features, including an all-new colour palette, dark mode support, and tons more!",
        "imageUrl": "./1b0212979d24a4fd65c7d32081a76443b36439eb649d17eb6ea4528c81451612.jpg",
        "featured": true
      },
      {
        "title": "7 Git tricks that changed my life",
        "url": "https://dev.to/vivekagent47/7-git-tricks-that-changed-my-life-3aj3",
        "description": "Some helpful Git tips that might change the way you work with the popular version control system.",
        "imageUrl": "./50b4caed0933894de2eb3a3edc16b3742aca9ff66f0034103f53c42be4a4cbcb.jpg",
        "featured": false
      },
      {
        "title": "10 Insights from Adopting TypeScript at Scale",
        "url": "https://techatbloomberg.com/blog/10-insights-adopting-typescript-at-scale",
        "description": "Rob Palmer shares some of the insights & lessons learned during Bloomberg Engineering's journey to adopt TypeScript as a first-class supported language.",
        "imageUrl": "./4b30885388fd394a3de694988c4604df75b02b9cb448f913d6fcee79224fd4d3.jpg",
        "featured": false
      },
      {
        "title": "The Math of Password Hashing Algorithms and Entropy",
        "url": "https://fusionauth.io/learn/expert-advice/security/math-of-password-hashing-algorithms-entropy",
        "description": "Long passwords and one-way password hashing are standard strategies used to increase security and protect your user's passwords. Let's take a look at how they work and some new ideas to improve it.",
        "imageUrl": "./c2e0a6dea421b51927c5ba9b9121092781298def814d527f16c1c3374276a8e1.jpg",
        "featured": false
      },
      {
        "title": "EOS free & open source icons",
        "url": "https://icons.eosdesignsystem.com/",
        "description": "Handcrafted iconic font designed using the Material Design guidelines.",
        "imageUrl": "./6a0585d979de9cfdf77f6aabf880a583549555328162924b3d8f4fb290722363.jpg",
        "featured": false
      },
      {
        "title": "Using Vue as a Node.js Static Site Generator",
        "url": "http://thecodebarbarian.com/using-vue-as-a-node-js-static-site-generator",
        "description": "Here's how you can build a static site blog using vanilla Vue and Node.js.",
        "imageUrl": "./ceb9332fb3321a82b76764a6a724b4044adacdaaff81701865ca1def21e9e1a9.jpg",
        "featured": false
      },
      {
        "title": "The Case Against Anti-Flicker Snippets",
        "url": "https://andydavies.me/blog/2020/11/16/the-case-against-anti-flicker-snippets",
        "description": "Measuring the impact of AB testing tools anti-flicker snippets and why I think they're a symptom of a bigger problem",
        "imageUrl": "./9c71ff75cf6e1b7ca193fc13885a3a8e15f8d4fd8c1400f1aecefd56a7aa5704.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 188,
    "title": "Operator Lookup - Search JavaScript operators",
    "slug": "2020-11-16-188-operator-lookup-search-javascript-operators",
    "date": "2020-11-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #46, 2020",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Operator Lookup - Search JavaScript operators",
        "url": "https://joshwcomeau.com/operator-lookup",
        "description": "A friendly interactive guide about all the operators available in JavaScript. Do you know what **??=** or **>>=** are for? Go check them out!",
        "imageUrl": "./fb1f18fe38c80ce9a593e749eb1741f8270ff35410ba24920cd1bded10f19a17.jpg",
        "featured": true
      },
      {
        "title": "Emoji b4 emoji",
        "url": "https://ilovetypography.com/2020/11/08/emoji-before-emoji-hieroglyphic-broadsides",
        "description": "If you think Emojis are something new and only for cool kids you must check out this interesting article. It goes back in history showing different usage of pictograms that were used throughout history even to create entertaining rebus games.",
        "imageUrl": "./b9f16d31764d245929eb49633dd1be6b9fb55f22f1a1aac5a0ea79f8ce32e60d.png",
        "featured": false
      },
      {
        "title": "Comparing Objects in JavaScript",
        "url": "https://medium.com/javascript-in-plain-english/comparing-objects-in-javascript-ce2dc1f3de7f",
        "description": "What works, what doesn’t and why. In JavaScript, it’s easy to compare objects for equality, but not so easy to tell if they contain the same values. But Why?",
        "imageUrl": "./f72fe8bf424e0b3a65bdd852fec4aefaefda859988d9dc17625b3e6884447cb2.jpg",
        "featured": false
      },
      {
        "title": "Rust vs Go",
        "url": "https://bitfieldconsulting.com/golang/rust-vs-go",
        "description": "Which is better, Rust or Go? Which language should you choose for your next project, and why? How do the two compare in areas like performance, simplicity, safety, features, scale, and concurrency? Let's find out, in this friendly and even-handed comparison of Rust and Go.",
        "imageUrl": "./9f13348d06d1a224b87cba19b4e70826869a90039b2471742c25bd63ba43b8a7.jpg",
        "featured": false
      },
      {
        "title": "What's so great about Go?",
        "url": "https://stackoverflow.blog/2020/11/02/go-golang-learn-fast-programming-languages",
        "description": "In this article, StackOverflow explores the traits that have led to the rising popularity of the Go programming language.",
        "imageUrl": "./8cc8331aa2038c3e0bcc520ca3cb954a8ac080b6865ec346ee48614774e70a4f.jpg",
        "featured": false
      },
      {
        "title": "Layout projection: A method for animating browser layouts at 60fps",
        "url": "https://mattperry.is/writing-code/layout-projection-animate-browser-layout-60fps",
        "description": "Browser layouts are difficult to animate. Layout projection provides a method of animating layouts at 60fps with no visual distortion.",
        "imageUrl": "./42097065216067a658bdb2a90fc5a4b4d11fb857019a565646b58f70d3141b4e.png",
        "featured": false
      },
      {
        "title": "CSS Painting versus CSS Houdini Paint API",
        "url": "https://lisilinhart.info/posts/css-houdini-performance",
        "description": "How CSS features like painting backgrounds compare to CSS Houdini’s Paint API in terms of performance? CSS on it's own is already pretty powerful and can paint lots of amazing things. To figure out the difference in performance this article illustrates two pens, that essentially do the same thing: paint 200 divs, with 9 colored background circles each.",
        "imageUrl": "./913cce363023ec59404c7ccd1bbd60aac2ab8be656a18a613a661cf2162f8361.png",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 187,
    "title": "EKS workshop",
    "slug": "2020-11-09-187-eks-workshop",
    "date": "2020-11-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #45, 2020",
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible",
      "author": "Alvin Toffler",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "EKS workshop",
        "url": "https://eksworkshop.com/",
        "description": "A fantastic (and FREE) workshop by AWS itself to get you started with EKS, AWS's own managed Kubernetes service. In this course you will explore multiple ways to configure VPC, ALB, and EC2 Kubernetes workers, and Amazon Elastic Kubernetes Service.",
        "imageUrl": "./097a8bce60ef5ff528bd4156e771b3d748cd826eafd7b5cd1776014d36bb73a3.jpg",
        "featured": true
      },
      {
        "title": "Best Practices for Securing Your REST APIs",
        "url": "https://dev.to/leading-edje/best-practices-for-securing-your-rest-apis-563c",
        "description": "APIs are the backbone of the modern data-driven economy and for this reason, it's important to keep APIs secure. This article provides 10 tips to follow to secure your APIs!",
        "imageUrl": "./7fd5588d3b70c3a0afff345b5421b679f32561825a357b288adf5491bc059b9b.jpg",
        "featured": false
      },
      {
        "title": "5 useful TypeScript tricks",
        "url": "https://dev.to/basilebong/5-useful-typescript-tricks-419i",
        "description": "Do you know how to create custom type guards in TypeScript? Or how to set all the properties of an interface to optional? In this article, you will find the answers to these questions and other interesting Typescript tips.",
        "imageUrl": "./0c186ea3038a94225b5989e83eddd12af36a418afbbebcde5de0bc6222cceabf.jpg",
        "featured": false
      },
      {
        "title": "Ebiten - A dead simple 2D game library for Go",
        "url": "https://ebiten.org/",
        "description": "Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms.",
        "imageUrl": "./fc824db60cb6b16e0a9ac308a907ef850de96ada35ab49e6d8ee495d9f16a61e.jpg",
        "featured": false
      },
      {
        "title": "The story behind Markdown.",
        "url": "https://capiche.com/e/markdown-history",
        "description": "How the most popular plain text formatting syntax came to life, inspired by emails and the work behind other plain text syntaxes.",
        "imageUrl": "./15e912f66c65cd05a85c8a71dd0917d1a3f34d11a5cecef52807d1de93441ce6.jpg",
        "featured": false
      },
      {
        "title": "mvdan/sh",
        "url": "https://github.com/mvdan/sh",
        "description": "A shell parser, formatter, and interpreter with bash support; includes shfmt. Let's give shell scripts the love they deserve!",
        "imageUrl": "./e4ce7653bec0ed37c3d4696bdfe3815243bdd9d136a590c55ed25232db258482.jpg",
        "featured": false
      },
      {
        "title": "Determine prominent colors in a picture, your first AWS Lambda in Go",
        "url": "https://buddy.works/tutorials/determine-prominent-colors-in-a-picture-your-first-aws-lambda-in-go",
        "description": "This article demonstrates how to write a simple AWS Lambda function using Go to extract the prominent colors from a picture stored in S3.",
        "imageUrl": "./72e12fe4eed56dd8d0ed922f9f078be7590bd6d5199847d6797fe144bbdcdfaa.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Third Edition (",
      "author": "Mario Casciaro and Luciano Mammino",
      "description": "Learn proven patterns, techniques, and tricks to take full advantage of the Node.js platform Node.js Design Patterns book cover Master well-known design principles to create modern applications that are readable, extensible, and that can grow big\nThis book will teach you how to implement a series of best practices and design patterns to create efficient and robust Node.js applications.\nThe first chapters of the book are designed to explore the basics of Node.js, analyzing its asynchronous event-driven architecture and its fundamental design patterns including control flow patterns with callbacks, promises and async/await.\nThe second part of the book dives into Node.js streams and explores some of the most famous Gang of Four design patterns reinterpreted in the context of Node.js plus some original patterns that are specific to JavaScript and Node.js.\nIn the last section, this book covers more advanced topics such as Universal JavaScript with Node.js, React and Webpack, best practices to scale Node.js services, microservices and messaging patterns for enterprise-grade distributed applications.\nThroughout the book, you will see Node.js in action with the help of several real-life examples leveraging great technologies such as LevelDB, Redis, RabbitMQ, ZeroMQ and many others. They will be used to demonstrate a pattern or a technique, but they will also give you a great introduction to the Node.js ecosystem and its set of solutions.",
      "coverImageUrl": "./bdb38be1159334567237b58b9c29d587e3a3cdf85fc580d7fb5fad8abe547e28.png",
      "amazonUs": null,
      "amazonUk": null
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 186,
    "title": "React Flow",
    "slug": "2020-11-02-186-react-flow",
    "date": "2020-11-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #44, 2020",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "React Flow",
        "url": "https://reactflow.dev/",
        "description": "Highly customizable React.js library for building interactive node-based editors, flow charts and diagrams.",
        "imageUrl": "./a17792cbca8259fdc1b3f3c5620020ec31f53912c625493d16221b6646633381.jpg",
        "featured": true
      },
      {
        "title": "Faster Web App Delivery with PRPL",
        "url": "http://addyosmani.com/blog/the-prpl-pattern",
        "description": "PRPL is a pattern for structuring and serving web applications and Progressive Web Apps with an emphasis on improved app delivery and launch performance.",
        "imageUrl": "./47de25f408e8ba8634f572d18af121e761dd00d688cccff37796ed137fe7a7f3.jpg",
        "featured": false
      },
      {
        "title": "Interview with Armin Ronacher (creator of Flask)",
        "url": "https://evrone.com/armin-ronacher-interview",
        "description": "In an interview with Evrone Armin talks about his work at Sentry, shares his thoughts on handling errors in the backend, speaks about the differences between Rust and Python, the “gradual typing” approach, and, of course, the secrets of his work-life balance.",
        "imageUrl": "./ee35b00be520155bd8ab194f6f95c9025fb3dcb3bdb5c36f56a9f7f564ae66f9.jpg",
        "featured": false
      },
      {
        "title": "Fearless concurrency",
        "url": "https://sites.google.com/a/athaydes.com/renato-athaydes/posts/fearlessconcurrencyhowclojurerustponyerlanganddartletyouachievethat",
        "description": "How different languages including Clojure, Rust, Pony, Erlang and Dart let you achieve \"concurrency without fear\".",
        "imageUrl": "./1433d6e10bd1f8d60389aaaf622c5f2408ed01b4f3204a13c0eeba66171b4d5d.png",
        "featured": false
      },
      {
        "title": "Pikaday/Pikaday",
        "url": "https://github.com/Pikaday/Pikaday",
        "description": "A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS - Pikaday/Pikaday",
        "imageUrl": "./a468e8d51c4ec75d23a2907efb72a404740d72d15eb4cf77ef401079271f1508.png",
        "featured": false
      },
      {
        "title": "fonoster/fonos",
        "url": "https://github.com/fonoster/fonos",
        "description": "🚀 Fonos: an open-source alternative to Twilio to automate messaging and phone calls.",
        "imageUrl": "./059a8dbb35758d0cb5f8c654272893ed35524e13443f424f2458c55be565eded.jpg",
        "featured": false
      },
      {
        "title": "Piazzolla Type System",
        "url": "https://piazzolla.huertatipografica.com/",
        "description": "Piazzolla is a type family designed by Juan Pablo del Peral for Huerta Tipográfica and is somewhat special. If you like typography you will definitely appreciate the depth of this case study!",
        "imageUrl": "./be48efdc047e9c482b193e9fde065e8dc42aff34765f244834b3caa3d46b4382.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 185,
    "title": "Tailwind Play",
    "slug": "2020-10-26-185-tailwind-play",
    "date": "2020-10-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2020",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "Tailwind Play",
        "url": "https://play.tailwindcss.com/",
        "description": "An advanced online playground for Tailwind CSS that lets you use all of Tailwind's build-time features directly in the browser.",
        "imageUrl": "./a46db0cd06721493de39fa717649ddcc6e0264710bd58712b58e47d59f6a14a9.jpg",
        "featured": true
      },
      {
        "title": "Guide to WebAuthn",
        "url": "https://webauthn.guide/",
        "description": "An introduction to Web Authentication (WebAuthn), the new API that can replace passwords with strong asymmetric-key-based authentication.",
        "imageUrl": "./cf6c30adac962db9da2c60b23f6229d007f35a295525ae981b2b4939275bc991.jpg",
        "featured": false
      },
      {
        "title": "iamkun/dayjs",
        "url": "https://github.com/iamkun/dayjs",
        "description": "⏰ Day.js 2KB immutable date-time library alternative to Moment.js with the same modern API",
        "imageUrl": "./1c346fc62ae21d8e830e7fb5ad7b88994303a7f58bc617f5baee3326ac50d34a.jpg",
        "featured": false
      },
      {
        "title": "Load balancing and scaling long-lived connections in Kubernetes",
        "url": "https://learnk8s.io/kubernetes-long-lived-connections",
        "description": "Kubernetes doesn't load balance long-lived connections, and some Pods might receive more requests than others. If you're using HTTP/2, gRPC, RSockets, AMQP or any other long-lived connection such as a database connection, you might want to consider client-side load balancing.",
        "imageUrl": "./90a5d191cf52cf65f168e7bd783d000663811b544c50cdac32d865227813c8e9.jpg",
        "featured": false
      },
      {
        "title": "Play the long game when learning to code",
        "url": "https://stackoverflow.blog/2020/10/05/play-the-long-game-when-learning-to-code",
        "description": "Aspiring coders tend to take one of two types of learning approaches. The first involves trying to learn syntax as fast as possible. The second emphasizes understanding above all. It may take longer, but I hope to show how it's better in the end.",
        "imageUrl": "./7033b13a4d04a4cee48f7303e21fa1b19f2e47c8541fe1486007c7a051257101.jpg",
        "featured": false
      },
      {
        "title": "Hex Colors - HTML Color Codes",
        "url": "https://hexcolor.co/",
        "description": "hexcolor.co is a free color tool providing information about any color. Color Hex will also generate matching color schemes such as complementary, split complementary, analogous, triadic, tetradic and monochromatic colors.",
        "imageUrl": "./82dd6c39ec60c11582545ba7f75ff2f486b2ff57f1b86e2a2d1a0bb3bda8f633.jpg",
        "featured": false
      },
      {
        "title": "World smallest office suite 📝",
        "url": "https://zserge.com/posts/awfice",
        "description": "Let's build a tiny browser-based office suite - a text editor, a speadsheet, a drawing app and a presentation maker - all in four lines of code.",
        "imageUrl": "./eeefec8ad0aef5d1f73956b2c1b70fa144abb89b29bdc7bb56736854177b6b21.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 184,
    "title": "Async Generator Functions and Websockets in Node.js",
    "slug": "2020-10-19-184-async-generator-functions-and-websockets-in-node-js",
    "date": "2020-10-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #42, 2020",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Async Generator Functions and Websockets in Node.js",
        "url": "http://thecodebarbarian.com/async-generator-functions-and-websockets-in-node-js",
        "description": "Async generator functions were a new feature in **ES2018**. Node.js added support for async generator functions in Node.js 10. Async generator functions may seem like a pretty niche feature, but they present a neat opportunity for Node.js WebSocket frameworks. In this article, I'll explain how a Node.js WebSocket framework might use async generator functions.",
        "imageUrl": "./5fd9625738df528ecf4e6cb47560173b3b8b675d6ad2d4fedc9b322a0e78dbc4.png",
        "featured": true
      },
      {
        "title": "Vugu",
        "url": "https://vugu.org/",
        "description": "Vugu: Write pure Go and targets WebAssembly! Most modern browsers supported. Experimental, for now, but really cool!",
        "imageUrl": "./d148226f14ac899e11b444dd2beb652b13c74d2f6b0a2752a232823d5120d5c2.png",
        "featured": false
      },
      {
        "title": "3 node.js scalability problems and how to solve them 🚀",
        "url": "https://softwareontheroad.com/nodejs-scalability-issues",
        "description": "Serving static assets, not using cluster mode, and poorly designed cron jobs, are the most common mistakes when scaling a node.js server.",
        "imageUrl": "./08e8c41293ec2e6f88619d9e600bfd1f02593aabf7b51d46cea174bdc44f43f3.jpg",
        "featured": false
      },
      {
        "title": "Use lazy-loading to improve loading speed",
        "url": "https://web.dev/lazy-loading/",
        "description": "Lazy-loading is a technique that defers loading of non-critical resources at page load time. Instead, these non-critical resources are loaded at the moment of need. Where images are concerned, \"non-critical\" is often synonymous with \"off-screen\".",
        "imageUrl": "./7b5d08f53012accba3dc27811409911dbb969a972ff5e1e75dce7be00465755a.png",
        "featured": false
      },
      {
        "title": "How to Conditionally Add Attributes to Objects",
        "url": "https://davidwalsh.name/javascript-conditional-object",
        "description": "JavaScript is full of tricks that you don't know you want until you ... want ... them. Or maybe just until you see them. One trick I recently realized was conditionally adding attributes to React elements!",
        "imageUrl": "./899cd17527927ac90e6533f91b5b717f4a17be8ca45b163799e921ea98af4a0a.png",
        "featured": false
      },
      {
        "title": "Declarative Shadow DOM",
        "url": "https://web.dev/declarative-shadow-dom",
        "description": "Declarative Shadow DOM is a new way to implement and use Shadow DOM directly in HTML.",
        "imageUrl": "./d8d0b749bd4acc8e0462a810dc6e85135394ffc455abc260355294ecf20523db.jpg",
        "featured": false
      },
      {
        "title": "Radix Icons",
        "url": "https://icons.modulz.app/",
        "description": "A crisp set of 15×15 icons designed by the Modulz team.",
        "imageUrl": "./3d757731809109ca30a9c418324b529037ed0c8b7da311d92822bf4b92929c25.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 183,
    "title": "The React Cheatsheet for 2020",
    "slug": "2020-10-12-183-the-react-cheatsheet-for-2020",
    "date": "2020-10-12",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #41, 2020",
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "The React Cheatsheet for 2020",
        "url": "https://dev.to/codeartistryio/the-react-cheatsheet-for-2020-real-world-examples-4hgg",
        "description": "Everything you need to know about React in 2020: JSX, lists, events, state, basic hooks (useState, useEffect, useMemo, useRef), context, reducers and more! 🤯",
        "imageUrl": "./1f6b688a74bc514b4477e269a69ef0617ad0b190f0259ea31b668a5a5a7632b4.jpg",
        "featured": true
      },
      {
        "title": "A Complete Guide to CSS Media Queries",
        "url": "https://css-tricks.com/a-complete-guide-to-css-media-queries",
        "description": "Media queries can modify the appearance (and even behavior) or a website or app based on a matched set of conditions about the user's device, browser or system settings.",
        "imageUrl": "./baf9fde3da2ba8f004adf4ecc78f11f1c4ae2d336ad4611e0023804608863ca7.jpg",
        "featured": false
      },
      {
        "title": "Bringing the Mona Lisa Effect to Life with TensorFlow.js",
        "url": "https://blog.tensorflow.org/2020/09/bringing-mona-lisa-effect-to-life-tensorflow-js.html",
        "description": "Urban legend says that Mona Lisa's eyes will follow you as you move around the room. This interactive digital portrait brings the phenomenon to life...",
        "imageUrl": "./1f2a7082280578616fa89c0d7fe10a62df9d2b03df48dd10b79b1e0b1d4e7204.jpg",
        "featured": false
      },
      {
        "title": "Realistic CSS Art hacks",
        "url": "https://dev.to/elliehtml/realistic-css-art-hacks-27pk",
        "description": "The secrets of creating realistic CSS art, it's simple! This article shows how to create some amazing can designs using only CSS and HTML.",
        "imageUrl": "./9689c40854d39c0da94702fb1470dacd1b8beb85a61070a9b15f42b3bfd0851c.jpg",
        "featured": false
      },
      {
        "title": "Plausible: Self-Hosted Google Analytics alternative",
        "url": "https://plausible.io/self-hosted-web-analytics",
        "description": "Plausible Analytics is a privacy-friendly and open-source Google Analytics alternative that you can install and self-host on your server.",
        "imageUrl": "./43ca9556d186a3a590d2dfc17afa3a00be28bbb71a81d21ba13739cdd74ff071.jpg",
        "featured": false
      },
      {
        "title": "Emulate vision deficiencies in DevTools",
        "url": "http://addyosmani.com/blog/emulate-vision-deficiencies-devtools",
        "description": "Emulate vision deficiencies in to see how users who experience color blindness or blurred vision might see your site.",
        "imageUrl": "./8c7474ba89ac0639e0627f7ea87a5fbd33cd272756f8887c7f6c906ed04ec832.jpg",
        "featured": false
      },
      {
        "title": "Design better by avoiding your cognitive biases",
        "url": "https://kooslooijesteijn.net/blog/design-better-avoiding-cognitive-biases",
        "description": "Can you outsmart your brain? Seven biases that mess up your designs and what you can do against them.",
        "imageUrl": "./49cacd1f07096d582b136b5aefc727271fe3b0abf98079463727524eb845bd39.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 182,
    "title": "The New JSX Transform",
    "slug": "2020-10-05-182-the-new-jsx-transform",
    "date": "2020-10-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #40, 2020",
    "quote": {
      "text": "Should array indices start at 0 or 1?  My compromise of 0.5 was rejected without, I thought, proper consideration",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "The New JSX Transform",
        "url": "https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html",
        "description": "Browsers don’t understand JSX out of the box, so most React users rely on a compiler like Babel or TypeScript to transform JSX code into regular JavaScript. Many preconfigured toolkits like Create React App or Next.js also include a JSX transform under the hood. React 17 ships with a new implementation of the JSX transform. Find out more about it in this official article.",
        "imageUrl": "./eab28b4cb123d5a9b6ac4b48c908fe17fdd77002cdfa9b67248a632b13d28983.jpg",
        "featured": true
      },
      {
        "title": "Exploring Node.js Async Hooks",
        "url": "https://blog.appsignal.com/2020/09/30/exploring-nodejs-async-hooks.html",
        "description": "Node.js async hooks, more specifically the async_hooks module, provides a clear and easy-to-use API to track async resources in Node.js.",
        "imageUrl": "./7fd6d811d1b62880164d9ef48ec61178eee17de57306fbc596a8431d526fbd42.jpg",
        "featured": false
      },
      {
        "title": "ffmpegwasm/ffmpeg.wasm",
        "url": "https://github.com/ffmpegwasm/ffmpeg.wasm",
        "description": "FFmpeg for browser and node, powered by WebAssembly - This will make it much easier to embed FFmpeg within your Node.js and browser applications!",
        "imageUrl": "./a52c1b5f6f7bb8e50ab6a6807e4d43c99ba4a161922d79e8ce05f1ab3d697067.jpg",
        "featured": false
      },
      {
        "title": "Shapefest™ - A massive library of free 3D shapes",
        "url": "https://shapefest.com/",
        "description": "A massive free library of beautifully rendered 3D shapes. 160,000+ high resolution PNG images in one cohesive library.",
        "imageUrl": "./a95074fce623372cf98ed65371a9d5ab4ffc14cc7f7b23af476e2ac251eb848e.jpg",
        "featured": false
      },
      {
        "title": "Silind/twitter-api-client",
        "url": "https://github.com/Silind/twitter-api-client",
        "description": "A user-friendly Node.js / JavaScript client library for interacting with the Twitter API.",
        "imageUrl": "./7ea54714067a429f99a1639bb16d9a6de29c85ba567b8fa246e54ec7e89b81ac.jpg",
        "featured": false
      },
      {
        "title": "Guidelines to improve your React folder structure",
        "url": "https://maxrozen.com/guidelines-improve-react-app-folder-structure",
        "description": "People often say to 'move files around until it feels right', but what does 'right' even mean? Let's learn in this article.",
        "imageUrl": "./92fc50fca53472755e3e1dbab829fc501c636ec993b7c1166c3ad18f447a7795.jpg",
        "featured": false
      },
      {
        "title": "Building complex animations with React and Framer Motion",
        "url": "https://able.bio/drenther/building-complex-animations-with-react-and-framer-motion--2d5cbc0e",
        "description": "Learn to build smooth advanced animations in React with clean and minimal declarative code.",
        "imageUrl": "./75a64c163f19b16867a95bfdc0543b622bc6af880a4c16fdcea4b4adda94caf0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor.  Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 181,
    "title": "GitHub CLI 1.0",
    "slug": "2020-09-28-181-github-cli-1-0",
    "date": "2020-09-28",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #39, 2020",
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "GitHub CLI 1.0",
        "url": "https://github.blog/2020-09-17-github-cli-1-0-is-now-available",
        "description": "GitHub CLI brings GitHub to your terminal. It reduces context switching, helps you focus, and enables you to more easily script and create your own workflows.",
        "imageUrl": "./24d62f9c9b70482e23eb18de9ac8e8a836ee57ebace5504fe14c25c19532aaca.jpg",
        "featured": true
      },
      {
        "title": "OAuth in Node.js CLI Apps",
        "url": "http://thecodebarbarian.com/oauth-in-nodejs-cli-apps",
        "description": "OAuth is a popular tool for logging in to web apps, but Node makes it easy to use OAuth for CLI apps too. Here's how you can add OAuth support to a Slack CLI app.",
        "imageUrl": "./c6b0157e5331beee6488720790f557888afe375cace3d1f7b6aa9887d695af14.jpg",
        "featured": false
      },
      {
        "title": "Free svg background generator",
        "url": "https://bgjar.com/",
        "description": "Free svg background generator for your websites, blogs and app.",
        "imageUrl": "./75a83b87c9f92b4225077d642e58c300e3b02f0c92709b6dc628fb61d0dc8c6a.png",
        "featured": false
      },
      {
        "title": "alixaxel/chrome-aws-lambda",
        "url": "https://github.com/alixaxel/chrome-aws-lambda",
        "description": "Chromium Binary for AWS Lambda and Google Cloud Functions. A great library to easily run Puppeteer in serverless environments.",
        "imageUrl": "./d5b51b65910daf2707da8a9749374df4e910ba5b81742d1e20a7b1d5b1f2c37c.png",
        "featured": false
      },
      {
        "title": "Mono Icons",
        "url": "https://icons.mono.company/",
        "description": "A free, consistent, open-source icon set designed to be used in a wide variety of digital products.",
        "imageUrl": "./f23ac00c9d1bd64270b842565d6906e5ed7c5a05987cf31e992a924397f0dceb.jpg",
        "featured": false
      },
      {
        "title": "Migrating from styled-components to Stitches",
        "url": "https://stitches.dev/blog/migrating-from-styled-components-to-stitches",
        "description": "Stitches in a new CSS-in-JS library. In this article, you will learn what are the main differences with styled-components and how to migrate an existing project to stitches.",
        "imageUrl": "./2c905146dd410e9d08fd88d753195203be4c46ce01d6f609f87510ca8333da10.jpg",
        "featured": false
      },
      {
        "title": "ReadSpecWith.us",
        "url": "https://readspecwith.us/",
        "description": "Read the ECMAScript Specification and understand what it means with code examples!",
        "imageUrl": "./4330de85313377b99856636b44bd5e56e0f34a677acbaa428c16e8244b309aca.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 180,
    "title": "How HTTPS works",
    "slug": "2020-09-21-180-how-https-works",
    "date": "2020-09-21",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #38, 2020",
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "How HTTPS works",
        "url": "https://howhttps.works/",
        "description": "If you always wanted to understand in detail how HTTPS actually works, this is your chance to do it in a quite simple and fun way: that is a cat that explains how HTTPS works in a comic! 😻",
        "imageUrl": "./a1cdc8574e17c4d4379c657199681bdf8cd19129061c120b53139e16b8256046.jpg",
        "featured": true
      },
      {
        "title": "OAuth in Node.js CLI Apps",
        "url": "http://thecodebarbarian.com/oauth-in-nodejs-cli-apps",
        "description": "OAuth is a popular tool for logging in to web apps, but Node makes it easy to use OAuth for CLI apps too. Here's how you can add OAuth support to a Slack CLI app.",
        "imageUrl": "./47aded8625fc212bb061ee94c48795017a797d7b8ab44e7d4129852104e96669.png",
        "featured": false
      },
      {
        "title": "Testing Microservices, the sane way",
        "url": "https://medium.com/@copyconstruct/testing-microservices-the-sane-way-9bb31d158c16",
        "description": "Testing microservice is hard and sometimes even \"controversial\"... Do you try to replicate the entire microservices architecture on developers machine? That's always hard and somewhat accurate... so what's the alternative?",
        "imageUrl": "./c42bd3adae07afd2edaeb7b369b68d1a1758e80312839eae352a2c726d004ec5.png",
        "featured": false
      },
      {
        "title": "Migrating cdnjs to serverless with Workers KV",
        "url": "https://blog.cloudflare.com/migrating-cdnjs-to-serverless-with-workers-kv",
        "description": "Cloudflare powers cdnjs, an open-source project that delivers popular JavaScript libraries to over 11% of websites. Today, we are excited to announce its migration to a serverless infrastructure using Cloudflare Workers and its distributed key-value store Workers KV!",
        "imageUrl": "./2802da76c216903cfb20d1e66ef0c4c3eb3d063ae48ab6d6370f20397d2525f8.png",
        "featured": false
      },
      {
        "title": "DevTools architecture refresh: Migrating to JavaScript modules",
        "url": "https://developers.google.com/web/updates/2020/09/migrating-to-js-modules",
        "description": "How we migrate Chrome DevTools to JavaScript modules. The Chrome DevTools engineering blog - by the developers who build the DevTools.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "A brief history of the UUID",
        "url": "https://segment.com/blog/a-brief-history-of-the-uuid",
        "description": "Did you ever wonder what's in a UUID or even how UUIDs actually came into existence? If you are curious about this topic, this article goes in great depth about the history of UUID and it's extremely interesting!",
        "imageUrl": "./ff120978715d8fa2fc0c87be875def3b56e27031ae5c4f94fc569765a3b963a9.png",
        "featured": false
      },
      {
        "title": "Tech writing pocket list",
        "url": "https://github.com/rubymorillo/pocket-tech-writing-list",
        "description": "A small but formidable list of technical writing resources for software developers. Tech writing is definitely one of those soft skills to master and this repository can be of great help!",
        "imageUrl": "./5b39fcb5e9b9839d76e72af04990505c802cceab3da4256bc6799409123d3806.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 179,
    "title": "Beyond Media Queries",
    "slug": "2020-09-14-179-beyond-media-queries",
    "date": "2020-09-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #37, 2020",
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "Beyond Media Queries",
        "url": "https://css-tricks.com/beyond-media-queries-using-newer-html-css-features-for-responsive-designs",
        "description": "Beyond using media queries and modern CSS layouts, like flexbox and grid, to create responsive websites, there are certain overlooked things we can do like responsive images, setting min and max boundaries for css properties and using responsive units.",
        "imageUrl": "./a22b43708dd1625e116e3f4206fa32ac07fe6027a985e2c935b38a28ed29ce70.jpg",
        "featured": true
      },
      {
        "title": "React is becoming a black box",
        "url": "https://jaredpalmer.com/blog/react-is-becoming-a-black-box",
        "description": "Jared Palmer, a prominent voice in the React community, believes that React is on the verge of becoming a black box. If you are into React, you should be interested in checking out Jared's opinion.",
        "imageUrl": "./9ac491269070eedcf69ea22c0fb2faeb822cda77a5ab6597ee037f99c663a7a2.png",
        "featured": false
      },
      {
        "title": "Custom bullets with CSS ::marker",
        "url": "https://web.dev/css-marker-pseudo-element",
        "description": "It is now trivial to customize the color, size or type of number or bullet when using a list in HTML. Here are some new tips for maximum customizability!",
        "imageUrl": "./968c654b070f2a0fc6ff76c27e3c7b19f8d59c8acd4ba48afd833da82a68ca52.jpg",
        "featured": false
      },
      {
        "title": "Making WAVs: Understanding, Parsing, and Creating WAV Files in JavaScript",
        "url": "https://youtube.com/watch?v=udbA7u1zYfc",
        "description": "The WAVE file format is a binary format that encodes high fidelity audio data. But how is the audio encoded and stored? Let's find out by writing some JavaScript!",
        "imageUrl": "./9a36224bd14a4b2ded1cf6eac2928642ba251af07fc6651cc0c38fd7b6140994.jpg",
        "featured": false
      },
      {
        "title": "Intercepting Zoom's encrypted data with BPF",
        "url": "https://confused.ai/posts/intercepting-zoom-tls-encryption-bpf-uprobes",
        "description": "How to use Rust and BPF to intercept the data sent and received by programs that use OpenSSL, for instance Zoom!",
        "imageUrl": "./4fc09336d955e832df060269f58b3a142cbc8dbbf815df31e34e2c3ece2d78f4.jpg",
        "featured": false
      },
      {
        "title": "Browsers may throttle requestAnimationFrame",
        "url": "https://mattperry.is/writing-code/browsers-may-throttle-requestanimationframe-to-30fps",
        "description": "In specific situations Safari and Firefox may throttle requestAnimationFrame. Here’s why your JavaScript animations are looking janky.",
        "imageUrl": "./e2df29bf8b4a9f749a4a22469fd6670c8412f8df3c5df133ea82020491c5a387.jpg",
        "featured": false
      },
      {
        "title": "Peeking inside a Rust enum",
        "url": "https://fasterthanli.me/articles/peeking-inside-a-rust-enum",
        "description": "An incredibly in-depth article about how Rust stores Enum types in memory. If you are like us and like Rust because gives you a peek on lower-level concepts, you will definitely enjoy this article!",
        "imageUrl": "./d04d8e25e6b06f62a76544b1facb1d61eb5bd51e6a40991c0cb2d6bba84ac54a.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 178,
    "title": "Same Stats, Different Graphs",
    "slug": "2020-09-07-178-same-stats-different-graphs",
    "date": "2020-09-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #36, 2020",
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "Same Stats, Different Graphs",
        "url": "https://autodeskresearch.com/publications/samestats",
        "description": "It can be difficult to demonstrate the importance of data visualization. Some people are of the impression that charts are simply \"*pretty pictures*\", while all of the important information can be divined through statistical analysis. Recently, Alberto Cairo created the Datasaurus dataset which urges people to \"*never trust summary statistics alone; always visualize your data*\".",
        "imageUrl": "./4085c121514d6872dcda27ede37e266bd81764c89ca781fd65bd69382a3bf9b1.gif",
        "featured": true
      },
      {
        "title": "FREE Web security course from Stanford (CS253)",
        "url": "https://web.stanford.edu/class/cs253",
        "description": "Thought by **Feross Aboukhadijeh**, a prominent voice in Open Source Software, this course is a comprehensive overview of web security. The goal is to build an understanding of the most common web attacks and their countermeasures.",
        "imageUrl": "./c299d1b2bd5f7d3bf2196f2876168943ff664fec016d6e6f5703795bff884420.png",
        "featured": false
      },
      {
        "title": "Optimal Peanut Butter and Banana Sandwiches",
        "url": "https://www.ethanrosenthal.com/2020/08/25/optimal-peanut-butter-and-banana-sandwiches/",
        "description": "Did you ever think you could use computer vision to calculate the optimal way to slice a banana to fit nicely within the size of your bread? Well, we certainly didn't, but Ethan Rosenthal did and his article describing this experiment is amazing!",
        "imageUrl": "./392119f247ba4aca37fcca0fd4fa092db9532ffdae8c6c580dacb425ff2a326f.png",
        "featured": false
      },
      {
        "title": "AVIF: The New Next-Gen Image Compression Format",
        "url": "https://reachlightspeed.com/blog/using-the-new-high-performance-avif-image-format-on-the-web-today",
        "description": "Start using next-gen .avif images today progressively with the  element. The format is ~50% smaller in size compared to JPEG, and ~20% smaller than WebP.",
        "imageUrl": "./daa93e52c355a87bafcc914032892f20a1a16ba13caf84844db3acf21c485f60.jpg",
        "featured": false
      },
      {
        "title": "Full Stack Serverless",
        "url": "https://dev.to/dabit3/full-stack-serverless-building-a-real-time-chat-app-with-graphql-cdk-appsync-and-react-1dbb",
        "description": "How to build a full stack chat app on **AWS** with **GraphQL**, **React**, AWS **CDK**, AWS **AppSync**, Amazon **DynamoDB**, and Amazon **Cognito**.",
        "imageUrl": "./6bc867190426587a93bcfda2dad80da93955f8f27247c4bdff2bfb57cf3bb503.jpg",
        "featured": false
      },
      {
        "title": "Introducing Danfo.js, a Pandas-like Library in JavaScript",
        "url": "https://blog.tensorflow.org/2020/08/introducing-danfo-js-pandas-like-library-in-javascript.html",
        "description": "Danfo.js is an open-source, JavaScript library that provides high-performance, intuitive, and easy-to-use data structures for manipulating and processing structured data.",
        "imageUrl": "./6fd10166fff033d4c7c1ab7cbf7cd8262b5b27cdfa244c2d0baac39d6030c629.png",
        "featured": false
      },
      {
        "title": "How Shopify Reduced Storefront Response Times with a Rewrite",
        "url": "https://engineering.shopify.com/blogs/engineering/how-shopify-reduced-storefront-response-times-rewrite",
        "description": "In January 2019, we set out to rewrite the critical software that powers all online storefronts on Shopify’s platform to offer the fastest online shopping experience possible, entirely from scratch and without downtime.",
        "imageUrl": "./75e852cf78ff376a85dc7f5c6814464d0c47af1b5234ef41b1b64d1887dd2916.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449344682/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 177,
    "title": "Web Scraping without getting blocked",
    "slug": "2020-08-31-177-web-scraping-without-getting-blocked",
    "date": "2020-08-31",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #35, 2020",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "Web Scraping without getting blocked",
        "url": "https://scrapingbee.com/blog/web-scraping-without-getting-blocked",
        "description": "Browser fingerprinting, TLS fingerprinting, Chrome headless, headers spoofing and more. Here is everything we know about how to scrape the web without getting blocked.",
        "imageUrl": "./3e1b6ec856fc8e879bcde94131823450e8193daf7c83dec2bf6836fcaad95530.png",
        "featured": true
      },
      {
        "title": "Optimize SEO and Social Media Sharing in a Nuxt blog",
        "url": "https://vuedose.tips/optimize-seo-and-social-media-sharing-in-a-nuxt-blog",
        "description": "Do you want your blog to reach an audience? Then you should have SEO in your mind. Learn two techniques you can easily apply to your Nuxt blog.",
        "imageUrl": "./7e729b8a1bcb31ee39083a550e9f0696544a18958101d718ab51af03408a4951.jpg",
        "featured": false
      },
      {
        "title": "Charca/bootbot",
        "url": "https://github.com/Charca/bootbot",
        "description": "An interesting Open source Facebook Messenger Bot Framework for Node.js. If you like Node.js and you are thinking to write a Facebook Bot, definitely have a look at this project :)",
        "imageUrl": "./3dd32f7ef81b5624584f53446bf1e65db470b9fe0436d5ae9baa385218bc53bf.png",
        "featured": false
      },
      {
        "title": "An Introduction to Metrics, Monitoring, and Alerting",
        "url": "https://digitalocean.com/community/tutorials/an-introduction-to-metrics-monitoring-and-alerting",
        "description": "Understanding the state of your infrastructure and systems is essential for ensuring the reliability and stability of your services. In this guide, we will discuss what metrics, monitoring, and alerting are.",
        "imageUrl": "./3a19aa62473dccf7fd11d03a117e86b0da507698be6c5089411a0a37135e4523.jpg",
        "featured": false
      },
      {
        "title": "RustConf 2020 recap",
        "url": "https://github.com/poteto/rustconf-2020",
        "description": "A repository that provides aggregation of links that summarize RustConf 2020. If you are into Rust (or learning Rust), this is an incredible resource to find amazing FREE content!",
        "imageUrl": "./9fc392fb168754644fccf2aeaee11f9acbf291dc73dec76ce7e2330fc167d756.png",
        "featured": false
      },
      {
        "title": "A clean start for the web - macwright.com",
        "url": "https://macwright.com/2020/08/22/clean-starts-for-the-web.html",
        "description": "Daydreaming a post-HTML Utopia. An inspirational article for those who think that the web could have turned out to be much different than it is today!",
        "imageUrl": "./e483df7bbaf36b53608ffd6c37213eb59f3b411b7fcaa036cffa0da3bbc86a9b.jpg",
        "featured": false
      },
      {
        "title": "Security Best Practices for Node.js",
        "url": "https://blog.appsignal.com/2020/08/12/security-best-practices-for-nodejs.html",
        "description": "Let's go through the most critical security risks for Node.js web applications.",
        "imageUrl": "./fee8da719578b0cc09c893b07b19d2cd5d66905427954b0c7229f782e96ceaca.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 176,
    "title": "React v17.0 Release Candidate",
    "slug": "2020-08-24-176-react-v17-0-release-candidate",
    "date": "2020-08-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #34, 2020",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "React v17.0 Release Candidate",
        "url": "https://reactjs.org/blog/2020/08/10/react-v17-rc.html",
        "description": "After almost 2 years a new major release of React is ready. This is an interesting one, because it does not come with a hell of a lot of new featured, but it's more focused on making React easier to extends and integrate. Find out more about this upcoming release!",
        "imageUrl": "./eab28b4cb123d5a9b6ac4b48c908fe17fdd77002cdfa9b67248a632b13d28983.jpg",
        "featured": true
      },
      {
        "title": "Pysa: Open Source static analysis for Python",
        "url": "https://engineering.fb.com/security/pysa",
        "description": "Pysa is an open-source static analysis tool built by Facebook Engineering to detect and prevent security and privacy issues in Python code.",
        "imageUrl": "./562208ca829450f1eb817bf4e214dc328c06655eb286a9f14bea299ceda38105.jpg",
        "featured": false
      },
      {
        "title": "The Languages Which Almost Became CSS",
        "url": "https://eager.io/blog/the-languages-which-almost-were-css",
        "description": "Before CSS, well... there were other ideas! If you are curious about what kind of things could have happened instead of CSS, this is the history of all the languages which almost became CSS!",
        "imageUrl": "./678f453e42189990157da91c62245f8945b9a6527106765c7618e7e40ab5f53c.jpg",
        "featured": false
      },
      {
        "title": "Single Page Applications using Rust",
        "url": "http://sheshbabu.com/posts/rust-wasm-yew-single-page-application",
        "description": "This is really happening: WebAssembly finally allows languages other than JavaScript to be used as FullStack web languages! In this article, you can find out how to build a SPA using Rust, WebAssembly and Yew.",
        "imageUrl": "./9cda6fd78d01cad1280d9f2249165c5e8dce4dc690321d6a13f7c1a53e7b321f.jpg",
        "featured": false
      },
      {
        "title": "Breaking into Web Dev – Git & GitHub",
        "url": "https://dev.to/lauracharvey/breaking-into-web-dev-the-no-jargon-guide-article-1-git-git-hub-igg",
        "description": "A no-jargon guide on Git and Github for beginners. A great guide if you are doing your first steps in the field of software engineering or simply if you want to make sure you know all the basics of Git and GitHub.",
        "imageUrl": "./47f43d3cc1640447960203564952e43e33b1d36cc6732034fe3767a65ecf6221.jpg",
        "featured": false
      },
      {
        "title": "Vertical text alignment in buttons and inputs",
        "url": "https://codyhouse.co/blog/post/vertical-text-alignment-in-buttons-and-inputs",
        "description": "How to center text vertically in buttons and input elements using the padding and line-height CSS properties. Yes, vertical-alignment on the web is always fun!",
        "imageUrl": "./dfac7730dd4e1e225e18ab82af319173c8418dd87d6c0d7aa4acd06dc4fa9688.jpg",
        "featured": false
      },
      {
        "title": "A Practical Introduction to Using Redux with React",
        "url": "https://dev.to/ddmytro/a-practical-introduction-to-using-redux-with-react-1a0m",
        "description": "What is Redux? What is the State? How to Modify the State? A new revamped guide on how to get started with Redux and get the best out of it!",
        "imageUrl": "./f8dcbe4a49d2fac7c9a2efc309f39c19a9e4e2811d8d0636abb7e3e1866bee1e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 175,
    "title": "Making Facebook.com more accessible",
    "slug": "2020-08-17-175-making-facebook-com-more-accessible",
    "date": "2020-08-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #33, 2020",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Making Facebook.com more accessible",
        "url": "https://engineering.fb.com/web/facebook-com-accessibility",
        "description": "As part of the recent redesign of Facebook.com, there were a number of interesting improvements to make the website more accessible. This official article from Facebook Engineering, details all the optimizations introduced and show why they are important.",
        "imageUrl": "./fcccca4b33af20cedb3e51a406361db74b392c797ddf212ce637722eab7e210f.jpg",
        "featured": true
      },
      {
        "title": "Learn Git Branching",
        "url": "https://pcottle.github.io/learnGitBranching/index.html?demo=",
        "description": "An interactive Git visualisation tool to educate and challenge your understanding of Git!",
        "imageUrl": "./43b0a605b3a9cfc5daca23e72377bb85dcd9a1bb90c2c849268feace08810593.jpg",
        "featured": false
      },
      {
        "title": "content-visibility: the new CSS property that boosts your rendering performance",
        "url": "https://web.dev/content-visibility",
        "description": "The CSS content-visibility property enables web content rendering performance benefits by skipping rendering of off-screen content. This article shows you how to leverage this new CSS property for faster initial load times, using the auto keyword.",
        "imageUrl": "./8545c97b04803ba918ceb61b6602dcdca1aada0b85b013e06b1db41e016273f6.jpg",
        "featured": false
      },
      {
        "title": "What I Learned from Doing 60+ Technical Interviews in 30 Days",
        "url": "https://freecodecamp.org/news/what-i-learned-from-doing-60-technical-interviews-in-30-days",
        "description": "Practical lessons to help you become better at technical interviews",
        "imageUrl": "./119b771430f51068bfe65f7598fdcf8b5693d34c6997fc092f1bc5b8321dfe8f.jpg",
        "featured": false
      },
      {
        "title": "Warp SVG online",
        "url": "https://pavellaptev.github.io/warp-svg",
        "description": "A FREE online tool that let's you apply warp effects to distort your SVG images.",
        "imageUrl": "./0d85ac65bc881725ff9558d33c3c72d90c5b7f46a4c054c63607c31d6a54ee83.jpg",
        "featured": false
      },
      {
        "title": "3 most common mistakes when using Promises in JavaScript",
        "url": "https://dev.to/mpodlasin/3-most-common-mistakes-when-using-promises-in-javascript-oab",
        "description": "Promises rule JavaScript. Even nowadays, with the introduction of async/await, they are still an obligatory piece of knowledge for any JS developer. Promises are one of those things that look simple on the surface but there are many details that you need to appreciate otherwise things will go wrong! This article tries to demystify 3 common mistakes.",
        "imageUrl": "./f5425fc61b903613a9c4cd963ecafa105a1e4570d73a126f1742bcc4acc89359.jpg",
        "featured": false
      },
      {
        "title": "How We Got the Favicon - The History of the Web",
        "url": "https://thehistoryoftheweb.com/how-we-got-the-favicon",
        "description": "Did you know how the favicon came to be? It is actually a quite interesting story and, if you are passionate about the web as we do, we are sure you are going to enjoy it! ☺️",
        "imageUrl": "./1c9e1a931fc770359955e4e1c03b97323d1b96f5d59bd3d30c05ac6dff6aaf1c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 174,
    "title": "Polymorphism in JavaScript",
    "slug": "2020-08-10-174-polymorphism-in-javascript",
    "date": "2020-08-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #32, 2020",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Polymorphism in JavaScript",
        "url": "https://zellwk.com/blog/polymorphism-javascript/",
        "description": "There are three kinds of Polymorphism—Adhoc Polymorphism, Parametric Polymorphism, and Subtype Polymorphism. This article explains what each of them is and what they do.",
        "imageUrl": "./39f209e9f7bab4c3c6eee21fadc3826c9a5c42d5db080fdd711d57b45d4b222d.png",
        "featured": true
      },
      {
        "title": "Dark Ages of the Web",
        "url": "https://pavellaptev.github.io/web-dark-ages",
        "description": "Old Web features — frontend and UI patterns that shaped the history of Web Design during the first years of the World Wide Web. Can you recall some of these trends? Would you use any of them today? 😇",
        "imageUrl": "./41336a7e7ce427b5550f0c9163313df41135d5451ffb05b9b9487963d254f67a.jpg",
        "featured": false
      },
      {
        "title": "PHP 8: named arguments",
        "url": "https://stitcher.io/blog/php-8-named-arguments",
        "description": "Named arguments — also called named parameters — are finally supported in PHP 8! In this post we'll discuss their ins and outs.",
        "imageUrl": "./d5ba00091ee2b0d1b931d199aa77d545f934601b41550ad69057d2a3806e9f55.png",
        "featured": false
      },
      {
        "title": "Bringing Modern JavaScript to Libraries",
        "url": "https://dev.to/garylchew/bringing-modern-javascript-to-libraries-432c",
        "description": "This article explores some new strategies to ship modern JavaScript code (ES2017) directly to modern browsers without transpilation or bundling and how to fallback to provide support for older browsers.",
        "imageUrl": "./a75c1b2842e5d84fda98d1ae4c36cc30335eefc651c9ee351edcb24d443782a8.jpg",
        "featured": false
      },
      {
        "title": "Is serverless cheaper for your use case? Find out with this calculator.",
        "url": "https://medium.com/serverless-transformation/is-serverless-cheaper-for-your-use-case-find-out-with-this-calculator-2f8a52fc6a68",
        "description": "Serverless is not always cheaper than the more classic alternatives. With this calculator you can actually simulate how much Serverless is going to cost for you and find out whether it's going to be a cheaper option or not!",
        "imageUrl": "./72f8149961802ac572c87e7ac2fd90d40a45edd1df287ba71532ab6925a6e85e.jpg",
        "featured": false
      },
      {
        "title": "pretzelhammer/rust-blog",
        "url": "https://github.com/pretzelhammer/rust-blog",
        "description": "An education GitHub repository that provides articles targeting developers who are currently learning Rust.",
        "imageUrl": "./aa40e959712e72d39dbeb2d3f99d8baab44cc880142c99779cd26a05a2311725.jpg",
        "featured": false
      },
      {
        "title": "The Making of: Netlify's Million Devs SVG Animation Site",
        "url": "https://css-tricks.com/the-making-of-netlifys-million-devs-svg-animation-site",
        "description": "The following article captures the process of building the Million Developers microsite for Netlify, a wonderfully animated website that tells the story of Netlify and how it scaled to 1mln users.",
        "imageUrl": "./2d5071fee30aa14a0b1306c2e5ee5aef8dc3ea5eec2219b4527c3cfde2415a09.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 173,
    "title": "6 Powerful CSS Techniques You Can Use Instead of Javascript",
    "slug": "2020-08-03-173-6-powerful-css-techniques-you-can-use-instead-of-javascript",
    "date": "2020-08-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #31, 2020",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "6 Powerful CSS Techniques You Can Use Instead of Javascript",
        "url": "https://dev.to/diogorodrigues/6-powerful-css-techniques-you-can-use-instead-of-javascript-2f44",
        "description": "There are a lot of discussions about CSS vs. JavaScript and the battle is getting seriously once CSS is adding a bunch of amazing features and it's letting easier to do many things without JS.",
        "imageUrl": "./33be8d3239dafb9a9b957f02531699b0ea92b25169bc3c593ea2692eeb533a1a.jpg",
        "featured": true
      },
      {
        "title": "Redux Overview and Concepts",
        "url": "https://redux.js.org/tutorials/essentials/part-1-overview-concepts",
        "description": "The official Essentials tutorial for Redux: learn how to use Redux, the right way.",
        "imageUrl": "./93276c4603f6742089ec985e8eb00d71b85410c2cc266bc79df4265b8fdd396b.png",
        "featured": false
      },
      {
        "title": "How to create a strong visual identity for digital products",
        "url": "https://dribbble.com/stories/2020/07/21/visual-identity-for-digital-products",
        "description": "Every product has its own story. Here's how to create a strong visual identity that communicates this unique story and stands out in a competitive market.",
        "imageUrl": "./6f4ba17c96d87eef993188ab9611ba5cdd8a134516f4f2b2c9ea632aa0f02da6.jpg",
        "featured": false
      },
      {
        "title": "Complete Guide to React Hooks Testing",
        "url": "https://toptal.com/react/testing-react-hooks-tutorial",
        "description": "This article explores how to test React Hooks and outlines an eight-step testing plan you could employ to test your own projects.",
        "imageUrl": "./5555b671422df6c1fda7bc626773648109c4b31f601375e37e7e163197c614be.jpg",
        "featured": false
      },
      {
        "title": "Modern CSS Techniques To Improve Legibility",
        "url": "https://smashingmagazine.com/2020/07/css-techniques-legibility",
        "description": "In this article, we cover how we can improve websites legibility using some modern CSS techniques, great new technologies like variable fonts and putting into practise what we learned from doing scientific researches.",
        "imageUrl": "./841e9e97f3a2bdac6593b6fc1ef437df150fa72305218b001619ff1d8f473336.jpg",
        "featured": false
      },
      {
        "title": "Translating Design Wireframes Into Accessible HTML/CSS",
        "url": "https://smashingmagazine.com/2020/07/design-wireframes-accessible-html-css",
        "description": "In this article, Harris Schneiderman walks you through the process of analyzing a wireframe and making coding decisions to optimize for accessibility.",
        "imageUrl": "./151f59945bb0e5e590f232f07cf8c716fd797d99cc4077552e3814769cbe674c.jpg",
        "featured": false
      },
      {
        "title": "We built an OpenAI powered Tailwind CSS code generator using GPT-3",
        "url": "https://themesberg.com/blog/tailwind-css/gpt-3-tailwind-css-ai-code-generator",
        "description": "We created an OpenAI powered Tailwind CSS code generator using GPT-3's API by getting early access to it.",
        "imageUrl": "./662656d9673298ea2a3da33e60c096357a9fba37557a8522fa0c0631e449fcfe.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 172,
    "title": "A URL Shortener in 52 minutes",
    "slug": "2020-07-27-172-a-url-shortener-in-52-minutes",
    "date": "2020-07-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #30, 2020",
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "A URL Shortener in 52 minutes",
        "url": "https://youtube.com/watch?v=gq5yubc1u18",
        "description": "This video will show some live code that aims to build a complete URL shorter service including setting up DNS and deploying it!",
        "imageUrl": "./931396744783a202841b07f253b050607197d1cc7210545422eaf3e1d426508d.jpg",
        "featured": true
      },
      {
        "title": "Systems design for advanced beginners",
        "url": "https://robertheaton.com/2020/04/06/systems-design-for-advanced-beginners",
        "description": "An entertaining fictional story about a new startup and how they came to define their own system architecture. While the story is (maybe) fictional, there are some invaluable system design lessons to learn throughout this article!",
        "imageUrl": "./7b65672f13d9bf7266c0358baf78377a331881db67bf6a36a0798feb79823c5d.jpg",
        "featured": false
      },
      {
        "title": "Webpack: A gentle introduction",
        "url": "https://ui.dev/webpack/",
        "description": "Why Webpack exists? What kind of problems can it solve for you? Why is Webpack worth learning and where do you even start?",
        "imageUrl": "./bf3cf3065576efe31681d20cfa5880cc48100d1c8481a72bfe5b3335067e2152.png",
        "featured": false
      },
      {
        "title": "React Guitar",
        "url": "https://react-guitar.com/",
        "description": "A beautiful and flexible guitar component for React. Because... why not?! 🎸",
        "imageUrl": "./147c79e10faf37f3d995bdf59c00aa3cf553fec3f3e90238668b4774b59c297e.png",
        "featured": false
      },
      {
        "title": "Clear explanation of Rust’s module system",
        "url": "http://sheshbabu.com/posts/rust-module-system",
        "description": "Easy to understand explanation using visual aids and practical examples. If Rust module system has been confusing you, this article will definitely shed some light for you!",
        "imageUrl": "./0232e090f1555cfeeaed7b29af6c59ef3d9a0de7241af0c37e65e12ad99aaf51.png",
        "featured": false
      },
      {
        "title": "Building SVG Components with React.js and d3.js",
        "url": "https://pganalyze.com/blog/building-svg-components-in-react",
        "description": "Learn how to use SVG with React and d3, what SVG is, when to use it, handling, sizing, styling, layouting and interactivity in SVG and how to embed HTML in SVG.",
        "imageUrl": "./a8e81d1986e7f0199e8c403c0ab78f790cafb04f60f8a80fb75ebcbb854e8278.jpg",
        "featured": false
      },
      {
        "title": "jhuckaby/megahash",
        "url": "https://github.com/jhuckaby/megahash",
        "description": "A super-fast C++ hash table with Node.js wrapper, tested up to 1 billion keys.",
        "imageUrl": "./0982339e5b9f710c9238199814966e43f1d7940833e9e7e04e1a614e69937c86.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 171,
    "title": "Data Structures & Algorithms I Actually Used",
    "slug": "2020-07-20-171-data-structures-algorithms-i-actually-used",
    "date": "2020-07-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #29, 2020",
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Data Structures & Algorithms I Actually Used",
        "url": "https://blog.pragmaticengineer.com/data-structures-and-algorithms-i-actually-used-day-to-day",
        "description": "Do you actually use algorithms and data structures on your day to day job? I've noticed a growing trend of people assuming algorithms are pointless questions that are asked by tech companies purely as an arbitrary measure.",
        "imageUrl": "./867c23206ee4d531143f7acdcb41245afe4b3a5ab0d65479f7e73a0e74a11a44.png",
        "featured": true
      },
      {
        "title": "Building a self-updating profile README for GitHub",
        "url": "http://simonwillison.net/2020/Jul/10/self-updating-profile-readme",
        "description": "GitHub quietly released a new feature at some point in the past few days: profile READMEs. This article will illustrate a brilliant idea to keep your profile dynamic by using GitHub actions to update your README.",
        "imageUrl": "./71bc681ffd9d2754947c96879e760b0fa035c9dddb6e48db96c964a365d0b992.jpg",
        "featured": false
      },
      {
        "title": "Hacking with Environment Variables",
        "url": "https://elttam.com/blog/env",
        "description": "This article provides an interesting list of environment variables that you can supply to scripting language interpreters to produce \"possibly unintended\" side effects...",
        "imageUrl": "./f5f8589087fb449b75bce41f2b2115c837b0cd2725cd8af05a2953878bd53407.jpg",
        "featured": false
      },
      {
        "title": "Rust for JavaScript Developers - Pattern Matching and Enums",
        "url": "http://sheshbabu.com/posts/rust-for-javascript-developers-pattern-matching-and-enums",
        "description": "If you are a JavaScript developer trying to learn Rust, this tutorial covers pattern matching, destructuring, and enums!",
        "imageUrl": "./dde7fe29ae54a4b5799d4cfb95a971b1f3914e3bc5ea33e8c44eca18659dba2e.png",
        "featured": false
      },
      {
        "title": "shareon",
        "url": "https://shareon.js.org/",
        "description": "Lightweight, stylish and ethical share buttons for popular social networks",
        "imageUrl": "./d96efa7fb9541e24e88113fd8351ce8d51a510d7bd435f8c4359873b66d06f17.png",
        "featured": false
      },
      {
        "title": "WordPress Static Site: Benefits, Limits & Tools",
        "url": "https://snipcart.com/blog/wordpress-static-site-generator",
        "description": "WordPress & Jamstack can be united to surprising results. Read this complete guide to getting started with WordPress static site generators!",
        "imageUrl": "./529bb90c3c9751579b2c67c5caf68d431fcc9399a00ca89ec04da2b3d50ea479.jpg",
        "featured": false
      },
      {
        "title": "Understanding and Decoding a JPEG Image using Python",
        "url": "https://yasoob.me/posts/understanding-and-writing-jpeg-decoder-in-python",
        "description": "A fantastic article that can help you to understand the JPEG compression algorithm. One thing a lot of people don’t know is that JPEG is not a format but rather an algorithm. During the course of this article, you will be implementing a JPEG decoder in python! 🐍",
        "imageUrl": "./b9e96178e3e112fe458ab0d94f9f08f608f4ca1f7f133eb53b23d6984094f09b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 170,
    "title": "The surprising truth about what motivates us",
    "slug": "2020-07-13-170-the-surprising-truth-about-what-motivates-us",
    "date": "2020-07-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #28, 2020",
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "The surprising truth about what motivates us",
        "url": "https://youtube.com/watch?v=u6XAPnuFjJc",
        "description": "Adapted from Dan Pink's talk, this video illustrates the hidden truths behind what really motivates us at home and in the workplace.",
        "imageUrl": "./57055e584373ea6e476ae0d8f7415c29fdff360f602a6abb823702efac26a248.jpg",
        "featured": true
      },
      {
        "title": "New in Chrome: CSS Overview",
        "url": "https://css-tricks.com/new-in-chrome-css-overview",
        "description": "Here’s a fancy new experimental feature in Chrome! Now, we can get an overview of the CSS used on a site, from how many colours there are to the number of unused declarations… even down to the total number of defined media queries.",
        "imageUrl": "./130bbed274106e939efb7255df25e0797c87f84011ad120e50d64d240733eac8.jpg",
        "featured": false
      },
      {
        "title": "State of Frontend 2020 Survey",
        "url": "https://tsh.io/state-of-frontend",
        "description": "What does your life on the front end really look like? Take part in the global survey and compare yourself with other frontend developers.",
        "imageUrl": "./0275b5bcfa275b593bd860d7394bab944f13ebbcddb60c7e8812822c87367eaa.jpg",
        "featured": false
      },
      {
        "title": "Checkboxland",
        "url": "https://bryanbraun.com/checkboxland",
        "description": "✅ Render anything as HTML checkboxes, because... why not?! 😀",
        "imageUrl": "./bc5ba19f25a9959395b96d5993092251221a7cb1176a3583e18cda389f3a76d0.jpg",
        "featured": false
      },
      {
        "title": "Let your bugs teach you...",
        "url": "https://wizardzines.com/comics/bugs-teach-you/",
        "description": "A wonderful cartoon by Julia Evans (@b0rk) that shows why bugs are so important and useful 🐞",
        "imageUrl": "./791c0900e40a989b242781532be5bdf7596718508ffc53101ba65763342d1d71.png",
        "featured": false
      },
      {
        "title": "Help message for shell scripts",
        "url": "https://samizdat.dev/help-message-for-shell-scripts",
        "description": "A very clever shell scripting trick to display an help command based on a comment at the top of your script!",
        "imageUrl": "./b5300d8b01428bf680b9891ae15a41ba7d9098cd07ed111ade8281142ad67339.png",
        "featured": false
      },
      {
        "title": "Fastify v3 released",
        "url": "https://medium.com/@fastifyjs/fastify-v3-released-da4601d79a5",
        "description": "The final release of the third major version of Fastify is out and it has a ton of interesting improvement, including compatibility with Express/Connect-like middleware! Discover all the new features in this post.",
        "imageUrl": "./87bcdbb485ba2673938228f08ec818e540d4b43a67a5fafd2acdb1198d2a2469.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 169,
    "title": "Learn Regular Expressions",
    "slug": "2020-07-06-169-learn-regular-expressions",
    "date": "2020-07-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #27, 2020",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Learn Regular Expressions",
        "url": "https://regexone.com/",
        "description": "RegexOne provides a set of interactive lessons and exercises to help you learn regular expressions. If you have been struggling with learning \"how to regex\", this can be a nice way to fill the gap :)",
        "imageUrl": "./a0f857974c0ce61c927e312a3898bd39d39032d955a80ed4c37ac35a3ba6b7dd.png",
        "featured": true
      },
      {
        "title": "Rubber Duck Debugging For JavaScript Developers",
        "url": "http://thecodebarbarian.com/rubber-duck-debugging-for-javascript-developers",
        "description": "Rubber duck debugging is a helpful debugging technique that asks you to explain the problem in detail, and often helps you find the fix faster. Here's what you need to know.",
        "imageUrl": "./b2fe77a1f5291b769b7b59c43862db86fad59e3a2c561fba8e8fab0c6cee36cf.jpg",
        "featured": false
      },
      {
        "title": "Generative Artistry",
        "url": "https://generativeartistry.com/",
        "description": "A fantastic website full of interactive tutorial to learn the basics of generative art. It also comes with a podcast! 😱",
        "imageUrl": "./cefd70be632bffcf6a750b25fb1dbc84fb341aacbe09dcbe1ca8e3759f9575e2.png",
        "featured": false
      },
      {
        "title": "Improving HTTP with structured header fields",
        "url": "https://fastly.com/blog/improve-http-structured-headers",
        "description": "The HTTP community has been busy modernizing the web's protocol over the last decade, with multiple revisions of the core specification, a number of extensions, HTTP/2, and now HTTP/3. Unfortunately, the way we define and use HTTP header fields hasn't changed much since the beginning, with underspec…",
        "imageUrl": "./7fd1eb64a9c9208b8a333ce3426610719afcff79595af50a9316b07721c928fd.jpg",
        "featured": false
      },
      {
        "title": "Tooling.Report",
        "url": "https://tooling.report/",
        "description": "A quick and easy way to figure out what the best tool for your next project is, if it’s worth your time to migrate from one tool to another and how to adopt a best practice into your existing code base. Brought to you by web.dev",
        "imageUrl": "./3772fd62d7188bbac12fb66d6dadde6e16f86465e8df884c98df366c7f7074a7.jpg",
        "featured": false
      },
      {
        "title": "Textures.js",
        "url": "https://riccardoscalco.it/textures",
        "description": "A JavaScript Library for creating beautiful SVG patterns. The kind of tool that can give a unique touch to your next web site design :)",
        "imageUrl": "./c754e29f9e83086639111ff698fdb3b1a352096eb894c854e7c5b59f88b180d0.png",
        "featured": false
      },
      {
        "title": "Quick Tips for High Contrast Mode",
        "url": "https://sarahmhigley.com/writing/whcm-quick-tips",
        "description": "A short article, as a contrast. Just a few simple tips to improve Windows High Contrast Mode experience.",
        "imageUrl": "./1751c5e0c5d8998b7fa51ee7cb102427a548d32c09da1606e96c5a3812017c33.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 168,
    "title": "Let them paste passwords",
    "slug": "2020-06-29-168-let-them-paste-passwords",
    "date": "2020-06-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #26, 2020",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Let them paste passwords",
        "url": "https://www.ncsc.gov.uk/blog-post/let-them-paste-passwords",
        "description": "Allow your website to accept pasted passwords - it makes your site more secure, not less.",
        "imageUrl": "./24edb423c57a618d9986ee0293023736362253a99870ac0fe517128f68f06293.jpg",
        "featured": true
      },
      {
        "title": "How To Code in Go (eBook)",
        "url": "https://digitalocean.com/community/books/how-to-code-in-go-ebook",
        "description": "This book is designed to introduce you to writing programs with the Go programming language. You'll learn how to write useful tools and applications that can run on remote servers, or local Windows, macOS, and Linux systems for development.",
        "imageUrl": "./9b337e51945b03473b7b696aa9001191b01c66ac2a3e13fc2301dc3f69547fa2.jpg",
        "featured": false
      },
      {
        "title": "An Overview of Scroll Technologies",
        "url": "https://css-tricks.com/an-overview-of-scroll-technologies",
        "description": "Scroll-related animations have been used on the web for years. In recent years, they’ve started to become even more common. This article analyzes the different techniques to create custom scrolling effects on the web!",
        "imageUrl": "./c816d95db479bde140959736a7575fb43aef2c67f45c0ffb6adb0dcaab8a2c54.png",
        "featured": false
      },
      {
        "title": "SWR: React Hooks For Remote Data Fetching",
        "url": "https://www.smashingmagazine.com/2020/06/introduction-swr-react-hooks-remote-data-fetching/",
        "description": "In this article, we’ll be looking at a new way of retrieving data in React Apps named SWR. This is a set of hooks for remote data fetching that makes things easier, such as caching, pagination, and so on. We’ll also be building a Pokedex App from scratch and using SWR features to get data and paginate it.",
        "imageUrl": "./8fea0412963a4528615b4c085fc3c43fe17b5b1028bf6a37c7b5f2d00e377d14.png",
        "featured": false
      },
      {
        "title": "Authentication in Golang with JWTs",
        "url": "https://auth0.com/blog/authentication-in-golang",
        "description": "Practice Go and React by building and authenticating a RESTful API with JSON Web Tokens (JWTs).",
        "imageUrl": "./d3d1c4713e8676ff0e69218f53cd4e543d1e5b9b4a90000944e7f936e80abce0.jpg",
        "featured": false
      },
      {
        "title": "From Gut to Plan: The Thoughtful Execution Framework",
        "url": "https://spotify.design/article/from-gut-to-plan-the-thoughtful-execution-framework",
        "description": "Annina Koskinen presents a framework she's developed to help her teams at Spotify reach their goals and ship with impact.",
        "imageUrl": "./7bf4de496b8f8b228c05c9be132e4c86d63eb5f74ac454933309bbbd0885a2ba.jpg",
        "featured": false
      },
      {
        "title": "Node.js v14: What's New?",
        "url": "https://auth0.com/blog/nodejs-v-14-whats-new",
        "description": "Let's dive into the updates that Node.js version 14 gives us!",
        "imageUrl": "./406e8388862efd67156cd2794cacbd1969d0bbfc0332c8af350cd6fab064bcd0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 167,
    "title": "Cracking JWTs",
    "slug": "2020-06-22-167-cracking-jwts",
    "date": "2020-06-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #25, 2020",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Cracking JWTs",
        "url": "https://github.com/ticarpi/jwt_tool",
        "description": "**ticarpi/jwt_tool** is a toolkit for testing, tweaking and cracking JSON Web Tokens. If you like JWT tokens, you can definitely learn a lot by just looking at the guides in this repository!",
        "imageUrl": "./6570ac88d45a146d1a073583a0945397cff0cf3b6405b2af83426fe63819cdc1.png",
        "featured": true
      },
      {
        "title": "Compiler Compiler",
        "url": "https://hacks.mozilla.org/2020/06/compiler-compiler-working-on-a-javascript-engine/",
        "description": "\"Compiler Compiler\" is an incredible video series about building a JavaScript engine. Created by a Mozilla engineer and based on SpiderMonkey, Mozilla's JavaScript engine.",
        "imageUrl": "./d1eb70a358a7843998088d0aa42be6a299970e6173ef90e37a2bc75cbf45b4d8.png",
        "featured": false
      },
      {
        "title": "The Return of the 90s Web",
        "url": "https://mxb.dev/blog/the-return-of-the-90s-web",
        "description": "Are we ready to revisit some of the ideas of the early web again? There are trends that suggest we might just have come full circle - and I like it.",
        "imageUrl": "./d19a292202e48fafa966002ff362de054cf5b83596207dd8d847f10a7e3abe5b.jpg",
        "featured": false
      },
      {
        "title": "How to use React Testing Library",
        "url": "https://robinwieruch.de/react-testing-library",
        "description": "Learn how to use React Testing Library in this tutorial. You will learn how to test your React components step by step with unit and integration tests.",
        "imageUrl": "./2c6cc19053828f7a0a3814332e1916f7e3be3cfdc02bcb48f428ac846d5ace39.jpg",
        "featured": false
      },
      {
        "title": "How one word in PostgreSQL unlocked a 9x performance improvement",
        "url": "https://jlongster.com/how-one-word-postgresql-performance",
        "description": "At the very heart of Actual is a custom syncing engine. I'd like to talk about a PostgreSQL feature that enabled a 9-10x performance improvement.",
        "imageUrl": "./eeefec8ad0aef5d1f73956b2c1b70fa144abb89b29bdc7bb56736854177b6b21.jpg",
        "featured": false
      },
      {
        "title": "Online text to diagram tools",
        "url": "https://smusamashah.github.io/text-to-diagram",
        "description": "A long list of text to diagram tools. Next time you will have to generate a diagram, you should try one of these tools. What are the advantages? Well, just to name a few, you can keep your diagrams on git as text and you will always have a consistent graphic!",
        "imageUrl": "./59c1513ce874cdaa346cfb5e107526449ddd716d99b91846b64a182a0af8d320.png",
        "featured": false
      },
      {
        "title": "Five common mistakes writing react components (with hooks) in 2020",
        "url": "https://lorenzweiss.de/common_mistakes_react_hooks",
        "description": "The most common mistakes I found writing react components, why they are mistakes and how to avoid or fix them.",
        "imageUrl": "./122424124046ec0dc3703e9f3be8af2f784e8acf3863d1c2393baa1c2ba2bd6e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2: From Theory To Practice",
      "author": "Asim Hussain",
      "description": "In this quickstart you'll get a 50,000 foot view of the major features of Angular 2 including: Typescript & ES6 Javascript, Components & Binding, Directives, Dependancy Injection & Services, Angular Modules & Bootstrapping your Angular application., SPAs & Routing, Angular CLI, Forms, Reactive Programming with RXJs, HTTP and finally Unit Testing.",
      "coverImageUrl": "./42ae68e2ba03e04a5972b7f48fcbb414c89e74b4747aae1715503d876e99f3df.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01N9S0CZN/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01N9S0CZN/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 166,
    "title": "150+ though JavaScript questions 💪",
    "slug": "2020-06-15-166-150-though-javascript-questions",
    "date": "2020-06-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #24, 2020",
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "150+ though JavaScript questions 💪",
        "url": "https://github.com/lydiahallie/javascript-questions",
        "description": "If you consider yourself a JavaScript guru, this is a great resource to test your knowledge. If you are learning JavaScript, well, this is an even better resource as it will guide you through some classic misconceptions about many important JavaScript concepts.",
        "imageUrl": "./85b1c8ab36d6a7f4fa3cf237ab42fa0fcd8cc6c9577b54bc6292dc041305a927.png",
        "featured": true
      },
      {
        "title": "Animate.css",
        "url": "https://animate.style/",
        "description": "Animate.css is a library of ready-to-use, cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and attention-guiding hints.",
        "imageUrl": "./a709be851e88151f71b9dbd51a7b8e0c69794914e5be0276c10ff9957748feef.png",
        "featured": false
      },
      {
        "title": "CSS :is() and :where()",
        "url": "https://webplatform.news/issues/2020-06-04",
        "description": "CSS :is() and :where() pseudo-classes are now supported in the preview versions of both Safari (Tech Preview 106) and Firefox (version 78). Do you know what those new CSS pseudo-classes can be useful for?",
        "imageUrl": "./ceb9332fb3321a82b76764a6a724b4044adacdaaff81701865ca1def21e9e1a9.jpg",
        "featured": false
      },
      {
        "title": "Let's make a Teeny Tiny compiler",
        "url": "http://web.eecs.utk.edu/~azh/blog/teenytinycompiler1.html",
        "description": "A fantastic tutorial that teaches you how to create a compiler for a BASIC-like language using only 500 lines of Python!",
        "imageUrl": "./de722b9926d76d90e70f6704bf3be98eb66e9414715867b99ea0925b7ffe88bc.jpg",
        "featured": false
      },
      {
        "title": "Grid for layout, Flexbox for components",
        "url": "http://ishadeed.com/article/grid-layout-flexbox-components",
        "description": "Do you know when it's best to use CSS Grid vs Flexbox? It's not an easy answer and, depending on who you ask, you will probably get very different answers. With this wonderfully illustrated article, you can get an interesting perspective from A. Shadeed!",
        "imageUrl": "./a97b41227663b792066d32bdd52e3c10afaaf7b8ba6ccdd79b571bc89b8f9fbc.jpg",
        "featured": false
      },
      {
        "title": "TitleRun",
        "url": "https://titlerun.xyz/",
        "description": "TitleRun is probably one of the simplest, yet most original games we have seen on the web in the last few years! Definitely worth giving it a go and checking out its source code!",
        "imageUrl": "./fa456862f8306b1ad10ae5356b18c7fc152dc142073f777b15fdcbb99382dfa5.png",
        "featured": false
      },
      {
        "title": "Rust, Zero To Production",
        "url": "https://lpalmieri.com/posts/2020-06-06-zero-to-production-1-setup-toolchain-ides-ci",
        "description": "If you have been looking for resources to learn Rust, this series of articles (from which the author is creating a book!) is a great place to start. In the first issue, you will learn about the Rust ecosystem, including Setup - Toolchain, IDEs, CI.",
        "imageUrl": "./eeefec8ad0aef5d1f73956b2c1b70fa144abb89b29bdc7bb56736854177b6b21.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 165,
    "title": "Tools for better thinking",
    "slug": "2020-06-08-165-tools-for-better-thinking",
    "date": "2020-06-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #23, 2020",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "Tools for better thinking",
        "url": "https://untools.co/",
        "description": "Collection of thinking tools and frameworks to help you solve problems, make decisions and understand systems.",
        "imageUrl": "./41743d8681a1cbe3fa990ccd62d7fc432a3229995c94bdeda07e8b0e1144ec38.png",
        "featured": true
      },
      {
        "title": "RoughNotation",
        "url": "https://roughnotation.com/",
        "description": "A small JavaScript library to create and animate hand-drawn annotations on a web page",
        "imageUrl": "./33910d369882a97c8da0927ae77b7354de1fdecc13945d1b37266dd550484140.jpg",
        "featured": false
      },
      {
        "title": "Modern Touch-Friendly Design",
        "url": "https://addyosmani.com/blog/touch-friendly-design",
        "description": "Touch-friendly guidelines for mobile apps and websites: Place primary content and actions at the center of the screen, Place secondary actions and tabs along the edges, and much more!",
        "imageUrl": "./2f0e5d8ad13c2b2cdc9abf78d193d49718f0f006291fad9860cf7b0be1efc74f.jpg",
        "featured": false
      },
      {
        "title": "Making Vue 3",
        "url": "https://increment.com/frontend/making-vue-3",
        "description": "Evan You, creator of Vue, describes the new process, the challenges and the lessons learned from rewriting the next major version of Vue.",
        "imageUrl": "./0421401bce5881aca50d5ea78d6088103abb3d0942f5e895a36a3ce18ce88e22.jpg",
        "featured": false
      },
      {
        "title": "10 excellent font pairing tools for designers",
        "url": "https://dribbble.com/stories/2020/05/27/font-pairing-tools-for-designers",
        "description": "On the hunt for the perfect font combination? Here you will find some of the best font pairing tools and generators for graphic designers and web designers. Check them out and bookmark your favourites!",
        "imageUrl": "./0c2115fefdb14ea70372f5fb7b4cbd2b842d4503eb83e87c2d73690beb547069.jpg",
        "featured": false
      },
      {
        "title": "The beauty of Unix pipelines",
        "url": "https://prithu.xyz/posts/unix-pipeline",
        "description": "Even if they have been around for a while, Unix pipes are still an incredible example of the effectiveness of building software that is simple and extensible and that communicates through simple interfaces, like a plain text stream. With this article you can learn more about Unix pipes and why they are still extremely useful still today!",
        "imageUrl": "./8faccc1d842937446df210ff440c88ac065d24003825179a892c35c917a51cc4.png",
        "featured": false
      },
      {
        "title": "Here’s what I didn’t know about “content”",
        "url": "https://matuzo.at/blog/heres-what-i-didnt-know-about-content",
        "description": "In part 3 of this series, a number of very interesting details and use cases for the `content` CSS property.",
        "imageUrl": "./e009658b2131de85e6349c1abd3e9e6722f16d469048a937b204f86d36bd131b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 164,
    "title": "Why developers hate PHP",
    "slug": "2020-06-01-164-why-developers-hate-php",
    "date": "2020-06-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #22, 2020",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "Why developers hate PHP",
        "url": "https://jesuisundev.com/en/why-developers-hate-php",
        "description": "PHP is the most widely used language in the world for websites. It is also the most hated. And it's pure hate.But why do so many developers hate it so much?",
        "imageUrl": "./e3c59e0dcbdcd1be4b3005ffb80b51fd7499028c64b708db2423567ad2f485a1.jpg",
        "featured": true
      },
      {
        "title": "The Fastest Google Fonts",
        "url": "https://csswizardry.com/2020/05/the-fastest-google-fonts",
        "description": "Google Fonts is fast. Now it can be faster, much faster thanks to an interesting optimization technique proposed by Harry Roberts a.k.a CSSWizardry!",
        "imageUrl": "./816735d561ac3396d9bf0976d1820f1c644bb5f24d170d6e521adfc489c9724b.jpg",
        "featured": false
      },
      {
        "title": "The Third Age of JavaScript",
        "url": "https://swyx.io/writing/js-third-age",
        "description": "A bunch of things are moving in JavaScript - it is quite feasible that the JS of 10 years from now will look totally unrecognizable",
        "imageUrl": "./6658249745f5ea8d54d5427b6a9980fb7c5294c9fa444f12e71a467cbd88cfdb.jpg",
        "featured": false
      },
      {
        "title": "From Containers to Kubernetes with Node.js (eBook)",
        "url": "https://digitalocean.com/community/books/from-containers-to-kubernetes-with-node-js-ebook",
        "description": "A free e-book by Digital Ocean designed to introduce you to using containers and Kubernetes for full-stack development. You'll use Node.js to build a sample application and then containerize it. Finally you will be able to run your application and a database in Kubernetes!",
        "imageUrl": "./1a8996d09be6af036b3a9fb23d0069a912a65577bd47d099e8965c85e4600d7d.jpg",
        "featured": false
      },
      {
        "title": "React & Redux Tutorial—Build a Hacker News Clone",
        "url": "https://gitconnected.com/courses/learn-react-redux-tutorial-build-a-hacker-news-clone",
        "description": "Learn React by building a production React project using Redux and Styled Components. Deploy the app using GitHub pages.",
        "imageUrl": "./ce657dc62d5a67316bc0647f14687ddc76dc441738bdf248bc04611e1d331ce4.jpg",
        "featured": false
      },
      {
        "title": "Form design: multiple inputs versus one input",
        "url": "https://adamsilver.io/articles/form-design-multiple-inputs-versus-one-input",
        "description": "While using multiple inputs can be helpful, more often than not they’re problematic and completely unnecessary. Find out why and so much more in this article.",
        "imageUrl": "./250cbd6c96b7796cf4d99ad51b504fc73735ac1e1ee0cad45abcf21664dbd125.jpg",
        "featured": false
      },
      {
        "title": "Getting Started with Rust by Building a Tiny Markdown Compiler",
        "url": "https://jesselawson.org/rust/getting-started-with-rust-by-building-a-tiny-markdown-compiler",
        "description": "Dive head-first into Rust from scratch, learning the basics by building a markdown compiler.",
        "imageUrl": "./dac813658f4b4716e37493bf187e60021eba660fa239e870f7d26f501ad17360.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 163,
    "title": "Recoil - State management for React",
    "slug": "2020-05-25-163-recoil-state-management-for-react",
    "date": "2020-05-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #21, 2020",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "Recoil - State management for React",
        "url": "https://recoiljs.org/",
        "description": "Recoil is new state management library for React. Inspired by concepts popularized by MobX it is set to become a powerful yet simple alternative to Redux.",
        "imageUrl": "./0e5b73994494354d7bd46716ad293dcdc12e6cfad6bfe5f01a2acd249ca43409.png",
        "featured": true
      },
      {
        "title": "ePub Files with Node.js",
        "url": "http://thecodebarbarian.com/creating-epub-files-with-node-js",
        "description": "ePub is a common format for eBook readers. Here's how you can use the epub-gen npm module to create an ePub from an HTML file.",
        "imageUrl": "./88e1ff7e3c0e9c3e1f3589b4ed8424d4c43000dfcea2750727cc286162ae277e.png",
        "featured": false
      },
      {
        "title": "`lh` and `rlh` units in CSS",
        "url": "https://css-tricks.com/lh-and-rlh-units",
        "description": "There's some new units I was totally unaware of from the Level 4 spec for CSS values! The lh unit is \"equal to the computed value of line-height\" and rlh is the same only of the root element.",
        "imageUrl": "./ba3b20ffc0b974663ccee9dc89aad0e63200e160bd68ba53d7e25f536b15de11.jpg",
        "featured": false
      },
      {
        "title": "Micro-Typography: How To Space And Kern Symbols",
        "url": "https://smashingmagazine.com/2020/05/micro-typography-space-kern-punctuation-marks-symbols",
        "description": "For hundreds of years, we have been using white space in typography. Today, in 2020, how do we add spacing to punctuation marks and other symbols, and how do we adjust the space on the left and right side in an easy and consistent way? It is actually not as easy and quick as it should be.",
        "imageUrl": "./ec83614ec53541e72e1bc787aef152818043af4af33bd4b8431788105d555b67.jpg",
        "featured": false
      },
      {
        "title": "NectarJS - Compile your Javascript app",
        "url": "https://nectarjs.com/",
        "description": "NectarJS is a new JavaScript compiler that aims to produce No-VM, No-Bytecode, No-Garbage-Collector binaries. The project is still at its infancy but so far it seems very promising.",
        "imageUrl": "./d11c0ef036ce143bda17a090049678aba3c514163e759bdfa01031f9c5c296e2.png",
        "featured": false
      },
      {
        "title": "new.css",
        "url": "https://newcss.net/",
        "description": "A classless CSS framework to write modern websites using only HTML. Simply beautiful!",
        "imageUrl": "./7c0201723227f866836700111f30f3891a20a83a0adae58caae15223167c7882.jpg",
        "featured": false
      },
      {
        "title": "Fast and reliable cross-browser testing with Playwright",
        "url": "https://medium.com/@arjunattam/fast-and-reliable-cross-browser-testing-with-playwright-155c0e8a821f",
        "description": "Playwright is an interesting alternative to Google's Puppeteer library that, other than Google Chrome, allows you to write browser automation seamlessly also for Firefox and Safari.",
        "imageUrl": "./289449ba60155c1616b2270de8e2921b892bbc826a3d3d1084ea5d6a756f3869.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 162,
    "title": "JavaScript one-liners",
    "slug": "2020-05-18-162-javascript-one-liners",
    "date": "2020-05-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #20, 2020",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "JavaScript one-liners",
        "url": "https://1loc.dev/",
        "description": "An incredible collection of JavaScript utilities made up by a single line of code! Do you need to flatten an array, get a random item from it or split it into chunks? This collection is here to help!",
        "imageUrl": "./28c9c48f21aac5db7b450fd9427dbe274641f666b6f4e4bd418be3e6f63f05e3.jpg",
        "featured": true
      },
      {
        "title": "ES2015+ cheatsheet",
        "url": "https://devhints.io/es6",
        "description": "One-page guide to ES2015+: usage, examples, and more. A quick overview of new JavaScript features in ES2015, ES2016, ES2017, ES2018 and beyond.",
        "imageUrl": "./f73d61e53b909c1630a83614c868d9da6bd695d5108bd246dcc06d0a4fc3fb6b.jpg",
        "featured": false
      },
      {
        "title": "Deno 1.0: what do you need to know",
        "url": "https://blog.logrocket.com/deno-1-0-what-you-need-to-know",
        "description": "Whether you think that Deno is a good idea or not, this article will help you to understand what is the idea behind this project and how it is different from Node.js.",
        "imageUrl": "./51285504a4ef8ca310bf2dfbf5d939c31badc710adf52413467d107a68d31b85.jpg",
        "featured": false
      },
      {
        "title": "Create diagrams with python code",
        "url": "https://diagrams.mingrammer.com/",
        "description": "**Diagram**, is a very expressive Python library that allows you to define diagrams by writing Python code. The idea behind this library is actually easier to explain with a code snippet than with words. Go check out some of the examples!",
        "imageUrl": "./3a548f19e0f4cd140e6de765d9d9187989a83a5ee505f740b63c68b869eca96b.jpg",
        "featured": false
      },
      {
        "title": "Avoiding Memory Leaks in NodeJS",
        "url": "https://blog.appsignal.com/2020/05/06/avoiding-memory-leaks-in-nodejs-best-practices-for-performance.html",
        "description": "An interesting article that will help you to discover what memory leaks are and how to avoid them in your NodeJS application.",
        "imageUrl": "./d2179b4e37b2557abb465fde29d2f1e48a68bcd26c274208bf48cddb218c8088.jpg",
        "featured": false
      },
      {
        "title": "What the heck is React Fast Refresh",
        "url": "https://mariosfakiolas.com/blog/what-the-heck-is-react-fast-refresh",
        "description": "**React Fast Refresh** is the successor of **React Hot Loader**. It was initially released for React Native and soon it will be included in Create React App as an experimental feature.",
        "imageUrl": "./08dd25e26a39135764af9ed23bd552613c4bd25f9545b596c8f1348e52337f9a.jpg",
        "featured": false
      },
      {
        "title": "Wonder Blocks: the Khan Academy’s Design System",
        "url": "https://designsystems.com/about-wonder-blocks-khan-academys-design-system-and-the-story-behind-it",
        "description": "An incredible case study from Khan Academy (a not-for-profit with a mission to provide a free, world-class education) illustrating how they came up with their new design system and what kind of unique challenges they had to face with this project.",
        "imageUrl": "./e4cf2f97428ead0240e27b2324e9d73837cb8610b0a0a6bc43c8506cc2672f9d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 161,
    "title": "Web Vitals: metrics for a healthy site",
    "slug": "2020-05-11-161-web-vitals-metrics-for-a-healthy-site",
    "date": "2020-05-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #19, 2020",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "Web Vitals: essential metrics for a healthy site",
        "url": "https://blog.chromium.org/2020/05/introducing-web-vitals-essential-metrics.html",
        "description": "Web Vitals is a new initiative by Google to help website developers to understand and track some of the most important metrics and quality signals that Google believes to be essential to delivering a great user experience on the web.",
        "imageUrl": "./5ea3c0224df230a514b259b4a1fc9f1019be4e690fb643cd7fc343873f1adc5c.png",
        "featured": true
      },
      {
        "title": "Spacing in CSS",
        "url": "http://ishadeed.com/article/spacing-in-css",
        "description": "If two or more elements are close, then the user will assume that they somehow belong to each other. Spacing is a very important element in web design and this article will guide you through some interesting approaches to manage layouts and spacing with CSS.",
        "imageUrl": "./fb97fd1b43f0893498577396a523e5f86341f65d5df4f7101d2a496399e2761f.jpg",
        "featured": false
      },
      {
        "title": "When does React re-render components?",
        "url": "https://felixgerschau.com/react-rerender-components",
        "description": "If you are building applications using React, understanding the component lifecycle and the re-rendering mechanism is a fundamental skill to have. In this article, you will find rendering and re-rendering explained and how to optimize rendering performance.",
        "imageUrl": "./c93a3d0bcff194e4f0d763bdcb2173252c1ed0d097184e9b4bc36b3ad8fde43d.jpg",
        "featured": false
      },
      {
        "title": "Complexity Has to Live Somewhere",
        "url": "https://ferd.ca/complexity-has-to-live-somewhere.html",
        "description": "A very interesting article about Software Complexity. We often try to get rid of the complexity, control it, and seek simplicity. This article proposes a new mindset: \"*Complexity has to live somewhere: embrace it*\".",
        "imageUrl": "./3af172b252e454e24b6c33ee5c84b2efe2ef3bbacd06cf12b74345ddb1018616.jpg",
        "featured": false
      },
      {
        "title": "React interview questions",
        "url": "https://github.com/sudheerj/reactjs-interview-questions",
        "description": "A wonderful repository with almost 500 different common questions and answers about React. The ideal resource if you are trying to understand React better or if you are preparing for an interview!",
        "imageUrl": "./c8dd404a7cf838a2b4beeb1ad0840c8bc12c2db48610507edde0a33f8520f673.png",
        "featured": false
      },
      {
        "title": "Color Theme Switcher",
        "url": "https://mxb.dev/blog/color-theme-switcher",
        "description": "Let users customize your website with their favorite color scheme! Your site has a dark mode? That's cute. Mine has ten different themes now, and they're all named after Mario Kart race tracks.",
        "imageUrl": "./48e1d65a5f00ef152dcbb6b097d40a078db79ad67e480833c22239070b144121.jpg",
        "featured": false
      },
      {
        "title": "Are you using SVG favicons yet?",
        "url": "https://medium.com/swlh/are-you-using-svg-favicons-yet-a-guide-for-modern-browsers-836a6aace3df",
        "description": "You probably don’t need all these icon links and sizes to manage your website favicon, a plain SVG image would do just fine! You are probably already using SVGs for your website icons and images, so why not use it also for a favicon? In this article, you will find out that this technique comes with some great benefits, for instance, support for DARK MODE! 😎",
        "imageUrl": "./4e3df45c0558f2b6e4833bb32145574d35da90d3160ca26d9a399025679af272.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 160,
    "title": "What is the `toJSON()` Function in JavaScript?",
    "slug": "2020-05-04-160-what-is-the-tojson-function-in-javascript",
    "date": "2020-05-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #18, 2020",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "What is the `toJSON()` Function in JavaScript?",
        "url": "http://thecodebarbarian.com/what-is-the-tojson-function-in-javascript",
        "description": "The `toJSON()` function is a handy hook that tells `JSON.stringify()` how to represent a given object in JSON. Here's what you need to know.",
        "imageUrl": "./0741addeffdb52ab5e664f2eeb8e48243fd328ed72e448d82a8d847e42952773.jpg",
        "featured": true
      },
      {
        "title": "A visual guide to React Mental models",
        "url": "https://obedparla.com/code/a-visual-guide-to-react-mental-models",
        "description": "React helps us build interactive UIs. It also encourages us to write code in a certain way, guiding us to create apps that are simpler to navigate and understand. In order to become proficient with React, you have to have a good mental model of the library and this article can guide you to build the right one!",
        "imageUrl": "./4bc4e13d080dcc25b8f74696c60be0283c9da6e181f16291f2b6ba3a0e0d08db.jpg",
        "featured": false
      },
      {
        "title": "Rust and Node.js: A match made in heaven",
        "url": "https://blog.logrocket.com/rust-and-node-js-a-match-made-in-heaven",
        "description": "Worker threads are great, but they're not available in all supported versions of Node. Fortunately, you can use Rust to build a native add-on for Node.js.",
        "imageUrl": "./0f98b66a9b30b55ba55d30e7c87bb74ce49535f3443365e3920939e3c1a9b81b.jpg",
        "featured": false
      },
      {
        "title": "Middy 1.0 is here",
        "url": "https://loige.co/middy-1-is-here",
        "description": "Middy’s aim is to make writing serverless functions (hosted on AWS Lambda) easier by providing a familiar middleware abstraction to Node developers. Version 1.0.0 is finally here and this article illustrates the main changes and why you might be interested in this framework.",
        "imageUrl": "./d65499ad91612554fc53b305fa8ce2040228680fc4fe279c7b724f611b0621d8.jpg",
        "featured": false
      },
      {
        "title": "Building a Playful WebGL Experience",
        "url": "https://medium.com/@Jam3/how-we-built-a-playful-webgl-experience-for-100-fwa-wins-12262265548d",
        "description": "An astonishing demonstration of what you can achieve today with web technologies. A case study worth checking out if you are into 3D graphics and want to learn more about WebGL.",
        "imageUrl": "./9587c39b8dc025551318a5994992cdd07aade3e2c8a7427abb2202da4cd77e18.jpg",
        "featured": false
      },
      {
        "title": "Deploy web apps (+NGINX) to ECS with Docker",
        "url": "https://medium.com/@stefanofrancavilla/deploy-web-apps-nginx-to-ecs-with-docker-580c6af827e8",
        "description": "An interesting case study showing how to dockerize web apps (in this case a Ruby on Rails app) and how to run them in AWS Elastic Container Service. A great resource if you still struggling to adopt Docker and infrastructure as code in production.",
        "imageUrl": "./2a45bb47123842454b6bde71df2eb710e29e43d09d32dc824b1765c84dd0dd67.jpg",
        "featured": false
      },
      {
        "title": "Free Interactive tutorial on Svelte",
        "url": "https://scrimba.com/p/pG6X6UG/cPkPvvCD",
        "description": "The folks at Scrimba are at it again with another fantastic FREE resource. This time an incredible interactive guide to learn the basis of Svelte, the new frontend framework that is taking the web by the storm!",
        "imageUrl": "./6206b6da3675427a776ce6ee4a05c8e55df8e46f3a7205128568f920cd019543.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 159,
    "title": "Rewriting Messenger to be faster, smaller, and simpler",
    "slug": "2020-04-27-159-rewriting-messenger-to-be-faster-smaller-and-simpler",
    "date": "2020-04-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #17, 2020",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "Rewriting Messenger to be faster, smaller, and simpler",
        "url": "https://engineering.fb.com/data-infrastructure/messenger",
        "description": "To build this new version of Messenger, we needed to rebuild the architecture from the ground up and rewrite the entire codebase.",
        "imageUrl": "./8e6adbc30bf13edd521bd814b110c8729df00b5ad838f613d1dfb43dde4a995f.jpg",
        "featured": true
      },
      {
        "title": "Things I Wished More Developers Knew About Databases",
        "url": "https://medium.com/@rakyll/things-i-wished-more-developers-knew-about-databases-2d0178464f78",
        "description": "A large majority of computer systems have some state and are likely to depend on a storage system. But do you really know databases? Here's a collection of things you \"must\" know about databases!",
        "imageUrl": "./e9565af663339d88d6feb74f21c418023467fb4696ec8bfeff2f5da886797cf4.jpg",
        "featured": false
      },
      {
        "title": "Writing Python inside your Rust code",
        "url": "https://blog.m-ou.se/writing-python-inside-rust-1",
        "description": "inline-python is an incredible Rust crate which allows you to easily mix some Python into your Rust code using a python!{ .. } macro. This series of articles goes through the process of developing this crate from scratch.",
        "imageUrl": "./c56f16fdea775568720f4c19b2ffeec5563a9fd6bc34bd3888cceae252f287ac.jpg",
        "featured": false
      },
      {
        "title": "Writing an Emulator in JavaScript",
        "url": "https://taniarascia.com/writing-an-emulator-in-javascript-chip8",
        "description": "A wonderful article that shows how emulators work and that will teach you to actually write an emulator using JavaScript. It's great fun, trust us!",
        "imageUrl": "./0c4bb64c1ccaaeb4ef414e652bc32f003d1d1bac82181ee90354103601109d8f.jpg",
        "featured": false
      },
      {
        "title": "The Ten Rules for Data Modeling with DynamoDB",
        "url": "https://trek10.com/blog/the-ten-rules-for-data-modeling-with-dynamodb",
        "description": "DynamoDB is one of the most powerful, fastest-growing databases in the world. Let's shed some light on using it right.",
        "imageUrl": "./8263332e392b94331abbe16f98b38bd1e505a37689c815dfd84da54ef83440b9.jpg",
        "featured": false
      },
      {
        "title": "The OAuth Bible",
        "url": "https://github.com/Kong/mashape-oauth/blob/master/FLOWS.md",
        "description": "A very complete guide on the various OAuth versions out there and their authentication flow. A super interesting guide if you like security or if you are currently implementing one of these authentication flows in your application.",
        "imageUrl": "./3ecf9be78b5b1558d0b493a79e3d1d036355344f33c728981cfad1f2b84cdc16.png",
        "featured": false
      },
      {
        "title": "Image Techniques On The Web",
        "url": "http://ishadeed.com/article/image-techniques",
        "description": "Images are still one of the heaviest assets on every web page. Optimizing images can yield incredible results in terms of page speed and user experience. In this article you will discover several techniques to get the best out of images on the web!",
        "imageUrl": "./66ff8125f3df6e046dcd49514b2549d9e6a5ce98656b923e7f45efce7999f491.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 158,
    "title": "Working With PDFs in Node.js Using pdf-lib",
    "slug": "2020-04-20-158-working-with-pdfs-in-node-js-using-pdf-lib",
    "date": "2020-04-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #16, 2020",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Working With PDFs in Node.js Using pdf-lib",
        "url": "http://thecodebarbarian.com/working-with-pdfs-in-node-js",
        "description": "The pdf-lib npm module makes it easy to create and modify PDFs, including combining two PDFs and adding page numbers. In this article, you will find some interesting examples!",
        "imageUrl": "./63e10b6c6838528763950d23025ebcb5370b0757350be422730088b2c928c220.jpg",
        "featured": true
      },
      {
        "title": "Attack matrix for Kubernetes",
        "url": "https://microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes",
        "description": "While Kubernetes has many advantages, it also brings new security challenges. If you are considering Kubernetes, this article will help you to adjust your security perspective towards it!",
        "imageUrl": "./12e91ae7c1fa263b2e2289a3653df4751e92b1eab1654a25fb54922651dee412.jpg",
        "featured": false
      },
      {
        "title": "Building dark mode on Stack Overflow",
        "url": "https://stackoverflow.blog/2020/03/31/building-dark-mode-on-stack-overflow",
        "description": "A very detailed article that tells how StackOverflow designed their \"Dark Mode\" feature. A great use case if you are thinking to build a similar feature.",
        "imageUrl": "./c80b8eb8786dfc026bd7cdba64f43155ddf3aeec0cb1f0655868c87b565bbde9.jpg",
        "featured": false
      },
      {
        "title": "MVP.css - Minimalist stylesheet for HTML elements",
        "url": "https://andybrewer.github.io/mvp",
        "description": "MVP.css - No classes, no framework. Just semantic HTML and you're done. Really a great tool for simple and minimalistic websites!",
        "imageUrl": "./2af974970a46773b0871d3e62803ff8430bf32bf06f98cddeafd2dba7b77668d.jpg",
        "featured": false
      },
      {
        "title": "A Static Future",
        "url": "https://joshwcomeau.com/gatsby/a-static-future",
        "description": "What are static websites and why are they taking over the web (again...)? In this article, you will learn what is a static website and what are the advantages of building one using Gatsby.js.",
        "imageUrl": "./84f5b62e6e34695e70ffa4f37da41b37530177d73540046ecf7d7000cc69b2a9.jpg",
        "featured": false
      },
      {
        "title": "Rendering charts with OffscreenCanvas",
        "url": "https://blog.scottlogic.com/2020/03/19/offscreen-canvas.html",
        "description": "Rendering charts can be a very intensive operation for the browser, especially multiple charting widgets in the context of a wider application. OffscreenCanvas is growing in browser support and allows canvas rendering to be delegated to a WebWorker.",
        "imageUrl": "./c1da1f726ecde2f6744f4ba68589d155f3dfaba8b6d899472cc022a33318c2a9.jpg",
        "featured": false
      },
      {
        "title": "CSS Variables for React Devs",
        "url": "https://joshwcomeau.com/css/css-variables-for-react-devs",
        "description": "Another great article by Josh W. Comeau, giving us an interesting perspective on how we could use CSS variables as a simple alternative to CSS-in-JS.",
        "imageUrl": "./59c54428fe302a77698c13b697ad5fcf29615695787a8bef9628fce3e0969559.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 157,
    "title": "Web Skills",
    "slug": "2020-04-13-157-web-skills",
    "date": "2020-04-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #15, 2020",
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "Web Skills",
        "url": "https://andreasbm.github.io/web-skills",
        "description": "A visual overview of useful skills to learn as a web developer",
        "imageUrl": "./08c6073b9568628d6000910bdfbc3feeaa14099d4d4b60c67c1837f5d6955fd3.jpg",
        "featured": true
      },
      {
        "title": "Learn CSS Animations (free)",
        "url": "https://scrimba.com/g/gcssanimations",
        "description": "A fantastic FREE interactive video course on CSS animations provided by the lovely folks at Scrimba. The perfect Easter egg 🥚",
        "imageUrl": "./8165ea2ab6595c2cf27d466f4db878d5a2548f32fae43500ba4f0ee43b4f9787.png",
        "featured": false
      },
      {
        "title": "Bootstrap 5: What's New About It and Release Date",
        "url": "https://designmodo.com/bootstrap-5",
        "description": "In this article, let's take a look at Bootstrap 5 major updates including the release date, integration, code new elements and modification.",
        "imageUrl": "./0774fa05899b674aabf0377bf585d5ae0d49a633c7e98bb74e6d3bbed92e6655.jpg",
        "featured": false
      },
      {
        "title": "CSS Findings From The New Facebook Design",
        "url": "http://ishadeed.com/article/new-facebook-css",
        "description": "A very thorough analysis of Facebook new design by using only the browser DevTools to figure out how the folks at Facebook do CSS. Super interesting and in-depth article!",
        "imageUrl": "./ddc157775890d5dc7ebcab779901106cfa6622990a2fae4d8299d4677127969b.jpg",
        "featured": false
      },
      {
        "title": "React Patterns",
        "url": "https://reactpatterns.com/",
        "description": "A huge list of React design patterns from beginners to advanced developers. Simple examples, short descriptions, and quality advice.",
        "imageUrl": "./0d46b3b98d0fcb216b7f9b173ce3e9e41246d26e6c483364f5b645da7495c4e7.jpg",
        "featured": false
      },
      {
        "title": "The Web Almanac",
        "url": "https://almanac.httparchive.org/en/2019",
        "description": "The Web Almanac is an annual state of the web report combining the expertise of the web community with the data and trends of the HTTP Archive.",
        "imageUrl": "./2185f869724f8580117a34e99b44847d06196abbc46950763c4548d650060979.jpg",
        "featured": false
      },
      {
        "title": "React Folder Structure in 5 Steps",
        "url": "https://robinwieruch.de/react-folder-structure",
        "description": "A walkthrough on how to structure a large React apps into folders and files for a scalable React project.",
        "imageUrl": "./66badec7be0f89263c2c0bd7b0bcf60b680097fc00c45d593d3866ab5ac9af13.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 156,
    "title": "GitHub OAuth Login with Node.js",
    "slug": "2020-04-06-156-github-oauth-login-with-node-js",
    "date": "2020-04-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #14, 2020",
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "GitHub OAuth Login with Node.js",
        "url": "http://thecodebarbarian.com/github-oauth-login-with-node-js",
        "description": "GitHub OAuth lets you build apps that take action on behalf of users. Here's how you can build your own basic GitHub OAuth app with GitHub login... from scratch, without any OAuth library!",
        "imageUrl": "./8aae9628b73b6abaf22e6b9a9cdc4972e23e303fd62129d74b2610dd2944b553.png",
        "featured": true
      },
      {
        "title": "How to Improve Page Speed from Start to Finish",
        "url": "https://ahrefs.com/blog/advanced-pagespeed-guide",
        "description": "There are lots of tools to test page speed, and lots of different metrics to target. But do you understand how those optimizations work, or whether they’re actually going to make your website faster?",
        "imageUrl": "./0010636c03dfbb3e8bff1a4907545b2721f39d8749442f74177dff45c0b46759.jpg",
        "featured": false
      },
      {
        "title": "Manage HTML DOM with vanilla JavaScript",
        "url": "https://htmldom.dev/",
        "description": "A great collection of ready-made snippets that can help you to manage HTML DOM with vanilla JavaScript, a.k.a \"no frameworks\"!",
        "imageUrl": "./3254a7665d4c6d0a8c4ee4e05bb410cafd6fa9b022ddcce5c7ca32c28bdf522c.jpg",
        "featured": false
      },
      {
        "title": "How to SSH Properly",
        "url": "https://gravitational.com/blog/how-to-ssh-properly",
        "description": "How to SSH properly and easily improve the security of your SSH model without needing to deploy a new application or make any huge changes to UX.",
        "imageUrl": "./d8a0bb7ca2da778c206e97da79a315b70fdc42592e088db07a41594ea2014df0.jpg",
        "featured": false
      },
      {
        "title": "Margin considered harmful",
        "url": "https://mxstbr.com/thoughts/margin",
        "description": "Margin breaks component encapsulation. Margin makes reusability harder.  Margin conflicts with how designers think!\n\n\n\nBy banning margin from all components you have to build more reusable and encapsulated components.",
        "imageUrl": "./fca2d3c221dc916167cb4c6f0e5d294e9131449505cf7226c79dffd5e3998eb1.jpg",
        "featured": false
      },
      {
        "title": "A Practical Guide to Memory Leaks in Node.js",
        "url": "https://arbazsiddiqui.me/a-practical-guide-to-memory-leaks-in-nodejs",
        "description": "Memory leaks creep up into your systems unnoticed and don't cause any harm initially, but once leaks are strong enough they can cause high latencies and crashes. This article describes how javascript manages memory, how to identify leaks and eventually how to fix them.",
        "imageUrl": "./f1188e6ca1fa3b81e6f2cc3cfe935bdbb88e5aa2a2c20507a796fddd86cc8725.jpg",
        "featured": false
      },
      {
        "title": "Measuring the Performance of JavaScript Functions",
        "url": "https://felixgerschau.com/measuring-the-performance-of-java-script-functions",
        "description": "This article explores a number of techniques and APIs to measure the performance of JavaScript code. Do you know about **performance.now**? What about **console.time**?",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5",
      "author": "Robin Nixon",
      "description": "The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension. Build interactive, data-driven websites with the potent combination of open-source technologies and web standards, even if you only have basic HTML knowledge. With this popular hands-on guide, you'll tackle dynamic web programming with the help of today's core technologies: PHP, MySQL, JavaScript, jQuery, CSS, and HTML5.",
      "coverImageUrl": "./4dd383a9368aaa6ed632aede9e478cdc0678ed0fe58e1cd4ac7a53fa88dfa423.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491918667/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491918667/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 155,
    "title": "A Practical Overview Of CSS Houdini",
    "slug": "2020-03-30-155-a-practical-overview-of-css-houdini",
    "date": "2020-03-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #13, 2020",
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "A Practical Overview Of CSS Houdini",
        "url": "https://smashingmagazine.com/2020/03/practical-overview-css-houdini",
        "description": "In this article, we take a look at each part of Houdini, its current browser support, and see how they can be used today using progressive enhancement.",
        "imageUrl": "./d86dee8cc4e9796292cc2a26012ec9203b886d855f541b28f3bfaa41a45ec24a.jpg",
        "featured": true
      },
      {
        "title": "Working remotely: the good, the bad, and the unexpected",
        "url": "https://webflow.com/blog/working-remotely",
        "description": "With the recent rise in working from home, this article shares some interesting insights about the challenges and solutions for remote work.",
        "imageUrl": "./6d71f227d5a63fca73f3e6b8af2e639dd5a7896b29a14fc80893be5aa788a63d.jpg",
        "featured": false
      },
      {
        "title": "CSS: Flexible Repeating SVG Masks",
        "url": "https://tylergaw.com/articles/css-repeating-svg-masks",
        "description": "A CSS technique for using SVG as repeating masks. A simple trick that can unlock new opportunities for web design.",
        "imageUrl": "./0ec4b86c740edf20bf686f352d06173d2c02860d0f6d375170f924191c37972c.jpg",
        "featured": false
      },
      {
        "title": "gqless: a query-less GraphQL client",
        "url": "https://gqless.dev/",
        "description": "A GraphQL client without queries. Yes, you got it right! This client will infer the GrapQL queries you need based on the data you are using in your components! 😱",
        "imageUrl": "./362e7ac0d4faa40aae39e28f12af0f4a99553ee2ad2f9ab789e91196b8b1dd4a.jpg",
        "featured": false
      },
      {
        "title": "How to Micro Frontend with React",
        "url": "https://robinwieruch.de/react-micro-frontend",
        "description": "Microfronteds are the new rage and this tutorial shows a practical example about how to create a micro frontend architecture for React with Webpack.",
        "imageUrl": "./e69ce990e6004c39689399d6887056ab5710c2bd53cdc89730e76475d3f5f5d7.jpg",
        "featured": false
      },
      {
        "title": "Javascript Proxies : Real World Use Cases",
        "url": "https://arbazsiddiqui.me/javascript-proxies-real-world-use-cases",
        "description": "You might have heard of JavaScript ES2015 Proxy. While it's a cool concept, it is actualy hard to find real use cases for it? Is it though? In this article you will discover some real and useful applications for Proxy programming in JavaScript.",
        "imageUrl": "./5340b9198bc03a57c9ff176a3c9f1c1083a38e238cd47a46d992d4bad65fc41f.jpg",
        "featured": false
      },
      {
        "title": "AWS Lambda Destination Support",
        "url": "https://serverless.com/blog/lambda-destinations",
        "description": "The Serverless Framework now supports the recently released Lambda Event Destinations. In this article, you will see how this new feature can be leveraged to achieve higher serverless composability!",
        "imageUrl": "./4f28da02399501dbfa9320088ffab9dd81585b007c0c5be01adf1f9bd83b81b2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 154,
    "title": "#154: The History of the URL",
    "slug": "2020-03-16-154-11-the-history-of-the-url",
    "date": "2020-03-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #11, 2020",
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "The History of the URL",
        "url": "https://blog.cloudflare.com/the-history-of-the-url",
        "description": "The wonderful story of how the URL came to life, from the good old times of **ARPAnet**, through the **DNS** protocol and finally the **World Wide Web** age... A must-read for every web developer!",
        "imageUrl": "./77bf3659ad03f7c64ced2d9ee375bab78e8126a931819c52aefae3a24af2c6b6.jpg",
        "featured": true
      },
      {
        "title": "How I made a 3D game in only 2KB of JavaScript",
        "url": "http://frankforce.com/?p=7427",
        "description": "Who says that JavaScript is good only for web development? In this case study Frank Force, show his last JavaScript game creation ([Hue Jumper](https://killedbyapixel.itch.io/hue-jumper)) and tells the tricks he used to keep the source code hyper small. A really interesting read if you are a JavaScript aficionado or an aspiring game maker.",
        "imageUrl": "./914fab06c44b0f6f187c72deca2acf193fb0ffff2dcc459f43ac586d4644d6f6.jpg",
        "featured": false
      },
      {
        "title": "How a 2 person startup already uses 28 other tools",
        "url": "https://acrossapp.com/blog/how-a-2-person-startup-already-uses-28-other-tools",
        "description": "Today we rely on tools and SaaS services more than ever. In this case study, you can see how a small startup uses 28 different tools in their day to day operations. Do you use as many tools as well?",
        "imageUrl": "./0d46b3b98d0fcb216b7f9b173ce3e9e41246d26e6c483364f5b645da7495c4e7.jpg",
        "featured": false
      },
      {
        "title": "Introduction to D3",
        "url": "https://observablehq.com/@mitvis/introduction-to-d3",
        "description": "An interactive notebook that will guide you to understand **D3**, the most famous JavaScript visualization library.",
        "imageUrl": "./af61a3eda9fa361892383f2bbb0a1aea3959a6ce6228e2794195f5373c768e4c.jpg",
        "featured": false
      },
      {
        "title": "feltcoop/why-svelte",
        "url": "https://github.com/feltcoop/why-svelte",
        "description": "A GitHub repository that illustrates why the **Svelte framework** was chosen for a big project in 2020.",
        "imageUrl": "./023c37fc108ba49a07c18949514c86a330910ef3886492622fe1b75c2f56e115.jpg",
        "featured": false
      },
      {
        "title": "Cross-Cultural Design",
        "url": "https://alistapart.com/article/cross-cultural-design",
        "description": "How much consideration have you given to how the text of your site is rendered when it’s localized? Do you consider whether your webfonts load in China? How dense your paragraphs appear in Korean?",
        "imageUrl": "./a9a0a38b7ab5d6a879e1591f3bab3e7dd6afc996fdade72a2fc8c3f355c4ac3a.jpg",
        "featured": false
      },
      {
        "title": "Stryker Mutator",
        "url": "https://stryker-mutator.io/",
        "description": "Stryker is a testing framework for JavaScript, C# and Scala. But Stryker is not your common testing framework, in fact, it doesn't test your code, instead, it**tests your tests**! Stryker helps you to build mutation tests: bugs are automatically inserted in your code to see if your testing suite can catch them! 😱",
        "imageUrl": "./3a5878538dfdaec816687fb7259e8a882d5553ff596772fc284d32afcc6ea1a8.png",
        "featured": false
      }
    ],
    "book": {
      "title": "UX Strategy: How to Devise Innovative Digital Products that People Want",
      "author": "Jaime Levy",
      "description": "User experience (UX) strategy requires a careful blend of business strategy and UX design, but until now, there hasn’t been an easy-to-apply framework for executing it. This hands-on guide introduces lightweight strategy tools and techniques to help you and your team craft innovative multi-device products that people want to use. Whether you’re an entrepreneur, UX/UI designer, product manager, or part of an intrapreneurial team, this book teaches simple-to-advanced strategies that you can use in your work right away.",
      "coverImageUrl": "./fb5bfe56ce390883cd7e92437fbc707fe0ce9062ff82c591ed2eba65ee4daa8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372864/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372864/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 153,
    "title": "500+ Customizable CSS Icons",
    "slug": "2020-03-09-153-500-customizable-css-icons",
    "date": "2020-03-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #10, 2020",
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "500+ Customizable CSS Icons",
        "url": "https://css.gg/",
        "description": "Minimalistic icon library Designed by code, Customizable & Retina-Ready icons — built 100% in pure CSS. Easy integration: Embed, NPM & API",
        "imageUrl": "./eca3357ee849c99ad5d208c4902f4b4d5c528e5976c9ec712853fde8a340891b.jpg",
        "featured": true
      },
      {
        "title": "Being Glue",
        "url": "https://noidea.dog/glue",
        "description": "A wonderful talk by Tanya Reilly about \"Glue Work\" in a tech team. Glue work means working away from code and investing in auxiliary (and necessary) activities such as writing docs, setting up meetings, defining coding standards, improving processes, mentoring and onboarding. How much do we underestimate glue work?",
        "imageUrl": "./9903abf0a581b7aa84f45656c69b6123aef9e80c9779f82c0d0dbbab41c6b038.jpg",
        "featured": false
      },
      {
        "title": "To Get Good, Go After The Metagame",
        "url": "http://commoncog.com/blog/to-get-good-go-after-the-metagame",
        "description": "A-non-strictly techincal article about getting better at anything... What do metagames have to do with the acquisition of expertise? What actually is the metagame and how can we leverage it to get better at something?",
        "imageUrl": "./73646934468afbd3e213adde7b816b3f526b09ce40c7f6bfcc735879d299db9a.jpg",
        "featured": false
      },
      {
        "title": "A half-hour to learn Rust",
        "url": "https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust",
        "description": "In order to increase fluency in a programming language, one has to read a lot of it. But how can you read a lot of it if you don't know what it means? This article, instead of focusing on one or two concepts, tries to go through as many Rust snippets as possible to make the syntax easier to understand and to set the foundation for learning more about the language.",
        "imageUrl": "./017d94f339514fdf9dee9e3c7d16119f06075048e39c571f54cf4f8c80808fdf.jpg",
        "featured": false
      },
      {
        "title": "sharkdp/fd",
        "url": "https://github.com/sharkdp/fd",
        "description": "A simple, fast and user-friendly alternative to the UNIX \"find\" command. If you use \"find\" a lot, you are going to love this alternative!",
        "imageUrl": "./8b6770127b6a7f2763c1027c979a6f534743516990281446386c3c1240b52b78.jpg",
        "featured": false
      },
      {
        "title": "How to brainstorm great business ideas",
        "url": "https://indiehackers.com/post/how-to-brainstorm-great-business-ideas-ab51c3d51c",
        "description": "It's been said that ideas don't matter, execution does. In reality, you need both to succeed, but you can only get so good at execution... A great idea gives you much more leverage! So how can we discriminate ideas to find the best ones?",
        "imageUrl": "./cf65eda670c2b0875e231adaf595ef30eb65056c0d6243cfa91e497a994f4cd5.jpg",
        "featured": false
      },
      {
        "title": "Mining my mailbox for top email service providers",
        "url": "https://obem.be/2020/02/18/mining-my-mailbox-for-top-email-service-providers.html",
        "description": "An interesting experiment that aims to find the most used email services providers by mining your own mailbox programmatically! Did you ever think to \"crawl\" an email box?",
        "imageUrl": "./747e3af716ef814b1651d0c03fc355d4f8b5d0d26430e08cb9714d97822862f8.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 152,
    "title": "Levels of Seniority",
    "slug": "2020-03-02-152-levels-of-seniority",
    "date": "2020-03-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #9, 2020",
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "Levels of Seniority",
        "url": "https://roadmap.sh/",
        "description": "Understanding our level of seniority and how it compares to the market is never easy. This website can help us to understand more about our current seniority and offers a number of community-driven roadmaps to help us move to the next stage of our career!",
        "imageUrl": "./ed89b5fd9c874ebe9eebcf96aadb05ace46676ac37470a023bdb3642f95804cf.jpg",
        "featured": true
      },
      {
        "title": "Understanding the Node.js event loop",
        "url": "https://dev.to/lunaticmonk/understanding-the-node-js-event-loop-phases-and-how-it-executes-the-javascript-code-1j9",
        "description": "Node.js event loop is one of those things that most people heard about but they don't really know how it actually works. If you are writing Node.js code, it is important to understand in-depth the inner working of the event loop and this article will help you to crack the lid and find out all the necessary details.",
        "imageUrl": "./12860b2374730b259d5698452b2580c883d4920208cfeeae3f91386ad2b06486.jpg",
        "featured": false
      },
      {
        "title": "Introduction to A*",
        "url": "https://redblobgames.com/pathfinding/a-star/introduction.html",
        "description": "Did you ever play point-and-click games? Did you ever wonder how in these games the players can find their path to walk to the destination point? This beautifully interactive article illustrates the most famous algorithms used for pathfinding: A*, Dijkstra's Algorithm, and others.",
        "imageUrl": "./8d3c579b99784dfac85321e6932710dd65ad88d153f8f171ff2c7e1a4358533a.jpg",
        "featured": false
      },
      {
        "title": "Micromodal",
        "url": "https://micromodal.now.sh/",
        "description": "Micromodal enables you to create accessible modal dialogs with minimal configuration. At just 1.9kb minified and gzipped, its a tiny library for big change.",
        "imageUrl": "./86184e050641e90ba883be0c4ac2fc0721fad73be220479b805e0dbf59a1d718.jpg",
        "featured": false
      },
      {
        "title": "Learning Rust With Entirely Too Many Linked Lists",
        "url": "https://rust-unofficial.github.io/too-many-lists",
        "description": "Rust seems to be the next big language, not just for system programming but also for fullstack development. But, yeah, it's harder than the scripting languages we are used to. This series of articles manages to explore many concepts of the language by iterating over different implementation of a linked list.",
        "imageUrl": "./2bece2f7b2f9abf4e3e1af19e212c843a66e0b58bca09302278db0e4a64844f7.jpg",
        "featured": false
      },
      {
        "title": "Aborting a fetch request",
        "url": "https://meetguns.com/",
        "description": "What happens when you launch an HTTP request and halfway there you don't need it anymore? The AbortController and Fetch allow you to build HTTP requests that can be cancelled in flight. This article will give you few interesting examples!",
        "imageUrl": "./7fbb2474cff768d69a80b6fa208bbbf6c3bc74001812df95150fb7a19a365b5b.jpg",
        "featured": false
      },
      {
        "title": "Challenges with distributed systems",
        "url": "https://aws.amazon.com/builders-library/challenges-with-distributed-systems",
        "description": "Introducing properties of distributed systems that make them so challenging, including non-determinism and testing.",
        "imageUrl": "./6433214a6c5ce72c96b52fda445febc477ec7cde8d1a8a4ff503d3f0f651f110.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 151,
    "title": "70 JavaScript Interview Questions",
    "slug": "2020-02-24-151-70-javascript-interview-questions",
    "date": "2020-02-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #8, 2020",
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor and Author",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "70 JavaScript Interview Questions",
        "url": "https://dev.to/macmacky/70-javascript-interview-questions-5gfi",
        "description": "Preparing for a JavaScript interview? Or simply, are you curious to know how in-depth do you understand JavaScript? In this article, you will find 70 amazing non-obvious questions that can satisfy your curiosity on this topic!",
        "imageUrl": "./8fffb4ee9648e4f2d8e41c46ead334c245d8a89cc6db6d72fb2c05ef479c3826.jpg",
        "featured": true
      },
      {
        "title": "Why JavaScript is Eating HTML",
        "url": "https://css-tricks.com/why-javascript-is-eating-html",
        "description": "In recent years, JavaScript developers have started to define page structure in JavaScript instead of pure HTML. Is this a good practice? This article tries to find a pragmatic answer to this question.",
        "imageUrl": "./d3f8d15c7df33be2f4c850ea5bcc7c51221a5d3a209108f590bc96e93ba371c9.jpg",
        "featured": false
      },
      {
        "title": "Scaling to 100k Users",
        "url": "https://alexpareto.com/scalability/systems/2020/02/03/scaling-100k.html",
        "description": "Many startups have been there - what feels like legions of new users are signing up for accounts every day and the engineering team is scrambling to keep things running?\n\nThis article offers a pragmatic guide on some architectural choices you can make to scale as you grow and avoid over-engineering.",
        "imageUrl": "./9e8854ac38e60c6db8c0a217affa96909eefec90f6b89e8ffb3ff8b5a211750f.jpg",
        "featured": false
      },
      {
        "title": "evanw/esbuild",
        "url": "https://github.com/evanw/esbuild",
        "description": "An extremely fast JavaScript bundler and minifier that can be used as an alternative to Webpack and parcel. Written in Go and available on GitHub!",
        "imageUrl": "./3e8e5402a430d52c194b6b43d199ef81aa55482479564df03381075ec3eff6e7.png",
        "featured": false
      },
      {
        "title": "10 JavaScript Array Methods You Should Know",
        "url": "https://dev.to/rebeccauranga/10-array-methods-you-should-know-nn5",
        "description": "JavaScript arrays are generally considered simple, but do you know all the sweet things you can do with an array instance? Read this article if you want to find out more!",
        "imageUrl": "./99b47c6836a3f7436da68a86870376fea1e17cf4d2b4e860223786d1bfb2055c.jpg",
        "featured": false
      },
      {
        "title": "Node.js CLI apps best practices",
        "url": "https://github.com/lirantal/nodejs-cli-apps-best-practices",
        "description": "A wonderful repository collecting a list of best practices that you should follow if you are building a CLI application with Node.js.",
        "imageUrl": "./789230483c3d29243fe2a23226493646a108e28efe8863d6feba75ed5bee7c54.png",
        "featured": false
      },
      {
        "title": "The Theory: A Semantic Color System",
        "url": "https://dev.to/ynab/a-semantic-color-system-the-theory-hk7",
        "description": "Colours are a foundational element of interfaces but frequently end up becoming a mess of inline definitions, different naming conventions across platforms, confusion around when to use what colour, and issues with updates when things change... This article explores a more systematic approach to define colours in your design system. A great resource if you are working on a design system right now or if you want to improve your existing system!",
        "imageUrl": "./f51211d3ad2883a7c08df6a6c852aef9f20b9dc99a3231a3e947d7fcd9df22cb.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld",
      "description": "Information architecture (IA) is far more challenging—and necessary—than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond.To guide you through this broad ecosystem, this popular guide—now in its fourth edition—provides essential concepts, methods, and techniques for digital design that have withstood the test of time.",
      "coverImageUrl": "./6479919bd4c4e1ab7a2cbc0f5cf23b45ee7ca46af986574798fd02163903111f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 150,
    "title": "Neumorphism/Soft UI CSS shadow generator",
    "slug": "2020-02-17-150-neumorphism-soft-ui-css-shadow-generator",
    "date": "2020-02-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #7, 2020",
    "quote": {
      "text": "Technology is a word that describes something that doesn’t work yet",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "Neumorphism/Soft UI CSS shadow generator",
        "url": "https://neumorphism.io/",
        "description": "CSS code generator that will help with colors, gradients and shadows to adapt this new design trend or discover its posibilities.",
        "imageUrl": "./ba236151e97e9a7d3e679eb801cb74d6ab39159fe5fcc2c815f61f49c2d62027.jpg",
        "featured": true
      },
      {
        "title": "Take 'this' Quiz, Understand How 'this' Works in JavaScript",
        "url": "https://dev.to/liaowow/take-this-quiz-understand-how-this-works-in-javascript-44dj",
        "description": "Among all the abstract ideas JavaScript has to offer, the 'this' keyword can be one of the most challenging to understand. This article illustrates the challenges of this concept by presenting few interesting examples.",
        "imageUrl": "./49b16cb266d1be8e350490feba985db75ba0a809735653564eb0c2056c67cd36.jpg",
        "featured": false
      },
      {
        "title": "Node.js Async Best Practices & Avoiding Callback Hell",
        "url": "https://blog.risingstack.com/node-js-async-best-practices-avoiding-callback-hell-node-js-at-scale",
        "description": "This post covers what tools and techniques you have at your disposal when handling Node.js asynchronous operations. Learn how to avoid the callback hell!",
        "imageUrl": "./f7eeaf4454fe4bff3c64cf3e6eb7369fbedab6a4b0616ea37ba4164691fb0c7f.jpg",
        "featured": false
      },
      {
        "title": "CO2 emissions on the web",
        "url": "https://dannyvankooten.com/website-carbon-emissions",
        "description": "I’ve spent the last month trying to reduce the carbon footprint of the websites I have (some) control over. When talking about this with other people they often look at me blankly before asking “aren’t you taking this a little too far?”.",
        "imageUrl": "./0f2c2d98d38a25dae6fe9cb9c1a927a85d343955958f8acd3737af422e193dd6.jpg",
        "featured": false
      },
      {
        "title": "Design Systems, Agile, and Industrialization",
        "url": "https://bradfrost.com/blog/post/design-systems-agile-and-industrialization",
        "description": "There’s a big difference between having smart, reusable patterns at your disposal and creating a dictatorial culture designed to enforce conformity and swat down anyone coloring outside the lines... but you should blame the implementation, not the technique.",
        "imageUrl": "./0cb0e8a93d8e8c882de4c916ba8c13221a39036ec6c1dd1d14f09742ec6a63d0.jpg",
        "featured": false
      },
      {
        "title": "React Kawaii",
        "url": "https://react-kawaii.now.sh/",
        "description": "Cute React SVG Components that you can really use to make your site more playful and engaging!",
        "imageUrl": "./ce741753061a2aeefd708c350ca3386cc2f6580e68dcbebc7693d0226a5fd5df.png",
        "featured": false
      },
      {
        "title": "Performant front-end architecture",
        "url": "https://debugbear.com/blog/performant-front-end-architecture",
        "description": "Learn how to make your client-side apps load fast and provide a good user experience.",
        "imageUrl": "./113bba6515850f210ba9f934f956b17968ea9ed80ce95c221c45f42d93d79fb3.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Big Data: Principles and best practices of scalable realtime data systems",
      "author": "Nathan Marz",
      "description": "Big Data teaches you to build big data systems using an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data. It describes a scalable, easy-to-understand approach to big data systems that can be built and run by a small team.",
      "coverImageUrl": "./f109f576f51b956a93fffd90f2756794ef95a8d46f118a0f1e23f611c7af4a75.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617290343/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617290343/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 149,
    "title": "Old CSS, new CSS",
    "slug": "2020-02-10-149-old-css-new-css",
    "date": "2020-02-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #6, 2020",
    "quote": {
      "text": "One machine can do the work of fifty ordinary men.  No machine can do the work of one extraordinary man",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "Old CSS, new CSS",
        "url": "https://eev.ee/blog/2020/02/01/old-css-new-css",
        "description": "An interesting overview of how CSS evolved since the web of the 90's. From table based design and the Space Jam website to Flexbox and CSS Grids through DHTML and the era of CSS hacks. A brilliant read with some nostalgia involved!",
        "imageUrl": "./b49b587311d6ea884d978e45eb8857dcd943f247b8fde7946daac9f13e4a6f6c.jpg",
        "featured": true
      },
      {
        "title": "JavaScript Libraries Are Almost Never Updated Once Installed",
        "url": "https://blog.cloudflare.com/javascript-libraries-are-almost-never-updated",
        "description": "An analysis, based on CDNJS data, of when and if JavaScript libraries are updated after being installed onto websites.",
        "imageUrl": "./ac0f353f628db2896516d799d71ba55e8837e9139a0ae698cb864f2456255efa.jpg",
        "featured": false
      },
      {
        "title": "Design Systems 101: What, Why, & How | Adobe XD Ideas",
        "url": "https://xd.adobe.com/ideas/principles/design-systems/introduction-to-design-systems",
        "description": "Learn how to get started with design systems. Based on internal Adobe research & interviews with experts & designers working on design systems.",
        "imageUrl": "./ae13fd1c4411748353f7dc3f2ee23b47bc72eb823a0dd552d76c0c842eab06ef.jpg",
        "featured": false
      },
      {
        "title": "Standards for Writing Accessibly",
        "url": "https://alistapart.com/article/standards-for-writing-accessibly",
        "description": "In this excerpt from Writing Is Designing, Michael J. Metts and Andy Welfle discuss critical accessibility considerations for content authors, including reading order, references to additional content and colors.",
        "imageUrl": "./a9a0a38b7ab5d6a879e1591f3bab3e7dd6afc996fdade72a2fc8c3f355c4ac3a.jpg",
        "featured": false
      },
      {
        "title": "A new technique for making responsive, JavaScript-free charts",
        "url": "https://dev.to/richharris/a-new-technique-for-making-responsive-javascript-free-charts-gmp",
        "description": "There are countless libraries for generating charts on the web. Each serves a slightly different niche, but all of them have one thing in common: they require JavaScript. Here's a JavaScript-less alternative!",
        "imageUrl": "./63948592232b3b6db1d51d1182fb0f752a65c911104ed3afe9c5ddb127d730bc.jpg",
        "featured": false
      },
      {
        "title": "React Libraries in 2020",
        "url": "https://robinwieruch.de/react-libraries",
        "description": "A comprehensive list of all the relevant React libraries used in 2020. If you are new to React, its ecosystem may be overwhelming at first. However, all these React libraries offer everything you need to build large scale applications with React.",
        "imageUrl": "./ffbed61db268b8a41d0bef12c92916710a6ba3b2788fc1f3f86c57463ab4a81a.jpg",
        "featured": false
      },
      {
        "title": "HTML attributes to improve your users' two factor authentication experience",
        "url": "https://twilio.com/blog/html-attributes-two-factor-authentication-autocomplete",
        "description": "Learn how to use the HTML autocomplete, inputmode and pattern attributes to improve the user experience of logging in.",
        "imageUrl": "./997bf5b645198bc5c99fc8c4b8c1fd46bbb49730d0a6550718c3423db6850da0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "E. Gamma, R. Helm, R. Johnson, J. Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.",
      "coverImageUrl": "./3d2f9c2ee1c817b2dcd3443fbb6f71d7fcb0499b00de983a9ffe8f8c6058fa29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 148,
    "title": "The Role of Animation and Motion in UX",
    "slug": "2020-02-03-148-the-role-of-animation-and-motion-in-ux",
    "date": "2020-02-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #5, 2020",
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "The Role of Animation and Motion in UX",
        "url": "https://nngroup.com/articles/animation-purpose-ux",
        "description": "Animation in UX must be unobtrusive, brief, and subtle. Use it for feedback, state-change and navigation metaphors, and to enhance signifiers.",
        "imageUrl": "./c1c79e16a46c6caac311aa3aaa8fa46ce3db1df5bfc93a358a51a6c3aa414fe5.jpg",
        "featured": true
      },
      {
        "title": "Understanding the “Initial”, “Inherit” and “Unset” CSS Keywords",
        "url": "https://medium.com/@elad/understanding-the-initial-inherit-and-unset-css-keywords-2d70b7121695",
        "description": "CSS has default keywords for various values. This article talks about three of them: \"initial\", \"inherit\", and the relatively new \"unset\".",
        "imageUrl": "./3e365e3facf0980c6ea0c8521ac5aec0fb00314634dcf5675d3df62f7f6ddcb1.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Quizzes",
        "url": "https://quiz.typeofnan.dev/",
        "description": "Learn JavaScript fundamentals through fun and challenging quizzes!",
        "imageUrl": "./75a66e6e37a9c576108dad2cd097fca06aa8fdb89e6d6b2ced52eff42cd0408a.jpg",
        "featured": false
      },
      {
        "title": "The Burnout List",
        "url": "https://frankchimero.com/blog/2020/burnout-list",
        "description": "How do you know if you are currently going through burnout in your life? These days, and in our line of work, burnout seems to be more frequent than ever. This article provide some great insights on 11 of the most common reasons for burnout.",
        "imageUrl": "./233e741e6eb61294f45da5111c5a7ca1f603fa759581e973e2bc6e4b2fd83c5f.jpg",
        "featured": false
      },
      {
        "title": "Understanding CSS Grid: Grid Lines",
        "url": "https://smashingmagazine.com/2020/01/understanding-css-grid-lines",
        "description": "In a new series, Rachel Andrew breaks down the CSS Grid Layout specification. This time, we take a look at how to use the grid lines to place items.",
        "imageUrl": "./e6104b9354db59222aa73eea9a01565e780f9b5c07313d687b3f1ecaa4c2b273.jpg",
        "featured": false
      },
      {
        "title": "TypeScript's Secret Parallel Universe",
        "url": "https://dev.to/loilo/typescript-s-secret-parallel-universe-54i6",
        "description": "How TypeScript handles name clashes between types and variables",
        "imageUrl": "./47fbf746b1cc6f115e3625875cb87cf8bd5c450435ca85d4a60e69271c0bad9a.jpg",
        "featured": false
      },
      {
        "title": "4 CSS responsive layouts without using media queries",
        "url": "https://polypane.app/blog/4-css-layouts-without-using-media-queries",
        "description": "Do you always need media queries to make a website responsive? With flexbox and grid you can make responsive layouts without having to use media queries!",
        "imageUrl": "./aab9aac62b9a3412ea635ebf3ff6c1b90126f7d9521e92b57a294d62744ffeeb.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 147,
    "title": "#147: How to Build a Complete Back End System with Serverless",
    "slug": "2020-01-27-147-4-how-to-build-a-complete-back-end-system-with-serverless",
    "date": "2020-01-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #4, 2020",
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "How to Build a Complete Back End System with Serverless",
        "url": "https://freecodecamp.org/news/complete-back-end-system-with-serverless",
        "description": "This article will teach you how to build and deploy everything you need to be able to build a back-end for your application. We'll be using AWS to host all of this and deploying it all using the Serverless Framework.",
        "imageUrl": "./c89b2f8583857ce3cdaee6316dd88c0f94c9aa9e93a97f48aed357dc455ae3c5.jpg",
        "featured": true
      },
      {
        "title": "ShellCheck – shell script analysis tool",
        "url": "https://shellcheck.net/",
        "description": "ShellCheck is a convenient analysis tool that can help you to automatically find bugs in your shell scripts.",
        "imageUrl": "./0741addeffdb52ab5e664f2eeb8e48243fd328ed72e448d82a8d847e42952773.jpg",
        "featured": false
      },
      {
        "title": "Why aren’t we using SSH for everything?",
        "url": "https://medium.com/@shazow/ssh-how-does-it-even-9e43586e4ffc",
        "description": "Dozens of facts about the SSH protocol and why we should use it for more things, or at least take inspiration from when developing new protocols.",
        "imageUrl": "./fb1676ea873bba0cc0112accb93140d44f823a73786d410893470cd1ee5d2654.jpg",
        "featured": false
      },
      {
        "title": "Jsonnet - The Data Templating Language",
        "url": "https://jsonnet.org/",
        "description": "A powerful DSL for elegant description of JSON data. Built on top of JSON it adds variables, conditionals, functions and more on top of the language to become a fully-fledged templating language that is particularly suitable to generate and manage configuration files.",
        "imageUrl": "./0d46b3b98d0fcb216b7f9b173ce3e9e41246d26e6c483364f5b645da7495c4e7.jpg",
        "featured": false
      },
      {
        "title": "Concurrency Patterns In Go",
        "url": "https://youtube.com/watch?v=YEKjSzIwAdA",
        "description": "A fantastic conference talk that illustrates Go's great concurrency tools like goroutines and channels. But is this really everything? How can you use these primitives at best? What are the main challenges to be aware of and the best patterns to know?",
        "imageUrl": "./ca36a188c7d8b7cebaaa3a7d92743b0c0a68571583c914835f06f2b618171d33.jpg",
        "featured": false
      },
      {
        "title": "Cube.js | Open Source Analytics Framework",
        "url": "https://cube.dev/",
        "description": "Cube.js is an open source modular framework to build analytical web applications. It is primarily used to build internal business intelligence tools or to add customer-facing analytics to an existing application.",
        "imageUrl": "./c56f16fdea775568720f4c19b2ffeec5563a9fd6bc34bd3888cceae252f287ac.jpg",
        "featured": false
      },
      {
        "title": "Fargate vs Lambda",
        "url": "https://trek10.com/blog/fargate-lambda-comparison",
        "description": "Comparing AWS's serverless compute options on cost, performance, and ease of use",
        "imageUrl": "./e75e0a5cd8c3d8fecbd7fb679293780e54bbf4154a2a5c2e65040b54a7a0a2c9.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 146,
    "title": "Why Does Celeste Feel So Good to Play?",
    "slug": "2020-01-20-146-why-does-celeste-feel-so-good-to-play",
    "date": "2020-01-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #3, 2020",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "Why Does Celeste Feel So Good to Play?",
        "url": "https://youtube.com/watch?v=yorTG9at90g",
        "description": "This is not our usual Web development content, but nonetheless, it is fascinating to see how specific design choices and the actual technical implementation can affect the success of a project. We are sure there will be lessons to learn for aspiring fullstack developers from this interesting video.",
        "imageUrl": "./2b6b955a600df004fd67991c76aac77253b23391dd96698470a7685c52348d96.jpg",
        "featured": true
      },
      {
        "title": "2019 JavaScript Rising Stars",
        "url": "https://risingstars.js.org/2019/en",
        "description": "A complete overview of the JavaScript landscape in 2019: trends about front-end and node.js frameworks, tooling, IDE, Static site generators and more.",
        "imageUrl": "./2bece2f7b2f9abf4e3e1af19e212c843a66e0b58bca09302278db0e4a64844f7.jpg",
        "featured": false
      },
      {
        "title": "awslabs/git-secrets",
        "url": "https://github.com/awslabs/git-secrets",
        "description": "A shell script from AWS itself that prevents you from accidentally committing AWS secrets and credentials into git repositories.",
        "imageUrl": "./52fc8b2d6349d6ba18552dec3e56ba666dcfc150e2f5b9fe7b321e3dad0a97ab.jpg",
        "featured": false
      },
      {
        "title": "Snowpack",
        "url": "https://snowpack.dev/",
        "description": "With Snowpack you can build modern web apps (using React, Vue, etc.) without a bundler (like Webpack, Parcel, Rollup). No more waiting for your bundler to rebuild your site every time you hit save. Instead, every change is reflected in the browser instantly.",
        "imageUrl": "./5cf7ea6a8b68dce264dbd72ba22187f36c30e9ffe7543bb03efae23173ece6eb.png",
        "featured": false
      },
      {
        "title": "How to move your project to TypeScript",
        "url": "https://twilio.com/blog/move-to-typescript",
        "description": "Learn how you can move your existing JavaScript project, step by step to TypeScript. All at your own pace and as much as you want. Even without doing any code changes.",
        "imageUrl": "./9aaeac54acbe5b3eae311e7c64788180ee89c9fc0a849a9ac9b0db41d7e0017c.jpg",
        "featured": false
      },
      {
        "title": "7 CSS properties you had no idea about",
        "url": "https://dev.to/tlakomy/7-css-properties-you-had-no-idea-about-4e75",
        "description": "An interesting collection of less-known CSS properties. Number 7 will probably SHOCK you... maybe! 😇",
        "imageUrl": "./9d985d9be3af9b35c76c62d429b5d25e4ed7a0c788b58be6ff3a402fb1436bc6.jpg",
        "featured": false
      },
      {
        "title": "React-spring visualizer, tweak your spring configuration",
        "url": "https://react-spring-visualizer.com/",
        "description": "The missing visualizer for your react-spring UI animations. Check scale, translate, rotate, opacity & more!",
        "imageUrl": "./a0e7b38eddedfb890df9e51b2cd02762a8f69fa4ab9c50d4911bec72b69dbc15.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 145,
    "title": "What You Probably Didn’t Know About Sudo",
    "slug": "2020-01-13-145-what-you-probably-didn-t-know-about-sudo",
    "date": "2020-01-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #2, 2020",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "What You Probably Didn’t Know About Sudo",
        "url": "https://aster.cloud/2019/12/17/what-you-probably-didnt-know-about-sudo",
        "description": "Sudo is not just a simple administrative tool for most Linux and BSD based systems, there is a lot more to it. This article explores some interesting sudo capabilities that you might not be aware of.",
        "imageUrl": "./ed85bab103a73d6d15e86e1fe9240b7f5e0faa43c8fba2814c2be79daccb5cb5.jpg",
        "featured": true
      },
      {
        "title": "aceakash/string-similarity",
        "url": "https://github.com/aceakash/string-similarity",
        "description": "A JavaScript library that allows you to find the degree of similarity between two strings. The algorithm is based on Dice's Coefficient, which is mostly better than Levenshtein distance.",
        "imageUrl": "./12b00bf8b5e5df9695911ba75e4ac00e9b29c1203f0d528b7a5c992f6fc0c658.jpg",
        "featured": false
      },
      {
        "title": "Memory Leaks Demystified",
        "url": "http://nodesource.com/blog/memory-leaks-demystified",
        "description": "Tracking down memory leaks in Node.js has been a recurring topic, and this article explores it in great detail.",
        "imageUrl": "./c56f16fdea775568720f4c19b2ffeec5563a9fd6bc34bd3888cceae252f287ac.jpg",
        "featured": false
      },
      {
        "title": "Writing AWS Lambda Functions in Rust",
        "url": "https://silentbyte.com/writing-aws-lambda-functions-in-rust",
        "description": "This article is intended to serve as a guide on how to write serverless AWS Lambda Functions in the Rust programming language and how to deploy them onto Amazon Web Services.",
        "imageUrl": "./4241ac053712fe6e7e2977d3c83f0e1e221e0eb92cd77a6c765a70629ec93d71.jpg",
        "featured": false
      },
      {
        "title": "Using easing for more than just CSS transitions",
        "url": "https://kilianvalkhof.com/2020/css-html/using-easing-for-more-than-just-css-transitions",
        "description": "We can define easing curves for the transitions and animations on our websites to give them a more natural and subtle feel. But it’s not just animations that benefit from easing curves. Let's see a couple of examples...",
        "imageUrl": "./e741bb120025227e075640658585b2a8011b73e59466d386ff8880b3855dd146.png",
        "featured": false
      },
      {
        "title": "Building a BitTorrent client from the ground up in Go",
        "url": "https://blog.jse.li/posts/torrent",
        "description": "What is the complete path between visiting thepiratebay and sublimating an mp3 file from thin air? In this post, we'll implement enough of the BitTorrent protocol in Go and use it to download a Debian image.",
        "imageUrl": "./70d2f72d6323d1529a35fd1ee565cb2d5eb5b82faf901a9ff20352b210e01e79.png",
        "featured": false
      },
      {
        "title": "Understanding filesystem takeover vulnerabilities in npm",
        "url": "https://snyk.io/blog/understanding-filesystem-takeover-vulnerabilities-in-npm-javascript-package-manager",
        "description": "On the 11th of December, 2019  a security vulnerability which extends to all major JavaScript package managers (npm, yarn and pnpm) was publicly disclosed. Learn how it works and what to do to keep yourself safe.",
        "imageUrl": "./102bec2a586901ab2bc942f74b2386af619e649de20d1395bf9c6b0253752a2f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 144,
    "title": "Why I moved from React to Svelte and others will follow",
    "slug": "2020-01-06-144-why-i-moved-from-react-to-svelte-and-others-will-follow",
    "date": "2020-01-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #1, 2020",
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "Why I moved from React to Svelte and others will follow",
        "url": "https://mikenikles.com/blog/why-i-moved-from-react-to-svelte-and-why-others-will-follow",
        "description": "A post about my React experience, why Svelte impressed me and code snippets to compare React with Svelte.",
        "imageUrl": "./eb4aa7a463fc31960fd7c2341ac59872ce7ca2e2b7af18cce882486ccd7c1304.jpg",
        "featured": true
      },
      {
        "title": "Why are my Go executable files so large?",
        "url": "https://cockroachlabs.com/blog/go-file-size",
        "description": "An interesting research from Cockroach labs on why Go executables tend to be particularly large and some tricks you can use to reduce their size.",
        "imageUrl": "./7578f756213952363db4de1107a389be58de61debd37a2a983707c0d998724b4.jpg",
        "featured": false
      },
      {
        "title": "imsnif/bandwhich",
        "url": "https://github.com/imsnif/bandwhich",
        "description": "A command-line bandwidth utilization tool (formerly known as \"what\") that will display which processes are eating all your bandwidth!",
        "imageUrl": "./683af3c4a1636194aba95d29e49d8aec42a396c88559b56d6adf7f63d2a178f8.jpg",
        "featured": false
      },
      {
        "title": "Implementing a Cuckoo Filter in Go",
        "url": "https://medium.com/@meeusdylan/implementing-a-cuckoo-filter-in-go-147a5f1f7a9",
        "description": "As an alternative to bloom filters, Cuckoo filters can help you with managing the membership problem in high cardinality sets. A Cuckoo Filter gives us the possibility to not only store items but also delete them from the filter without sacrificing on performance. In this post you will learn how to write a Cuckoo filter in Go.",
        "imageUrl": "./d8705ccc09193ade3ed6f9a29186baa6ea89c9e48ac690944df0b095d607ecd7.jpg",
        "featured": false
      },
      {
        "title": "How To Install Apache Kafka on Debian 10",
        "url": "https://digitalocean.com/community/tutorials/how-to-install-apache-kafka-on-debian-10",
        "description": "Apache Kafka is a popular distributed message broker designed to efficiently handle large volumes of real-time data. In this tutorial, you will install and configure Apache Kafka 2.1.1 securely on a Debian 10 server, then test your setup by producing and consuming messages.",
        "imageUrl": "./3a19aa62473dccf7fd11d03a117e86b0da507698be6c5089411a0a37135e4523.jpg",
        "featured": false
      },
      {
        "title": "Dealing with links in Next.js",
        "url": "https://blog.logrocket.com/dealing-with-links-in-next-js",
        "description": "Using Next.js as the example, we explain two techniques for isolating routing in your application, which will make it more resilient and easier to update.",
        "imageUrl": "./47d3387880a540baf34a5ff6a2125ca18bec1a6e8e8f54031c7c399e6c0601d5.jpg",
        "featured": false
      },
      {
        "title": "New Year, New Job? Let's Make a Grid-Powered Resume!",
        "url": "https://css-tricks.com/new-year-new-job-lets-make-a-grid-powered-resume",
        "description": "Many popular resume designs are making the most of the available page space by laying sections out in a grid shape. Let’s use CSS Grid to create a layout",
        "imageUrl": "./cbf0c1fa72813bf7150cf11564cbf2ec6a60a86e555b0f7feb54169884f700c4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 143,
    "title": "Modern makefiles used the right way in 2020",
    "slug": "2019-12-30-143-modern-makefiles-used-the-right-way-in-2020",
    "date": "2019-12-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #52, 2019",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Modern makefiles used the right way in 2020",
        "url": "https://medium.com/stack-me-up/using-makefiles-the-right-way-a82091286950",
        "description": "Makefiles the right way: why they are still relevant in 2020 and how you should take advantage of them!",
        "imageUrl": "./b804a6547475f528b8919eca1574fd83830cbaca84448095a9426812fe66ce5e.png",
        "featured": true
      },
      {
        "title": "Node.js multithreading",
        "url": "https://blog.logrocket.com/node-js-multithreading-what-are-worker-threads-and-why-do-they-matter-48ab102f8b10",
        "description": "Since the release of Node.js v10.5, multithreading has never been easier thanks to Worker Threads. In this article you will learn what exactly the worker thread module is and when you can take advantage of it.",
        "imageUrl": "./571813701f56d6a12ecbb2c3dd9432f0d461d6126dda44d22c49911f2b351ffd.jpg",
        "featured": false
      },
      {
        "title": "What Is JavaScript Made Of?",
        "url": "https://overreacted.io/what-is-javascript-made-of",
        "description": "This article delves into the lower level ideas of the JavaScript language: values, variables, objects, functions, closures, prototypes, etc. A very good guide to understand JavaScript a little bit better!",
        "imageUrl": "./362e7ac0d4faa40aae39e28f12af0f4a99553ee2ad2f9ab789e91196b8b1dd4a.jpg",
        "featured": false
      },
      {
        "title": "How tracking pixels work",
        "url": "https://jvns.ca/blog/how-tracking-pixels-work",
        "description": "How advertisers track people on the internet? You’re looking at a product online, and a day later see an ad for the same boots or whatever that you were looking at. This is called re-targeting and it is possible thanks to techniques such as tracking pixels.",
        "imageUrl": "./86184e050641e90ba883be0c4ac2fc0721fad73be220479b805e0dbf59a1d718.jpg",
        "featured": false
      },
      {
        "title": "Why npm lockfiles can be a security blindspot for injecting malicious modules",
        "url": "https://snyk.io/blog/why-npm-lockfiles-can-be-a-security-blindspot-for-injecting-malicious-modules",
        "description": "NPM lockfile are hard to review and they can be used to specify where the package source code is actually coming from. This is very dangerous and this article describes exactly how and what can you do to protect your project.",
        "imageUrl": "./6f80fefc042a94bfe576dd25f9e9fad622c892bae39b30df9252209e163e0bd9.jpg",
        "featured": false
      },
      {
        "title": "Progressive React",
        "url": "https://houssein.me/progressive-react",
        "description": "A checklist to improve React projects performance strep by step.",
        "imageUrl": "./33aa492be8076ea0ffbcb1acaf03668530fea0106eae2480cfd70917d2dcc092.jpg",
        "featured": false
      },
      {
        "title": "AWS permission escalation techniques",
        "url": "https://know.bishopfox.com/research/privilege-escalation-in-aws",
        "description": "Guide for security professionals performing AWS cloud security reviews or pen tests. These methods can be used in practice and explained clearly to clients.",
        "imageUrl": "./d963a94dbcd7cd3b7c2c014937a9f925c6e109ac2b9c13bedd1bd86dc53ffac2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 142,
    "title": "Neural Networks: Feedforward and Backpropagation Explained",
    "slug": "2019-12-23-142-neural-networks-feedforward-and-backpropagation-explained",
    "date": "2019-12-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #51, 2019",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "Neural Networks: Feedforward and Backpropagation Explained",
        "url": "https://mlfromscratch.com/neural-networks-explained",
        "description": "What is neural networks? Developers should understand backpropagation, to figure out why their code sometimes does not work. Visual and down to earth explanation of the math of backpropagation.",
        "imageUrl": "./f35ee43509a3ae7281841f4dd0c4d7409755a3cb4830fdc2f7ff25d66784d81f.jpg",
        "featured": true
      },
      {
        "title": "SQL Murder Mystery",
        "url": "http://mystery.knightlab.com/",
        "description": "Use SQL queries to solve the murder mystery. Suitable for beginners or experienced SQL sleuths.",
        "imageUrl": "./dd879bdcd9e40d9c56bd38ad1e354b3289dceb3e587c000044e313ab62c82dfe.jpg",
        "featured": false
      },
      {
        "title": "antonmedv/fx",
        "url": "https://github.com/antonmedv/fx",
        "description": "An amazing command-line tool to view and process JSON documents interactively.",
        "imageUrl": "./22ac30c139494c4db4323074bc7ebcda731622e018414ae9aac028baf647fd85.jpg",
        "featured": false
      },
      {
        "title": "How Shopify Manages API Versioning and Breaking Changes",
        "url": "https://engineering.shopify.com/blogs/engineering/shopify-manages-api-versioning-breaking-changes",
        "description": "A very interesting article describing how Shopify addresses the problem of evolving APIs introducing breaking changes and how do they manage versioning effectively.",
        "imageUrl": "./bc350d4bf18b9d000e659e4b30b6e3f72d28f800b5d3e98d0cab854dbd3bf60d.jpg",
        "featured": false
      },
      {
        "title": "Starship: Cross-Shell Prompt",
        "url": "https://starship.rs/",
        "description": "A minimal, blazing-fast, and extremely customizable prompt for any shell! Shows the information you need, while staying sleek and minimal. Quick installation available for Bash, Fish, ZSH, Ion, and Powershell.",
        "imageUrl": "./970a0384801bdb5c0deb1beb04ab46ae994fdedd9a39ec381b0fc24ec0faf2a0.jpg",
        "featured": false
      },
      {
        "title": "From zero to main(): Bare metal Rust",
        "url": "https://interrupt.memfault.com/blog/zero-to-main-rust-1",
        "description": "Bringing an embedded Rust application from zero to main()",
        "imageUrl": "./a0d7bfbc07b942e43d0ef8cc8cc618c389a0469121a1a94de11548f06eb42109.jpg",
        "featured": false
      },
      {
        "title": "Shave 99.93% off your Lambda bill with this one weird trick",
        "url": "https://medium.com/@hichaelmart/shave-99-93-off-your-lambda-bill-with-this-one-weird-trick-33c0acebb2ea",
        "description": "This article describes how the new AWS Lambda provisioned concurrency feature can, under certain conditions, make your Lambda much more efficient and, most importantly, cheap!",
        "imageUrl": "./68945bd9d16ffdbce737a03b9961842cca06425ba75fc81645177fec45136741.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 141,
    "title": "#141: What's New for Node.js in 2020",
    "slug": "2019-12-16-141-50-what-s-new-for-node-js-in-2020",
    "date": "2019-12-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #50, 2019",
    "quote": {
      "text": "In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg",
      "author": "Bjarne Stroustrup",
      "authorTitle": "Computer scientist and C++ inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Bjarne_Stroustrup"
    },
    "links": [
      {
        "title": "What's New for Node.js in 2020",
        "url": "https://developer.okta.com/blog/2019/12/04/whats-new-nodejs-2020",
        "description": "Node.js is changing in 2020, here are the updates to be on the lookout for!",
        "imageUrl": "./7f2b74033e931298358e48a8ec829fba7021c58e0929fd3dbb74e36b7e6e8c4e.jpg",
        "featured": true
      },
      {
        "title": "An Introduction to the Picture-in-Picture Web API",
        "url": "https://css-tricks.com/an-introduction-to-the-picture-in-picture-web-api",
        "description": "Picture-in-Picture made its first appearance on the web in the Safari browser with the release of macOS Sierra in 2016. It made it possible for a user to pop a video out into a small floating window that stays above all others, so that they can keep watching while doing other things.",
        "imageUrl": "./fa73b7afdfe1ab5b6201aa5ae9c6d6cfc78ff32de52a6abd7bf9a3915761c229.jpg",
        "featured": false
      },
      {
        "title": "How to Use New CSS “:is()” for Easy Element Targeting",
        "url": "https://webdesign.tutsplus.com/articles/new-css-is-for-easy-element-targeting--cms-34223",
        "description": "The new CSS :is() pseudo-class is shaping up to become a great way to target elements, saving on lines and lines of code, and keeping CSS as readable as possible.",
        "imageUrl": "./4d221051ac420553e4139213a4b737b6ea61c79d1b00459530063e2eb8b1a032.jpg",
        "featured": false
      },
      {
        "title": "Making a Better Custom Select Element",
        "url": "https://24ways.org/2019/making-a-better-custom-select-element",
        "description": "Nothing makes a more special gift at Christmas that something you’ve designed and customised yourself. But can it be done while staying accessible to every user?",
        "imageUrl": "./2bece2f7b2f9abf4e3e1af19e212c843a66e0b58bca09302278db0e4a64844f7.jpg",
        "featured": false
      },
      {
        "title": "Operation Go: A Routine Mission",
        "url": "https://gocode.io/operation-go",
        "description": "Play Operation Go, an interactive Golang programming game in the browser.",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      },
      {
        "title": "KilledByAPixel/JSONCrush",
        "url": "https://github.com/KilledByAPixel/JSONCrush",
        "description": "Compress JSON into URL friendly strings.",
        "imageUrl": "./94f2e53f19f1396542f24a0e48cd8b5a57b3e3bcacb696f9a3e079a37e9bb320.jpg",
        "featured": false
      },
      {
        "title": "Our Redux Anti Pattern",
        "url": "https://rangle.slides.com/yazanalaboudi/deck",
        "description": "In this talk, we will walk you through how Redux is an instance of a Publish/Subscribe (Pub/Sub) model. I’ll use that perspective to redefine what an \"Action\" should represent to enable scalability with ease. To benefit from this talk, you must have a fundamental understanding of Redux.",
        "imageUrl": "./5d0a4c04b064d4d556d399666709692cbea7ff217c83127e1509dfff11e4c56e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Docker in Action",
      "author": "Jeff Nickoloff",
      "description": "After starting with a clear explanation of the Docker model, you will learn how to package applications in containers, including techniques for testing and distributing applications. You will also learn how to run programs securely and how to manage shared resources. Using carefully designed examples, the book teaches you how to orchestrate containers and applications from installation to removal. Along the way, you'll discover techniques for using Docker on systems ranging from dev-and-test machines to full-scale cloud deployments.",
      "coverImageUrl": "./f7904cb457d00eac2148258f1c19521c542a8bdd85bebcf49fa71431fd10b07f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633430235/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633430235/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 140,
    "title": "Integrating Apache Kafka With Python Asyncio",
    "slug": "2019-12-09-140-integrating-apache-kafka-with-python-asyncio",
    "date": "2019-12-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #49, 2019",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "Integrating Apache Kafka With Python Asyncio",
        "url": "https://www.confluent.io/blog/kafka-python-asyncio-integration/",
        "description": "Python web applications can benefit a lot from language features such as coroutines and async/await. Non blocking IO changes the way incoming requests are serviced, but it is also useful when integrating with other systems like Kafka. This article shows how to combine Python asyncio with Kafka.",
        "imageUrl": "./dbdd02774b5c017f89d8be05118e56169e6831426ed98a66e9520e11b201bdce.png",
        "featured": true
      },
      {
        "title": "Webgl studio",
        "url": "https://github.com/jagenjo/webglstudio.js",
        "description": "webglstudio.js: A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more.",
        "imageUrl": "./c2fb4dc76dd94bfcd8a6b646de92a99fe4f93bc0b7eb3d6695a2a443b8447fde.jpg",
        "featured": false
      },
      {
        "title": "5 Things I love about Strapi, a Node.js headless CMS",
        "url": "https://jsmonday.dev/articles/44/5-things-i-love-about-strapi-a-node-js-headless-cms",
        "description": "Building high quality REST and GraphQL APIs is hard. But there's an easy way to get started in a few minutes.",
        "imageUrl": "./59f9eea002150ca851cca483b45c1e223abcb2a149da41543eab72dd6a617f2a.jpg",
        "featured": false
      },
      {
        "title": "The Service Mesh",
        "url": "https://servicemesh.io/",
        "description": "From the author of Linkerd, one of the most used service mesh technologies, this article attempt to describe what every software engineer needs to know about the World's most over-hyped technology.",
        "imageUrl": "./3b358040f0ca6983973574cb50f42038aa188c238804a4bce08ac5de2d9fbc66.jpg",
        "featured": false
      },
      {
        "title": "Understanding Streams in Node.js",
        "url": "http://nodesource.com/blog/understanding-streams-in-nodejs",
        "description": "Streams are one of the fundamental concepts that power Node.js applications. Check out this blog post to understand them!",
        "imageUrl": "./4bbe70af7d18bf14fd6076f4ec61b8924ca5399d6bc411d4a6b56726643b00aa.jpg",
        "featured": false
      },
      {
        "title": "Creepyface",
        "url": "https://creepyface.io/",
        "description": "The Javascript library that makes your face follow the pointer. Trust us it will look amazing in your website or in your CV!",
        "imageUrl": "./5db69f3489efd05627ff078b8950ea0e2d5719fd0883cc271de62fc5552027bd.jpg",
        "featured": false
      },
      {
        "title": "Promises From Scratch In A Post-Apocalyptic Future",
        "url": "https://youtube.com/watch?v=4GpwM8FmVgQ",
        "description": "In this installment of Low Level JavaScript we build a Promise implementation from scratch in order to understand exactly how asynchronous JavaScript code works and how promises make things easier to grasp.",
        "imageUrl": "./0eb09d7ec5958d98ff9781e41af5ff99059b77c6d5f7504119f793da960215f7.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 139,
    "title": "What Newspapers Can Teach Us About Web Design",
    "slug": "2019-12-02-139-what-newspapers-can-teach-us-about-web-design",
    "date": "2019-12-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #48, 2019",
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "What Newspapers Can Teach Us About Web Design",
        "url": "https://smashingmagazine.com/2019/11/newspapers-teach-web-design",
        "description": "Before the home page, there was the front page. From the Gutenberg Principle to grid systems to above the fold, newspapers teach us much about the foundations of web design.",
        "imageUrl": "./5c3a42fe4982270e1bd0ed1e33892731bc292dccecfc613133c23829cbbcd90f.jpg",
        "featured": true
      },
      {
        "title": "Design APIs: The Evolution of Design Systems",
        "url": "https://matthewstrom.com/writing/design-apis",
        "description": "An exporation of how an API for design decisions works.",
        "imageUrl": "./d78394073331fdb17bcbfd58ecd27a7227fc0c30262a28f7888eb7732e3ea852.jpg",
        "featured": false
      },
      {
        "title": "JavaScript in 2019",
        "url": "https://almanac.httparchive.org/en/2019/javascript",
        "description": "JavaScript chapter of the 2019 Web Almanac covering how much JavaScript we use on the web, compression, libraries and frameworks, loading, and source maps.",
        "imageUrl": "./bb92e829361b9c6d841462bc29c40cc660468d0b121f0e8cc042f38fbdcf8b6c.jpg",
        "featured": false
      },
      {
        "title": "Airbnb: How To Reduce Churn With Personalization",
        "url": "https://growth.design/case-studies/airbnb-personalization",
        "description": "See how Airbnb compares to alternative booking apps when it comes to personalization. Learn how to apply this to your product to reduce user churn.",
        "imageUrl": "./87ff7509859b6c28aa56af6278b9eca8bf060f5b879c67fc47c1fba76ebc4bb6.jpg",
        "featured": false
      },
      {
        "title": "The database of databases",
        "url": "https://dbdb.io/",
        "description": "Discover and learn about more than 600 new and old database management systems!",
        "imageUrl": "./be9ce1b559df1650e9f2b79d6f0ca2ecf7b5a313207098f28edac6a41c6a72d8.png",
        "featured": false
      },
      {
        "title": "Egnyte Architecture: building a multi petabyte content platform",
        "url": "http://highscalability.com/blog/2019/11/25/egnyte-architecture-lessons-learned-in-building-and-scaling.html",
        "description": "This article explores some of the lessons learned while building Egnyte, a content platform that can process petabytes of data.",
        "imageUrl": "./e3689c652341d869c5b417f19acbb718289d047263af71de3b6d028377d92b7b.jpg",
        "featured": false
      },
      {
        "title": "AWS Lambda: Real-World Use Cases for the DevOps Engineer",
        "url": "https://blog.thundra.io/aws-lambda-use-cases-for-devops-engineers",
        "description": "This post explores how AWS Lambda can reduce the operational overhead, costs and increase productivity through real world use cases for DevOps/SRE engineers.",
        "imageUrl": "./0d6521e456e63613b8b9e66f29318e93508ff169e6f3eaf7aac5ff7fcd725033.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 138,
    "title": "Kore - An easy to use web platform for C and Python",
    "slug": "2019-11-25-138-kore-an-easy-to-use-web-platform-for-c-and-python",
    "date": "2019-11-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #47, 2019",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Kore - An easy to use web platform for C and Python",
        "url": "https://kore.io/",
        "description": "Kore is an easy to use web platform for writing scalable, concurrent APIs in C or Python.\nIts primary goals are security, scalability and allowing rapid development and deployment of such APIs.\nBecause of this Kore is an ideal candidate for building robust, scalable and secure web things.",
        "imageUrl": "./f33cbe802ae52248d62964f5dd7ce39d2f6bdef6a18fb07f0f2b97db46056293.png",
        "featured": true
      },
      {
        "title": "Uncommon Use Cases For CSS Pseudo Elements",
        "url": "http://ishadeed.com/article/unusual-use-cases-pseudo-elements",
        "description": "Pseudo-elements are in use for a long time. However, there are some uses cases that are not entirely known across developers.",
        "imageUrl": "./61c980c902fc64db2ec1edd3d876d0e6e94351fd77372f0617c6a7ad7b718b36.jpg",
        "featured": false
      },
      {
        "title": "Getting Started with GraphQL",
        "url": "https://davidwalsh.name/getting-started-with-graphql",
        "description": "Since open-sourcing GraphQL specification in 2015, it gained a lot of popularity and is now used by many development teams, including giants like GitHub, Twitter or Airbnb. Why so? And what exactly is a GraphQL query? Let's take a look…",
        "imageUrl": "./b1becd27a4b1dd1f7739f79ac233b986b6f2932ca7d3ea4b82318f5d00965728.jpg",
        "featured": false
      },
      {
        "title": "Multi-Value All The Wasm",
        "url": "https://hacks.mozilla.org/2019/11/multi-value-all-the-wasm",
        "description": "Multi-value is a proposed extension to core WebAssembly that enables functions to return many values, among other things. It is also a prerequisite for Wasm interface types.",
        "imageUrl": "./c39690830c193d016c2839bac6261f712c2faef60f6beed6d70c4e40d3cb555c.jpg",
        "featured": false
      },
      {
        "title": "Fabric.js Tutorial: Objects and Complex Shapes",
        "url": "https://codingsans.com/blog/fabricjs-tutorial",
        "description": "Fabric.js is a drawing library for JavaScript built on top of canvas element. This Fabric.js tutorial shows you how to draw shapes and scale objects.",
        "imageUrl": "./75a66e6e37a9c576108dad2cd097fca06aa8fdb89e6d6b2ced52eff42cd0408a.jpg",
        "featured": false
      },
      {
        "title": "Thoughts on Error Handling in Rust",
        "url": "http://lukaskalbertodt.github.io/2019/11/14/thoughts-on-error-handling-in-rust.html",
        "description": "An opinionated article on the current state of error handling and error handling crates in the Rust language and the Rust community. Absolutely interesting if you are currently learning Rust.",
        "imageUrl": "./c56f16fdea775568720f4c19b2ffeec5563a9fd6bc34bd3888cceae252f287ac.jpg",
        "featured": false
      },
      {
        "title": "Compile-time Immutability in TypeScript",
        "url": "https://sitepoint.com/compile-time-immutability-in-typescript",
        "description": "James Wright explores the possibilities for using constructs to achieve compile-time immutability in TypeScript with const assertions and recursive types.",
        "imageUrl": "./fecfb1138ae21d7da698b310dd27f12cd4dc52a76501d94bdfd28eea1b32891c.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 137,
    "title": "Binary Space Partitioning in Doom",
    "slug": "2019-11-18-137-binary-space-partitioning-in-doom",
    "date": "2019-11-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #46, 2019",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Binary Space Partitioning in Doom",
        "url": "https://twobithistory.org/2019/11/06/doom-bsp.html",
        "description": "A short history of the data structure that powered the classic first-person shooter.",
        "imageUrl": "./0033c87ffde04fb91033f75555391b390fc054dd72fe469dc03aae5432208ed4.png",
        "featured": true
      },
      {
        "title": "The secure and composable future of WebAssembly",
        "url": "https://hacks.mozilla.org/2019/11/announcing-the-bytecode-alliance",
        "description": "Lin Clark introduces the Bytecode Alliance, and uses Code Cartoon illustrations to share their vision of a WebAssembly ecosystem that is secure and composable by default.",
        "imageUrl": "./1903e79877dc5722e15eb3bb473cc0c11f4074439451172db05b7461c44f5b8f.jpg",
        "featured": false
      },
      {
        "title": "Generating PDFs with Node",
        "url": "https://buttercms.com/blog/generating-pdfs-with-node",
        "description": "What would we do without PDFs? It’s the safest, most secure way of storing visual information, and it’s accessible on every major platform in the world. In this article you will learn different ways to generate PDFs using Node.js.",
        "imageUrl": "./10a660d0c8260e0d3db43a21c3685e751a66493a42a71f41fb827dddc1ba57d8.jpg",
        "featured": false
      },
      {
        "title": "Things You Didn't Know About GNU Readline",
        "url": "https://twobithistory.org/2019/08/22/readline.html",
        "description": "GNU Readline was originally created in the 1980s by the Free Software Foundation. Today, it is an important if invisible part of everyone’s computing infrastructure, maintained by a single volunteer.",
        "imageUrl": "./7622eece5ab58de400766300ad8132603157793390e44d32bb277e1e9a4bd2dd.jpg",
        "featured": false
      },
      {
        "title": "Building Distributed Systems with Node.js",
        "url": "https://youtube.com/watch?v=GUtd-zEDgjQ",
        "description": "In this amazing talk from Nordic.js 2019, James Simpson explains how to use Node.js to build fantastic distributed systems. A must watch if you are into Node.js or distributed systems (or both)!",
        "imageUrl": "./d50111456a9f16b2c440b59e0f5f48eca8e3bf1c9537a634925da8b16b100078.jpg",
        "featured": false
      },
      {
        "title": "12 uncommon ways to invoke your serverless functions on AWS",
        "url": "https://medium.com/hackernoon/how-to-faas-like-a-pro-12-uncommon-ways-to-invoke-your-serverless-functions-on-aws-part-3-2ae2b8def4d7",
        "description": "This article discusses and showcases some less common ways to invoke serverless functions in AWS.",
        "imageUrl": "./783d0116637ea3960e6d4769632d97da7f8455ad629e41ea156d06e3b5686fed.jpg",
        "featured": false
      },
      {
        "title": "10 Best monospace programming fonts with ligatures",
        "url": "https://slant.co/topics/5611/~monospace-programming-fonts-with-ligatures",
        "description": "Fira Code, Hasklig, and Iosevka are probably your best bets out of the 10 options considered. \"Many ligatures supported\" is the primary reason people pick Fira Code over the competition. This page is powered by a knowledgeable community that helps you make an informed decision.",
        "imageUrl": "./bf1493b10f747cd1e9c414b0b043d5fe0577641eddc94f01621a7aeed7344356.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 136,
    "title": "htop explained",
    "slug": "2019-11-11-136-htop-explained",
    "date": "2019-11-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #45, 2019",
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible",
      "author": "Alvin Toffler",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "htop explained",
        "url": "https://peteris.rocks/blog/htop",
        "description": "Explanation of everything you can see in htop/top on Linux",
        "imageUrl": "./bc66adef568bd3e47c078b3b4a65edf609d0e0b18af6c27933447276342f431d.jpg",
        "featured": true
      },
      {
        "title": "SSH Handshake Explained",
        "url": "https://gravitational.com/blog/ssh-handshake-explained",
        "description": "Secure Shell (SSH) is a widely used Transport Layer Protocol to secure connections between clients and servers. In this article, we walk through how SSH really works.",
        "imageUrl": "./75a66e6e37a9c576108dad2cd097fca06aa8fdb89e6d6b2ced52eff42cd0408a.jpg",
        "featured": false
      },
      {
        "title": "Developing and deploying Node.js apps in Kubernetes",
        "url": "https://learnk8s.io/nodejs-kubernetes-guide",
        "description": "Learning how to design and architect applications that leverage Kubernetes is the most valuable skill that you could learn to be successful in deploying and scaling your traffic to millions of requests and beyond.",
        "imageUrl": "./28fc98387c60c5e13ddd65fea2c090e1a019c9e9f14c20e1525408380ebfb053.jpg",
        "featured": false
      },
      {
        "title": "The Svelte Handbook",
        "url": "https://freecodecamp.org/news/the-svelte-handbook",
        "description": "Quickly learn Svelte and get familiar with how it works.",
        "imageUrl": "./2a2e9550cd93112e340ef0e3a2aa446d151afd8fdbcb86ff9ae32aa3c57881c5.jpg",
        "featured": false
      },
      {
        "title": "Hacking JSON Web Tokens (JWTs)",
        "url": "https://medium.com/swlh/hacking-json-web-tokens-jwts-9122efe91e4a",
        "description": "Some of the ways attackers can forge JWT tokens to corrupt systems or log in as someone else.",
        "imageUrl": "./ae6734a2966ccc4e630432f17c4b1772b2dcfae8d153bd4b7e42c1149c9c05d7.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Promises: Zero To Hero",
        "url": "https://medium.com/dailyjs/javascript-promises-zero-to-hero-plus-cheat-sheet-64d75051cffa",
        "description": "Native JavaScript promises explained how I wish they were explained to me — plus a handy cheat sheet.",
        "imageUrl": "./4b7d2a649d9b3165332d221942ff830647167d3410d5219c6402a0b584e4411c.jpg",
        "featured": false
      },
      {
        "title": "The Five Senses of UX",
        "url": "https://medium.com/hubspot-product/the-five-senses-of-ux-447968f62760",
        "description": "We build better experiences when we’re more fully alive to how our users are feeling and engaging with the product we build.",
        "imageUrl": "./f422899dcff08a43c545ce4ef6bf85ba46b8919f1f86c37a05adec9b455d38d2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Second Edition",
      "author": "Mario Casciaro and Luciano Mammino",
      "description": "Get the best out of Node.js by mastering  its most powerful components and patterns to create modular and scalable applications with ease. Create reusable patterns and modules by leveraging the new features of Node.js. Understand  the asynchronous single thread design of node and grasp all its features and patterns to take advantage of various functions. This unique guide will help you get the most out of Node.js and its ecosystem.",
      "coverImageUrl": "./374eb1f17899892bde81fb2a441759d118834d10c4a0c7dbcac5aed5fa2cfa8f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785885588/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785885588/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 135,
    "title": "Introducing React Concurrent Mode",
    "slug": "2019-11-04-135-introducing-react-concurrent-mode",
    "date": "2019-11-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #44, 2019",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "Introducing React Concurrent Mode",
        "url": "https://reactjs.org/docs/concurrent-mode-intro.html",
        "description": "The React team recently announced Concurrent Mode, a set of experimental features that help React apps stay responsive and gracefully adjust to the user’s device capabilities and network speed.",
        "imageUrl": "./747e3af716ef814b1651d0c03fc355d4f8b5d0d26430e08cb9714d97822862f8.jpg",
        "featured": true
      },
      {
        "title": "GRID: A simple visual cheatsheet for CSS Grid Layout",
        "url": "http://grid.malven.co/",
        "description": "Learn all about the properties available in CSS Grid Layout through simple visual examples.",
        "imageUrl": "./82bc9584f980187e244dedd1ed025b21e63ab7671e44a65ed85a346d22f0a401.jpg",
        "featured": false
      },
      {
        "title": "HTMHell - Markup from hell",
        "url": "https://htmhell.dev/",
        "description": "A collection of bad practices in HTML, copied from real websites. A very good throw back just after Halloween 🎃",
        "imageUrl": "./ed2f1fe8433af9073ce67cc0ff068da17fb6be35f722af4bd8785441226e6215.jpg",
        "featured": false
      },
      {
        "title": "What Developers Should Actually Learn In College",
        "url": "https://cdevn.com/what-developers-should-actually-learn-in-college",
        "description": "Values of lines of code, good or bad languages, reading other people's code, perfect coding, upskilling at work and a bunch of other important things that your professor won't tell you.",
        "imageUrl": "./00fd55a7ae9b4fd824e1293f6b790ab0c669bc07d2872de4d6aaaab92c4d209f.png",
        "featured": false
      },
      {
        "title": "SWR: React Hooks for Remote Data Fetching",
        "url": "https://swr.now.sh/",
        "description": "SWR is a React Hooks library for remote data fetching. SWR first returns the data from cache (stale), then sends the fetch request (revalidate), and finally comes with the up-to-date data again.",
        "imageUrl": "./297bdcc443dac1320958f915d428deeccbb16e7ec995767e8a671dda3381c343.jpg",
        "featured": false
      },
      {
        "title": "Getting started with security keys",
        "url": "https://paulstamatiou.com/getting-started-with-security-keys",
        "description": "How to stay safe online and prevent phishing with FIDO2, WebAuthn and security keys. A look into YubiKeys, TOTP authenticator apps, passwordless and more.",
        "imageUrl": "./2a5830486350a6c7660ac502cf6923b3cecbd15f63d1dd2db3259d5b70c5d190.jpg",
        "featured": false
      },
      {
        "title": "Migrate Your AWS Lambda Functions to Kubernetes with OpenFaaS",
        "url": "https://openfaas.com/blog/lambda-to-openfaas",
        "description": "Burton explains the steps for migrating an existing AWS Lambda function to OpenFaaS and Kubernetes to gain portability and additional functionality.",
        "imageUrl": "./89b0ba391a61eb23cab9aace35d1478e4498a5bc5f212139c09c9c739a4dd06d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 134,
    "title": "Creating a custom focus style",
    "slug": "2019-10-28-134-creating-a-custom-focus-style",
    "date": "2019-10-28",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2019",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "Creating a custom focus style",
        "url": "https://zellwk.com/",
        "description": "How to create (and change) a focus style easily with CSS.",
        "imageUrl": "./61400c5ebce3e2f4c13b9bda039a1d889db45c695c002669558ff25eed075ed6.jpg",
        "featured": true
      },
      {
        "title": "A cartoon intro to DNS over HTTPS",
        "url": "https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https",
        "description": "A very friendly explanation about how DNS and HTTP work and how Trusted Recursive Resolver (TRR) and DNS over HTTPS (DoH) can help to make the web more secure!",
        "imageUrl": "./dac17252f5e26bb5bcbb1bd3cf94a503adfcb4d82d3db890980f489a21b0ca10.jpg",
        "featured": false
      },
      {
        "title": "Don't get locked up into avoiding lock-in",
        "url": "https://martinfowler.com/articles/oss-lockin.html",
        "description": "Lock-in is an important consideration. But, it's not a simple black-or-white affair, and minimizing isn't always best.",
        "imageUrl": "./d073a2dd280d467739f99fe38329ba12ab840198b2c795fc13637862d29f912d.jpg",
        "featured": false
      },
      {
        "title": "An Illustrated Guide to OAuth and OpenID Connect",
        "url": "https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc",
        "description": "A very fun illustrated guide to explain OAuth and OpenID Connect!",
        "imageUrl": "./5ee9c10ceed7738ba2bf61179ac96134a9b7e59453863bd73cc11c17bcd24eb5.jpg",
        "featured": false
      },
      {
        "title": "Designing accessible color systems",
        "url": "https://stripe.com/gb/blog/accessible-color-systems",
        "description": "How Stripe designed a color system with hand-picked, vibrant colors that also met standards for accessibility and contrast.",
        "imageUrl": "./c48bd1b8e3e80046756e75d926057f62f1337ca74742a45a0864be290f6c0409.jpg",
        "featured": false
      },
      {
        "title": "How Youtube is recommending your next video",
        "url": "https://medium.com/vantageai/how-youtube-is-recommending-your-next-video-7e5f1a6bd6d9",
        "description": "In a recent paper published by Google, they give some insight in how they recommend new videos on youtube.",
        "imageUrl": "./88f1f5b82eac6294098431c005450a6187999adf1fa5d655327667296bdc1b29.jpg",
        "featured": false
      },
      {
        "title": "How Bash completion works",
        "url": "https://tuzz.tech/blog/how-bash-completion-works",
        "description": "Ever wondered how Bash completion works? In this first article on the topic, we’ll look at how it works under the hood.",
        "imageUrl": "./f8636a6385afab5f099fa786cdb859ca25b3e850e5f0084c5ccbbb93416c7de8.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 133,
    "title": "Announcing Ionic React",
    "slug": "2019-10-21-133-announcing-ionic-react",
    "date": "2019-10-21",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #42, 2019",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Announcing Ionic React",
        "url": "https://ionicframework.com/blog/announcing-ionic-react",
        "description": "Ionic React is a native React version of Ionic Framework that makes it easy to build apps for iOS, Android, Desktop, and the web as a Progressive Web App. All with one code base, standard React development patterns and using the standard react-dom library and huge ecosystem around the web platform.",
        "imageUrl": "./d0bd00cdb1a77569eaaa5c5fde6ed69c0a72edf3cc25db253eaffae1c6e36a7a.jpg",
        "featured": true
      },
      {
        "title": "Making Instagram.com faster",
        "url": "https://instagram-engineering.com/making-instagram-com-faster-part-3-cache-first-6f3f130b9669",
        "description": "Some insights on the caching strategies adopted by Instagram to make their website more performant.",
        "imageUrl": "./3f59aa261ff0495d5ac179da789a0ca2cfd4ead0d97d60f1c903616542f3bb9b.jpg",
        "featured": false
      },
      {
        "title": "The Unix Game",
        "url": "https://unixgame.io/unix50",
        "description": "An online programming contest developed by Nokia Bell Labs in honor of the 50th anniversary of Unix. It features Unix-related questions that you must solve by combining the original Unix commands using Unix pipes.",
        "imageUrl": "./362e7ac0d4faa40aae39e28f12af0f4a99553ee2ad2f9ab789e91196b8b1dd4a.jpg",
        "featured": false
      },
      {
        "title": "Serverless Functions for Kubernetes",
        "url": "https://fission.io/",
        "description": "Fission is a framework for serverless functions on Kubernetes. Write short-lived functions in any language, and map them to HTTP requests (or other event triggers). Deploy functions instantly with one command. There are no containers to build, and no Docker registries to manage.",
        "imageUrl": "./9aa9a4c70b72cab592966c91a44565498d07a1d9c9689559cca03dab616ad9e8.jpg",
        "featured": false
      },
      {
        "title": "Design System Playground",
        "url": "https://design-system-playground.netlify.com/",
        "description": "Play with typography, colors and themeable components in your design system.",
        "imageUrl": "./0741addeffdb52ab5e664f2eeb8e48243fd328ed72e448d82a8d847e42952773.jpg",
        "featured": false
      },
      {
        "title": "uPlot",
        "url": "https://github.com/leeoniya/uPlot",
        "description": "A fast, memory-efficient time series chart based on Canvas 2D; It can create an interactive chart containing 150,000 data points in 40ms. In addition to fast initial render, the zooming and cursor performance is very fast and it doesn't require WebGL shaders or WASM.",
        "imageUrl": "./023b0a0ef31b58f29b981e42f5a37e565cff49414fb3593a3507e70f16fe0a99.png",
        "featured": false
      },
      {
        "title": "Build Command-Line Spinners in Node.js",
        "url": "https://blog.bitsrc.io/build-command-line-spinners-in-node-js-3e432d926d56",
        "description": "Practice your Node.js-terminal skills by building your own CLI spinners.",
        "imageUrl": "./693bac5258164525a447bdc011f94a3e701b795f7063f36131110130b080f9ca.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 132,
    "title": "Same app in React and Vue",
    "slug": "2019-10-14-132-same-app-in-react-and-vue",
    "date": "2019-10-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #41, 2019",
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "Same app in React and Vue",
        "url": "https://medium.com/javascript-in-plain-english/i-created-the-exact-same-app-in-react-and-vue-here-are-the-differences-2019-edition-42ba2cab9e56",
        "description": "React vs Vue. Finally, a side-by-side code comparison between Vue and React (updated for 2019 with React Hooks).",
        "imageUrl": "./ac395c32128d4b0644c605eb95638531c09e96e8b086164118f16b6e228b5249.jpg",
        "featured": true
      },
      {
        "title": "SQL queries don't start with SELECT",
        "url": "https://jvns.ca/blog/2019/10/03/sql-queries-don-t-start-with-select",
        "description": "Well at least from the perspective of the execution engine... This article delves into a clear explanation of how SELECT queries are actually executed and what's the priority of the different statements that might be contained in it.",
        "imageUrl": "./c56f16fdea775568720f4c19b2ffeec5563a9fd6bc34bd3888cceae252f287ac.jpg",
        "featured": false
      },
      {
        "title": "Timsort",
        "url": "https://hackernoon.com/timsort-the-fastest-sorting-algorithm-youve-never-heard-of-36b28417f399",
        "description": "Timsort is a very fast, O(n log n), stable sorting algorithm built for the real world  which powers the default behaviour of many programming languages. It's deemed to be one of the fastest algorithms in most real-life use cases!",
        "imageUrl": "./987f53d13612197866163c4e0d18b5747943676b5676c5a3b6d073af9e064ce2.jpg",
        "featured": false
      },
      {
        "title": "Design Systems for Developers",
        "url": "https://learnstorybook.com/design-systems-for-developers",
        "description": "Discover how to build and maintain real-life design systems using Storybook.",
        "imageUrl": "./24fe6126b72874bb4e9fe427214850362769f673b27bc92c08aa091dcfa00d8e.jpg",
        "featured": false
      },
      {
        "title": "React Hook Form",
        "url": "https://react-hook-form.com/",
        "description": "A performant, flexible and extensible React (and React Native!) forms library with easy to use for validation.",
        "imageUrl": "./7a8d5dbc31f5a44b75a91cfd5a6a4fdeca30cc127ec4526aa3e9c270c3022c8e.jpg",
        "featured": false
      },
      {
        "title": "Build a PWA Using Only Vanilla JavaScript",
        "url": "https://levelup.gitconnected.com/build-a-pwa-using-only-vanilla-javascript-bdf1eee6f37a",
        "description": "You don't necessarily need fancy frameworks to build PWAs. This step-by-step articles shows you how to build a Progressive Web App by just using vanilla JavaScript. In the process you will learn many useful details about PWAs.",
        "imageUrl": "./437888afa7c51295344bf3bd0792ea871df30cbaa6fa98fbc8ba2a038c6ee4fd.jpg",
        "featured": false
      },
      {
        "title": "Images done right: Web graphics, good to the last byte",
        "url": "https://evilmartians.com/chronicles/images-done-right-web-graphics-good-to-the-last-byte-optimization-techniques",
        "description": "Start taking graphics on the web seriously and boost your applications' performance by learning the essentials about digital image formats.",
        "imageUrl": "./8e5ec81c7034acb0515d0856cf725aa23880ef982a0f6c5ed1d0bf968fe08664.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 131,
    "title": "What happens if you invest in developing your people and they leave?",
    "slug": "2019-10-07-131-what-happens-if-you-invest-in-developing-your-people-and-the",
    "date": "2019-10-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #40, 2019",
    "quote": {
      "text": "Should array indices start at 0 or 1?  My compromise of 0.5 was rejected without, I thought, proper consideration",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "What happens if you invest in developing your people and they leave?",
        "url": "https://linkedin.com/pulse/20140528191427-10197807-what-happens-if-you-invest-in-developing-your-people-and-they-leave",
        "description": "If and when some people leave your organization- does that mean you wasted your training and development dollar?\nIn an age when 70% of the workforce is disengaged, you can’t afford not to invest in the personal and professional development of everyone in your organization.",
        "imageUrl": "./e084fffbe89d4a82f16230bfae17a6a2e7d07fdcdb29f5d2b27e02b1efa2699a.jpg",
        "featured": true
      },
      {
        "title": "🔥 Design Tips",
        "url": "https://twitter.com/i/moments/994601867987619840",
        "description": "A brilliant collection of web design tips in a beautiful sequence of Twitter images!",
        "imageUrl": "./b6a7c9f55a3c26a24394d4232fab8a51e5ccea9d9304313f3bf5bb05e57a0266.png",
        "featured": false
      },
      {
        "title": "Comparing Database Types",
        "url": "https://prisma.io/blog/comparison-of-database-models-1iz9u29nwn37",
        "description": "Many types of databases exist, each with their own benefits. In this guide, we'll compare the relational, document, key-value, graph, and wide-column databases and talk about what each of them offer.",
        "imageUrl": "./e369ea9cda02f37f49554ba87713f1e130f3bc8b20ded6f6b442eeadcdcd4720.jpg",
        "featured": false
      },
      {
        "title": "37 Exceptional Font Pairings Trends",
        "url": "https://niceverynice.com/blog/font-pairings",
        "description": "You must be updated with the latest trends in typography if you want amazing branding and designs. Check out popular font pairings that work well together.",
        "imageUrl": "./1a07b18bc59461e42456cfa88503e81517d71460ce1cc6d17f852731953a8fda.jpg",
        "featured": false
      },
      {
        "title": "They can't hack your servers if you don't have any servers, right?",
        "url": "https://dev.to/mattchenderson/they-can-t-hack-your-servers-if-you-don-t-have-any-servers-right-246a",
        "description": "Serverless does a lot, but it doesn’t make your app invulnerable. This article will explore common pitfalls of serverless architectures and how to start thinking about security in a serverless world.",
        "imageUrl": "./1402f00ccc346294e38b774b1c7cdc443a03162d0b295852152af4ceb03ab292.jpg",
        "featured": false
      },
      {
        "title": "The Art of Ecommerce",
        "url": "https://sidesupply.com/guides/art-of-ecommerce",
        "description": "Insights into building a direct to consumer brand or online e-commerce businesses.",
        "imageUrl": "./ac04f928a1469fc137748b549055f5a40037fa95d12172bef5e9faa57b010937.jpg",
        "featured": false
      },
      {
        "title": "Don't Sync State. Derive It!",
        "url": "https://kentcdodds.com/blog/dont-sync-state-derive-it",
        "description": "How to avoid state synchronization bugs and complexity with derived state.",
        "imageUrl": "./a8c3088b21587710978ccc2360fe3a1512d57a17fb90bed3590538ce6a031e0b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor.  Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 130,
    "title": "Inconsistent behavior among browsers when clicking on buttons",
    "slug": "2019-09-30-130-inconsistent-behavior-among-browsers-when-clicking-on-button",
    "date": "2019-09-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #39, 2019",
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Inconsistent behavior among browsers when clicking on buttons",
        "url": "https://zellwk.com/",
        "description": "Browsers seem to be inconsistent in how they handle a click on a button element. Some browsers choose to focus on the button. Some browsers don't. Check out this interesting article if you are curious to know more about \"yet another browser weirdness\".",
        "imageUrl": "./0741addeffdb52ab5e664f2eeb8e48243fd328ed72e448d82a8d847e42952773.jpg",
        "featured": true
      },
      {
        "title": "React Router v5.1",
        "url": "https://reacttraining.com/blog/react-router-v5-1/",
        "description": "React Router 5.1 has recently been released and it comes packed with a lot of interesting changes. This new edition tries to incorporate learnings from **@reach/router** and it also brings new hooks like **useParams** and **useLocation**. Check out this article to learn about all the new shiny feature you can take advantage of.",
        "imageUrl": "./62e7369a93fbbd7acccde0071e5478e71caa48664337516d39fa2cf7c2e2e9e2.jpg",
        "featured": false
      },
      {
        "title": "Practical Ways to Write Better JavaScript",
        "url": "https://stackoverflow.blog/2019/09/12/practical-ways-to-write-better-javascript",
        "description": "There are lots of simple things you can do to improve at JavaScript. Here are some methods we use to write better JS.",
        "imageUrl": "./bc70a553aa304089e46f303f3bdfa4eae2cfcf2d44b7954c0f1d51810499c2e6.jpg",
        "featured": false
      },
      {
        "title": "Moving beyond console.log()",
        "url": "https://levelup.gitconnected.com/moving-beyond-console-log-8-console-methods-you-should-use-when-debugging-javascript-and-node-25f6ac840ada",
        "description": "8 Console Methods You Should Use When Debugging JavaScript and Node.js.",
        "imageUrl": "./ce5be3916377030630f6eb00c7f6c204e77cb7f81a820cd79e7130083b84a3a0.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Iterators and Generators: Asynchronous Generators",
        "url": "https://dev.to/jfet97/javascript-iterators-and-generators-asynchronous-generators-2n4e",
        "description": "All you should need to know about JavaScript Iteration protocol and Asynchronous Generators in 4 articles!",
        "imageUrl": "./e6b69c59aba9fb2cea3fe1f9e48211b94e650114b7c0c6d854e7185ad9ad1bad.jpg",
        "featured": false
      },
      {
        "title": "Nim language, v1.0 released",
        "url": "https://nim-lang.org/blog/2019/09/23/version-100-released.html",
        "description": "The Nim Team is very proud and happy to announce the much-anticipated version 1.0 of the language which makes it finally stable and good to be used for your next project.",
        "imageUrl": "./c6085abe10a8f451b250082e6a4ce4634ffc378824669f5e936afb9b0b881550.jpg",
        "featured": false
      },
      {
        "title": "A Senior Engineer's CheckList",
        "url": "https://littleblah.com/post/2019-09-01-senior-engineer-checklist",
        "description": "A simple checklist, and while it is useful to any software engineer, it is especially useful to senior engineers as they need to be more aware of what to do to help the business and the colleagues grow every day.",
        "imageUrl": "./75a66e6e37a9c576108dad2cd097fca06aa8fdb89e6d6b2ced52eff42cd0408a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 129,
    "title": "Evolving “nofollow” – new ways to identify the nature of links",
    "slug": "2019-09-23-129-evolving-nofollow-new-ways-to-identify-the-nature-of-links",
    "date": "2019-09-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #38, 2019",
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "Evolving “nofollow” – new ways to identify the nature of links",
        "url": "https://webmasters.googleblog.com/2019/09/evolving-nofollow-new-ways-to-identify.html",
        "description": "Google announces two new link attributes that provide webmasters with additional ways to identify to Google Search the nature of particular links. In this article you will discover how to take advantage of *rel=\"sponsored\"* and *rel=\"ugc\"*.",
        "imageUrl": "./e75a5c7969f2eab859007ce069f000bc36995a51a7ac75e9f13f3018025094bb.jpg",
        "featured": true
      },
      {
        "title": "Learning Machine Learning",
        "url": "https://cloud.google.com/products/ai/ml-comic-1",
        "description": "A wonderful comic by Google Cloud to understand what machine learning really is and what kind of problems it is trying to solve.",
        "imageUrl": "./176f08b3c629c8ed08eb29532be5a3e52ed81fb44c210da4c7568073fa3758f6.jpg",
        "featured": false
      },
      {
        "title": "Machine Learning For Front-End Developers With Tensorflow.js",
        "url": "https://smashingmagazine.com/2019/09/machine-learning-front-end-developers-tensorflowjs",
        "description": "Using JavaScript and frameworks like Tensorflow.js is a great way to get started and learn more about machine learning. In this article, Charlie Gerard covers the three main features currently available using Tensorflow.js and sheds light onto the limits of using machine learning in the frontend.",
        "imageUrl": "./ca8ffc6e690bde85f150279ef6a5097a90e2a2c93ba4655185a8fd4d531e7516.jpg",
        "featured": false
      },
      {
        "title": "Announcing Maesh, a Lightweight and Simpler Service Mesh",
        "url": "https://blog.containo.us/announcing-maesh-a-lightweight-and-simpler-service-mesh-made-by-the-traefik-team-cb866edc6f29",
        "description": "Maesh is a new service mesh designed from the ground up to be straightforward, easy to install and easy to use. It comes from the same team that already developed traefik!",
        "imageUrl": "./74ed24d638bf573412bd09485eab738cefa16fba379d7df5933a09a467b683e8.jpg",
        "featured": false
      },
      {
        "title": "Dark Mode — Working with Color Systems",
        "url": "https://medium.com/nodesdigital/dark-mode-working-with-color-systems-e73aeab8dbae",
        "description": "Apple and Google are both pushing Dark Modes to they newest OS’s. This is how to get your product ready for it.",
        "imageUrl": "./033b7b5a87199344b0edaf2bac5074e68bf6e2d30588fe1d72f269a51519f3f0.jpg",
        "featured": false
      },
      {
        "title": "Contemporary Front-end Architectures",
        "url": "https://blog.webf.zone/contemporary-front-end-architectures-fb5b500b0231",
        "description": "How we got here? A front-end engineer’s perspective!",
        "imageUrl": "./56ecf009d0d19b0616ff242961fb39c9b199124c6c61d97aefc8a43d6cd6a7c3.jpg",
        "featured": false
      },
      {
        "title": "Two Browsers Walked Into a Scrollbar",
        "url": "https://filamentgroup.com/lab/scrollbars",
        "description": "A very interesting essay on the roal and the evolution of the scrollbar on the web.",
        "imageUrl": "./61400c5ebce3e2f4c13b9bda039a1d889db45c695c002669558ff25eed075ed6.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 128,
    "title": "Usage Share of Internet Browsers from 1996",
    "slug": "2019-09-16-128-usage-share-of-internet-browsers-from-1996",
    "date": "2019-09-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #37, 2019",
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "Usage Share of Internet Browsers from 1996",
        "url": "https://reddit.com/r/dataisbeautiful/comments/cxuah9/usage_share_of_internet_browsers_1996_2019_oc",
        "description": "A mind-bogging animation that shows the \"browser war\" for market share from 1996 to these days. Really interesting to see how trends have been shifting and if you have been around the dev block for a while, you might have some nice feeling watching this.",
        "imageUrl": "./fa710733adbd666dca788b1e60aebb0e5868e225802cf44b58cafd51325a8ad1.jpg",
        "featured": true
      },
      {
        "title": "Cytoscape.js",
        "url": "https://js.cytoscape.org/",
        "description": "A fanstastic graph theory and network library for analysis and visualisation - compatible with CommonJS/Node.js/Browserify/Webpack, AMD/Require.js, npm, Bower, jspm, Meteor/Atmosphere, jQuery, and plain JS/JavaScript!",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "A beginner's guide to scrollytelling",
        "url": "https://webflow.com/blog/scrollytelling-guide",
        "description": "Discover how to tell a compelling and dynamic story using the full power of web design.",
        "imageUrl": "./9ee3ab03d36449725da549b4d0c9574ad8ebf601763d11d76c987de59fe8de32.jpg",
        "featured": false
      },
      {
        "title": "Stop Infinite Scrolling on Your Website",
        "url": "https://hackernoon.com/stop-infinite-scrolling-on-your-website-now-ie6rg31eu",
        "description": "Do people love infinite scrolling on the websites they visit or are theyfine with clicking on ‘Read more’ or ‘View more?’ Infinite scrolling eliminatesthe need for pagination which is the process of separating digital content into different pages. Here’s my view on infinite scrolling and why it is a…",
        "imageUrl": "./bfcacdfffb6918ca529c67389f948f43324931306250569f3b9b92ddf3a9dc76.jpg",
        "featured": false
      },
      {
        "title": "Building in-app notification system in React Native",
        "url": "https://medium.com/@vadimkorr/building-in-app-notification-system-in-react-native-96efd478ef31",
        "description": "Notifications are one of the most important parts of any application. In this article, I want to share the experience of implementing a reliable and good looking notification system leveraging written in React Native.",
        "imageUrl": "./b837362de7387e546e61be9f05dda2d829bff86c089c7f536342bf0b00618885.jpg",
        "featured": false
      },
      {
        "title": "Build a JS Interpreter in JavaScript Using Acorn as a Parser",
        "url": "https://blog.bitsrc.io/build-a-js-interpreter-in-javascript-using-acorn-as-a-parser-5487bb53390c",
        "description": "Learn how the JS engine works by building your own JS interpreter — in JS.",
        "imageUrl": "./1a3e88d75a70643407c43c0ac4535cddffef3e00862c8f458da536c6770ba2e7.jpg",
        "featured": false
      },
      {
        "title": "Fix the slow render before you fix the re-render",
        "url": "https://kentcdodds.com/blog/fix-the-slow-render-before-you-fix-the-re-render",
        "description": "How to start optimizing your React app renders focusing on what's important.",
        "imageUrl": "./be31254c3f4c55c22b94edf1e93bb75e039c5ca45d68eef654b8a41682efbbd2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 127,
    "title": "Humans Don’t Realize How Biased They Are Until AI Reproduces the Same Bias",
    "slug": "2019-09-09-127-humans-don-t-realize-how-biased-they-are-until-ai-reproduces",
    "date": "2019-09-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #36, 2019",
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "Humans Don’t Realize How Biased They Are Until AI Reproduces the Same Bias",
        "url": "https://medium.com/syncedreview/humans-dont-realize-how-biased-they-are-until-ai-reproduces-the-same-bias-says-unesco-ai-chair-9968bb1f5da8",
        "description": "A fantastic interview with Prof. Shawe-Taylor, UNESCO Chair for Artificial Intelligence. Among other topics related to AI, Prof. Shawe-Taylor shows how humans are generally biased in their decisions, but they don't realize that until an AI model based on historic data shows the same bias.",
        "imageUrl": "./09a796fe97985942fa902dcec0f5d6a91c6defe94248d13e6bc1a4f64601a48c.jpg",
        "featured": true
      },
      {
        "title": "How JavaScript Grew Up and Became a Real Language",
        "url": "https://medium.com/young-coder/how-javascript-grew-up-and-became-a-real-language-17a0b948b77f",
        "description": "Few imagined that the one-time toy language would become one of the most widely adopted professional development platforms.",
        "imageUrl": "./3d1f82f807418be62b423e586d015d3bd2c9f6c298598607e3250f15daa32c10.jpg",
        "featured": false
      },
      {
        "title": "Async IO in Python: A Complete Walkthrough",
        "url": "https://realpython.com/async-io-python",
        "description": "This tutorial will give you a firm grasp of Python’s approach to async IO, which is a concurrent programming design that has received dedicated support in Python, evolving rapidly from Python 3.4 through 3.7 (and probably beyond).",
        "imageUrl": "./e5ee1112c97c04469aebe9a1455ee407ffde26899c4a2270552973496a2f8d64.jpg",
        "featured": false
      },
      {
        "title": "Feross Open Source `funding` experiment",
        "url": "https://feross.org/funding-experiment-recap",
        "description": "Feross Aboukhadijeh, a very prominent name in the Node.js and JavaScript Open Source ecosystem, attempted a new experiment to make open source development more sustainable and, this article recaps the results of this latest adventure. Pretty interesting read if you care about Open Source (as you should!)",
        "imageUrl": "./aebf82547b23e982758402fa6580053d40bae789b05cd9d6db5f8c7ec34008dc.png",
        "featured": false
      },
      {
        "title": "Should you be using Web Workers? (hint: probably not)",
        "url": "https://medium.com/@david.gilbertson/should-you-should-be-using-web-workers-hint-probably-not-9b6d26dc8c6a",
        "description": "This engaging article describes what web workers are, but also show us that you shouldn't be using them to do everything.",
        "imageUrl": "./2f73070d7c4682adb7d858b15836903710ba997237352af1c9738ce83e626062.jpg",
        "featured": false
      },
      {
        "title": "How Web Content Can Affect Power Usage",
        "url": "https://webkit.org/blog/8970/how-web-content-can-affect-power-usage",
        "description": "Users spend a large proportion of their online time on mobile devices, and a significant fraction of the rest is users on untethered laptop computers.",
        "imageUrl": "./489a06fd0fa54feec4beb0c913d6e06ecb4d590c49bd2e9e0be746a2253b2535.jpg",
        "featured": false
      },
      {
        "title": "Why every SaaS is rebranding and using illustrations",
        "url": "https://unbounce.com/design/branding-cartoon-illustration-design-trend",
        "description": "Recently, hundreds of SaaS websites have started using similar-looking illustrations in their branding. How did this trend catch fire? And is it bad for marketers to follow these types of design trends?",
        "imageUrl": "./e8e2d424769affe109bd39d1c857697e9d0e9ca0d869d25a27f01815d3bc479f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449344682/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 126,
    "title": "How to Build Good Software",
    "slug": "2019-09-02-126-how-to-build-good-software",
    "date": "2019-09-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #35, 2019",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "How to Build Good Software",
        "url": "https://www.csc.gov.sg/articles/how-to-build-good-software",
        "description": "Software has characteristics that make it hard to build with traditional management techniques; effective development requires a different, more exploratory and iterative approach.",
        "imageUrl": "./0b9d021eabd30aadec982bd29fb42b813bbb84d7d54bafc5eeeb2bc17033236c.jpg",
        "featured": true
      },
      {
        "title": "Color Tools For Designers 2019",
        "url": "https://medium.muz.li/color-tools-for-designers-2019-6ebd77a94ab",
        "description": "Designers are increasingly taking risks and using single bold colors to communicate their web design. No matter what color you need to work with to create a good color scheme, there are best practice examples all over the web.\nMoreover, when informed by color psychology, designers can make the best decisions for their color schemes that deliver emotional impact.",
        "imageUrl": "./d9baa69669b725e8cb3fc43181341306d903c42c55e97e453bc1cc30fc2919a0.jpg",
        "featured": false
      },
      {
        "title": "All the New ES2019 Tips and Tricks",
        "url": "https://css-tricks.com/all-the-new-es2019-tips-and-tricks",
        "description": "The ECMAScript standard has been updated yet again with the addition of new features in ES2019. Now officially available in node, Chrome, Firefox, and Safari.",
        "imageUrl": "./95f4c458da84363811e2ff37a6c8818f58a959ac1085def86275d47808c41f62.jpg",
        "featured": false
      },
      {
        "title": "Everything I Know About Style Guides, Design Systems, and Component Libraries",
        "url": "https://leerob.io/blog/style-guides-component-libraries-design-systems",
        "description": "A deep-dive on everything I've learned in the past year building style guides, design systems, component libraries, and their best practices.",
        "imageUrl": "./434c999c1af4a5a97b7058ad662fae2a13bee6bfff2482e5d1010adc807f43be.jpg",
        "featured": false
      },
      {
        "title": "Variable Font Animation with CSS and Splitting JS",
        "url": "https://css-irl.info/variable-font-animation-with-css-and-splitting-js",
        "description": "A little while ago I made an animated variable font demo on Codepen. In this article I’ll explain what variable fonts are and how they can be used.",
        "imageUrl": "./d84b733854af86346edbb1614a012f4077aa298d7a46e95875125ad4bbc2dc42.jpg",
        "featured": false
      },
      {
        "title": "React Layouts",
        "url": "https://react-layouts.com/",
        "description": "A collection of ready-made layouts that you can easily copy-paste into your next React project!",
        "imageUrl": "./86184e050641e90ba883be0c4ac2fc0721fad73be220479b805e0dbf59a1d718.jpg",
        "featured": false
      },
      {
        "title": "Accessibility and web performance are not features, they’re the baseline",
        "url": "https://css-tricks.com/accessibility-and-web-performance-are-not-features-theyre-the-baseline",
        "description": "Why accessibility and performance should be a high priority characteristic of every web site and not just a nice-to-have feature!",
        "imageUrl": "./e0ab120b9ce29f0c61775be3d0dd084b9c5b9eb3afbe06371b9f448df51848d2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 125,
    "title": "5 Interesting Uses of JavaScript Destructuring",
    "slug": "2019-08-26-125-5-interesting-uses-of-javascript-destructuring",
    "date": "2019-08-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #34, 2019",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "5 Interesting Uses of JavaScript Destructuring",
        "url": "https://dmitripavlutin.com/5-interesting-uses-javascript-destructuring",
        "description": "A list of interesting and helpful applications of destructing assignments in JavaScript.",
        "imageUrl": "./14747e0abadd9bd704d4a55b7fdf4223f28ffe5a583f4d6da255bf144751a581.jpg",
        "featured": true
      },
      {
        "title": "Functional Programming Jargon in Rust",
        "url": "https://functional.works-hub.com/learn/functional-programming-jargon-in-rust-1b555",
        "description": "Functional programming (FP) provides many advantages, and its popularity has been increasing as a result. However, each programming paradigm comes with its own unique jargon and FP is no exception. By providing a glossary, we hope to make learning FP easier.",
        "imageUrl": "./7356b30b845569feba346c912458fa4cef165d8342195cd976317e62a1fdeb00.jpg",
        "featured": false
      },
      {
        "title": "Serverless Functions With WebAssembly Modules",
        "url": "https://dev.to/ibmdeveloper/serverless-functions-with-webassembly-modules-343e",
        "description": "Improving performance in serverless functions using WebAssembly. Use C, C++ or Rust code compiled to Wasm modules from Node.js serverless functions.",
        "imageUrl": "./1ba71d17bf7ef68b7ad9789d39fcc503a937b93169c97d4ba6834cb2df69b6d8.jpg",
        "featured": false
      },
      {
        "title": "How to Schedule Any Task with AWS Lambda",
        "url": "https://dev.to/byrro/how-to-schedule-any-task-with-aws-lambda-3617",
        "description": "Learn how to build different task schedulers with AWS Lambda",
        "imageUrl": "./ff49adae927871b10c523ddc7bc696a08ef2793e7d91537e2d65e7ce5f168783.jpg",
        "featured": false
      },
      {
        "title": "Building a GraphQL server on the edge with Cloudflare Workers",
        "url": "https://blog.cloudflare.com/building-a-graphql-server-on-the-edge-with-cloudflare-workers",
        "description": "workers-graphql-server is a batteries-included Apollo GraphQL server, designed to get you up and running quickly with GraphQL on Cloudflare Workers platform.",
        "imageUrl": "./0835199a0d5e96afbc50393272ad001933a0a3667d79c61f1d725e7c5add6e61.jpg",
        "featured": false
      },
      {
        "title": "Zebu",
        "url": "https://github.com/modernserf/zebu",
        "description": "Zebu is a JavaScript library for building  little languages with tagged template literals.",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Promises and Static Values",
        "url": "https://davidwalsh.name/promises-and-static-values",
        "description": "Async can throw a real wrench into the cogs of our programming workflows, all despite the fact that async is the modern JavaScript pattern. While async/await helps, there's sometimes confusion about the way to have a single function that returns a value whether it exists or needs a Promise to retrieve.",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 124,
    "title": "Using CSS Grid the right way",
    "slug": "2019-08-19-124-using-css-grid-the-right-way",
    "date": "2019-08-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #33, 2019",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Using CSS Grid the right way",
        "url": "https://vgpena.github.io/using-css-grid-the-right-way",
        "description": "CSS Grid is fun to use but hard to learn. Here are three tips to help you understand and leverage the Grid spec.",
        "imageUrl": "./b4406a64793614ee9fc898661c47613bf31c2678229895113ac7387e2e703ffa.jpg",
        "featured": true
      },
      {
        "title": "Get your work recognized: write a brag document",
        "url": "https://jvns.ca/blog/brag-documents",
        "description": "Getting your hard work recognized is never as easy as it should be and sometimes you might lose the opportunity to be rewarded for it. Julia Evans comes with an interesting strategy to understand how valuable your work is and help others to understand that as well :)",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      },
      {
        "title": "Models for integrating data science teams within organizations",
        "url": "https://medium.com/swlh/models-for-integrating-data-science-teams-within-organizations-7c5afa032ebd",
        "description": "Designing and building a data science team is a complex problem; so is determining the nature of interactions between data scientists and the rest of the organization. This article compares different interesting approaches to do that.",
        "imageUrl": "./85c5e514c44592c21aaf4af5b6154c07a708128884e7cbeac6323fd153c42cd2.jpg",
        "featured": false
      },
      {
        "title": "Deep-copying in JavaScript",
        "url": "https://dassur.ma/things/deep-copy",
        "description": "How do I copy an object in JavaScript? It’s a simple question, without a simple answer.",
        "imageUrl": "./0e96932bea7b37709a0ac88e26e4dfa618befdfd393ca0944aeb3846a1f9e732.jpg",
        "featured": false
      },
      {
        "title": "How We Reduced Lambda Functions Costs by Thousands of Dollars",
        "url": "https://medium.com/foxintelligence-inside/how-we-reduced-lambda-functions-costs-by-thousands-of-dollars-8279b0a69931",
        "description": "This articles goes about the Lambda pricing model and explains few ways that can allow you to keep cost under control.",
        "imageUrl": "./42c47e913933b759fe3e4e1905dd65e6584faac9637d5f575022d2706e36abee.jpg",
        "featured": false
      },
      {
        "title": "Making Cloud.typography Fast(er)",
        "url": "https://csswizardry.com/2019/08/making-cloud-typography-faster/",
        "description": "An interesting case study by Harry Roberts on optimizing the web speed of Cloud.typography",
        "imageUrl": "./9441dd4f557b32d4aa29d6f38890490c68691c2691b154b4e4eeec5286c55ea3.png",
        "featured": false
      },
      {
        "title": "Designing Web Applications-Architectural Components",
        "url": "https://blog.usejournal.com/designing-web-applications-architectural-components-7baa9aab8f9f",
        "description": "What are the main considerations one needs to think of when creating a web application?",
        "imageUrl": "./d655b21a45f5cf833396db33a1c5ecf3edf1fb6b77b340d3b82715eb4755b753.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 123,
    "title": "Is High Quality Software Worth the Cost?",
    "slug": "2019-08-12-123-is-high-quality-software-worth-the-cost",
    "date": "2019-08-12",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #32, 2019",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "Is High Quality Software Worth the Cost?",
        "url": "https://martinfowler.com/articles/is-quality-worth-cost.html",
        "description": "We usually perceive that it costs more to get higher quality, but software internal quality actually reduces costs.",
        "imageUrl": "./a142e65736aa7058463208863d9c6b9792fc910b5f442aac80a628e232140808.jpg",
        "featured": true
      },
      {
        "title": "The Art Of Warez",
        "url": "https://vimeo.com/341663153",
        "description": "This is \"The Art Of Warez\" by Oliver Payne on Vimeo. This short documentary will take you back to the demos and ASCII art warez scene. A must-see if you remember what those were... and if you don't you definitely have a good excuse to find out.",
        "imageUrl": "./d494af4ed562b627f34f01d4b930f2e79c1f947deb8f5f7870df4231273da815.jpg",
        "featured": false
      },
      {
        "title": "Native lazy-loading for the web",
        "url": "https://web.dev/native-lazy-loading",
        "description": "This post covers the loading attribute and how it can be used to control the loading of images and iframes.",
        "imageUrl": "./81f36303ac2d0be2ecb6c552a5e2ee8d7e68d3192ab6d60d1fdbcf8d6da44ba9.jpg",
        "featured": false
      },
      {
        "title": "Writing a Simple MVC App in Plain JavaScript",
        "url": "https://taniarascia.com/javascript-mvc-todo-app",
        "description": "A simple application written in plain JavaScript using the model-view-controller architectural pattern.",
        "imageUrl": "./15623765243bb21d6fa57ebe1d11383946522af4f7d2ebd8f808d9883ccd224b.jpg",
        "featured": false
      },
      {
        "title": "Avoid React Hooks Pitfalls",
        "url": "https://kentcdodds.com/blog/react-hooks-pitfalls",
        "description": "5 tips that will help you to discover some React hook gotchas and teach you how to avoid them.",
        "imageUrl": "./6bff84bafb944e907842270f2e46c66592a0b9899e8cdcc9c7e18df50542056b.jpg",
        "featured": false
      },
      {
        "title": "Paaatterns! for Free",
        "url": "https://lstore.graphics/paaatterns",
        "description": "Free collection of beautiful patterns for all vector formats. Really ideal if you are (re)designing a website and looking for inspiration or free patterns you can just drop into your design.",
        "imageUrl": "./716c3031c3adfba69ada380d5edd447450718979727347848c7d2c2b9be735b2.jpg",
        "featured": false
      },
      {
        "title": "Writing Modes And CSS Layout",
        "url": "https://smashingmagazine.com/2019/08/writing-modes-layout",
        "description": "An understanding of CSS Writing Modes is useful if you want to work with vertical scripts, or change writing mode for creative reasons. However, they also underpin our new layout methods, and those ideas are increasingly being applied across all of CSS.",
        "imageUrl": "./9ef2a4a67296edda68eaa5719fa655e920ca936ab91af3928dda134f80938c30.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 122,
    "title": "The Complete Introduction to React",
    "slug": "2019-08-05-122-the-complete-introduction-to-react",
    "date": "2019-08-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #31, 2019",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "The Complete Introduction to React",
        "url": "https://jscomplete.com/learn/complete-intro-react",
        "description": "Learn about React components with functions and classes. Using JSX. Benefits of components. React Hooks. User events. Taking input form users.",
        "imageUrl": "./0e655e698eb2dc5aec14302d6da001eed5ee4612ab4e6924a7941395fa0e6dec.jpg",
        "featured": true
      },
      {
        "title": "Going Multithread with Node.js",
        "url": "https://itnext.io/going-multithread-with-node-js-492258ba32cf",
        "description": "Writing an high performances multithreaded program with the newest “worker_threads” module",
        "imageUrl": "./e1b8fa1204beb8c3f0c24d67b3af4d9cabf72524a2c9014a38f2f38eea3c479b.jpg",
        "featured": false
      },
      {
        "title": "Dissecting A Dweet: Mini Black Hole",
        "url": "http://frankforce.com/?p=6378",
        "description": "Today we will be examining my most popular dweet, a miniature black hole simulation! It’s one of my easiest dweets to explain and the code is fairly straightforward.",
        "imageUrl": "./a9d4ce76bc1c3d06582f0726c97d57c30e82f820635fef7e71c1b8b97e8b2c2d.jpg",
        "featured": false
      },
      {
        "title": "Take Redux off the main-thread",
        "url": "https://dassur.ma/things/react-redux-comlink",
        "description": "Redux is state management. State management belongs off the main thread. In this article, you will learn how to run Redux code in a dedicated worker thread by using the Comlink library.",
        "imageUrl": "./9e8854ac38e60c6db8c0a217affa96909eefec90f6b89e8ffb3ff8b5a211750f.jpg",
        "featured": false
      },
      {
        "title": "How (not) to sign a JSON object",
        "url": "https://latacora.micro.blog/2019/07/24/how-not-to.html",
        "description": "How do you add a signature to a JSON object? Can you add the signature as a property of the object itself? At first, this question might seem very simple, but this problem is actually a complicated one and this article discuss many solutions and their tradeoffs.",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      },
      {
        "title": "Keeping things fresh with stale-while-revalidate",
        "url": "https://web.dev/stale-while-revalidate",
        "description": "The \"stale-while-revalidate\" HTTP header helps developers balance between immediacy—loading cached content right away—and freshness—ensuring updates to the cached content are used in the future.",
        "imageUrl": "./81f36303ac2d0be2ecb6c552a5e2ee8d7e68d3192ab6d60d1fdbcf8d6da44ba9.jpg",
        "featured": false
      },
      {
        "title": "Decoupling logic from React components",
        "url": "https://labcodes.com.br/blog/en/decoupling-logic-from-react-components.html",
        "description": "This article offers a good and sustainable way to deal with requests and data processing in a React/Redux project.",
        "imageUrl": "./0741addeffdb52ab5e664f2eeb8e48243fd328ed72e448d82a8d847e42952773.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 121,
    "title": "HTTP Security Headers",
    "slug": "2019-07-29-121-http-security-headers",
    "date": "2019-07-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #30, 2019",
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "HTTP Security Headers",
        "url": "https://nullsweep.com/http-security-headers-a-complete-guide",
        "description": "A description of each HTTP security header, why it is important, and how to configure your website in a secure way.",
        "imageUrl": "./1b5e87c149f604611ede73c0e64cfe488a7049b8a7c6aa6ffff130d5de526792.jpg",
        "featured": true
      },
      {
        "title": "useHooks",
        "url": "https://usehooks.com/",
        "description": "An extensive collection of easy to understand React Hook recipes. No reason to fear React hooks now!",
        "imageUrl": "./5e1b6a8d0a9f35fc3663b000fd2e8f4cb5a4f21eeb24df9db0e5f727ec3439ba.jpg",
        "featured": false
      },
      {
        "title": "Everything You Need To Know About CSS Margins",
        "url": "https://smashingmagazine.com/2019/07/margins-in-css",
        "description": "Margins in CSS seem simple enough at first glance. Applied to an element it forms a space around the element, pushing other elements away. However, there is more to a margin than you might think.",
        "imageUrl": "./408b2025e9f3cfd075674e2e39fa56960e2631766cf8a8e2ed08c358f7273057.jpg",
        "featured": false
      },
      {
        "title": "How to make your HTML responsive by adding a single line of CSS",
        "url": "https://dev.to/perborgen/how-to-make-your-html-responsive-by-adding-a-single-line-of-css-29h",
        "description": "This article will teach you how to use CSS Grid to create a super cool image grid with a minimal amount of CSS.",
        "imageUrl": "./f4c20e4954f94e520d974c81e83e41f13ce87983a7d016ba8a4ad48f92a488f6.jpg",
        "featured": false
      },
      {
        "title": "12 Tips for Improving JavaScript Performance",
        "url": "http://nodesource.com/blog/improve-javascript-performance",
        "description": "One of the most important aspects when creating a webpage or an app, is performance. In this blog post you can find 12 tips to improve it!",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      },
      {
        "title": "Frontend Design, React, and a Bridge over the Great Divide",
        "url": "http://bradfrost.com/blog/post/frontend-design-react-and-a-bridge-over-the-great-divide",
        "description": "Frontend designers create the HTML, CSS, and presentational JavaScript code that powers web products' user interfaces. Frontend design could be a helpful mortar that bridges the gap between design and development. This article explores this interesting idea.",
        "imageUrl": "./eafe13109cfebe926e53c46037f5dd863159164bb5b17e5fbdaf53d998d82052.jpg",
        "featured": false
      },
      {
        "title": "Microservices, Apache Kafka, and Domain-Driven Design",
        "url": "https://confluent.io/blog/microservices-apache-kafka-domain-driven-design",
        "description": "Kai Waehner discusses why Apache Kafka became the de facto standard and backbone for microservice architectures—not just replacing other traditional middleware but also building the microservices themselves using domain-driven design and Kafka-native APIs like Kafka Streams, KSQL, and Kafka Connect.",
        "imageUrl": "./bb4f2c0379a44cffbcdefedd72f4d1330f3ab52a9675f6ae5197708107e877ce.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 120,
    "title": "Dockerfile Best Practices",
    "slug": "2019-07-22-120-dockerfile-best-practices",
    "date": "2019-07-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #29, 2019",
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Dockerfile Best Practices",
        "url": "https://blog.docker.com/2019/07/intro-guide-to-dockerfile-best-practices",
        "description": "Not all Dockerfiles are created equally. Efficiency is critical, and this blog post will cover five areas for Dockerfile best practices to help you write better Dockerfiles: incremental build time, image size, maintainability, security and repeatability!",
        "imageUrl": "./61400c5ebce3e2f4c13b9bda039a1d889db45c695c002669558ff25eed075ed6.jpg",
        "featured": true
      },
      {
        "title": "SHAPE UP",
        "url": "https://basecamp.com/shapeup",
        "description": "A free e-book on how to grow companies and keep delivering work that matters while keeping your organisation healthy and happy. A precious gem if you are transition to more managerial roles or even if you are leading a team as a developer.",
        "imageUrl": "./7d4ad65930eab3e463d5b3a9771318e4d7a998ba7074866bfb9c07fc7eae2955.jpg",
        "featured": false
      },
      {
        "title": "Creating Pixel Art with CSS",
        "url": "https://dev.to/jnschrag/creating-pixel-art-with-css-3451",
        "description": "A step-by-step guide on creating pixel art using the `box-shadow` property in CSS.",
        "imageUrl": "./2e603a701544726c20a7a4e2ddaaf6af3766c475dcd2aca0d37009aead13bcbf.jpg",
        "featured": false
      },
      {
        "title": "The Future of Websites: Headless CMSs",
        "url": "http://scotch.io/bar-talk/the-future-of-websites-headless-cmss",
        "description": "Since their introduction, CMS have made life easier for developers, owners, and administrators alike. Platforms like WordPress, Joomla, and Drupal account for more than 60% of all web content platforms. The only problem is their relative lack of flexibility. This is mainly due to the fact that the front and back end functionalities are deeply coupled. But the new wave of Headless CMS is here to address this issue!",
        "imageUrl": "./9c962979c5c4b19eb7c96494adde5f1aec4be004353a896aeb888c1608d2225b.jpg",
        "featured": false
      },
      {
        "title": "AWS Cloud Development Kit",
        "url": "https://aws.amazon.com/blogs/aws/aws-cloud-development-kit-cdk-typescript-and-python-are-now-generally-available",
        "description": "Managing your Infrastructure as Code provides great benefits and is often a stepping stone for a successful application of DevOps practices. In this way, instead of relying on manually performed steps, both administrators and developers can automate provisioning of compute, storage, network, etc. Cloud Development Kit (CDK) is a new way to write infrastructure as code that uses real code (E.g. Python or Typescript) to describe the infrastructure. Definitely worth checking if you are an AWS aficionado.",
        "imageUrl": "./6d156567420d785f3e84fb563c2ba216dc56b622f451975aac35c7a4ac7e9753.jpg",
        "featured": false
      },
      {
        "title": "Let’s Build A Web Server. Part 1.",
        "url": "https://ruslanspivak.com/lsbaws-part1",
        "description": "To become a better developer you MUST get a better understanding of the underlying software systems you use on a daily basis and that includes programming languages, compilers and interpreters, databases and operating systems, web servers and web frameworks. And, to get a better and deeper understanding of those systems you MUST re-build them from scratch, brick by brick, wall by wall. Let's start with a web server here...",
        "imageUrl": "./5863e52d2d643124732ecea0c71dc43d1945595f6c3594b0d4afa794ad53e86a.jpg",
        "featured": false
      },
      {
        "title": "Build Better Component Libraries with Styled System",
        "url": "https://medium.com/styled-components/build-better-component-libraries-with-styled-system-4951653d54ee",
        "description": "This article explores four common problems generally found in non-mature component libraries and how `styled-system` can help solve them: second-class theming, inconsistent props, lack of component hierarchy and finally, lack of component extensibility.",
        "imageUrl": "./f8fadcdc2f5109f7719e7c08ab513c706ab402d6e82343599335912716042657.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 119,
    "title": "How Google Pagespeed works",
    "slug": "2019-07-15-119-how-google-pagespeed-works",
    "date": "2019-07-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #28, 2019",
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "How Google Pagespeed works",
        "url": "https://calibreapp.com/blog/how-pagespeed-works",
        "description": "In this article, we uncover how PageSpeed calculates it’s critical speed score. It’s no secret that speed has become a crucial factor in search ranking.",
        "imageUrl": "./9aa2ee3eb4574241b29026aaa14431e4094622df50f0cde8a309e35777bd5cf6.jpg",
        "featured": true
      },
      {
        "title": "TWGL.js, a tiny WebGL helper library",
        "url": "http://twgljs.org/",
        "description": "TWGL.js, a tiny WebGL helper library optimized for low level WebGL interactions.",
        "imageUrl": "./e34d49e80e6e267e32396f950eb3cba39954e53e24c6f8522efb3990191ba53b.jpg",
        "featured": false
      },
      {
        "title": "How we built a component library that people actually enjoy using",
        "url": "https://medium.com/styled-components/how-to-build-a-great-component-library-a40d974a412d",
        "description": "Our team of three built a component library for a team of 60 designers and engineers, who love using it. Here is how that’s possible.",
        "imageUrl": "./a876399a37cf6b4cc626f78610209116b14281136af70c5637c08e4f778a507b.jpg",
        "featured": false
      },
      {
        "title": "Birth of Qubole design system",
        "url": "https://medium.com/qubole-design/birth-of-our-new-design-system-part-3-4686009c62aa",
        "description": "The design system is more than your UI kit, it’s about bringing culture and design language in your organization. This interesting case study shows how a well structured design system can actually improve consistency and speed of delivery.",
        "imageUrl": "./892afe4a28438ef94c24bbc056a695b10fc2e8e617888eaa4ab071ee8e1413ed.jpg",
        "featured": false
      },
      {
        "title": "3D Wireframes in SVG",
        "url": "https://prideout.net/blog/svg_wireframes",
        "description": "SVG is great for line art. It scales nicely for high DPI displays without using much bandwidth. However SVG was not designed for 3D, so it does not provide mechanisms for applying perspective transformation or hidden surface elimination. This article shows some clever tecniques and python scripts to render 3d shapes using SVG.",
        "imageUrl": "./d4ce069e1155483fcb768a73de3ca1d2ffe1f034b1981b4432177f7fad6d4a79.jpg",
        "featured": false
      },
      {
        "title": "Transpiling between any programming languages",
        "url": "https://engineering.mongodb.com/post/transpiling-between-any-programming-languages-part-1",
        "description": "The Compass team has written a lightweight, extendable transpiler that translates BSON to and from any language. This tool allows developers to work in one language while being able to export the queries and aggregations they build to other languages.",
        "imageUrl": "./ec7c891afb00e61739c5a7920f01742b41a6f4f39906369bf24717f6137fdd70.jpg",
        "featured": false
      },
      {
        "title": "What Is Web Hosting, Exactly?",
        "url": "https://www.whoishostingthis.com/resources/web-hosting/",
        "description": "Most people never really think about where a website is, or even what a website is. I turn on my computer, open a browser, and go to Google or Amazon or Yahoo. But what am I doing when I “visit” a website? If I’m a visitor, where have I gone? And if it is a “site,” where is it located?",
        "imageUrl": "./54ff753ebe149bf2b14c93e913834b8241d407406511336e22eaca793ca40280.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 118,
    "title": "Adding a WebAssembly component to a React App",
    "slug": "2019-07-08-118-adding-a-webassembly-component-to-a-react-app",
    "date": "2019-07-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #27, 2019",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Adding a WebAssembly component to a React App",
        "url": "https://blog.scottlogic.com/2019/06/14/add-webassembly-to-react-app.html",
        "description": "As a front-end developer working on real-world applications, WebAssembly isn't something I can actually use, is it? Let's find out how easy it can be using AssemblyScript.",
        "imageUrl": "./652d61ac7581a93b07e7ce9c0ab75d3b0e2702744e25c08f2bc078d6e874be3f.png",
        "featured": true
      },
      {
        "title": "Lightning Web Components foundation",
        "url": "https://lwc.dev/",
        "description": "Blazing Fast, Enterprise-Grade Web Components Foundation, open sourced by Salesforce.",
        "imageUrl": "./7d4ad65930eab3e463d5b3a9771318e4d7a998ba7074866bfb9c07fc7eae2955.jpg",
        "featured": false
      },
      {
        "title": "A Kubernetes primer",
        "url": "https://medium.com/better-programming/kubernetes-what-is-it-what-problems-does-it-solve-how-does-it-compare-with-its-alternatives-937fe80b754f",
        "description": "What Is It, What Problems Does It Solve and How Does It Compare With Alternatives? This article is the first part of a two-part article series on Kubernetes and why it's getting so much traction in the Dev community.",
        "imageUrl": "./fa8c7da548e3ec6ed863a685b97b1948310631859f0fa2693fda0cc9bd7cd4df.jpg",
        "featured": false
      },
      {
        "title": "Fuzzing vs property testing",
        "url": "http://tedinski.com/2018/12/11/fuzzing-and-property-testing.html",
        "description": "Fuzzing and property testing both involve generating random inputs, and then checking if a program misbehaves on those inputs. This description should probably leave you raising your eyebrow slightly: if you start being vague enough, lots of entirely different things sound similar. But there are some real similarities between these two techniques.",
        "imageUrl": "./e8111be703622f77145073cba1df1d12c90d96ef7e27a6f878764c1dd136c41a.png",
        "featured": false
      },
      {
        "title": "llhttp - new HTTP 1.1 parser for Node.js",
        "url": "https://youtube.com/watch?v=x3k_5Mi66sY",
        "description": "Node.js has been using a derivative of nginx’s parser with a lot of customization/rewrite since its inception. In this über interesting talk from JSConf EU 2019, Fedor Indutny presents the new Node.js HTTP 1.1 parser, called **llhttp**.",
        "imageUrl": "./1d138a95366019ff6de18ebb4679ec4099cdffe41e9c8d87140413fe28f6b7d7.jpg",
        "featured": false
      },
      {
        "title": "The Oracle Problem",
        "url": "https://medium.com/yld-engineering-blog/the-oracle-problem-cc02b42a1f44",
        "description": "This article surveys the current state of JavaScript tooling for a class of testing techniques which address something called “the oracle problem\".",
        "imageUrl": "./edd101aaf3b72186d1e0242c69c7c1f7b4a8528375a1e536a3d532397a666fd6.jpg",
        "featured": false
      },
      {
        "title": "Common Serverless Errors",
        "url": "https://seed.run/docs/serverless-errors",
        "description": "Common Serverless Errors is a compilation of the most common Serverless Framework errors developers run into on AWS. Also listed, is an explanation of why the error occurred and what you can do to fix it.",
        "imageUrl": "./32eae6575d1780fcb02cc223e5feb6d96007cd4b0adff126708dff3a7292bfbc.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 117,
    "title": "Git Immersion",
    "slug": "2019-07-01-117-git-immersion",
    "date": "2019-07-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #26, 2019",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Git Immersion",
        "url": "http://gitimmersion.com/",
        "description": "A guided tour that walks through the fundamentals of Git",
        "imageUrl": "./747e3af716ef814b1651d0c03fc355d4f8b5d0d26430e08cb9714d97822862f8.jpg",
        "featured": true
      },
      {
        "title": "Building Micro Frontends with React, Vue, and Single-spa",
        "url": "https://dev.to/dabit3/building-micro-frontends-with-react-vue-and-single-spa-52op",
        "description": "How to use multiple JavaScript frameworks in a single-page application.",
        "imageUrl": "./74c07c6848f0563bd7943304bb48b1220e99d04a82ff9198cd76c66785d73b29.jpg",
        "featured": false
      },
      {
        "title": "Understanding Worker Threads in Node.js",
        "url": "http://nodesource.com/blog/worker-threads-nodejs",
        "description": "In this blog post you can understand Worker Threads, how Node.js is structured and some examples on how to use it.",
        "imageUrl": "./d60da1599085dd1ebe8719f68ac568c8ef6ae192e2424b2ca1e672b965384dcc.jpg",
        "featured": false
      },
      {
        "title": "A complete guide to iconography",
        "url": "https://designsystems.com/iconography-guide",
        "description": "A deep-dive guide on how to create, organize, name, and use icons within a design system.",
        "imageUrl": "./7863aeca78ea93d26c00127dc0d8d3d39c77c83bc7e59366577e9deb30b41ff0.jpg",
        "featured": false
      },
      {
        "title": "9 Free Machine Learning Courses",
        "url": "https://datahod.com/free-machine-learning-courses",
        "description": "Hands-on learning is the best way to gain real-world experience to learn Machine Learning. Here's a list of some of the most interesting free Machine Learning Courses.",
        "imageUrl": "./1fb34e10eed41f17473ba84b546fd653e941f373caad4cdfeeeec53b44e4d340.jpg",
        "featured": false
      },
      {
        "title": "Monoliths vs microservices: Cognitive load is what matters",
        "url": "https://techbeacon.com/app-dev-testing/forget-monoliths-vs-microservices-cognitive-load-what-matters",
        "description": "For innovative software organizations, managing the overall cognitive load on their teams is a guiding development and operational principle and often times this is more important than solving the debate \"Monolith vs Micro-services\".",
        "imageUrl": "./c2cd478f81e99e04965b9acae9e94bf7e1d5b510eb0c67289d1d421bd6e8276f.jpg",
        "featured": false
      },
      {
        "title": "Improving Browser Performance 10x",
        "url": "https://engineering.universe.com/improving-browser-performance-10x-f9551927dcff",
        "description": "Universe.com improved the browser performance for their homepage by more than 10 times. Let’s explore the techniques they used to achieve this astonishing result.",
        "imageUrl": "./b31f8cb811d75f5e9a9e5e15e76e0699f1642fd36419ddafce6a42f26c3121f6.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 116,
    "title": "The State of CSS 2019",
    "slug": "2019-06-24-116-the-state-of-css-2019",
    "date": "2019-06-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #25, 2019",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "The State of CSS 2019",
        "url": "https://2019.stateofcss.com/",
        "description": "Discover the most popular CSS features & technologies of the year.",
        "imageUrl": "./951298feef3b1081975a51b61e93d73de73496603c467b8597735c8f61dfb54e.jpg",
        "featured": true
      },
      {
        "title": "AWS costs every programmer should know",
        "url": "https://david-codes.hatanian.com/2019/06/09/aws-costs-every-programmer-should-now.html",
        "description": "The title for this blog post is a direct reference to Latency Numbers Every Programmer Should Know. There are several versions of those numbers available now...",
        "imageUrl": "./f6dd7a74e3c15a0007b4ec32335fb987a20552880a11e83f28f9c97b9250c393.png",
        "featured": false
      },
      {
        "title": "Performance speed limits",
        "url": "https://travisdowns.github.io/blog/2019/06/11/speed-limits.html",
        "description": "Sometimes you just want to know how fast your code can go, without benchmarking it. Sometimes you have benchmarked it and want to know how close you are to the maximum speed. Often you just need to know what the current limiting factor is, to guide your optimization decisions.",
        "imageUrl": "./d10dd4fd3189232e02f3623aa8690bc24e9dadbd4a78aabb3f084e62aa27fae2.jpg",
        "featured": false
      },
      {
        "title": "The Layout Instability API",
        "url": "https://web.dev/layout-instability-api",
        "description": "This post introduces the Layout Instability API, its key concepts, and explains how to use the API and provide feedback.",
        "imageUrl": "./81f36303ac2d0be2ecb6c552a5e2ee8d7e68d3192ab6d60d1fdbcf8d6da44ba9.jpg",
        "featured": false
      },
      {
        "title": "Everything You Need to Know About Date in JavaScript",
        "url": "https://css-tricks.com/everything-you-need-to-know-about-date-in-javascript",
        "description": "Date is weird in JavaScript. It gets on our nerves so much that we reach for libraries (like Date-fns and Moment) the moment (ha!) we need to work with",
        "imageUrl": "./a2a04e78190718d27c48573d3901a3d62cdc667b002da0537828b879102acd7b.jpg",
        "featured": false
      },
      {
        "title": "CSRF in Action",
        "url": "https://smellycode.com/csrf-in-action",
        "description": "Demonstration of the Cross-Site Request Forgery(CSRF) attack with a simple demo.",
        "imageUrl": "./b4b9bf459765787da0aef488fece9a5b620a8d80223e8e548fd506c8615dbbd8.jpg",
        "featured": false
      },
      {
        "title": "What Are Tokio and Async IO All About (Rust)?",
        "url": "https://manishearth.github.io/blog/2018/01/10/whats-tokio-and-async-io-all-about",
        "description": "The Rust community lately has been focusing a lot on “async I/O” through the tokio project. This is pretty great! But for many in the community who haven’t worked with web servers, it might not be obvious what those are!",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2: From Theory To Practice",
      "author": "Asim Hussain",
      "description": "In this quickstart you'll get a 50,000 foot view of the major features of Angular 2 including: Typescript & ES6 Javascript, Components & Binding, Directives, Dependancy Injection & Services, Angular Modules & Bootstrapping your Angular application., SPAs & Routing, Angular CLI, Forms, Reactive Programming with RXJs, HTTP and finally Unit Testing.",
      "coverImageUrl": "./42ae68e2ba03e04a5972b7f48fcbb414c89e74b4747aae1715503d876e99f3df.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01N9S0CZN/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01N9S0CZN/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 115,
    "title": "A SQL parser in Go",
    "slug": "2019-06-17-115-a-sql-parser-in-go",
    "date": "2019-06-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #24, 2019",
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "A SQL Parser in Go",
        "url": "https://marianogappa.github.io/software/2019/06/05/lets-build-a-sql-parser-in-go/",
        "description": "This article aims to be the simplest introduction to constructing an LL(1) parser in Go, in this case for parsing SQL queries. It assumes minimal programming competence (functions, structs, ifs and for-loops).",
        "imageUrl": "./96ed6fbef712b5cf1116552cd6106f193c205f4fca8743c52a08c3e09504242c.png",
        "featured": true
      },
      {
        "title": "The concept of Micro-frontends",
        "url": "https://martinfowler.com/articles/micro-frontends.html",
        "description": "Scaling frontend development so that many teams can work simultaneously on a large and complex product is hard. This article describes a recent trend of breaking up frontend monoliths into many smaller, more manageable pieces, and how this architecture can increase the effectiveness and efficiency of teams working on frontend code.",
        "imageUrl": "./8b74f2f49c3902cbcc31af0ff8f800cc398c6dac09cc5af17277d70b95c34fb0.png",
        "featured": false
      },
      {
        "title": "Extract critical CSS",
        "url": "https://web.dev/extract-critical-css",
        "description": "Learn how to improve render times with critical CSS technique and how to choose the best tool for your project.",
        "imageUrl": "./81f36303ac2d0be2ecb6c552a5e2ee8d7e68d3192ab6d60d1fdbcf8d6da44ba9.jpg",
        "featured": false
      },
      {
        "title": "Urql v1.0",
        "url": "https://formidable.com/blog/2019/urql-2019",
        "description": "A minimalist GraphQL client which recently matured to v1.0. Definitely worth checking out if you are looking for a small and simple but powerful client to query your GraphQL backends.",
        "imageUrl": "./d986c6d1217bf63c963d323d35805e1f03ef279d7cdd077adb5895241b7c7f2a.jpg",
        "featured": false
      },
      {
        "title": "Non-Relational Databases and Mixed Workloads",
        "url": "http://scotch.io/bar-talk/non-relational-databases-and-supporting-mixed-workloads",
        "description": "Suppose that you’re building an e-commerce platform and as part of the exercise, you need to come up with a new data architecture for inventory management. You need to support fast, transactional workloads to actually keep track of inventory in near real-time.",
        "imageUrl": "./324e3a81a76dd985798c79eba5d173bd405b8a1f3c048566916b1e400566a205.jpg",
        "featured": false
      },
      {
        "title": "Top Programming Languages 2019: Python, Go and TypeScript Keep Rising",
        "url": "https://codingsans.com/blog/top-programming-languages-2019",
        "description": "Coding Sans collected the data for the top programming languages 2019, and we're sharing all the valuable insight in the state of software development.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "React Data Survival Kit",
        "url": "https://ponyfoo.com/articles/react-data-survival-kit",
        "description": "Learn how to handle data inside of React with this collection of patterns for fetching, storing, and retrieving data in React.",
        "imageUrl": "./16359f50a90e3023139458e17ed26c2f4925dec7e05d6c7cfb6f63204dd807d2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 114,
    "title": "How Frontend Developers Can Help To Bridge The Gap Between Designers And Developers",
    "slug": "2019-06-10-114-how-frontend-developers-can-help-to-bridge-the-gap-between-d",
    "date": "2019-06-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #23, 2019",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "How Frontend Developers Can Help To Bridge The Gap Between Designers And Developers",
        "url": "https://smashingmagazine.com/2019/05/frontend-developers-designers",
        "description": "In this article, Stefan Kaltenegger shares his personal experience and advice on what frontend developers can do on their end to better bridge the gap between designers and developers.",
        "imageUrl": "./aa4d51cc4c9724e4291aa90ce067354d7390783943461b0cd81fe156f66541b1.jpg",
        "featured": true
      },
      {
        "title": "Introducing Mercury OS",
        "url": "https://uxdesign.cc/introducing-mercury-os-f4de45a04289",
        "description": "A speculative vision of an operating system, driven by humane design principles.",
        "imageUrl": "./0df21b48d94a57088ecf2f1827275a654cf78db257c72b62e74b79ec1a0209de.jpg",
        "featured": false
      },
      {
        "title": "hasura/graphql-engine",
        "url": "https://github.com/hasura/graphql-engine",
        "description": "Blazing fast, instant realtime GraphQL APIs on Postgres with fine grained access control, also trigger webhooks on database events.",
        "imageUrl": "./22121cd6912f7e3d027a79690b7ba5e2622011e2551602121fbc90a413b1b8c8.jpg",
        "featured": false
      },
      {
        "title": "The State of Fluid Web Typography",
        "url": "https://betterwebtype.com/articles/2019/05/14/the-state-of-fluid-web-typography",
        "description": "Fluid typography gives us so many opportunities to better design the reading experiences on the web but, at the same time, it introduces problems of font sizes scaling uncontrollably and potential accessibility issues. Is fluid web typography ready to be used?",
        "imageUrl": "./b5b45ddd31ac6cd30ce8a66db834d47da7987d6c9fd444688514537988ce39e1.jpg",
        "featured": false
      },
      {
        "title": "Best practices for building a large scale react application",
        "url": "https://buttercms.com/blog/best-practices-for-building-a-large-scale-react-application",
        "description": "What are best practices for building a large React app? What libraries are useful for managing your app? Read this article to learn more.",
        "imageUrl": "./b48a9781d95bbc65fb92573fc2b904fed39bf02883386e58460968b032b020f0.jpg",
        "featured": false
      },
      {
        "title": "The 4px baseline grid",
        "url": "https://uxdesign.cc/the-4px-baseline-grid-89485012dea6",
        "description": "How I use the 4px baseline grid to measure space around text in UI design",
        "imageUrl": "./c504712fb0d04b241134645bd8aae83ea493f2ba4f68f46735559c368fe0f7f4.jpg",
        "featured": false
      },
      {
        "title": "Making the obvious code fast",
        "url": "https://jackmott.github.io/programming/2016/07/22/making-obvious-fast.html",
        "description": "Jonathan Blow of “The Witness” fame likes to talk about just typing the obvious code first. Usually, it will turnout to be fast enough. If it doesn’t, you can always optimize it later...",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 113,
    "title": "Angular 8 released",
    "slug": "2019-06-03-113-angular-8-released",
    "date": "2019-06-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #22, 2019",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "Angular 8 released",
        "url": "https://blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27",
        "description": "The 8.0.0 release of Angular is here! This is a major release spanning the entire platform. Some of the most exciting new features are: Smaller bundles, CLI APIs, better alignment with the rest of the ecosystem.",
        "imageUrl": "./5ab21217147fe49108c70f0acc2a81f76e5c21898cd5cb1198f8861a1dd86827.jpg",
        "featured": true
      },
      {
        "title": "H.264 is magic: a technical walkthrough of a remarkable technology.",
        "url": "https://sidbala.com/h-264-is-magic",
        "description": "A high level walkthrough of the basics of video compression techniques used in MPEG, AVC/H.264, codecs.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "Micron.JS - a [μ] microInteraction Library",
        "url": "https://webkul.github.io/micron",
        "description": "a [μ] microInteraction library built with CSS Animations and controlled by JavaScript Power",
        "imageUrl": "./315047ec6a4743709774bc8fcb7493ff93fb3a80171dcb06212d75240caa8b71.jpg",
        "featured": false
      },
      {
        "title": "The Future of React Router and @reach/router",
        "url": "https://reacttraining.com/",
        "description": "React Router and @reach/router are merging with a backward compatible, new hook-based API.",
        "imageUrl": "./c4f5cf71bdf9c31e2e0d2750ad6fa6a0768aba53045ad852953e30656fc69e06.jpg",
        "featured": false
      },
      {
        "title": "Zdog, pseudo-3D engine for canvas and SVG",
        "url": "https://zzz.dog/",
        "description": "Round, flat, designer-friendly pseudo-3D engine for canvas and SVG",
        "imageUrl": "./b862fb6d990d9f03d067dbadc684acc91c3649adcd9d308a1bbb129d788edb39.png",
        "featured": false
      },
      {
        "title": "Technical Debt",
        "url": "https://martinfowler.com/bliki/TechnicalDebt.html",
        "description": "Technical Debt is a metaphor for the consequences of cruft. You either have to accept a drag on further features (paying interest) or fix the software (paying the principal)",
        "imageUrl": "./a48359907eed1a37e0167f87523549558493f60c159534e2158759f098cddfe4.jpg",
        "featured": false
      },
      {
        "title": "Cloudflare architecture and how BPF eats the world",
        "url": "https://blog.cloudflare.com/cloudflare-architecture-and-how-bpf-eats-the-world",
        "description": "Recently at I gave a short talk titled \"Linux at Cloudflare\". The talk ended up being mostly about BPF. It seems, no matter the question - BPF is the answer.\n\nHere is a transcript of a slightly adjusted version of that talk.",
        "imageUrl": "./3978c6b9c4f7837cacfabb30aea36fdb7a373b7d2d4d458dbb4567168bf2a973.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 112,
    "title": "F14 - Facebook's memory-efficient hash tables",
    "slug": "2019-05-27-112-f14-facebook-s-memory-efficient-hash-tables",
    "date": "2019-05-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #21, 2019",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "F14 - Facebook's memory-efficient hash tables",
        "url": "https://code.fb.com/developer-tools/f14",
        "description": "Hash tables provide a fast way to maintain a set of keys or map keys to values, even if the keys are objects, like strings. To simplify the process of selecting the right hash table, Facebook Engineering built F14, part of Folly, our open source library of C++ components.",
        "imageUrl": "./63d1017b060b698a540b13625538e90b02aa5b6d9caa8e9ea12b18c2c62fd7e3.png",
        "featured": true
      },
      {
        "title": "Virtual DOM is pure overhead",
        "url": "https://svelte.dev/blog/virtual-dom-is-pure-overhead",
        "description": "An interesting point of view on why the Virtual DOM is overrated and not the fastest possible option for DOM rendering.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "Never run directly against Node.js in production",
        "url": "https://medium.freecodecamp.org/you-should-never-ever-run-directly-against-node-js-in-production-maybe-7fdfaed51ec6",
        "description": "How to run Node.js processes safely in production. Don't run them directly but use something like PM2 or supervisor.",
        "imageUrl": "./4019d890349124065303fb2b6fed44dd09f817fd1fb263d6bb2456445ca0844c.jpg",
        "featured": false
      },
      {
        "title": "Creating Graphs With JavaScript",
        "url": "https://dev.to/emmawedekind/creating-graphs-with-javascript-4efm",
        "description": "Graphs are a data structure comprised of a collection of nodes with edges. They are a very fundamental data structure in many computer science problems. In this article, you will learn how to create graph data structures in JavaScript.",
        "imageUrl": "./84416f4850c6e6c65f75d868ec77bc1457939de7b27485df3615a298eeca82dc.jpg",
        "featured": false
      },
      {
        "title": "Error handling with the JavaScript Either Monad",
        "url": "http://jrsinclair.com/articles/2019/elegant-error-handling-with-the-js-either-monad/index.html",
        "description": "JavaScript gives us a built-in language feature for handling exceptions: try…catch statements. And they're better than littering our code with if-statements. But they can be problematic. And they are not the only way to handle errors. In this article, we’ll take a look at using the ‘Either monad’ as a convenient alternative for error handling.",
        "imageUrl": "./715c25898b75a76f94ef64e5c4935412868d41539d88c506e9ad36f9531847bf.png",
        "featured": false
      },
      {
        "title": "A practical guide to ES6 Proxy",
        "url": "https://blog.bitsrc.io/a-practical-guide-to-es6-proxy-229079c3c2f0",
        "description": "Proxies on proxies for clean and composable Javascript metaprogramming",
        "imageUrl": "./521089c3422851747be7b79a989b28480d5ad10c51bf8470d28741a5aa3d18f5.jpg",
        "featured": false
      },
      {
        "title": "Three.js Fundamentals",
        "url": "http://threejsfundamentals.org/threejs/lessons/threejs-fundamentals.html",
        "description": "Your first Three.js lesson starting with the fundamentals",
        "imageUrl": "./86a64ec86e241997af4c39f59f6073b937ec3c11a794f341a57499de900b6e88.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 111,
    "title": "Reakit",
    "slug": "2019-05-20-111-reakit",
    "date": "2019-05-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #20, 2019",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "Reakit",
        "url": "https://reakit.io/",
        "description": "A powerful open source UI toolkit for building accessible rich web applications with React.",
        "imageUrl": "./e555a18888a967d95b41fb70477dda339b7d99fcea5fc6f74588c82413731778.jpg",
        "featured": true
      },
      {
        "title": "Dark themes",
        "url": "https://material.io/design/color/dark-theme.html",
        "description": "An set of useful guidelines on how to design Dark themes, specifically in the context of material design.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "Hybrid Lazy Loading",
        "url": "https://smashingmagazine.com/2019/05/hybrid-lazy-loading-progressive-migration-native",
        "description": "In this article, you’ll learn how you can progressively replace your JavaScript-driven lazy loading with its native alternative — thanks to hybrid lazy loading.",
        "imageUrl": "./ca10374783a154a2c77939bbbdb61da49398a1df5c1bc05ee3f9aac659b1b957.jpg",
        "featured": false
      },
      {
        "title": "Glide.js",
        "url": "https://glidejs.com/",
        "description": "A dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more",
        "imageUrl": "./4acff2303cdca061a1c3ce511d209d63a80526b9aff203bcd4c2a34dc0f93fc4.jpg",
        "featured": false
      },
      {
        "title": "Azure SQL Database serverless",
        "url": "https://docs.microsoft.com/en-us/azure/sql-database/sql-database-serverless",
        "description": "Microsoft Azure SQL Database serverless (preview) is a compute tier that bills for the amount of compute used by a single database on a per second basis.",
        "imageUrl": "./cf536d899459a8e82edd44ea629187c016c84f55d1c7f0b9ed2a8209c93e5f12.png",
        "featured": false
      },
      {
        "title": "Why That Change Took So Long",
        "url": "https://simplethread.com/dear-client-heres-why-that-change-took-so-long",
        "description": "Changes in complex software systems seem like they take forever, don’t they? Even to engineers it often feels like changes take longer than they should, and we understand the reasons for the underlying complexity in the system! For stakeholders, it can be even more obtuse and frustrating...",
        "imageUrl": "./ea9d0577e7849c113d06a7eb0cc5efe8d617f8c74d4e430a8dbc32e78a4f5b1a.jpg",
        "featured": false
      },
      {
        "title": "Multi-line text background effect",
        "url": "https://codyhouse.co/blog/post/multi-line-text-background",
        "description": "In this tutorial, we'll take a look at how to create a hover underline effect that works when your text spans on multiple lines.",
        "imageUrl": "./4565630a4afc0e7820e202571ae0531ab073311263c59cb168f2e012e4e484dd.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 110,
    "title": "Python at Netflix",
    "slug": "2019-05-13-110-python-at-netflix",
    "date": "2019-05-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #19, 2019",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "Python at Netflix",
        "url": "https://medium.com/netflix-techblog/python-at-netflix-bba45dae649e",
        "description": "Discover how a big company like Netflix uses Python across different departments: CDN, machine learning, devops, recommendation, etc.",
        "imageUrl": "./b5da09e3e07b312da57db6df7b91374da1e1dd0eda2bba1439988a7c1bc7b3bf.jpg",
        "featured": true
      },
      {
        "title": "JS: Array.push X Array.concat",
        "url": "https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki",
        "description": "An interesting overview of two common JavaScript array methods, *push* and *concat*, and why *concat* is much slower than *push*.",
        "imageUrl": "./1207f5d9a2c59f186bec43b1a5821900ec5041d04bbe473d01d0f277db53a88f.jpg",
        "featured": false
      },
      {
        "title": "How to Build a Multiplayer Web Game",
        "url": "https://victorzhou.com/blog/build-an-io-game-part-1",
        "description": "A wonderful series of articles to introduce you to the art of creating multiplayer browser-based games using mostly JavaScript, Node.js and websockets.",
        "imageUrl": "./ddb2e04e84ea571486ddef9e3ad7865ba0b2534f3faa6f4e4bf48198b40fa5b6.jpg",
        "featured": false
      },
      {
        "title": "Unraveling The JPEG",
        "url": "https://parametric.press/issue-01/unraveling-the-jpeg",
        "description": "JPEG images are everywhere in our digital lives, but behind the veil of familiarity lie algorithms that remove details that are imperceptible to the human eye. This produces the highest visual quality with the smallest file size—but what does that look like? Let's see what our eyes can't see!",
        "imageUrl": "./3ce308c0b7dc6484d0f4bb4153de2608ed0248e6c4fa4da7449833b626158a34.jpg",
        "featured": false
      },
      {
        "title": "How Far Out is AWS Fargate?",
        "url": "https://read.iopipe.com/how-far-out-is-aws-fargate-a2409d2f9bc7",
        "description": "An interesting article for serverless lovers. It describes the current status of Fargate, the AWS Docker-based serverless runtime, and compares it with AWS Lambda and Kubernetes.",
        "imageUrl": "./11060ebe3d1d8f45313db3185973b091338d6450820d354f3b5e31dd79dac64b.jpg",
        "featured": false
      },
      {
        "title": "Rust crash course (video)",
        "url": "https://youtu.be/zF34dRivLOw",
        "description": "Learn all the fundamentals of the Rust programming language in this excellent video. Really good if you have tried multiple times to get started with this language but you were discouraged by the sheer amount of new concepts to understand.",
        "imageUrl": "./5a887254f474146954bf74e7fbd22a05d8e634c727e5fdccbce1be3d6e4ab388.png",
        "featured": false
      },
      {
        "title": "Using CloudWatch and Lambda to implement ad-hoc scheduling",
        "url": "https://theburningmonk.com/2019/05/using-cloudwatch-and-lambda-to-implement-ad-hoc-scheduling",
        "description": "A while back I wrote about using DynamoDB TTL to implement ad-hoc scheduling. It generated some healthy debate and a few of you have mentioned alternatives including using Step Functions. So let’s take a look at some of these alternatives, starting with the simplest – using a cron job.",
        "imageUrl": "./f8bb1481056e42cf2b8e63766fdd16682d1bcccdd9591aa6b01f4d17e2bfd093.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 109,
    "title": "Building the new Facebook",
    "slug": "2019-05-06-109-building-the-new-facebook",
    "date": "2019-05-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #18, 2019",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "Building the new Facebook",
        "url": "https://developers.facebook.com/videos/2019/building-the-new-facebookcom-with-react-graphql-and-relay/",
        "description": "Open source projects like React, GraphQL and Relay are powering more and more Facebook services. This video session discloses how Facebook use the latest features of these technologies, like React Suspense, to help deliver a high quality, modern web experience at Facebook.",
        "imageUrl": "./6f8dd7b08593c2d6306e0c0aaac9d4a0d75f9ba042f1975e479c9b087b4e278b.png",
        "featured": true
      },
      {
        "title": "Introducing Node.js 12",
        "url": "https://medium.com/@nodejs/introducing-node-js-12-76c41a1b3f3f",
        "description": "Node.js 12 was recently released and this post recaps on the new additions to this amazing runtime. Some spoilers: TLS 1.3, experimental support for ES6 modules, startup improvements, worker threads. Find out all the other changes :)",
        "imageUrl": "./fde672ab8f70976715b696ea8d6415f7768d094613f91dc34888977d3ef56d81.jpg",
        "featured": false
      },
      {
        "title": "OKAI - An Interactive Introduction to Artificial Intelligence (AI)",
        "url": "https://okai.brown.edu/index.html",
        "description": "OKAI utilizes interactive graphics to demystify and introduce Artificial Intelligence concepts to a broader audience.",
        "imageUrl": "./caffbb6369311393796a25dae01136eecdd9dfb708143b73f13e4628129d778d.jpg",
        "featured": false
      },
      {
        "title": "HTTP headers for the responsible developer",
        "url": "https://twilio.com/blog/a-http-headers-for-the-responsible-developer",
        "description": "This article proposes a number of best practices to use HTTP headers to build better web applications: security, caching, content negotiation and more.",
        "imageUrl": "./27f5673f4fb2f6b6993d05760d1e28579bf17952ff60006c01f1d122aca4e81d.jpg",
        "featured": false
      },
      {
        "title": "Steal Your Way to a High Performance Landing Page",
        "url": "https://hackernoon.com/steal-your-way-to-a-high-performance-landing-page-149ea067520d",
        "description": "A 3-step theft tactic for optimizing software product landing pages",
        "imageUrl": "./127120435b5ab87d3f56049cbd3dca6771e236c9ac1a6aa3926ec7dfd0b8f1ec.jpg",
        "featured": false
      },
      {
        "title": "A crash course to the most important Docker concepts and their commands",
        "url": "https://dev.to/azure/a-crash-course-to-the-most-important-docker-concepts-and-their-commands-4eio",
        "description": "The key to learning anything is to quickly understand the most important concepts and how they go together. This is true for Docker as well so let's try to learn them",
        "imageUrl": "./b0d9d83ef2fd2eab39f13c3a81a350bb96987a8989467a5af84aab8580669538.jpg",
        "featured": false
      },
      {
        "title": "Wrap a Vanilla JavaScript Package for Use in React",
        "url": "http://scotch.io/tutorials/wrap-a-vanilla-javascript-package-for-use-in-react",
        "description": "Complex web projects often require the use of 3rd party widgets. But what if you're using a framework while a widget is only available in pure JavaScript? To use a JavaScript widget in your project, the best approach would be to create a framework specific wrapper and this article shows you how to do exactly that!",
        "imageUrl": "./019069933ef99164de9002352575a66b83fb1fa7cb75e56cea6ebf520666f18d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 108,
    "title": "Comparing 27,740 Skittles",
    "slug": "2019-04-29-108-comparing-27-740-skittles",
    "date": "2019-04-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #17, 2019",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "Comparing 27,740 Skittles",
        "url": "https://possiblywrong.wordpress.com/2019/04/06/follow-up-i-found-two-identical-packs-of-skittles-among-468-packs-with-a-total-of-27740-skittles",
        "description": "What's the likelihood of finding two packs of skittles with identical content? Well, \"why?\" you might ask... That's not just a fun (and a bit of a crazy) read, but it will teach you some important mathematical and statistical properties that you might need to use in your next project!",
        "imageUrl": "./325c540d19fd0a484e5fee1827d9d2614e7930cb16dfbbb682a9b767237a984c.jpg",
        "featured": true
      },
      {
        "title": "Constructable Stylesheets",
        "url": "https://developers.google.com/web/updates/2019/02/constructable-stylesheets",
        "description": "Shipping in Chrome 73, Constructable Stylesheets provide a seamless way to create and distribute styles to documents or shadow roots without worrying about FOUC.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Goodbye Joe",
        "url": "https://ferd.ca/goodbye-joe.html",
        "description": "Recently, we've learned of Joe's passing away. Joe Armstrong, the inventor of the Erlang programming language, was undoubtedly one of those brilliant minds that revolutionised the world of programming. This post tries to pay a tribute to his work and his inspiring personality.",
        "imageUrl": "./3f73850816184421c37a029412316411c45041b5ff60829ad37836457b82a8f3.png",
        "featured": false
      },
      {
        "title": "Application State Management with React",
        "url": "https://kentcdodds.com/blog/application-state-management-with-react",
        "description": "In this post, Kent C. Dodds shows us how React is all you need to manage your application state. No Redux, no other third party libraries...",
        "imageUrl": "./a588dacc3a9d97a7ab6d11bf0557009410d948bf27185be96d3cf43a099c5e99.jpg",
        "featured": false
      },
      {
        "title": "Refactoring the Worst Code I’ve Ever Written",
        "url": "https://dev.to/jnschrag/refactoring-the-worst-code-i-ve-ever-written-42c7",
        "description": "I explain the pros and cons of 3 different approaches to refactoring code from my very first project.",
        "imageUrl": "./b39b85bde834cc8e28ebd3ecff8a816b79d360d6d450a461a8a03a883c9a437a.jpg",
        "featured": false
      },
      {
        "title": "Experimental Node.js: testing the new performance hooks",
        "url": "https://blog.logrocket.com/experimental-node-js-testing-the-new-performance-hooks-31fcdd2a747e",
        "description": "How to use the Performance Timing API (with examples).",
        "imageUrl": "./9afd2a55592ab5c8aa9f5e6866c91e4e0b43e9ae09d64059ab178b060d171102.jpg",
        "featured": false
      },
      {
        "title": "Learn by Contributing",
        "url": "https://dev.to/agoldis/learn-by-contributing-27g6",
        "description": "How to use open source projects to improve software development skills.",
        "imageUrl": "./91143bc15a97ddb52ad7249cd3b52300517cdd317716f49c75d93246d17f8169.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 107,
    "title": "Front-end Developer Handbook 2019",
    "slug": "2019-04-22-107-front-end-developer-handbook-2019",
    "date": "2019-04-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #16, 2019",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Front-end Developer Handbook 2019",
        "url": "https://frontendmasters.com/books/front-end-handbook/2019",
        "description": "A guide for front-end developers to equip themselves with latest learning resources and development tools in front-end engineering.",
        "imageUrl": "./aa972cadab285531238b07da822747ba22d309c393ac3504f9f3ef2f717b5eb4.jpg",
        "featured": true
      },
      {
        "title": "Dockerize the multi-services application for local development",
        "url": "https://dev.to/amplifr/dockerize-the-multi-services-application-for-local-development-2oig",
        "description": "The handy local development containerization guide, with examples of the Amplifr project dockerization. Getting the services written in Ruby, Node.js, and Golang work together locally with docker networks.",
        "imageUrl": "./ccb738221458d7185daf2e87a25b376aa5ea8766e7f2a68c46e2397b47206946.jpg",
        "featured": false
      },
      {
        "title": "Announcing Rust 1.34.0",
        "url": "https://blog.rust-lang.org/2019/04/11/Rust-1.34.0.html",
        "description": "Alternative cargo registries, in documentation tests, TryFrom and TryInto and Library stabilizations are only some of the new features in the latest release of Rust.",
        "imageUrl": "./7356b30b845569feba346c912458fa4cef165d8342195cd976317e62a1fdeb00.jpg",
        "featured": false
      },
      {
        "title": "The Missing Introduction To Containerization",
        "url": "https://medium.com/devopslinks/the-missing-introduction-to-containerization-de1fbb73efc5",
        "description": "A fantastic (and extremely complete) introduction to containerization. Even if you feel confident enough about Docker and Containers, for sure you are going to benefit in some way by reading this article.",
        "imageUrl": "./70cc45941b873cd9bdafd118fb4f1964702533237bf241ce349d7a00527a42ca.jpg",
        "featured": false
      },
      {
        "title": "The Web Developer's Guide to DNS",
        "url": "https://rjzaworski.com/2019/04/the-web-developers-guide-to-dns",
        "description": "Domain Name System, DNS, bears the inglorious responsibility of turning hostnames like pets.com into a machine-friendly IP address. DNS servers essentially glue the web together, so as a web developer you probably want to know more about how this protocol works.",
        "imageUrl": "./c4c83ae6d5f38004694c2cdfaccbebcf562af077711521d174ba90cf811e5535.jpg",
        "featured": false
      },
      {
        "title": "Using JSON Schema to Document, Test, and Debug APIs",
        "url": "https://blog.heroku.com/json-schema-document-debug-apis",
        "description": "How Heroku uses JSON Schema to test and document our Platform API–and how it helped us uncover an unexpected bug.",
        "imageUrl": "./42343a4b860f1e8384c6095c09a1592c22e27382406193076da396bf318f4ccf.jpg",
        "featured": false
      },
      {
        "title": "Why you should use CSS env()",
        "url": "https://blog.logrocket.com/why-you-should-use-css-env-9ee719ce0f24",
        "description": "Learn how you can use the CSS env() feature and a PostCSS plugin to share the same variables between CSS and JS in a single file.",
        "imageUrl": "./3acb6fa65ac3c4fb1e98f0da0d7d4e80bfdb7d9c0c2f032d939bcc9f13240fb4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 106,
    "title": "Native image lazy-loading for the web",
    "slug": "2019-04-15-106-native-image-lazy-loading-for-the-web",
    "date": "2019-04-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #15, 2019",
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "Native image lazy-loading for the web!",
        "url": "https://addyosmani.com/blog/lazy-loading",
        "description": "In this post, we'll look at the new loading attribute which brings native <img> and <iframe> lazy-loading to the web!",
        "imageUrl": "./3cca7d5a3bec9249491463da84eb7d5f56a2bc2bbf2bd3a20d41599637f6e65d.jpg",
        "featured": true
      },
      {
        "title": "How Does a Database Work?",
        "url": "https://cstack.github.io/db_tutorial",
        "description": "Writing a SQLite clone from scratch in C can teach you a lot about how databases work. If you are interested in this topic you cannot miss this series of tutorials.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "10 Data Structure, Algorithms, and SQL Courses",
        "url": "https://dev.to/javinpaul/10-data-structure-algorithms-sql-and-java-courses-to-crack-any-programming-job-interview-11f6",
        "description": "A collection of programming, algorithms, and data structure online courses to prepare for Programming Job interviews.",
        "imageUrl": "./2f02c24429ac0911b58c9fdcbb1de6cdf0c6505e2ee838461d54b4a42504b2b5.jpg",
        "featured": false
      },
      {
        "title": "Managing Z-Index In A Component-Based Web Application",
        "url": "https://smashingmagazine.com/2019/04/z-index-component-based-web-application",
        "description": "The `z-index` property, is still widely misunderstood and mishandled. Stacking issues in a complex single-page web application can become a major pain. Adhering to some principles, however, we can easily avoid these issues.",
        "imageUrl": "./81e99affc954b5453f2da4f817adc75ba33b0deb3ba1ae0d7e67a8371c777faf.jpg",
        "featured": false
      },
      {
        "title": "Browser Rendering Optimizations for Frontend Development",
        "url": "http://scotch.io/tutorials/browser-rendering-optimizations-for-frontend-development",
        "description": "In this article, we explore the conditions that can enable (and prevent) a web application to run (optimally) at 60 frames per second. We also look at several optimizations that can be plugged into the broser's rendering pipeline.",
        "imageUrl": "./c1eaf10c471f08492d76e451e43dc8481ccb1aaa535971cf515eb60110a17c27.jpg",
        "featured": false
      },
      {
        "title": "Comparing Nuclio and AWS Lambda",
        "url": "https://devops.com/comparing-nuclio-and-aws-lambda",
        "description": "We compare the Nuclio serverless platform with AWS Lambda, see how Nuclio addresses AWS Lambda's limitations and explore new use cases Nuclio can unlock.",
        "imageUrl": "./21e15bad31cdc877b11113079573c91338e00202a71832cf25ab393b475498cf.jpg",
        "featured": false
      },
      {
        "title": "Domain-Oriented Observability",
        "url": "https://martinfowler.com/articles/domain-oriented-observability.html",
        "description": "Add observability to your code without adding cruft to your domain logic or compromising on testability.",
        "imageUrl": "./44448cd9fc4c6d991d91380a1a7ef9be5ba636fc2686ec15c940a5ecb76cd08e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 105,
    "title": "Password Managers Under the Hood",
    "slug": "2019-04-01-105-password-managers-under-the-hood",
    "date": "2019-04-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #13, 2019",
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "Password Managers Under the Hood",
        "url": "https://securityevaluators.com/casestudies/password-manager-hacking",
        "description": "We found that in all password managers we examined, trivial secrets extraction was possible from a locked password manager, including the master password in some cases, exposing up to 60 million users that use the password managers in this study…",
        "imageUrl": "./245af20363f52c6c2871424ea794d7c95a35178edff32a5fe8a048c98ce1c499.jpg",
        "featured": true
      },
      {
        "title": "Deconstructing the monolith",
        "url": "https://engineering.shopify.com/blogs/engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity",
        "description": "The interesting journey of Shopify which had one of the biggest Ruby On Rails monolith and slowly transitioned into a more scalable architecture.",
        "imageUrl": "./f2a92b8601d08cd3ca27cf1b8d3540bf03a89d20627e381c8039dc169272a8c2.jpg",
        "featured": false
      },
      {
        "title": "WASI: A system interface to run WebAssembly",
        "url": "https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface",
        "description": "It should be possible to run WebAssembly outside the web, but in order to do that we need a system interface, for instance, to interact with the filesystem. WASI is here to try to form a standard around this idea.",
        "imageUrl": "./5828958058cc34903f7be2769a3c2d7db91a437d74a13f6cd5f16527b02a2cc6.jpg",
        "featured": false
      },
      {
        "title": "Fuchsia OS",
        "url": "https://bzdww.com/article/163937",
        "description": "Fuchsia is a new operative system built by the research department of Google. In this article, you will discover why this OS is different from Linux and what we can expect from the future in case Fuchsia becomes mainstream.",
        "imageUrl": "./c4356c8653bd78df8bdd48a69e4b454a01f0c6d0107eb631a8fba332948425bc.jpg",
        "featured": false
      },
      {
        "title": "Who has the fastest website in F1?",
        "url": "https://jakearchibald.com/2019/f1-perf",
        "description": "Can I predict the winners of the 2019 F1 season by looking at the performance of their websites? No. But I'm gonna anyway.",
        "imageUrl": "./4e5f1ae3a5e30b9098c47170aeba201903baaa90ca8a946cc04b4edb5310c84d.jpg",
        "featured": false
      },
      {
        "title": "Complete Node js Project Setup from Docker to Testing",
        "url": "https://medium.com/@nur_islam/complete-node-js-project-setup-from-docker-to-testing-docker-restfull-apis-with-node-js-9f384e06734a",
        "description": "In this tutorial, I’ll show you how to set up a simple project with Node.js + Express.js + MongoDB + JEST Integration Testing.",
        "imageUrl": "./e0b606822e58eca329fd5db7d42d8f4d9b39de6b61fbde4efa8928374999c2ea.jpg",
        "featured": false
      },
      {
        "title": "A Complete Beginner's Guide to Vue",
        "url": "https://dev.to/aspittel/a-complete-beginners-guide-to-vue-422n",
        "description": "Vue.js is a frontend framework that is optimized for progressive integration. This is a tutorial to get you started with this wonderful technology.",
        "imageUrl": "./919561fac5d8afed7dc6fa21d8c881641aef87c487654919e956bd4693ffacea.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 104,
    "title": "React popularity",
    "slug": "2019-03-25-104-react-popularity",
    "date": "2019-03-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #12, 2019",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "React populatirty",
        "url": "https://scotch.io/starters/react/react-popularity-and-when-not-to-use-react",
        "description": "There are many big reasons for why React has become so popular. Let's examine how popular React is, what people like about it, and when we should/shouldn't use React.",
        "imageUrl": "./a23a65e67528a39cc6b3d364321e5674fd1ce8bc77b8fc34771d8db3a36d9bc2.jpg",
        "featured": true
      },
      {
        "title": "Building a ‘Homebrew’ Video Game Console",
        "url": "https://internalregister.github.io/2019/03/14/Homebrew-Console.html",
        "description": "An amusing and almost incredible software and hardware projects for fun from a guy who loves retro computing. Definitely inspiring, even if you are not into electronics or consoles.",
        "imageUrl": "./6051efffabf5c9d63177fa609cd9b5dd0c889466a6691e0633b71486acf7e4f7.png",
        "featured": false
      },
      {
        "title": "A JavaScript-Free Frontend",
        "url": "https://dev.to/winduptoy/a-javascript-free-frontend-2d3e",
        "description": "How I used almost no JavaScript to build a modern and complete web app.",
        "imageUrl": "./baed30f6dc0f2ab21c55b5fd52e13975a2663508a94aca631491ab3a50391c93.jpg",
        "featured": false
      },
      {
        "title": "Writing Resilient Components",
        "url": "https://overreacted.io/writing-resilient-components",
        "description": "Four principles to set you on the right path when creating production-ready React components.",
        "imageUrl": "./6dff0524c9ab7134c147d9648692a9857812dfa1df69860783994e91cc5e825f.jpg",
        "featured": false
      },
      {
        "title": "KV Storage: the Web's First Built-in Module",
        "url": "https://developers.google.com/web/updates/2019/03/kv-storage",
        "description": "An introduction to the new KV Storage API, built-in modules, and import maps.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Ten Ways to Secure your Applications",
        "url": "https://blog.heroku.com/ten-ways-to-secure-your-apps",
        "description": "Several commonly overlooked ways to secure your web apps. Our attackers keep getting better, and so must we.",
        "imageUrl": "./42343a4b860f1e8384c6095c09a1592c22e27382406193076da396bf318f4ccf.jpg",
        "featured": false
      },
      {
        "title": "How to Dockerize a Node.js application",
        "url": "https://buddy.works/guides/how-dockerize-node-application",
        "description": "Learn how to create a Docker image of your Node.js app and run it on any computer supporting Docker.",
        "imageUrl": "./525126168fcbbea23e1d9b259b97390d18c86f115501b4cb78de7235e01c6703.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 103,
    "title": "\udf08🍻 #103: A Brief History of Computer Vision",
    "slug": "2019-03-18-103-11-a-brief-history-of-computer-vision",
    "date": "2019-03-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #11, 2019",
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "A Brief History of Computer Vision",
        "url": "https://hackernoon.com/a-brief-history-of-computer-vision-and-convolutional-neural-networks-8fe8aacc79f3",
        "description": "Although Computer Vision has only exploded recently, computer scientists have been trying to find ways to make machines extract meaning from visual data for about 60 years now, and the history of CV is deeply fascinating. In this article, you will learn how modern CV systems, powered primarily by convolutional neural networks, came to be.",
        "imageUrl": "./54c869339f8d47446fcb17b8032dcacd082206074b76e907b6c7693bd110008d.jpg",
        "featured": true
      },
      {
        "title": "A Complete Guide to useEffect",
        "url": "https://overreacted.io/a-complete-guide-to-useeffect",
        "description": "Sometimes when you the *useEffect* hook in your React components, the pieces don’t quite fit together. You have a nagging feeling that you’re missing something. It seems similar to class lifecycles… but is it really?",
        "imageUrl": "./6c5144e2e857da25cc361619dbb651778fdb31bb1327154cb632a9ae3aa918fe.png",
        "featured": false
      },
      {
        "title": "Understand, Design, Build: A Framework for Problem-Solving",
        "url": "https://lob.com/blog/understand-design-build-a-framework-for-problem-solving",
        "description": "There’s a common misconception among new software professionals that the best engineers are the best at writing code. In other words, if we get really, really good at writing code, we’ll become really, really good software engineers. But is it code the only thing that matters?",
        "imageUrl": "./54d56b3193a0a1ba8f6b34ecca876bc28c4b8381720e9adb4b60d7cfb6af3e32.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Symbols: But Why?",
        "url": "https://medium.com/intrinsic/javascript-symbols-but-why-6b02768f4a5c",
        "description": "Symbols, the newest JavaScript primitive, bring a few benefits to the language and are particularly useful when used as object properties.",
        "imageUrl": "./2ee2af751a464ac88d3efc7230031b29af323f123752cbe4fee72a7c3cebb3d6.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Performance Pitfalls in V8",
        "url": "https://ponyfoo.com/articles/javascript-performance-pitfalls-v8",
        "description": "Benedikt shows how V8 compiles your JavaScript programs, and explains a few tricks you can use to avoid draining application performance down the sink.",
        "imageUrl": "./23746817379ad354cd3d679174c1406915aa1f48b42b7545de3ce7defb6692e4.jpg",
        "featured": false
      },
      {
        "title": "Lesser-known CSS properties in GIFs",
        "url": "https://medium.com/@PavelLaptev/lesser-known-css-properties-in-gifs-966a143497ba",
        "description": "A lot of developers afraid to implement some effects because they will demand JS which could be heavy and complicated, but CSS can do many many things, so maybe you don't always need fancy JS scripts...",
        "imageUrl": "./4fa1144c3c7f67ca38c00ffdeba7fc189df81669e99593c73ff81f528d7dd1c4.jpg",
        "featured": false
      },
      {
        "title": "A gentle introduction to multithreading",
        "url": "http://internalpointers.com/post/gentle-introduction-multithreading",
        "description": "Approaching the world of concurrency, one step at a time.",
        "imageUrl": "./e5593a078bfdf705c282a3e71f51fef2ae14910afb8c3a91b6bf72c6e1cfff9a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "UX Strategy: How to Devise Innovative Digital Products that People Want",
      "author": "Jaime Levy",
      "description": "User experience (UX) strategy requires a careful blend of business strategy and UX design, but until now, there hasn’t been an easy-to-apply framework for executing it. This hands-on guide introduces lightweight strategy tools and techniques to help you and your team craft innovative multi-device products that people want to use. Whether you’re an entrepreneur, UX/UI designer, product manager, or part of an intrapreneurial team, this book teaches simple-to-advanced strategies that you can use in your work right away.",
      "coverImageUrl": "./fb5bfe56ce390883cd7e92437fbc707fe0ce9062ff82c591ed2eba65ee4daa8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372864/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372864/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 102,
    "title": "When Is A Button Not A Button?",
    "slug": "2019-03-11-102-when-is-a-button-not-a-button",
    "date": "2019-03-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #10, 2019",
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "When Is A Button Not A Button?",
        "url": "https://smashingmagazine.com/2019/02/buttons-interfaces",
        "description": "Not everything that’s round and stands out is considered to be a button. In this article, Vadim explains how you can create a proper interactive button for your users — one that shouldn’t be confused for anything else.",
        "imageUrl": "./36252d6d256e5aede0edd5d0b0f8e6b2dcd368e33ef3a71bc5804ee9ecf1d9ed.jpg",
        "featured": true
      },
      {
        "title": "Streaming 102: The world beyond batch",
        "url": "https://oreilly.com/ideas/the-world-beyond-batch-streaming-102",
        "description": "The what, where, when, and how of unbounded data processing. By the author of the book \"Streaming Systems\" (2018, O'Reilly).",
        "imageUrl": "./9ee2d19d75b29a6a7c3f079005cd36d9df6bf49d5c18488019d46407e1c4297b.jpg",
        "featured": false
      },
      {
        "title": "Web Page Footers 101: Design Patterns and When to Use Each",
        "url": "https://nngroup.com/articles/footers",
        "description": "Footers can be found at the bottom of almost every web page, and often take many forms, depending on the type of content on a website. Regardless of the form they take, their presence is critical (and highly underrated).",
        "imageUrl": "./5712081f8bb71114c153e987298d1932a56c7869e64499f4d8994f2a02f04969.jpg",
        "featured": false
      },
      {
        "title": "Elixir: A Mini-Documentary",
        "url": "https://youtube.com/watch?v=lxYFOM3UJzo",
        "description": "Get ready to explore the origins of the #Elixir programming language, the manner in which it handles concurrency and the speed with which it has grown since its creation back in 2011.",
        "imageUrl": "./3b8b080ff401c9298bcdc4cb1b02faa9cf51818730d7cac4f8889379530a5b4c.jpg",
        "featured": false
      },
      {
        "title": "Get Started With Node",
        "url": "https://smashingmagazine.com/2019/02/node-api-http-es6-javascript",
        "description": "An introduction to the backend web application development process — discussing bleeding edge ES6+ JavaScript features, the HyperText Transfer Protocol, working with APIs and JSON, and using Node.js to build fast and scalable backends.",
        "imageUrl": "./3c5658d845b6e30ca6245de40459a4d0cca7ebf87fe05760ceaf81db770c8a43.jpg",
        "featured": false
      },
      {
        "title": "Breaking Boxes With CSS Fragmentation",
        "url": "https://smashingmagazine.com/2019/02/css-fragmentation",
        "description": "What is fragmentation, why might you want to use it, and what is the current state of browser support? Rachel Andrew has the answers.",
        "imageUrl": "./8411bf7abebd60be21857342ffd9423c004872c774a93f5c1fc3c168fca81f74.jpg",
        "featured": false
      },
      {
        "title": "Storybook 5.0",
        "url": "https://medium.com/storybookjs/storybook-5-0-db1d0f9c83b8",
        "description": "Welcome to the future of component development! Storybook Version 5.0 (SB5) was just released and it's considered the biggest release to date.",
        "imageUrl": "./5c44cc5127366fe3514490bce18ae3153128067c1ca13ddbda177a0e9607c83c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 101,
    "title": "Programming is Hard",
    "slug": "2019-03-04-101-programming-is-hard",
    "date": "2019-03-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #9, 2019",
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "Programming is Hard",
        "url": "https://dev.to/somedood/programming-is-hard-2p87",
        "description": "Indeed it is. Hollywood films often portray programmers as fast-typing computer wizards who can \"hack\" into anything. We all know that this can never be farther from the truth. Here is an article that discusses what goes into the many aspects of \"real\" programming.",
        "imageUrl": "./186bf4ec6444ef183a9c7709e3865a5c6937e7f0843c50bcd0b8eebe7e19a7de.jpg",
        "featured": true
      },
      {
        "title": "UTF8 & the unicode miracle",
        "url": "https://www.youtube.com/watch?v=MijmeoH9LT4%3Futm_source%3Dfullstackbulletin.com",
        "description": "Representing symbols, characters and letters that are used worldwide is no mean feat, but unicode managed it - how? Tom Scott explains how the web has settled on a clever and highly efficient standard.",
        "imageUrl": "./1b97b0bdf8584175c1fb45f27e119da0e9a24dd0cfe56023c8628be187d992a8.jpg",
        "featured": false
      },
      {
        "title": "An Introduction To WebBluetooth",
        "url": "https://smashingmagazine.com/2019/02/introduction-to-webbluetooth",
        "description": "With Progressive Web Apps, you can now use the web to build full-blown apps. Thanks to WebBluetooth, we can now build Progressive Web Apps that can control your lights, drive a car or even control a drone.",
        "imageUrl": "./531ae24ac9ab9cb990df049d9818da3347fa38d1ebf6a67fe3d42be4590cdee3.jpg",
        "featured": false
      },
      {
        "title": "Learn OpenGL",
        "url": "https://learnopengl.com/",
        "description": "LearnOpenGL provides good and clear modern 3.3+ OpenGL tutorials with clear examples. A great resource to learn modern OpenGL aimed at beginners.",
        "imageUrl": "./e72b17d1eaf412841f1254cec11c07b36fc02b873889ea6a0f1dfd08722d048d.png",
        "featured": false
      },
      {
        "title": "React lifecycle methods in plain language",
        "url": "https://blog.logrocket.com/the-new-react-lifecycle-methods-in-plain-approachable-language-61a2105859f3",
        "description": "What are lifecycle methods? How do the new React16+ lifecycle methods fit in? How can you intuitively understand what they are and why they are useful?",
        "imageUrl": "./0bbe18b212a1da7b997c0010d24af17ed167c740c7fef89d48e2a7ba1b33da5f.jpg",
        "featured": false
      },
      {
        "title": "The Beauty of Pattern Matching in Elixir",
        "url": "https://www.poeticoding.com/the-beauty-of-pattern-matching-in-elixir",
        "description": "This article shows one of the most interesting features of Elixir, pattern matching. Elixir is pattern matching can be extensively used all over the code not just to do matching, but also for destructuring, error handling and control flow.",
        "imageUrl": "./c040365ddefd2508ca93dc0dd4eecfb06651b61b865cb39b887cfdd93192db06.png",
        "featured": false
      },
      {
        "title": "Colorful Pattern Masking in Illustrator",
        "url": "https://veerle.duoh.com/design/colorful-pattern-masking-in-illustrator",
        "description": "Ever wondered how you can mask a colorful pattern into letter shapes, while keeping the text editable? Sounds more difficult than it is. The hard part is actually finding the right pattern and colors.",
        "imageUrl": "./5d600ea2543172d8d26ab3bef62fb5b93635acbebe8f6713d5c292240677ca97.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 100,
    "title": "Bootstrap 4.3.0",
    "slug": "2019-02-25-100-bootstrap-4-3-0",
    "date": "2019-02-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #8, 2019",
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor and Author",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "Bootstrap 4.3.0",
        "url": "https://blog.getbootstrap.com/2019/02/11/bootstrap-4-3-0",
        "description": "This new version of Bootstrap has landed with over 120 combined closed issues and merged pull requests. This release brings improvements to our utilities, some prep work for moving on to v5’s development, and the standard bug fixes and documentation updates.",
        "imageUrl": "./027fdc6a96d91919f7f97ee6a0161d4a8b12ae34275e3ec06d92c41b1cc938bb.jpg",
        "featured": true
      },
      {
        "title": "Why I Write CSS in JavaScript",
        "url": "https://mxstbr.com/thoughts/css-in-js",
        "description": "For three years, I have styled my web apps without any `.css` files. Instead, I have written all the CSS in JavaScript. Let me explain.",
        "imageUrl": "./6f820dcc96fca1ed9986012904a4fbee031bc89cdb07daaa304686b645b73f30.jpg",
        "featured": false
      },
      {
        "title": "Array manipulation in JavaScript",
        "url": "https://dev.to/thomasaudo/advanced-array-manipulation-in-javascript--fhi",
        "description": "**.every**, **.filter**, **.map**, and **.reduce**. These are some of the interesting array methods you should know to get proficient with JavaScript.",
        "imageUrl": "./40560c7ed61825ca5dea92b19a08f9f8007bbaff134ed40e4ccd8969f42e9ca9.jpg",
        "featured": false
      },
      {
        "title": "To Grid or to Flex?",
        "url": "https://css-irl.info/to-grid-or-to-flex",
        "description": "When should you use CSS grids, rather than CSS Flex boxes? This article goes through different ideas to understand what layout technique might be the best for a given project.",
        "imageUrl": "./2340ac14df6132d7be6aa9b8a70201d32934acddc356d76ac52e479cf32bb40e.png",
        "featured": false
      },
      {
        "title": "How to secure a Linux server",
        "url": "https://github.com/imthenachoman/How-To-Secure-A-Linux-Server",
        "description": "An evolving how-to guide for securing a distribution-agnostic Linux server. Open sourced on GitHub!",
        "imageUrl": "./cde15c705cd93ea948609a1efb23df75ff4458b1b40213c6abd13ff873300992.jpg",
        "featured": false
      },
      {
        "title": "Moving from Ruby to Rust",
        "url": "http://deliveroo.engineering/2019/02/14/moving-from-ruby-to-rust.html",
        "description": "How Deliveroo is moving their Tier 1 service from Ruby to Rust and how they didn’t break production. An interesting use case if you thinking to replace an existing language with Rust (or even another language) in your production application.",
        "imageUrl": "./72c2d6b4f3464059d2874bb72530b45bee7f568763ce671b1ad2ee9975c9edd5.jpg",
        "featured": false
      },
      {
        "title": "Principled GraphQL",
        "url": "https://principledgraphql.com/",
        "description": "Best practices for implementing and scaling a data graph using GraphQL",
        "imageUrl": "./64e539f1de2953641841dce27b19676686e96f4db107af95105ce847c1baa7c7.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld",
      "description": "Information architecture (IA) is far more challenging—and necessary—than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond.To guide you through this broad ecosystem, this popular guide—now in its fourth edition—provides essential concepts, methods, and techniques for digital design that have withstood the test of time.",
      "coverImageUrl": "./6479919bd4c4e1ab7a2cbc0f5cf23b45ee7ca46af986574798fd02163903111f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 99,
    "title": "React v16.8 (With Hooks) shipped",
    "slug": "2019-02-18-099-react-v16-8-with-hooks-shipped",
    "date": "2019-02-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #7, 2019",
    "quote": {
      "text": "Technology is a word that describes something that doesn’t work yet",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "React v16.8 (With Hooks) shipped",
        "url": "https://reactjs.org/blog/2019/02/06/react-v16.8.0.html",
        "description": "With React 16.8, React Hooks are available in a stable release! What Are Hooks? Hooks let you use state and other React features without writing a class. You can also build your own Hooks to share reusable stateful logic between components.",
        "imageUrl": "./7874d8c8837ccfd39ff50c00555945d6c7fdb31a3b8c165d8c07654b508735d4.png",
        "featured": true
      },
      {
        "title": "Comprehensive Python Cheatsheet",
        "url": "https://gto76.github.io/python-cheatsheet",
        "description": "Exhaustive, simple, beautiful and concise. A truly pythonic cheat sheet about Python programming language.",
        "imageUrl": "./b92f5667b9a95fa1e6893638a107986acb097c5783383d0c08df7d21dc2aef76.png",
        "featured": false
      },
      {
        "title": "Basic Color Theory for Web Developers",
        "url": "https://dev.to/nzonnenberg/basic-color-theory-for-web-developers-15a0",
        "description": "How to make your website look good when you can't even match your socks.",
        "imageUrl": "./0c678b3f54bbb66f405e9d92d8059427b22b517d7fd9702c7c63357c2f1cbe8a.jpg",
        "featured": false
      },
      {
        "title": "5 Ways to animate a React app",
        "url": "https://medium.com/@dmitrynozhenko/5-ways-to-animate-a-reactjs-app-in-2019-56eb9af6e3bf",
        "description": "Animations in React apps is a popular topic and there are many ways to create different types of animations.",
        "imageUrl": "./16ced1914fc3b2d31134d46307803cb57fcace65815a0e2861ca677ccb7336e1.jpg",
        "featured": false
      },
      {
        "title": "Blotter.js",
        "url": "http://blotter.js.org/",
        "description": "A JavaScript API for drawing unconventional text effects on the web.",
        "imageUrl": "./5a526aa3e7dac54245b08f3ec76e11556bf276ae870b6c8bb13c709e96ecd209.jpg",
        "featured": false
      },
      {
        "title": "On Being A Principal Engineer",
        "url": "https://blog.dbsmasher.com/2019/01/28/on-being-a-principal-engineer.html",
        "description": "A very interesting article about career progression in Tech. Does being a Principal Engineer means that you have to step into management or is there a career path that will allow you to stay highly technical and still grow within your company?",
        "imageUrl": "./c537f12b64b955ac6a0573580d1c00fe6646dc07fdedab915ebc3dab75920000.jpg",
        "featured": false
      },
      {
        "title": "grpc / The state of gRPC in the browser",
        "url": "https://grpc.io/blog/state-of-grpc-web",
        "description": "A high performance, open source, general RPC framework that puts mobile and HTTP/2 first.",
        "imageUrl": "./43829b0aa3ea4e0bf76811a14dc357a866d87521d767c8268de0037d15a8696b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Big Data: Principles and best practices of scalable realtime data systems",
      "author": "Nathan Marz",
      "description": "Big Data teaches you to build big data systems using an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data. It describes a scalable, easy-to-understand approach to big data systems that can be built and run by a small team.",
      "coverImageUrl": "./f109f576f51b956a93fffd90f2756794ef95a8d46f118a0f1e23f611c7af4a75.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617290343/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617290343/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 98,
    "title": "Data Structures for Coding Interview",
    "slug": "2019-02-04-098-data-structures-for-coding-interview",
    "date": "2019-02-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #5, 2019",
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "Data Structures for Coding Interviews",
        "url": "https://interviewcake.com/article/java/data-structures-coding-interview",
        "description": "Finally, a dead-simple explanation of CS data structures (linked lists, hash maps, etc.). No CS degree necessary. No proofs, and no confusing academic jargon.",
        "imageUrl": "./0a8edf5848ea7046928f18ca44e1d2fe9bb9c1b4d47e3420e294eabc9a7659a1.jpg",
        "featured": true
      },
      {
        "title": "Node.js multithreading",
        "url": "https://blog.logrocket.com/node-js-multithreading-what-are-worker-threads-and-why-do-they-matter-48ab102f8b10",
        "description": "What are Worker Threads and why do they matter? Since the release of Node.js v10.5.0 there’s a new worker_threads module available. In this post, you will learn why we need it.",
        "imageUrl": "./571813701f56d6a12ecbb2c3dd9432f0d461d6126dda44d22c49911f2b351ffd.jpg",
        "featured": false
      },
      {
        "title": "Everything you should know about certificates and PKI",
        "url": "https://smallstep.com/blog/everything-pki.html",
        "description": "PKI is really powerful, and really interesting. The math is complicated, and the standards are stupidly baroque, but the core concepts are actually quite simple. Certificates are the best way to identify code and devices, and identity is super useful for security, monitoring, metrics, and a million other things. Using certificates is not that hard. No harder than learning a new language or database. It’s just slightly annoying and poorly documented.",
        "imageUrl": "./d8ebe5f40f3b63f1d8aa338d291c5ff773f06e09a91409a168fc9ed24cac9d82.jpg",
        "featured": false
      },
      {
        "title": "RE:DOM",
        "url": "https://redom.js.org/",
        "description": "Tiny (2 KB) turboboosted JavaScript library for creating user interfaces.",
        "imageUrl": "./d7abfa20f62f1bf7820a3d5bf5a7bb6a32f9afde3aa2f6e11c40067d920dc463.png",
        "featured": false
      },
      {
        "title": "Writing a GraphQL Client in Vanilla JS",
        "url": "https://medium.com/walmartlabs/writing-a-graphql-client-in-vanilla-js-d2a09aee7c6c",
        "description": "A short tutorial on writing a GraphQL client with zero dependencies.",
        "imageUrl": "./5f66d652ed100245c887b32dd1c19947968e0f7bbb0fa0d86570b0ab52854b41.jpg",
        "featured": false
      },
      {
        "title": "Medium stack",
        "url": "https://medium.engineering/the-stack-that-helped-medium-drive-2-6-millennia-of-reading-time-e56801f7c492",
        "description": "The Stack That Helped Medium Drive 2.6 Millennia of Reading Time. From the team organisation to the actual technological evolution that the platform undertook to support the ever increasing traffic.",
        "imageUrl": "./667258dcfb14433fc98cda84690102a7dd5d9eb6dc49dfd1c17ea8d301892d5b.jpg",
        "featured": false
      },
      {
        "title": "A Better Way to Develop Node.js with Docker",
        "url": "https://hackernoon.com/a-better-way-to-develop-node-js-with-docker-cd29d3a0093",
        "description": "How to use Docker and Docker Compose for development with Node.js, React, Parcel and development tools.",
        "imageUrl": "./bbe34e106a5bfc42d8f4be655c98f29e29def4e5c4e0b9865e4afe0ab9debee2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 97,
    "title": "Portable Node.js",
    "slug": "2019-01-28-097-portable-node-js",
    "date": "2019-01-28",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #4, 2019",
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "Portable Node.js",
        "url": "https://github.com/ehmicky/portable-node-guide",
        "description": "A very practical guide on how to write Node.js applications that can run seamlessly in WIndows, Mac OSx and Linux.",
        "imageUrl": "./02b45313faa4ab91e86882b7c450f59635d1dd67ac04641a5385615aab5bdcd5.png",
        "featured": true
      },
      {
        "title": "Why we built CockroachDB on top of RocksDB",
        "url": "https://cockroachlabs.com/blog/cockroachdb-on-rocksd",
        "description": "CockroachDB uses RocksDB for its storage engine because of RocksDB's rich feature set, which is necessary for a complex product like a distributed SQL database.",
        "imageUrl": "./477bc741ba448426f79df490a5336d0c29ab620ad50ad1c168c16dd619ddc968.jpg",
        "featured": false
      },
      {
        "title": "Who is @horse_js?",
        "url": "https://whoishorsejs.com/",
        "description": "A data science project to uncover the true identity of the notorious JavaScript parody account.",
        "imageUrl": "./dad5cdac17a0852aea763ff810658e8ea470a67aafb91d3709dfdfa680547ffe.jpg",
        "featured": false
      },
      {
        "title": "What if we could verify npm packages?",
        "url": "https://hackernoon.com/what-if-we-could-verify-npm-packages-c2a319cff758",
        "description": "Reproducible steps for identifying unwanted and malicious code in your dependencies.",
        "imageUrl": "./f97a8ee6a1b2e260adad2328c04cbad69861726867c4d52f5ef4d761e98ae961.jpg",
        "featured": false
      },
      {
        "title": "JavaScript iterator patterns",
        "url": "https://loige.co/javascript-iterator-patterns",
        "description": "In this article we will explore different ways to create iterators and iterable values in Javascript, specifically functions, iterators, iterables and generators.",
        "imageUrl": "./e493ef286922f25ee69535e95345dc84692b55f074e403cd25a143cada56cc08.jpg",
        "featured": false
      },
      {
        "title": "Common API mistakes and how to avoid them",
        "url": "https://blog.logrocket.com/common-api-mistakes-and-how-to-avoid-them-804fbcb9cc4b",
        "description": "A collection of 8 common mistakes that you might do while building your next API in Node.js and how to avoid them.",
        "imageUrl": "./87d23a804db66748bcaddbe2da2e4dfea6c9b78df3121384e6ab318a2813e461.jpg",
        "featured": false
      },
      {
        "title": "Using Story Structure For Better Engagement",
        "url": "https://medium.muz.li/once-upon-a-time-using-story-structure-for-better-engagement-971286a2cd3c",
        "description": "From campfires to books to advertisements to film, stories have a power over us that no other human invention can wield. This article will explain you the basic principles to propose your narrative by using well know storytelling techniques. Warning: your next slides presentation or technical article might become more exciting!",
        "imageUrl": "./1d09f36f9744e2a1a9fefbb3a99f381c37dec656194b04492929b751ce778b95.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 96,
    "title": "Security Checklist",
    "slug": "2019-01-21-096-security-checklist",
    "date": "2019-01-21",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #3, 2019",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "Security Checklist",
        "url": "https://securitycheckli.st/",
        "description": "As a FullStack developer, you are probably more security conscious than the average web user. But security is never enough, so with this checklist you can make sure you are following a set of minimum security recommendations to be safe on the web. Share it also with your non-developer friends!",
        "imageUrl": "./815b0b5ac4466762acf5709e6337a2670af1f5c7eb7e5346f720b2e2e177c19b.jpg",
        "featured": true
      },
      {
        "title": "anime.js",
        "url": "https://animejs.com/",
        "description": "*Anime.js* (`/ˈæn.ə.meɪ/`) is a lightweight JavaScript animation library with a simple, yet powerful API.\n\nIt works with CSS properties, SVG, DOM attributes and JavaScript Objects.",
        "imageUrl": "./614cc6820b8eb2e87be8aa49bc3a5996680bf0358687bdcb4659fc29451d855c.jpg",
        "featured": false
      },
      {
        "title": "Node.js & JavaScript Testing Best Practices",
        "url": "https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347",
        "description": "30+ best practices for better Node JS & JavaScript testing, continuous integration (CI), and overall quality.",
        "imageUrl": "./d32f767d03da3a06e6afe7d2697476ff7316678bf497e6eea192184aa71d5d5c.jpg",
        "featured": false
      },
      {
        "title": "Aliasing module paths in Node JS",
        "url": "https://arunmichaeldsouza.com/blog/aliasing-module-paths-in-node-js",
        "description": "Typing out long and error-prone paths to your Node JS modules can be a daunting task! Even with code-completion features like IntelliSense in place (which is supported by almost every IDE or text editor), this can become more challenging as your codebase grows. This article explores a technique that can help you solving this problem.",
        "imageUrl": "./6ea179782febd942b5c736018c4b4c42d096a619d1f24992bfdccb63b9afbae8.jpg",
        "featured": false
      },
      {
        "title": "Front-End Performance Checklist 2019",
        "url": "https://smashingmagazine.com/2019/01/front-end-performance-checklist-2019-pdf-pages",
        "description": "Let’s make 2019 fast with a front-end performance checklist (PDF/Apple Pages/MS Word) that contains everything you need to know to create fast web experiences today.",
        "imageUrl": "./ced2d1be3997b9998e70e36db4b87b1a19aba649cf17b5f1b874d90b4a97c54f.png",
        "featured": false
      },
      {
        "title": "8 Productivity Tips for GitHub",
        "url": "https://dev.to/_darrenburns/8-productivity-tips-for-github-44kn",
        "description": "A collection of tips and tricks that'll improve your GitHub productivity.",
        "imageUrl": "./d74379f30d68b5f8808a83fa19ff55744bf1d77a2a2b8de44b5f5038659c8446.jpg",
        "featured": false
      },
      {
        "title": "GitExplorer",
        "url": "https://gitexplorer.com/",
        "description": "GitExplorer: Find the right git commands you need without digging through the web",
        "imageUrl": "./bde126aaf6c5d80d668be46894b32685434f851ef7d91a40b6ddc2d41c87ae26.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 95,
    "title": "mkcert: valid HTTPS certificates for localhost",
    "slug": "2019-01-14-095-mkcert-valid-https-certificates-for-localhost",
    "date": "2019-01-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #2, 2019",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "mkcert: valid HTTPS certificates for localhost",
        "url": "https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost",
        "description": "The web is moving to HTTPS, preventing network attackers from observing or injecting page contents. But HTTPS needs TLS certificates, and while deployment is increasingly a solved issue thanks to the ACME protocol and Let's Encrypt, local development still mostly ends up happening over HTTP because of the lack of local tooling. Mkcert solves this issue by providing **an effective way to generate TLS certificates for localhost**!",
        "imageUrl": "./60531f891486db331cc237825ddb7deb844c68c57c8d8834a461b6ed1297947e.png",
        "featured": true
      },
      {
        "title": "Coconut Programming Language",
        "url": "http://coconut-lang.org/",
        "description": "**A simple, elegant, Pythonic functional programming**. Coconut is built as a superset of the Python language and it provides extended functionality like pipeline-style programming, prettier lambdas, partial application, pattern-matching, destructuring assignment, infix notation, operator functions, function composition, lazy lists, parallel programming, tail call optimization, algebraic data types and much more!",
        "imageUrl": "./53dd7f4d18eedcefd2cce1c19c7cd0d0a2dacfcb905bca4eb04982990c296300.png",
        "featured": false
      },
      {
        "title": "How Airbnb is Moving 10x Faster at Scale with GraphQL and Apollo",
        "url": "https://medium.com/airbnb-engineering/how-airbnb-is-moving-10x-faster-at-scale-with-graphql-and-apollo-aa4ec92d69e2",
        "description": "This article is an extract from a talk by Airbnb that showcases how their development speed has been extremely improved since they moved to GraphQL and specifically to Apollo server.\n\nIf you are curious to know more about how these technologies play in a real context such as Airbnb, this article is for you!",
        "imageUrl": "./4f5f3d58ade096f0ccb5dc1b0985b2bf8c7f582ee64b2da99b9b7c09a84afd1d.jpg",
        "featured": false
      },
      {
        "title": "FBT · An internationalization framework",
        "url": "https://facebookincubator.github.io/fbt/index.html",
        "description": "FBT is a framework for internationalizing user interfaces in JavaScript built and open sourced by Facebook. It is designed to be not only powerful and flexible, but also simple and intuitive. Getting grammatically correct translated texts in dynamic applications is hard. Let FBT do the hard work for you.",
        "imageUrl": "./9bbb74127cf9e02306f154ddadffe7e922681be95611e87880846ea777cede09.jpg",
        "featured": false
      },
      {
        "title": "Top JavaScript Frameworks and Topics to Learn in 2019",
        "url": "https://medium.com/javascript-scene/top-javascript-frameworks-and-topics-to-learn-in-2019-b4142f38df20",
        "description": "It’s that time of year again: The annual overview of the JavaScript tech ecosystem. Our aim is to highlight the learning topics and technologies with the highest potential job ROI. What are people using in the workforce? What do the trends look like?",
        "imageUrl": "./2af5861a72115bf40da8aa4fd5f6e9e962487bc71a6d0efe6d9f7b794c742860.jpg",
        "featured": false
      },
      {
        "title": "Web Page Usability Matters",
        "url": "https://addyosmani.com/blog/usability/",
        "description": "Users appreciate pages being usable and interactive soon after they're visually ready. UI interactions (scrolls, taps, clicks) can be delayed by script and other browser work so minimizing their impact can really help your users.",
        "imageUrl": "./0355076113043d5ec057e5c2210c065926f9461abfd9daff6ef24e86447ab4ee.png",
        "featured": false
      },
      {
        "title": "A step-by-step guide to building a simple chess AI",
        "url": "https://medium.freecodecamp.org/simple-chess-ai-step-by-step-1d55a9266977",
        "description": "This article explains to you how to build a simple chess AI in JavaScript. In particular, it will cover algorithms for move-generation, board evaluation, minimax, and alpha-beta pruning. Extremely interesting even if you are not into game AI development.",
        "imageUrl": "./73ca8d44a588cba676e784a24cdea1f7b25af6556575f6d0ff1c685ab7ba9036.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 94,
    "title": "Algorithms by Jeff Erickson - HAPPY NEW YEAR :)",
    "slug": "2019-01-07-094-algorithms-by-jeff-erickson-happy-new-year",
    "date": "2019-01-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #1, 2019\n\n\n\n**🎉 Happy New Year! 🎉**",
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "Algorithms by Jeff Erickson",
        "url": "http://jeffe.cs.illinois.edu/teaching/algorithms/",
        "description": "This web page contains a free electronic version of the (soon to be) self-published textbook Algorithms by Jeff Erickson, along with other lecture notes written for various theoretical computer science classes at the University of Illinois, Urbana-Champaign since 1998.\n\n**A great FREE resource to start the new year and strengthen your algorithmic knowledge!**",
        "imageUrl": "./35eef5d04bcb77f2952450fd919c53991cea7c064a9ec7aca8d2866b1379593b.png",
        "featured": true
      },
      {
        "title": "Why design systems fail, and how to make them work",
        "url": "https://uxdesign.cc/why-design-systems-fail-and-how-to-make-them-work-6f6d812e216d",
        "description": "Design systems are most often aimed at improving the bridge between the design and development of the product. They are useful, but hard to implement and get proper adoption. This article tells a real-life experience implementing a design system that eventually failed. **If you are implementing a design system, this article might save you from making some common mistakes.**",
        "imageUrl": "./534d89435696de670bcb299b7e356803ea78b22abeb8250f8594c31560b87390.jpg",
        "featured": false
      },
      {
        "title": "Converting a Python library to Rust",
        "url": "https://alantrick.ca/writings/programming/python_to_rust",
        "description": "The story of a rewrite of a Python project in Rust. The rewrite took a fair bit longer than expected, but the results were good (about 9 times faster). **If you are exploring Rust, coming from Python or other scripting languages, this is a great resource for you.**",
        "imageUrl": "./f3c2ef0f891c26c31e78d63c2991b275d2c5c8ef8e1e9b0d1ce5d14c20db28fc.png",
        "featured": false
      },
      {
        "title": "Error Handling in AWS Lambda With Wrappers",
        "url": "https://epsagon.com/blog/enforce-consistent-error-handling-in-aws-lambda-with-wrappers",
        "description": "This post revisits the idea of middlewares, their role in application development with AWS Lambda, and how we can use middlewares.",
        "imageUrl": "./d6a33c06f1f6df18110d1f2bd11352f216c191486266f8ba21fcc6a908ca4d3c.jpg",
        "featured": false
      },
      {
        "title": "Exploiting the Math.expm1 typing bug in V8",
        "url": "https://abiondo.me/2019/01/02/exploiting-math-expm1-v8",
        "description": "Minus zero behaves like zero, right? Not always... well not in V8, Chrome’s JavaScript engine. A bug caused incorrect typing during static analysis, producing incorrect optimizations in just-in-time compiled code. An interesting story of how this bug can be used for an OOB code execution.",
        "imageUrl": "./9521c827f582b574f0ad97d9f050fb4993ac98edbe90ef675c1a19d15d8f0e05.png",
        "featured": false
      },
      {
        "title": "PostgreSQL in 2018",
        "url": "https://www.percona.com/blog/2018/12/31/great-things-that-happened-with-postgresql-in-the-year-2018/",
        "description": "In this blog post, we’ll look back at what’s been going on in the world of PostgreSQL in 2018, which is now ranked as the 4th most popular database in the World!",
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Background Sync with Service Workers",
        "url": "https://davidwalsh.name/background-sync",
        "description": "Offline-supported applications are a necessity, and including a service worker is a great start. However, service workers alone will only get someone part of the way to a truly seamless online-to-offline experience. Caching assets is great, but without an internet connection you still can't access new data or send any requests.\n\n**The \"Background Sync\" API can help us to build applications that will synchronize changes back to the server as soon as the connectivity is re-established.**",
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 93,
    "title": "Algorithms and Data Structures using Python",
    "slug": "2018-12-31-093-algorithms-and-data-structures-using-python",
    "date": "2018-12-31",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #52, 2018",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Algorithms and Data Structures using Python",
        "url": "http://interactivepython.org/runestone/static/pythonds/index.html",
        "description": "An interactive version of Problem Solving with Algorithms and Data Structures using Python. It covers a huge variety of topics ranging from recursion to trees and graphs.",
        "imageUrl": "./f0340c227eba11575685bb8a103c1dfa9eb32935dbaf26e760f870425d625d7b.png",
        "featured": true
      },
      {
        "title": "Frontend Development in 2018",
        "url": "https://levelup.gitconnected.com/a-recap-of-frontend-development-in-2018-715724c9441d",
        "description": "The world of frontend development moves fast. Very fast. This article will recap the most important frontend news of 2018",
        "imageUrl": "./958d7afed8b57c5b06bb4c3ef1a2a22d2363005b0aa87775a79aaa77c09ef1db.jpg",
        "featured": false
      },
      {
        "title": "Spotify Wrapped 2018 — Technical Case Study",
        "url": "https://medium.com/@activetheory/spotify-wrapped-2018-technical-case-study-5b7cfb7e9d3a",
        "description": "A look under the hood at the technology and techniques used to power Spotify Wrapped 2018, a fantastic end of the year feature that will tell you about your musical history in 2018.",
        "imageUrl": "./a70cda695f285c46d1cc3ffb529bd4486d686f345a83cbb9162c1c63c9777433.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Getter-Setter Pyramid",
        "url": "https://staltz.com/javascript-getter-setter-pyramid.html",
        "description": "The cornerstone of JavaScript is the function. It is a flexible abstraction that works as the basis for other abstractions, such as Promises, Iterables, Observables, and others. This blog post will provide a tour through these layers of JavaScript.",
        "imageUrl": "./5de94d43dea23f82955c6ce7c0a9ef131854ca08b8909327a551d6b05b8a7e17.png",
        "featured": false
      },
      {
        "title": "Designing Your Site Like It’s 1998",
        "url": "https://24ways.org/2018/designing-your-site-like-its-1998",
        "description": "Andy Clarke tells a tale as old as time, a tale of tables, framesets, fixed widths and spacer GIFs (ask your parents). Harking back to the methods that were appropriate to used to build cutting-edge websites twenty years ago, not only can we see how far we’ve come but can be excited for what lies ahead for the web.",
        "imageUrl": "./aceb518452b8059f87b527f76938965a2b07e0ec1215e930cf14214bb3c35e34.png",
        "featured": false
      },
      {
        "title": "My struggle with colors, part II",
        "url": "https://uxdesign.cc/my-struggle-with-colors-part-ii-ed71bff6302a",
        "description": "a good color system to be: accessible, systematic, and scalable. This article will recap these concepts and get into more details about how to build an accessible color system from scratch.",
        "imageUrl": "./5c3ab0edde30e168c9eec18c1680aa9765d42471c9a8b6a20c0903658488be44.png",
        "featured": false
      },
      {
        "title": "XSSing Google Code-in",
        "url": "https://blog.thomasorlita.cz/vulns/google-code-in-xss",
        "description": "Google Code-in is an online programming competition for students hosted by Google that takes place every year. This article describes how it was possible to execute an XSS attack on the website by using improperly escaped JSON data.",
        "imageUrl": "./9f38bced1ab29a25ba49246830648fbe0668bc60c5367930a00971c567310558.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 92,
    "title": "JSX alternative using standard tagged templates",
    "slug": "2018-12-24-092-jsx-alternative-using-standard-tagged-templates",
    "date": "2018-12-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #51, 2018",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "JSX alternative using standard tagged templates",
        "url": "https://github.com/developit/htm",
        "description": "**Htm** (Hyperscript Tagged Markup) is a new library that is intended to be a JSX alternative that uses standard tagged templates. You can build React-like components (also in Preact) without having to use a transpiler like Babel. You can still compile your templates for better performance in production.",
        "imageUrl": "./810b70c58c80f7cf93264a468eb3e3da13f7a878d24ce92f53ddbaebc660afbf.png",
        "featured": true
      },
      {
        "title": "20 web design trends for 2019",
        "url": "https://webflow.com/blog/20-web-design-trends-for-2019",
        "description": "Discover the web design trends, techniques, and tools that will define website and digital product design in 2019 — and beyond.",
        "imageUrl": "./e39bd6bc73721bda4d5f919285bb2e61916c99899e4f0767d26f8ac3ce0fa8c7.jpg",
        "featured": false
      },
      {
        "title": "How Unix programmers at restaurants search menus for their favorite plate",
        "url": "https://dev.to/miguelmota/how-unix-programmers-at-restaurants-search-menus--46ad",
        "description": "A Unix programmer heads over to the local diner to get something to eat for lunch. You can't expect they are going to use the menu like any other mortal being... They are going to do something special using their own bash scripting wizardry! Maybe you want to learn some of this magic...",
        "imageUrl": "./fa0e1a3f3d42c347f64a6155c49cb296c31ebc0e17ce4144c55b8ff43d7ead40.jpg",
        "featured": false
      },
      {
        "title": "You Can Do it in SQL, Stop Writing Extra Code for it",
        "url": "https://dev.to/geshan/you-can-do-it-in-sql-stop-writing-extra-code-for-it-lok",
        "description": "Use SQL to do math like sum, average etc. Utilize it for grouping one to many relational values like getting categories of product. Leverage SQL for string manipulation like using CONCAT_WS for concating first name and last name. Exploit SQL to sort by a custom priority formula. **Moar SQL == less code**!",
        "imageUrl": "./77e237ebcf975797d5e1dceba8927a9e39a191ddf3e7b3e5677db6ddf05f0362.jpg",
        "featured": false
      },
      {
        "title": "Building a Simple Virtual DOM from Scratch",
        "url": "https://dev.to/ycmjason/building-a-simple-virtual-dom-from-scratch-3d05",
        "description": "We believe there's no better way to learn something in IT than building it! If you wanted to know how virtual DOM libraries actually work, this tutorial is a fantastic resource as it will show, step by step, how to build a new vDOM library!",
        "imageUrl": "./400de21de58a733540bae04f09ac6de9bb2f642b71be657ccf1f77b70aa3306b.jpg",
        "featured": false
      },
      {
        "title": "Learning Go — from zero to hero",
        "url": "https://medium.freecodecamp.org/learning-go-from-zero-to-hero-d2a3223b3d86",
        "description": "This article covers all the main features of Go in a very compact and expressive way. A great starting point if you have been thinking to explore and start to play with this new language.",
        "imageUrl": "./678e9753340282d7a7f56ed33c80f35cf822f900da4e8098298269d45d8033d3.jpg",
        "featured": false
      },
      {
        "title": "19 ways to become a better Node.JS developer in 2019",
        "url": "https://medium.com/@me_37286/19-ways-to-become-a-better-node-js-developer-in-2019-ffd3a8fbfe38",
        "description": "Strategic ideas for things you should learn to create robust Node.js & Javascript application in 2019!",
        "imageUrl": "./945dc126988172453b4874c1e4d4b22505cf3790527e18a24512cfd43986de2a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 91,
    "title": "A look at CSS Resets in 2018",
    "slug": "2018-12-10-091-a-look-at-css-resets-in-2018",
    "date": "2018-12-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #49, 2018",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "A look at CSS Resets in 2018",
        "url": "https://bitsofco.de/a-look-at-css-resets-in-2018/",
        "description": "All browsers ship with a set of default styles that are applied to every web page in what is called the “user agent stylesheet”. A lot of styles, however, are inconsistent between the user agent stylesheets. In order to deal with the inconsistencies between user agent stylesheets, CSS resets were born.",
        "imageUrl": "./46e2f108a4a3e0b50f58d01c25da2c1d55b0f05be6ed1f50a0e2f01f9636da21.png",
        "featured": true
      },
      {
        "title": "Fast Google Fonts with Cloudflare Workers",
        "url": "https://blog.cloudflare.com/fast-google-fonts-with-cloudflare-workers",
        "description": "Code walkthrough on using Cloudflare workers to improve the performance of sites using Google Fonts. The improvements can be quite dramatic and the sample provides a real-world use case of doing streaming HTML modification in a Cloudflare Worker.",
        "imageUrl": "./10b9b8f58e2a6381867532a39ef1811eaeb810ef0bb7b0af0b9202ca5372a42e.jpg",
        "featured": false
      },
      {
        "title": "Immutable Web Apps",
        "url": "https://immutablewebapps.org/",
        "description": "Immutable Web Applications is a framework-agnostic methodology for building and deploying static single-page applications that: minimizes risk and complexity, simplifies and maximizes caching, minimizes the need for servers and administration of runtime environments, enables continuous delivery through simple, flexible, atomic deployments.",
        "imageUrl": "./e5320f919f232e6a27e972ea97f07aeb11727d87075edb4db876d7d9873ad1d7.png",
        "featured": false
      },
      {
        "title": "Reliable Webhooks Using Serverless",
        "url": "https://medium.com/square-corner-blog/reliable-webhooks-using-serverless-architecture-e009a2096732",
        "description": "A great use case for serverless: how to build a reliable webhook system using SQS and Lambda.",
        "imageUrl": "./eb8be1dd0af2af747a2159ee661fab3b2ca10733df553a4bda0b8d05827a9118.jpg",
        "featured": false
      },
      {
        "title": "React setState() in 10 minutes",
        "url": "https://medium.freecodecamp.org/get-pro-with-react-setstate-in-10-minutes-d38251d1c781",
        "description": "This article is aimed at people who have already had their first approach to React, and who, as beginners, have doubts about how setState should be used.",
        "imageUrl": "./6344c77f9ab045345f73120578dafad406f1712a146a9d31616f7d6001bb590e.jpg",
        "featured": false
      },
      {
        "title": "Under the hood of React’s hooks system",
        "url": "https://medium.com/the-guild/under-the-hood-of-reacts-hooks-system-eb59638c9dba",
        "description": "Looking at the implementation and getting to know it inside out how React hooks actually work. Hooks are a powerful abstraction, but it can be very important to understand what lies behind these abstractions to be able to use hooks effectively.",
        "imageUrl": "./e07745a1eb6c6f167e9acfab3f23d0b77b4ab200af92817201d1389998b3480e.jpg",
        "featured": false
      },
      {
        "title": "The 101 course on 404 Pages",
        "url": "https://medium.muz.li/the-101-course-on-crafting-404-pages-93382461b0af",
        "description": "A 404 page should do more than apologize for poor navigation on behalf of your website. A properly designed 404 page could better your website’s chances of people coming back despite the inconvenience.",
        "imageUrl": "./fd929db60699774a0b513bb7085091cd90e736a401f83794aa10c699c7a2f1ee.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 90,
    "title": "Modern Microprocessors",
    "slug": "2018-12-03-090-modern-microprocessors",
    "date": "2018-12-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #48, 2018",
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "Modern Microprocessors",
        "url": "http://lighterra.com/papers/modernmicroprocessors",
        "description": "A brief, pulls-no-punches, fast-paced introduction to the main design aspects of modern processor microarchitecture.",
        "imageUrl": "./1a793bda33fcf1edad59bdeedbb4402800cd2ced87f7a943c92bcadcbe32e679.png",
        "featured": true
      },
      {
        "title": "Experimenting with brain-computer interfaces in JavaScript.",
        "url": "https://medium.com/@devdevcharlie/experimenting-with-brain-computer-interfaces-in-javascript-8d6cb891fda8",
        "description": "Neurotechnology meets JavaScript. This blog post is about sharing the things that the author learned along the way by playing with these two broad subjects. Even if you are not into Neurotechnology, this article is still pretty amazing and worth reading.",
        "imageUrl": "./35b065e498dd99b6e05b500b36f215229a8bbe0b219474a1c3819b103ca95f7f.jpg",
        "featured": false
      },
      {
        "title": "List of influential programming books",
        "url": "http://www.doradolist.com/facts/stackoverflow-influential-programming-books.html",
        "description": "Here we report the list of some influential programming books. This list is compiled on Stackoverflow most linked books.",
        "imageUrl": "./6801f9078094895a558c1551cc50d045cb227f49e6e99b71475970cce5e0d4d8.png",
        "featured": false
      },
      {
        "title": "WebSockets - A Conceptual Deep-Dive",
        "url": "https://ably.io/concepts/websockets",
        "description": "The WebSocket protocol elevated the possibilities of communication over the internet and gave way to a truly real-time web. This article is all about building a deeper understanding of what WebSockets are, how they came to be and what’s actually going on under the hood.",
        "imageUrl": "./fc5c1b6ae77724cf979e45890d130cb0138aa7f81da2786717dec39b91a22007.png",
        "featured": false
      },
      {
        "title": "The Power Of Web Components",
        "url": "https://hacks.mozilla.org/2018/11/the-power-of-web-components",
        "description": "Web Components comprises a set of standards that enable user-defined HTML elements. These elements can go in all the same places as traditional HTML but they can provide much more dynamic and custom behaviors.",
        "imageUrl": "./2e06d3aab71becaf7eadbde3380a86b8b92baefad00cfb903694a3651bf835bc.jpg",
        "featured": false
      },
      {
        "title": "An Extensive Guide To Progressive Web Applications",
        "url": "https://smashingmagazine.com/2018/11/guide-pwa-progressive-web-applications",
        "description": "In this article, we’ll look at the pain points of users who are browsing old non-PWA websites and the promise of PWAs to make the web great. You’ll learn most of the important technologies that make for cool PWAs, like service workers, web push notifications and IndexedDB.",
        "imageUrl": "./62bea3b8b0ac922838024c8353c95977e38020daeb5209c532479ff0b7a9727a.jpg",
        "featured": false
      },
      {
        "title": "How Big Companies Are Using GraphQL in 2018",
        "url": "https://stackshare.io/posts/companies-using-graphql-in-production-2018",
        "description": "How Big Companies Are Using GraphQL in 2018. If you using GraphQL or planning to use it, or if you just generally interested in the ecosystem, this article is definitely worth reading.",
        "imageUrl": "./5b0fbe4f18820c15a2b3c3f8149399369177be0fcc4252aeb576e33ee05d591b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 89,
    "title": "Introducing Imba",
    "slug": "2018-11-26-089-introducing-imba",
    "date": "2018-11-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #47, 2018",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Introducing Imba",
        "url": "http://imba.io/",
        "description": "**Create complex web apps with ease!**\n\nImba was born to make developing web applications fun again. It features a clean and readable syntax inspired by ruby, compiles to readable and performant JavaScript, and works inside the existing ecosystem.",
        "imageUrl": "./edb6e745b6b7513133448aa6881c446f850cb8f952523ed029f941d5e11f7002.png",
        "featured": true
      },
      {
        "title": "Redesigning your product and website for dark mode",
        "url": "https://stuffandnonsense.co.uk/blog/redesigning-your-product-and-website-for-dark-mode",
        "description": "Some OSes and Browsers now offer a \"Dark appearance option\" in their preferences. If you enable that you will be able to request websites to render their \"dark-optimized version\" rather than their regular one. Of course, it's not magic and websites have to support this option. If you want to learn how to make your website \"dark-aware\", this fantastic article is for you!",
        "imageUrl": "./bfc82a09b596b417992d971f2054f1974697f0d9e2929e1186b8ecd14bda9692.png",
        "featured": false
      },
      {
        "title": "These are the concepts you should know in React.js",
        "url": "https://medium.freecodecamp.org/these-are-the-concepts-you-should-know-in-react-js-after-you-learn-the-basics-ee1d2f4b8030",
        "description": "You’ve followed your first React.js tutorial and you’re feeling great. Now what? In this article, you will discover 5 concepts that you have to learn after you feel confident with React basics.",
        "imageUrl": "./04b2c2a63a1673914892478438f140ae42da976e5a6c990a10d6b9a72d9725eb.jpg",
        "featured": false
      },
      {
        "title": "Implementing Smooth Scrolling in React",
        "url": "http://scotch.io/tutorials/implementing-smooth-scrolling-in-react",
        "description": "Smooth Scrolling, dont know what it is? Well, instead of clicking on a button and being instantly taken to a different part of the (same) page, the user is navigated there via a scroll animation.\n\nThis tutorial will show you how to implement this technique in React using the NPM package, react-scroll.",
        "imageUrl": "./f954f993eafe1366506dc88cc0404342388372bceec6ee7c988a304dae121ced.jpg",
        "featured": false
      },
      {
        "title": "async_hooks in node.js, illustrated",
        "url": "https://medium.com/the-node-js-collection/async-hooks-in-node-js-illustrated-b7ce1344111f",
        "description": "If you have been active in Node.js you probably already heard of **async_hooks**, since they came out in Node.js 8. If you never digged deeper about this new feature, this article will go in great detail to show you when this API can be used an how.",
        "imageUrl": "./757a1ded3ce6b800d87be84a456bbd0920dd5e933174cca840ec732296fe281e.jpg",
        "featured": false
      },
      {
        "title": "The Writable Files API",
        "url": "https://developers.google.com/web/updates/2018/11/writable-files",
        "description": "The writable files API is designed to increase interoperability of web applications with native applications, making it possible for users to choose files or directories that a web app can interact with on the native file system, and without having to use a native wrapper like Electron to ship your web app.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Inlining or Caching? Both Please!",
        "url": "https://filamentgroup.com/lab/inlining-cache.html",
        "description": "If you ever asked yourself “*I wonder if the new Service Worker and Caching APIs could enable caching for inline code*”, well you should know that \"*they can*\" and this article will go into great detail to show you how!",
        "imageUrl": "./c2711fd629c6b2ecdf08bcbbae5e74477e0fda2934726c022ebf6b508c57f1c6.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 88,
    "title": "Cloud Computing without Containers",
    "slug": "2018-11-19-088-cloud-computing-without-containers",
    "date": "2018-11-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #46, 2018",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Cloud Computing without Containers",
        "url": "https://blog.cloudflare.com/cloud-computing-without-containers",
        "description": "The interesting case of Cloudflare that is running a serverless infrastructure without containers. The trick lies in a feature of V8 called isolates. This article goes in great details explaining how this solution works and why it's more performant than container-based isolation.",
        "imageUrl": "./9f97d54f413ebc2f9c71f2b4deeb8694fc822629c8808ec8251f29db95109ef3.png",
        "featured": true
      },
      {
        "title": "CSS and Network Performance",
        "url": "https://csswizardry.com/2018/11/css-and-network-performance/",
        "description": "CSS is critical to rendering a page—a browser will not begin rendering until all CSS has been found, downloaded, and parsed—so it is imperative that we get it onto a user’s device as fast as we possibly can. Any delays on the Critical Path affect our Start Render and leave users looking at a blank screen.",
        "imageUrl": "./b230638e5b0a0245663f6a77c2974dbff7989817c06d4c279ebc524f8e08aa65.png",
        "featured": false
      },
      {
        "title": "Beyond Passwords: 2FA, U2F and Google Advanced Protection",
        "url": "https://troyhunt.com/beyond-passwords-2fa-u2f-and-google-advanced-protection",
        "description": "An interesting piece on passwords and what's next in the MFA landscape. not just any old 2FA but U2F and in particular, Google's Advanced Protection Program. This post will be partly about 2FA in general, but also specifically about Google's program because of the masses of people dependent on them for Gmail.",
        "imageUrl": "./8ecebf22462b7cd92de05c47b42aa01069b9763b87a03ff1a09c94e43bedac04.jpg",
        "featured": false
      },
      {
        "title": "Faster async functions and promises",
        "url": "https://v8.dev/blog/fast-async",
        "description": "Faster and easier-to-debug async functions and promises are coming to V8 v7.2 / Chrome 72.",
        "imageUrl": "./b623345e6b33d67d46b8821b758fe49945b580ef0360aea114d5064e7ddab73c.png",
        "featured": false
      },
      {
        "title": "Taming this In JavaScript With Bind Operator",
        "url": "https://smashingmagazine.com/2018/10/taming-this-javascript-bind-operator",
        "description": "Dealing with this in JavaScript can be tricky. But what if instead of fight against it we could leverage on it to achieve nice stuff like function composition with virtual methods? This is what we are going to explore in this article about one of the potential upcoming JavaScript features: The Bind Operator.",
        "imageUrl": "./0ca642f7d4969dd4df9b2b67c527f5d8d09905754b0e79586c1d48dcc53ab443.jpg",
        "featured": false
      },
      {
        "title": "Copying objects in Javascript",
        "url": "https://smalldata.tech/blog/2018/11/01/copying-objects-in-javascript",
        "description": "In this article we will look at the various ways an object can be copied in Javascript. We will take a look at both shallow and deep copying. While shallow copying is rather straightforward, deep copying is more tricky.",
        "imageUrl": "./4d464f394b368631d9ac6e28b9ffd76a6fdd51102446a2b453f0d8ebfcf098bc.png",
        "featured": false
      },
      {
        "title": "How to handle monetary value in JavaScript",
        "url": "https://frontstuff.io/how-to-handle-monetary-values-in-javascript",
        "description": "Money is everywhere. Banking apps, e-commerce websites, stock exchange platforms, we interact with money daily. The interaction in our code is not that obvious and it's very easy to do some common mistakes.",
        "imageUrl": "./df69e6b4f3b21715d251fd8393eff8572ca3793e2440c20f747f7f1f22ea3463.png",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 87,
    "title": "A Complete Guide to Flexbox",
    "slug": "2018-11-05-087-a-complete-guide-to-flexbox",
    "date": "2018-11-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #44, 2018",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "A Complete Guide to Flexbox",
        "url": "https://css-tricks.com/snippets/css/a-guide-to-flexbox",
        "description": "This complete guide explains everything about flexbox, focusing on all the different possible properties for the parent element (the flex container) and the child elements (the flex items). It also includes history, demos, patterns, and more…",
        "imageUrl": "./7e70420987338419d30947f1319daa9de5d01560b9358d558d2fbae55669d3ec.png",
        "featured": true
      },
      {
        "title": "Introducing React Hooks",
        "url": "https://reactjs.org/docs/hooks-intro.html",
        "description": "Hooks are a new feature proposal that lets you use state and other React features without writing a class. They’re currently in React v16.7.0-alpha and being discussed in an open RFC.",
        "imageUrl": "./dfc0bb1a9a5834f01f5808f9ae52d1fd6039a1bdc65f7c0cf8823f7eff4b2a97.png",
        "featured": false
      },
      {
        "title": "Playing Mortal Kombat with TensorFlow.js",
        "url": "https://blog.mgechev.com/2018/10/20/transfer-learning-tensorflow-js-data-augmentation-mobile-net",
        "description": "Did you ever think about combining JavaScript with Machine Learning and Mortal Kombat? Well... somebody actually did and documented this marvellous idea very very well, you should have a look!",
        "imageUrl": "./0687f764669d7c65102f43862eec397f5c92f659fdd7eccf6c440aabd37b150e.jpg",
        "featured": false
      },
      {
        "title": "Web Performance 101: JS, CSS, HTTP, images & fonts",
        "url": "https://3perf.com/talks/web-perf-101",
        "description": "Learn how (and why) to make your app faster by optimizing JS, CSS, images/fonts and other things.",
        "imageUrl": "./e82776509a92af3f0f13d2a3609a31f02031ce2fb1ab366770bc8ee6cdfa637c.jpg",
        "featured": false
      },
      {
        "title": "Why Netflix Rolled Its Own Node.js Functions-as-a-Service Runtime",
        "url": "https://thenewstack.io/why-netflix-rolled-its-own-node-js-functions-as-a-service-runtime",
        "description": "The New Stack spoke with Yunong Xiao, a software engineer at Netflix and design/architecture lead for the Netflix API Platform, about the company’s experience rolling their own in-house Functions as a Service capabilities.",
        "imageUrl": "./c4c976f070cbbc6e25d21d996a37a3486c03d503a7452805f65d94d3efbad00c.jpg",
        "featured": false
      },
      {
        "title": "GraphQL: A success story for PayPal",
        "url": "https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53",
        "description": "GraphQL as a complete game changer to the way apps are built at PayPal. This article presents a real use case about the new GraphQL powered checkout experience on the PayPal website.",
        "imageUrl": "./ce5edee66ef48371c5d0550847d357298133b5c1ceb49c100bfe24f339780671.jpg",
        "featured": false
      },
      {
        "title": "WebAssembly Threads",
        "url": "https://developers.google.com/web/updates/2018/10/wasm-threads",
        "description": "WebAssembly thread support has shipped in Chrome 70 under an origin-trial. This feature will make the web platform even more flexible and powerful!",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 86,
    "title": "33 JavaScript concepts you should know",
    "slug": "2018-10-29-086-33-javascript-concepts-you-should-know",
    "date": "2018-10-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2018",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "33 JavaScript concepts you should know",
        "url": "https://github.com/leonardomso/33-js-concepts",
        "description": "A wonderful collection of resources that will guide you to learn 33 of the most fundamental concepts that you have to know if you want to master the art of programming, with a specific focus on JavaScript.",
        "imageUrl": "./600ead94e601917136bc84bc08f1f99a2808f1c47534ec1360f35ef563b28ce6.jpg",
        "featured": true
      },
      {
        "title": "Magenta = ML * (music + art)",
        "url": "https://magenta.tensorflow.org/",
        "description": "Magenta is a project devoted to music and art generation with machine intelligence. It is part of TensorFlow, an open source machine learning library.",
        "imageUrl": "./4efb0b9f8855b29a5b97f56750f90b92490e454cdc740f1115c75fae5ec938e6.png",
        "featured": false
      },
      {
        "title": "Stop the console.log(), embrace the debugger",
        "url": "https://medium.com/datadriveninvestor/stopping-using-console-log-and-start-using-your-browsers-debugger-62bc893d93ff",
        "description": "Debug more efficiently by stop using**console.log()**and start using your browser’s debugger.",
        "imageUrl": "./6f1dd5d46110b516a21f88112f4e08ad12f0e573cb7c8c4a6f47710f6a10d7a7.jpg",
        "featured": false
      },
      {
        "title": "Rhythm in Web Typography",
        "url": "http://betterwebtype.com/rhythm-in-web-typography",
        "description": "Horizontal rhythm mostly impacts the legibility, while vertical rhythm impacts the readability of the text and establishes a sense of visual hierarchy.",
        "imageUrl": "./38c4bcab3096bbd7d42795ba52ef238ecdc026227b69b98723e60feb96237c32.jpg",
        "featured": false
      },
      {
        "title": "WebAssembly’s future",
        "url": "https://hacks.mozilla.org/2018/10/webassemblys-post-mvp-future",
        "description": "A fantastic article full of beautiful cartoons that describes what the future holds for WebAssemply. What we have today might be considered just an MVP, there's a lot more to come and the future is bright!",
        "imageUrl": "./b1a0f1b449d2da264fa33b4a6355199eddf98361d7541cf1470defd20048a117.jpg",
        "featured": false
      },
      {
        "title": "npm and the future of JavaScript",
        "url": "https://slides.com/seldo/npm-future-of-javascript",
        "description": "A presentation by Laurie Voss (a.k.a. @seldo), co-founder of npm, that describes npm perspective for the future of package management and JavaScript itself. The statistics disclosed here are phenomenal if you work on the web and want to figure out what's going to happen for developers in the next few years.",
        "imageUrl": "./9cb498ea6c4191954b22ae0682124f957d53366824cf93cca6127ade38cb1de0.jpg",
        "featured": false
      },
      {
        "title": "Microservice Architecture at Medium",
        "url": "https://medium.engineering/microservice-architecture-at-medium-9c33805eb74f",
        "description": "Medium engineering team shared their experience with moving to microservice architecture effectively and avoiding “microservice syndromes”.",
        "imageUrl": "./abff6b0b63c0ac0c64388ea47f4da2c95ae2333d86cf4bee2c59ce7151be8b4d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 85,
    "title": "62% of the web will run on unsupported PHP",
    "slug": "2018-10-22-085-62-of-the-web-will-run-on-unsupported-php",
    "date": "2018-10-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #42, 2018",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "62% of the web will run on unsupported PHP",
        "url": "https://zdnet.com/article/around-62-of-all-internet-sites-will-run-an-unsupported-php-version-in-10-weeks",
        "description": "The highly popular PHP 5.x branch will stop receiving security updates at the end of the year, so in about 10 weeks you shouldn't be using this version of PHP in production anymore. Surprising enough about 62% of the web still relies on it, make sure you don't fall into that bucket!",
        "imageUrl": "./4358c90258f758e8744fcd0eb6ac76b27070a6244e2b7df7877e7e0bc8fc1a7a.jpg",
        "featured": true
      },
      {
        "title": "The Illustrated TLS Connection: Every Byte Explained",
        "url": "https://tls.ulfheim.net/",
        "description": "A fantastic guide to understanding every single byte that gets transmitted during a TLS connection creation. If you are curious about protocols and security, you will definitely enjoy this website.",
        "imageUrl": "./c491ae9d52d0bb500479ec50447b6587deaa48c926a5b70d3794f0b730c20317.png",
        "featured": false
      },
      {
        "title": "The true power of regular expressions",
        "url": "https://nikic.github.io/2012/06/15/The-true-power-of-regular-expressions.html",
        "description": "A deep dive into regular expressions from the formal language theory behind it to some illuminating examples. After reading this article you will know exactly how regular expression work and why they are so important in computer science.",
        "imageUrl": "./b8f033c49b73cf1726f15a29ea6b944cd140c86a8512b097101b8af31d458bd6.png",
        "featured": false
      },
      {
        "title": "Goodbye JavaScript, Hello WebAssembly",
        "url": "https://telerik.com/blogs/goodbye-javascript-hello-webassembly",
        "description": "A new form of web development is starting to emerge that promises to provide an alternative to JavaScript: WebAssembly.",
        "imageUrl": "./f32d8c6f199c6389abf6758e973227f666bd241b81a59e9c2de817bdac6fffaa.jpg",
        "featured": false
      },
      {
        "title": "The Suspense is Killing Redux",
        "url": "https://medium.com/@ryanflorence/the-suspense-is-killing-redux-e888f9692430",
        "description": "Ryan Florence, famous open source developer and React trainer tries to answer the question: “Does Suspense kill Redux?”. In case you never heard before, \"suspense\" is a new React feature that allows deferring the rendering of some components and it might have practical implication on the way you write React apps, including allowing you to use to replace Redux.",
        "imageUrl": "./332a1557e9703fdad5a68136b2215f559ff6cd0a359c369fda6a443b9ab7a4a8.jpg",
        "featured": false
      },
      {
        "title": "Understanding Currying in JavaScript",
        "url": "https://blog.bitsrc.io/understanding-currying-in-javascript-ceb2188c339",
        "description": "Currying is a process in functional programming in which we can transform a function with multiple arguments into a sequence of nesting functions. It returns a new function that expects the next argument inline. This guide provides a short yet detailed walkthrough into Currying in JavaScript.",
        "imageUrl": "./6d50e2b3d738c1bf0fac2d3f542b420b717610b2fb1be94cc114588ac1d0bb22.png",
        "featured": false
      },
      {
        "title": "CSS Layout cookbook",
        "url": "https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook",
        "description": "The CSS layout cookbook aims to bring together recipes for common layout patterns, things you might need to implement in your own sites. In addition to providing the code you can use as a starting point in your projects, these recipes highlight the different ways layout specifications can be used.",
        "imageUrl": "./66131478a5852508fccfffda781c189339f7dbfc1beffc8f0f0432117353f232.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 84,
    "title": "Create React App 2.0",
    "slug": "2018-10-15-084-create-react-app-2-0",
    "date": "2018-10-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #41, 2018",
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "Create React App 2.0",
        "url": "https://reactjs.org/blog/2018/10/01/create-react-app-v2.html",
        "description": "Create React App 2.0 has been released and it brings a year’s worth of improvements in a single dependency update. While React itself doesn’t require any build dependencies, it can be challenging to write a complex app without a fast test runner, a production minifier, etc. This new version of the tool ensures that you'll get the most up to date scaffolding when starting your new react app.",
        "imageUrl": "./3ee92dc54995046f1ddf396b6d7d1f9dc7e0c08e8af183e2634970a7438dccad.png",
        "featured": true
      },
      {
        "title": "Plans for the Next Iteration of Vue.js",
        "url": "https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf",
        "description": "This post provides an in-depth plan for the next major release of Vue.js, directly from its author Evan You.",
        "imageUrl": "./03c231c0699101a782808d10b3b5186862089f1b67375270725a0a8af7894ca2.jpg",
        "featured": false
      },
      {
        "title": "A Beginner's Guide to JavaScript's Prototype",
        "url": "https://tylermcginnis.com/beginners-guide-to-javascript-prototype",
        "description": "You can't get very far in JavaScript without dealing with objects. They're foundational to almost every aspect of the JavaScript programming language. In this post you'll learn about a variety of patterns for instantiating new objects and in doing so, you'll be gradually led to understanding JavaScript prototypes.",
        "imageUrl": "./caa79f5b26c80eea93be0545128ba2234e1c878a7c568ef6cc8fb94e6f4032d2.jpg",
        "featured": false
      },
      {
        "title": "Tiptap is a Rich Text Editor Framework for Vue.js",
        "url": "https://laravel-news.com/tiptap-rich-text-editor-framework-for-vue-js",
        "description": "Tiptap by Philipp Kühn is a renderless and extendable rich-text editor for Vue.js.  Where React has slate.js, Tiptap aims to be that style of a framework for Vue.js. Learn more about this project and how you can integrate a highly customizable rich text editor in your Vue.js projects.",
        "imageUrl": "./ab6a7fd49f6d602e68239219729997c4a0226f95283a34b63ae36510ad474304.jpg",
        "featured": false
      },
      {
        "title": "Start Performance Budgeting",
        "url": "https://medium.com/@addyosmani/start-performance-budgeting-dabde04cf6a3",
        "description": "If you’re building a web experience and want to stay fast, a performance budget can be critical. For success, embrace performance budgets as a technique to effectively benchmark your app and make sure it is always performing as expected.",
        "imageUrl": "./a103ecdd232cdf5925d0039b859001b0e40b5793cb804c0d80709cfad8133748.jpg",
        "featured": false
      },
      {
        "title": "How To Build A News Application With Angular 6 And Material Design",
        "url": "https://smashingmagazine.com/2018/10/news-application-with-angular-and-material-design",
        "description": "In this article, we’re going to build a news application using Angular 6 and Google’s material design in combination, which will help you to make your future applications with Angular look great in web browsers and mobile devices.",
        "imageUrl": "./85da99da429e84c1da9a7e2b04191f767c382877a18697eee2137231d6313e6b.jpg",
        "featured": false
      },
      {
        "title": "Go Concurrency Patterns: Pipelines and cancellation",
        "url": "https://blog.golang.org/pipelines",
        "description": "Go's concurrency primitives make it easy to construct streaming data pipelines that make efficient use of I/O and multiple CPUs. This article presents examples of such pipelines, highlights subtleties that arise when operations fail, and introduces techniques for dealing with failures cleanly.",
        "imageUrl": "./80f262f90199d2f90ff79f652ccf5a8a978b1c1ca6ee699495abf094ad3f75f1.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 83,
    "title": "Write Better Conditionals in JavaScript",
    "slug": "2018-10-08-083-write-better-conditionals-in-javascript",
    "date": "2018-10-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #40, 2018",
    "quote": {
      "text": "Should array indices start at 0 or 1?  My compromise of 0.5 was rejected without, I thought, proper consideration",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "Write Better Conditionals in JavaScript",
        "url": "http://scotch.io/tutorials/5-tips-to-write-better-conditionals-in-javascript",
        "description": "When working with JavaScript, we deal a lot with conditionals, in this article you will find 5 tips for you to write better and cleaner conditionals.",
        "imageUrl": "./69a0f9c739a1f0f49bddb82b343f1609040c25e08f8b053f27a7d3e7c9b447fd.jpg",
        "featured": true
      },
      {
        "title": "On Node Framework Popularity",
        "url": "https://hueniverse.com/on-node-framework-popularity-355fbde5cbe4",
        "description": "Eran Hammer, the creator of the Hapi framework, ventured into a research on the current status of Node.js web frameworks. In his research, Eran asked developers how they feel about the frameworks they use and tried to find interesting patterns to understand what the future can bring us.",
        "imageUrl": "./017db2c7cf0b8f433cbe952eede318e4fd27ff9771544f27fa1014515844d439.jpg",
        "featured": false
      },
      {
        "title": "How to write X in both Python 3 and JavaScript",
        "url": "https://sayazamurai.github.io/python-vs-javascript",
        "description": "Python and JavaScript are two of the most popular programming languages. If you're a Python programmer learning JavaScript, or a JavaScript programmer learning Python, this handy cheat sheet might help you.",
        "imageUrl": "./a970c9de0816b004e55cd92c228c5718a0d8e69158ce7363eaf951ed747ed8b2.jpg",
        "featured": false
      },
      {
        "title": "Eleven Tips to Scale Node.js",
        "url": "https://medium.com/microsoftazure/eleven-tips-to-scale-node-js-65cbf6deef6e",
        "description": "A collection of useful tips to help you write better Node.js with the goal of making software that scales in the cloud and that is easy to deal with within an organization.",
        "imageUrl": "./6bebafa5682277c76b9e382ef83f8d5c234943a5cd16b63bc2e8d60c7358dd90.jpg",
        "featured": false
      },
      {
        "title": "Kubernetes: The Surprisingly Affordable Platform for Personal Projects",
        "url": "http://www.doxsey.net/blog/kubernetes--the-surprisingly-affordable-platform-for-personal-projects",
        "description": "An interesting point of view about Kubernetes and how it can be used even for small scale personal projects. This serves both as a quick intro to the advantages of Kubernetes and as a practical advice to \"productionize\" your next project.",
        "imageUrl": "./2852611736716ea1d0a6be29941a0a2203496d169dd5deabf220cf40c2be8a0b.png",
        "featured": false
      },
      {
        "title": "How to Test React Components using Jest and Enzyme",
        "url": "https://blog.bitsrc.io/how-to-test-react-components-using-jest-and-enzyme-fab851a43875",
        "description": "Learn how to test React components using Jest and Enzyme",
        "imageUrl": "./f975ae62838676c1acd8df44167c996f4e56cb2156df740c7d1e4a7b19162eb9.jpg",
        "featured": false
      },
      {
        "title": "Parcel v1.10.0 released",
        "url": "https://medium.com/@devongovett/parcel-v1-10-0-babel-7-flow-elm-and-more-c20736553573",
        "description": "Parcel v1.10.0. has been released and it brings support for Babel 7, Flow, Elm and more. Check it out!",
        "imageUrl": "./d43968272694a9ed55f50ba6e5eb697224848f03b3d077c7a51b79e5f518a9b6.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor.  Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 82,
    "title": "Flocking algorithms in JavaScript",
    "slug": "2018-10-01-082-flocking-algorithms-in-javascript",
    "date": "2018-10-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #39, 2018",
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Flocking algorithms in JavaScript",
        "url": "https://www.blog.drewcutchins.com/blog/2018-8-16-flocking",
        "description": "Have you ever watched a school of fish, a flock of birds, or even a crowd of people and watched how they move? Moving together, yet without a leader, they are exhibiting a behaviour known as \"flocking\". In this fantastic article, you will learn how to code different flocking simulation algorithms in plain JavaScript!",
        "imageUrl": "./222678542f255edcaaf4b787bd1456ba3e3d05cc630f5250256a756a0292a293.png",
        "featured": true
      },
      {
        "title": "Tying a React SPA to WordPress as a Backend",
        "url": "https://snipcart.com/blog/reactjs-wordpress-rest-api-example",
        "description": "Combining WordPress and React is a powerful way to build web applications. Read this intro to the WP REST API and step-by-step tutorial for a neat React SPA with WordPress as a backend.",
        "imageUrl": "./4957ee1f9f0543c66ff1cc0c5b4e5531c68aa4c5acc5647f27dd8ff78914feb3.jpg",
        "featured": false
      },
      {
        "title": "How we rolled out one of the largest Python 3 migrations ever",
        "url": "https://blogs.dropbox.com/tech/2018/09/how-we-rolled-out-one-of-the-largest-python-3-migrations-ever",
        "description": "Dropbox is one of the most popular desktop applications in the world: You can install it today on Windows, macOS, and some flavours of Linux. What you may not know is that much of the application is written using Python and that the codebase underwent a huge migration to move from Python 2 to Python 3.",
        "imageUrl": "./16449eeb44ead19aa7bc36062a3ef143b7f1c9f645b165473082cfbad88811ee.jpg",
        "featured": false
      },
      {
        "title": "The 12 Things You Need to Consider When Evaluating Any New JavaScript Library",
        "url": "https://medium.freecodecamp.org/the-12-things-you-need-to-consider-when-evaluating-any-new-javascript-library-3908c4ed3f49",
        "description": "How do you know if a new technology is worth investing time into or if it is good to use within the specific requirements of your current project? This article suggests 12 practical rules to evaluate any new JavaScript library.",
        "imageUrl": "./67c77ba5720bd5f458c3cb95268ce1747ad554c82b8c9e1aa9614329c7bba117.jpg",
        "featured": false
      },
      {
        "title": "Timsort - an efficient sorting algorithm",
        "url": "https://en.wikipedia.org/wiki/Timsort",
        "description": "Recently introduced in V8 to speed up Array.prototype.sort, Timsort is a hybrid stable sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds of real-world data.",
        "imageUrl": "./1b49b7fbb279d271d195131ed7035b370ba2177e49fd78cbad41226d75bb4135.png",
        "featured": false
      },
      {
        "title": "The making of Underrun",
        "url": "https://phoboslab.org/log/2018/09/underrun-making-of",
        "description": "Underrun is a wonderful WebGL game playable in the browser that, believe it or not, is made only of 13kb of assets (JavaScript and images). This article describes some of the design techniques used to keep the asset size so small without penalizing style and gameplay.",
        "imageUrl": "./70fd9d26670c4bc11785f3d6faac4f9273349cee2a294af1dd6028a1d41823d0.png",
        "featured": false
      },
      {
        "title": "What’s the difference between an integer and a pointer?",
        "url": "https://blog.regehr.org/archives/1621",
        "description": "In an assembly language we typically don’t have to worry very much about the distinction between pointers and integers. Some instructions happen to generate addresses whereas others behave arithmetically, but underneath there’s a single data type: bitvectors.",
        "imageUrl": "./b989fd46e2454e8cbf62b3320f008807f15e0b6f78fd6ca2c528ae10b969eb96.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 81,
    "title": "CSS Variables with JavaScript",
    "slug": "2018-09-24-081-css-variables-with-javascript",
    "date": "2018-09-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #38, 2018",
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "CSS Variables with JavaScript",
        "url": "https://css-tricks.com/updating-a-css-variable-with-javascript",
        "description": "Did you know you can control CSS variables from JavaScript? This short article will take a very practical approach to show you how to do so by connecting a box positioned with CSS absolute positioning and mouse movements tracked in JavaScript.",
        "imageUrl": "./ae73db8b4e3b777030f95189d3532d6bdfd6900444edaa5c5996c351c9698848.jpg",
        "featured": true
      },
      {
        "title": "Cache your React event listeners to improve performance.",
        "url": "https://medium.com/@Charles_Stover/cache-your-react-event-listeners-to-improve-performance-14f635a62e15",
        "description": "An under-appreciated concept in JavaScript is how objects and functions are references, and that directly impacts React performance.",
        "imageUrl": "./fb137f85b933518e0a1cfdea318f23bcddc3969d4503d71c87eb6e586b2da6d8.jpg",
        "featured": false
      },
      {
        "title": "Next Generation Package Management",
        "url": "https://blog.npmjs.org/post/178027064160/next-generation-package-management",
        "description": "What if installs were so fast they could happen in the background, just by using Node? What if every file in your dependencies could be guaranteed to be bit-by-bit identical to what’s on the registry?",
        "imageUrl": "./cd752b539a6ec346f3ea8633e0bae6b452b01a79133ffd7da662a4e7b229fbda.png",
        "featured": false
      },
      {
        "title": "Inside look at modern web browser",
        "url": "https://developers.google.com/web/updates/2018/09/inside-browser-part1",
        "description": "Learn how browser turn your code into functional website from high-level architecture to the specifics of the rendering pipeline.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "10 years of Speed in Chrome",
        "url": "https://blog.chromium.org/2018/09/10-years-of-speed-in-chrome_11.html",
        "description": "Speed has been one of Chrome’s four core principles, since it was first launched ten years ago.",
        "imageUrl": "./9f5f12c6aa422cf3be1b2365ef13f09a4c55a56eb1a4cde6ee8a8f56f762a0b4.jpg",
        "featured": false
      },
      {
        "title": "Git Cheatsheet",
        "url": "https://ndpsoftware.com/git-cheatsheet.html",
        "description": "Interactive Git Cheatsheet, categorizing commands based on what they affect.",
        "imageUrl": "./cfd6bfa00e80f085c43d63923016f31b04b9a96b49d36fe4a55969c84c54e43d.png",
        "featured": false
      },
      {
        "title": "Flexbox: How Big Is That Flexible Box?",
        "url": "https://smashingmagazine.com/2018/09/flexbox-sizing-flexible-box",
        "description": "This article explores the often confusing issue of sizing in Flexbox. How does Flexbox decide how big things should be?",
        "imageUrl": "./8c74c535228c27b91f3c15af1b249588150e023baa2400057add2aa666dcb7de.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 80,
    "title": "Goodbye Redux",
    "slug": "2018-09-17-080-goodbye-redux",
    "date": "2018-09-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #37, 2018",
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "Goodbye Redux",
        "url": "https://hackernoon.com/goodbye-redux-26e6a27b3a0b",
        "description": "A complete breakdown on why we needed Redux in the past, and why we don’t any more.",
        "imageUrl": "./9c585bde74a1c307ba2929c5d5ca4255506eb52fba75742402324a5f7767abc6.jpg",
        "featured": true
      },
      {
        "title": "Design with Difficult Data",
        "url": "https://alistapart.com/article/design-with-difficult-data",
        "description": "Stop designing for the happy path! Steven Garrity shows how to create more robust layouts by designing with difficult data.",
        "imageUrl": "./14e86f408771bd0f5b06eeca78cc06a53ad83ab4f8b1d6df8971f49520c3e469.jpg",
        "featured": false
      },
      {
        "title": "TypeScript with Babel: A Beautiful Marriage",
        "url": "https://medium.com/dailyjs/typescript-babel-ce24f724398",
        "description": "TypeScript has never been easier thanks to the brand new TypeScript plugin for Babel.",
        "imageUrl": "./2c1665fecf726bc00bfef978238bf24bcd3eebe891edc81a84d1edacf518ec65.jpg",
        "featured": false
      },
      {
        "title": "styled-components v4 💅",
        "url": "https://medium.com/styled-components/announcing-styled-components-v4-better-faster-stronger-3fe1aba1a112",
        "description": "A brand new global styles API, native support for the “as” and “ref” props, removal of .extend, full React v16 StrictMode-compliance are only a few of the new features in this release.",
        "imageUrl": "./220c013358618a42eccafe46b7f2469165869a4f5079a4cb699ccc2aed65cdc4.jpg",
        "featured": false
      },
      {
        "title": "Removing Babel's Stage Presets",
        "url": "https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets",
        "description": "Moving forward with v7, Babel maintainers decided it's best to stop publishing the Stage presets in Babel (e.g. `@babel/preset-stage-0`) and suggest to handle configuration in a different way.",
        "imageUrl": "./ffd1dfe52baa911cc8d228b394f32c0f264d24fbb2c35d5fcf9e90003b054a57.jpg",
        "featured": false
      },
      {
        "title": "Javascript's three dots ( ... ): Spread vs rest operators",
        "url": "http://scotch.io/bar-talk/javascripts-three-dots-spread-vs-rest-operators543",
        "description": "Javascript's ECMA6 came out with some cool new features; ... is one of these new Javascript functionalities. It can be used in two different ways; as a spread operator OR as a rest parameter. Sometimes this flexibility might be a bit confusing and this article will shed some light by providing a bunch of meaningful examples.",
        "imageUrl": "./3cfdf84e1c0699afe4d42bc47876479fe11b761c9e9359f97453c5991eae608a.jpg",
        "featured": false
      },
      {
        "title": "Using the Speech Synthesis Interface of the Web Speech API",
        "url": "https://manu.ninja/using-the-speech-synthesis-interface-of-the-web-speech-api",
        "description": "Speech synthesis has come a long way since it’s first appearance in operating systems in the 1980s. In the 1990s Apple already offered system-wide text-to-speech support. Alexa, Cortana, Siri and other virtual assistants recently brought speech synthesis to the masses. Modern browsers have speech capabilities too! Let's put them to use.",
        "imageUrl": "./60b56fd97b6b78ef501414594e2a5f2594e59b14548ba5a488434f2252f08297.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 79,
    "title": "What’s New in PHP 7.3",
    "slug": "2018-09-10-079-what-s-new-in-php-7-3",
    "date": "2018-09-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #36, 2018",
    "quote": {
      "text": "Code generation, like drinking alcohol, is good in moderation",
      "author": "Alex Lowe",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alex_Lowe"
    },
    "links": [
      {
        "title": "What’s New in PHP 7.3",
        "url": "https://kinsta.com/blog/php-7-3",
        "description": "PHP 7.3 is knocking on our door and with it comes new features, deprecations, and bug fixes. Check this in-depth overview of what's new in PHP 7.3!",
        "imageUrl": "./7a31fbba229fcb72fdf6fb4befc434ba71c682207d0ff316c97f3fd955eac9b8.jpg",
        "featured": true
      },
      {
        "title": "Design for People, Use People Language",
        "url": "https://medium.com/@joulee/design-for-people-use-people-language-41efcf5203b1",
        "description": "The first rule of building a valuable product is that it should be valuable for someone and it should be adopting the language that they use.",
        "imageUrl": "./bc897dc4413745472dea43b0de301e10b9e0cc12aacb95897c7da7bea620665e.jpg",
        "featured": false
      },
      {
        "title": "Pose - A declarative animation library for React, HTML, and SVG",
        "url": "https://popmotion.io/pose",
        "description": "Declarative motion system for React, React Native, and vanilla JS.",
        "imageUrl": "./60d1562e22f931b00b35d2c7b5e2a64a354a3209f3f6cb09d9dfec7a7045efd4.jpg",
        "featured": false
      },
      {
        "title": "Take A New Look At CSS Shapes",
        "url": "https://smashingmagazine.com/2018/09/css-shapes",
        "description": "This article takes a look at CSS Shapes and how to create non-rectangular shapes using images, gradients, and basic shapes. It also covers how the new tools in Firefox make editing shapes easier.",
        "imageUrl": "./9d3e75a3151fff2e0bc1f57bbe3f2217014200442713b4600a35c03747a17b9a.png",
        "featured": false
      },
      {
        "title": "p5.js Web Editor",
        "url": "https://editor.p5js.org/",
        "description": "A web editor for p5.js, a JavaScript library with the goal of making coding accessible to artists, designers, educators, and beginners.",
        "imageUrl": "./d10d7d9039fda1d7dda81338059b57d3bb196118c03366b0744fcd18ead0cac7.png",
        "featured": false
      },
      {
        "title": "Reduce JavaScript Payloads with Code Splitting",
        "url": "https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting",
        "description": "Modern sites often contain a lot of JavaScript. These scripts are often sent down in large, monolithic bundles which can take a long time to download and process. Code-splitting encourages breaking up these scripts so you only send what a user needs when they need it.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Building A Recipe Book In React",
        "url": "https://levelup.gitconnected.com/building-a-recipe-book-in-react-part-1-c05b3e53cbb1",
        "description": "A fantastic Tutorial For React Beginners, that will guide you through building a recipe book.",
        "imageUrl": "./56461a3a3c73e5962ebce69e951ef21eb1da75cf9ca83bb42d9a67e944730cff.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "MongoDB: The Definitive Guide: Powerful and Scalable Data Storage",
      "author": "Kristina Chodorow",
      "description": "Manage the huMONGOus amount of data collected through your web application with MongoDB. This authoritative introduction—written by a core contributor to the project—shows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This book provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project.",
      "coverImageUrl": "./d98bc829eaad931cbbfe76cf5cddb28b6b469caa0a8f6f508749d164568b6f11.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449344682/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449344682/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 78,
    "title": "A Tale of Types, Classes, and Maps",
    "slug": "2018-09-03-078-a-tale-of-types-classes-and-maps",
    "date": "2018-09-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #35, 2018",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "A Tale of Types, Classes, and Maps",
        "url": "https://youtu.be/IFWulQnM5E0",
        "description": "In this fantastic talk, Benedikt Meurer, Google Engineer working on V8, explores important ingredients of modern JavaScript engines, and how these ingredients make it possible to write the amazing JavaScript applications that we see today.",
        "imageUrl": "./053fc7979231fcb2632c935c65d4684117261ae2de468460ceced7b7023cd8e6.png",
        "featured": true
      },
      {
        "title": "felixrieseberg/windows95",
        "url": "https://github.com/felixrieseberg/windows95",
        "description": "If you are feeling nostalgic and really crave that need to use again Windows 95, here is a very simple solution: Windows 95 emulated from within an Electron app! Runs on macOS, Linux, and Windows. 🤪",
        "imageUrl": "./35ca94c35b721d36b7465761830408652cc3764f981ad6e2f4a7f640e9121d9c.jpg",
        "featured": false
      },
      {
        "title": "Babel 7 goes live!",
        "url": "https://babeljs.io/blog/2018/08/27/7.0.0",
        "description": "After almost 2 years, 4k commits, over 50 pre-releases, and a lot of help we are excited to announce the release of Babel 7. Find out what's new in this exciting release!",
        "imageUrl": "./ffd1dfe52baa911cc8d228b394f32c0f264d24fbb2c35d5fcf9e90003b054a57.jpg",
        "featured": false
      },
      {
        "title": "Why is a Java guy so excited about Node.js and JavaScript?",
        "url": "https://blog.sourcerer.io/why-is-a-java-guy-so-excited-about-node-js-and-javascript-7cfc423efb44",
        "description": "A point of view article from a long time Java Engineer moving to the Node.js and JavaScript.",
        "imageUrl": "./6adddcd763667f6366abe13d75e0793e2edd23d121d983461d33ccbc826bcb46.jpg",
        "featured": false
      },
      {
        "title": "Stimulus framework",
        "url": "https://stimulusjs.org/",
        "description": "Stimulus is a JavaScript framework with modest ambitions. It doesn’t seek to take over your entire front-end—in fact, it’s not concerned with rendering HTML at all. Instead, it’s designed to augment your HTML with just enough behavior to make it shine.",
        "imageUrl": "./5a8cc929dcc7b56e8a9c3bad7bea64c5da549925deff86939e0083656cc622b8.png",
        "featured": false
      },
      {
        "title": "Art of debugging with Chrome DevTools",
        "url": "https://medium.com/frontmen/art-of-debugging-with-chrome-devtools-ab7b5fd8e0b4",
        "description": "Chrome DevTools come with an array of features that help developers debug their apps effectively, and therefore find and fix the bugs. There's so much you can do that sometimes, especially at the beginning, it's easy to get lost. This article is gonna help you to be practical and learn what's important.",
        "imageUrl": "./6cbdafac16e3b6722ce012ce868cf7b4532cf9ddb45867401c06a49ac662af00.jpg",
        "featured": false
      },
      {
        "title": "GraphQL Server Tutorial with Apollo Server and Express",
        "url": "https://robinwieruch.de/graphql-apollo-server-tutorial",
        "description": "Learn how to build a GraphQL server with Apollo Server and Express with authentication, authorization, pagination, subscription, database access, tests, etc.",
        "imageUrl": "./e2bff74157353c35148cede64602d3ccefc2875cd3a653a1ecf6ffaa7982eaf0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 77,
    "title": "#77: F# — For-loops are complicated",
    "slug": "2018-08-27-077-f-34-for-loops-are-complicated",
    "date": "2018-08-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #34, 2018",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "For-loops are complicated",
        "url": "https://youtu.be/Nzokr6Boeaw",
        "description": "In this episode of Google Chrome Developers, Jake and Surma dissect how for-loops actually work and how they’ve evolved. Turns out, it got very complicated.",
        "imageUrl": "./0969e57442277d3f20bb4b745c69a46c53dfb00a19ec956e827a7f3d9a886103.png",
        "featured": true
      },
      {
        "title": "Same app in React and Vue",
        "url": "https://medium.com/javascript-in-plain-english/i-created-the-exact-same-app-in-react-and-vue-here-are-the-differences-e9a1ae8077fd",
        "description": "React vs Vue. Finally, a side-by-side code comparison between Vue and React! 🎉",
        "imageUrl": "./875a91c3363249ac505633b707c27694bee4c02c9fcdce248e08c7ffe25652cb.jpg",
        "featured": false
      },
      {
        "title": "An Overview of Buffers in Node.js",
        "url": "http://thecodebarbarian.com/an-overview-of-buffers-in-node-js",
        "description": "Buffers are Node.js' built-in type for storing arbitrary binary data. Because most Node.js developers don't use buffers much beyond occasionally reading data from a file, buffers are a common source of confusion. In this article, I'll demonstrate how buffers work in Node.js, and describe a neat use case for buffers with MongoDB and Mongoose.",
        "imageUrl": "./aab3b678b7209557bd1c6b28b9a93cc777adf72223c2398cfc67bbd38dd43152.png",
        "featured": false
      },
      {
        "title": "Creating a Secure REST API in Node.js",
        "url": "https://toptal.com/nodejs/secure-rest-api-in-nodejs",
        "description": "As patterns go, REST APIs are so useful and ubiquitous that every web developer, regardless of language or platform, should know how to build one.",
        "imageUrl": "./e0a7fef4c30964240d807f2f00dab420b60aace5dfae2c221802ecb6f794bda4.jpg",
        "featured": false
      },
      {
        "title": "Practical CSS Scroll Snapping",
        "url": "https://css-tricks.com/practical-css-scroll-snapping",
        "description": "CSS scroll snapping allows you to lock the viewport to certain elements or locations after a user has finished scrolling.",
        "imageUrl": "./ccc6e8b7084205ebe5931222bac7cbf492c2309cbe8f9bffcd101ecdcf672f7b.jpg",
        "featured": false
      },
      {
        "title": "CSS techniques to create responsive images",
        "url": "https://medium.freecodecamp.org/time-saving-css-techniques-to-create-responsive-images-ebb1e84f90d5",
        "description": "Sometimes, for some reasons, your images won’t fit the layout and you don’t want to wrap your head around this for hours. This article illustrates five techniques to handle image resizing with CSS.",
        "imageUrl": "./d99f6a3453e72e2ab7f42b4a6cfcc98cf52d76a5785087202aedde24c2d6948b.jpg",
        "featured": false
      },
      {
        "title": "Tutorial: How to deploy an app to production with an actual button",
        "url": "https://blog.github.com/2018-08-16-how-to-deploy-to-production-with-an-actual-button",
        "description": "Ready to deploy? “Ship it!” to production with the press of a button.",
        "imageUrl": "./004e1faa2e412aabb78c8817170917c6d5992e790293a247fd677a3e6823b6b1.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 76,
    "title": "Foreshadow explained in 3 minutes",
    "slug": "2018-08-20-076-foreshadow-explained-in-3-minutes",
    "date": "2018-08-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #33, 2018",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Foreshadow (Cloud vulnerability) explained in 3 minutes",
        "url": "https://youtu.be/kBOsVt0iXE4",
        "description": "This vulnerability takes advantage of the way Intel processors handle page tables (the maps that translate between physical and virtual memory resources). Like Spectre and Meltdown in early 2018, L1TF allows unauthorized users to access data from speculative operations. It is a serious threat to all Cloud environments, so take few minutes to understand how it might impact you and your apps.",
        "imageUrl": "./8865ef8bea9c720341cebb9f03b70f5209b3dbc7f8e14bb088172d72b395a6b6.png",
        "featured": true
      },
      {
        "title": "GLB: GitHub’s open source load balancer",
        "url": "https://githubengineering.com/glb-director-open-source-load-balancer",
        "description": "GitHub serves tens of thousands of requests every second, operating on GitHub’s metal cloud. This article presents GLB, an open source scalable load balancing solution for bare metal datacenters, which powers the majority of GitHub’s public web and git traffic.",
        "imageUrl": "./cba04937186c94635d8896375dde6a7dfdd23fafb8708c46249c7bd1d80062f1.png",
        "featured": false
      },
      {
        "title": "Serverless Docker Beta",
        "url": "https://zeit.co/blog/serverless-docker",
        "description": "Zeit now finally supports serverless through docker. The offering is very interesting and supports Instant cold boots, predictable horizontal scalability, tunable resources and limits and much more.",
        "imageUrl": "./6440871dae3eb6ba0636d1efd91f7ee89e5a7628a6df53035cfe1576915bb8c1.jpg",
        "featured": false
      },
      {
        "title": "A Friendly Introduction to Flexbox for Beginners",
        "url": "https://sitepoint.com/flexbox-css-flexible-box-layout",
        "description": "Christian Krammer walks you through the basics of Flexbox, showing how you can use flexbox to lay out specific page elements, and also how flexbox can serve as a handy fallback method in browsers that don't yet support CSS Grids.",
        "imageUrl": "./598258cb84d744ba8b4f2ea0345e36feb662dcb9fb14b4e972ac9bd1b6ba7b18.jpg",
        "featured": false
      },
      {
        "title": "Browser painting and considerations for web performance",
        "url": "https://css-tricks.com/browser-painting-and-considerations-for-web-performance",
        "description": "The process of a web browser turning HTML, CSS, and JavaScript into a finished visual representation is quite complex and involves a good bit of magic.",
        "imageUrl": "./adc78e6b13bc66f710cb84724ce99a55395f0c4b773da89dc4ae23a8c3b97c89.png",
        "featured": false
      },
      {
        "title": "Introduction to OCaml",
        "url": "https://blog.baturin.org/introduction-to-ocaml.html",
        "description": "A very friendly introduction to OCaml, a general purpose programming language with an emphasis on expressiveness and safety that has been developed for more than 20 years.",
        "imageUrl": "./60ef0f00967939dadcf3e7e355cca09914a3c6daf9cdac33256c0eb3ddf6e11b.png",
        "featured": false
      },
      {
        "title": "UNIX Syscalls",
        "url": "https://john-millikin.com/unix-syscalls",
        "description": "On UNIX-like operating systems, userland processes invoke kernel procedures using the “syscall” feature. Each syscall is identified by a “syscall number” and has a short list of parameters, which both can vary betwen operating systems, hardware platforms, and configuration options.",
        "imageUrl": "./d7dc5c418a26e48c0c212a5f4c93b83528010c64051b945d38e157de9d790c63.png",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 75,
    "title": "The Cost Of JavaScript In 2018 💵 💷 💶",
    "slug": "2018-08-13-075-the-cost-of-javascript-in-2018",
    "date": "2018-08-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #32, 2018",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "The Cost Of JavaScript In 2018",
        "url": "https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4",
        "description": "Building interactive sites can involve sending JavaScript to your users. Often, too much of it. Have you been on a mobile page that looked like it had loaded only to tap on a link or tried to scroll and *nothing* happens?",
        "imageUrl": "./0dd0a881170ec5d534da828ffbc2e59cb82243a45e699a6c950f3e27f2157364.png",
        "featured": true
      },
      {
        "title": "How we scaled nginx and saved the world 54 years every day",
        "url": "https://blog.cloudflare.com/how-we-scaled-nginx-and-saved-the-world-54-years-every-day",
        "description": "10 million websites, apps and APIs use Cloudflare to give their users a speed boost. At peak we serve more than 10 million requests a second across our 151 data centers. Over the years we’ve made many modifications to our version of NGINX to handle our growth. This is blog post is about one of them.",
        "imageUrl": "./c741d5e7297fe77f908319ea2e6cfa25351e277031bd403f2aa8cbe2ef65209a.jpg",
        "featured": false
      },
      {
        "title": "11 Ways (Not) to Get Hacked with Kubernetes",
        "url": "https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked",
        "description": "Kubernetes security has come a long way since the project's inception, but still contains some gotchas. Starting with the control plane, building up through workload and network security, and finishing with a projection into the future of security, here is a list of handy tips to help harden your clusters and increase their resilience if compromised.",
        "imageUrl": "./11c3e0f5b9ea4ab1067f0594250865fad8a9ce69f684a470b88b15867f6f7477.png",
        "featured": false
      },
      {
        "title": "We're under attack! 23 Node.js security best practices",
        "url": "https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d",
        "description": "A curated list of 23 node security best practices with code examples and quotes from the top ranked blogs.",
        "imageUrl": "./410e9e8794bef7fd928d3d27a27770f8a8d70e1498aff329dfefe462bfef600d.jpg",
        "featured": false
      },
      {
        "title": "Building a progressive web app (PWA): No React, no Angular, no Vue",
        "url": "https://blog.logrocket.com/building-a-progressive-web-app-pwa-no-react-no-angular-no-vue-aefdded3b5e",
        "description": "Just direct DOM manipulation with some more recent APIs and JS specs.",
        "imageUrl": "./d1a029c71823ff0737e76b237100ce75f0b80a1ed4f9c36642d50b3fc6ab0412.jpg",
        "featured": false
      },
      {
        "title": "What Happens When You Create A Flexbox Flex Container?",
        "url": "https://smashingmagazine.com/2018/08/flexbox-display-flex-container",
        "description": "In this article, the beginning of a series on Flexbox, we will take a detailed look at what actually happens when you add `display: flex` to your stylesheet.",
        "imageUrl": "./71a6c7b418131761def3bcf52d0d26d807cb9802bde0758e0af90293934fa995.png",
        "featured": false
      },
      {
        "title": "CSS Scan - Instantly check or copy computed CSS from any element on the internet",
        "url": "https://guivr.github.io/cssscan/?ref=fb",
        "description": "Inspect Element on steroids: study how things are made on the web in real-time and copy computed styles with no hassle (neither longhand styles).",
        "imageUrl": "./430af2c244947b71e2dd51e0cfd6242c90c761a392cb2aa27fe092d6d0531601.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 74,
    "title": "Detecting the use of \"curl | bash\"",
    "slug": "2018-08-06-074-detecting-the-use-of-curl-bash",
    "date": "2018-08-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #31, 2018",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "Detecting the use of \"curl | bash\"",
        "url": "https://idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side",
        "description": "Executing a curl from a URL and piping the result into bash is a very common yet inherently insecure practice. To discourage the use of this practice you can detect when this is happening from the server side and return an alternative message to stop the user from doing this.",
        "imageUrl": "./62383aa0ae915a4e7b7ca256ac3ba407e134b690ebd89dbfb75c99f717e192f8.png",
        "featured": true
      },
      {
        "title": "Why Discord is Sticking with React Native",
        "url": "https://blog.discordapp.com/why-discord-is-sticking-with-react-native-ccc34be0d427",
        "description": "React Native has been at the centre of the mobile development landscape after Airbnb decided to move away from it. Here's an interesting use case of a company that is sticking with React Native and supporting this technology.",
        "imageUrl": "./83b17b999cad0249bf6314715d023a48d7a050b96867e95ea8471d90ca1d80bf.jpg",
        "featured": false
      },
      {
        "title": "7 Basic Design Principles We Forget About",
        "url": "https://uxplanet.org/7-basic-design-principles-we-forget-about-8f5c15d4b527",
        "description": "Clarity. Actionable interfaces. Opinionated design. Gather feedback. Use metaphors. Provide context over consistency. Use defensive design. These are 7 design principles that you shouldn't forget while developing your next great project.",
        "imageUrl": "./a4b7bbe05faaad8974c4e72fc21e1e9894291c438f9725df2d503a1420d2bd83.jpg",
        "featured": false
      },
      {
        "title": "The trick to viewport units on mobile",
        "url": "https://css-tricks.com/the-trick-to-viewport-units-on-mobile",
        "description": "Viewport units have always been controversial and some of that is because of how mobile browsers have made things more complicated by having their own opinions about how to implement them.",
        "imageUrl": "./bed34253908471cef6edbb77a17892afdbb53016cf5850764410fe8fc08ed1a6.jpg",
        "featured": false
      },
      {
        "title": "Build a state management system with vanilla JavaScript",
        "url": "https://css-tricks.com/build-a-state-management-system-with-vanilla-javascript",
        "description": "Managing state is not a new thing in software, but it’s still relatively new for building software in JavaScript. Traditionally, we’d keep state within the DOM itself or even assign it to a global object in the window. Now though, we’re spoiled with choices for libraries and frameworks to help us with this. Libraries like Redux, MobX and Vuex make managing cross-component state almost trivial.",
        "imageUrl": "./80833ff5f618279d5fe5ce12046b0232e8a5e53ba4544c9d231efac58b79cbb3.jpg",
        "featured": false
      },
      {
        "title": "Why the New V8 is so Damn Fast",
        "url": "http://nodesource.com/blog/why-the-new-v8-is-so-damn-fast",
        "description": "The entire V8 compiler pipeline was overhauled and shipped with Node.js version 8. This post investigates what speed improvements we can expect as a result.",
        "imageUrl": "./65aad17f92e36ce7784f5d46b8fe1062e3dd3250b1a5f7584b9d152515fea618.jpg",
        "featured": false
      },
      {
        "title": "Logical Styling Based on the Number of Given Elements",
        "url": "https://css-tricks.com/solved-with-css-logical-styling-based-on-the-number-of-given-elements",
        "description": "Did you know that CSS is Turing complete? Did you know that you can use it to do some pretty serious logical styling? Well you can! You don’t have to set all of your logic-based styling rules in JavaScript, or even have to use JavaScript to set classes you are styling against.",
        "imageUrl": "./02310047c49dfd491ab581eb74c7c9264a1ed9df20b06e410ef9ba50e244ef1c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 73,
    "title": "Your Body Text Is Too Small",
    "slug": "2018-07-30-073-your-body-text-is-too-small",
    "date": "2018-07-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #30, 2018",
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "Your Body Text Is Too Small",
        "url": "https://blog.marvelapp.com/body-text-small",
        "description": "Body text is the key component in communicating the main bulk of a message or story, and it’s probably the most important element on a website, even if people sometimes read just the headlines. Why would we limit the effectiveness of body text? Learn how to properly setup your body text size with this insightful article by Marvel.",
        "imageUrl": "./edfbcfadc2b5700b75e036368586de4af8aebcdf8a1ab9546e1348ffcfeb5082.jpg",
        "featured": true
      },
      {
        "title": "The Best Explanation of JavaScript Reactivity",
        "url": "https://medium.com/vue-mastery/the-best-explanation-of-javascript-reactivity-fea6112dd80d",
        "description": "By understanding what reactivity is and how it works, you can improve your development skills.",
        "imageUrl": "./10434d9ad66151f01c040ff39a780a645b57ace48bad08ac8537c8207589bf08.jpg",
        "featured": false
      },
      {
        "title": "The future of WebAssembly",
        "url": "https://blog.scottlogic.com/2018/07/20/wasm-future.html",
        "description": "WebAssembly is a performance optimised virtual machine that was shipped in all four major browsers earlier this year. It is a nascent technology and the current version is very much an MVP. This blog post takes a look at the WebAssembly roadmap and the features it might gain in the near future.",
        "imageUrl": "./d39f3d163dd3e7057b5fe0783b7372bce32a0a23adc978cc17630d6fda6056b8.jpg",
        "featured": false
      },
      {
        "title": "React Context API",
        "url": "https://reactjs.org/docs/context.html",
        "description": "The official documentation for the React Context API has been recently revamped by adding few section on why and when you might want to take advantage of this API and when you shouldn't.",
        "imageUrl": "./29b5259b03835e1f1123f41740a27b4eae4552cec22e4d0324a6ff269e11d78b.png",
        "featured": false
      },
      {
        "title": "Weird things variable fonts can do",
        "url": "https://css-tricks.com/weird-things-variable-fonts-can-do",
        "description": "I tend to think of variable fonts as a font format in which a single font file is capable of displaying type at near-infinite variations of things like boldness, width, and slantyness. But there are definitely more original use cases that you might want to check out :)",
        "imageUrl": "./6f4e5fea325bc92d63f673d508492310e2547a912ebf453b3efc8d9ea57be922.jpg",
        "featured": false
      },
      {
        "title": "Adding Particle Effects to DOM Elements",
        "url": "https://css-tricks.com/adding-particle-effects-to-dom-elements-with-canvas",
        "description": "Let’s take a look at how to make web pages more visually capable by combining the freedom of with HTML elements. Specifically, we will be creating a basic particle effect using the powerful graphics capabilities of Canvas.",
        "imageUrl": "./ddc174ae4645f978b7764d69e2839d0c10157f577411d904cee974abe58ab353.png",
        "featured": false
      },
      {
        "title": "Create your own Serverless API",
        "url": "https://css-tricks.com/create-your-own-serverless-api",
        "description": "An interesting tutorial on how to build an API by taking advantage of Azure Functions and CosmoDB. Real \"serverless\" APIs FTW!",
        "imageUrl": "./8ec118dea00c81ecf36d2865bb0eb0869be5ef8ad0557a8999f60b03f1ff4129.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 72,
    "title": "Unix VS Linux",
    "slug": "2018-07-23-072-unix-vs-linux",
    "date": "2018-07-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #29, 2018",
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "Unix VS Linux",
        "url": "https://youtu.be/jowCUo_UGts",
        "description": "Unix was started by Ken Thompson, Dennis Ritchie and some other engineers including Brian Kernighan back in the early 1970s. It has a long and illustrious history. But then Linux came along and things changed. How is Linux different to Unix? Are they the same thing?",
        "imageUrl": "./ec3c91321cc80f4cd7b935e51f5bbba8b04d6f5a38c37b2f4eb85d8c5329c742.png",
        "featured": true
      },
      {
        "title": "Web Architecture 101",
        "url": "https://engineering.videoblocks.com/web-architecture-101-a3224e126947",
        "description": "The basic architecture concepts I wish I knew when I was getting started as a web developer",
        "imageUrl": "./1c210704e92685b8b98b68211c67bcd3888439686180af61ead50f480661a60d.jpg",
        "featured": false
      },
      {
        "title": "Building the Google Photos Web UI",
        "url": "https://medium.com/google-design/google-photos-45b714dfbed1",
        "description": "A technical write up about how Google solved the challenges of designing a web app to visualize and manage large photo collections. A real peek under the hood of how the web version of Google Photos works.",
        "imageUrl": "./e944d9d635ad26fd2f7fbf321337e364dba70173fee3a22bffa68980827cda88.jpg",
        "featured": false
      },
      {
        "title": "React Native: A retrospective",
        "url": "https://engineering.udacity.com/react-native-a-retrospective-from-the-mobile-engineering-team-at-udacity-89975d6a8102",
        "description": "The mobile team at Udacity recently removed the last features in our apps using React Native. Here's what worked and what didn't.",
        "imageUrl": "./7831dce5fcd30a5a3e294f6c789295b1438c1f556201edd3539313560ee8b4fc.jpg",
        "featured": false
      },
      {
        "title": "15 HTML element methods you’ve potentially never heard of",
        "url": "https://hackernoon.com/15-html-element-methods-youve-potentially-never-heard-of-fc6863e41b2a",
        "description": "15 HTML element methods you can use to inspect and manipulate the DOM that you probably didn't know. Very interesting to improve your knowledge of how the web actually works.",
        "imageUrl": "./85f087185400dbdb1e62aef640265c2fbbf0ff83df7e60b37b5dbfe7cb49c012.jpg",
        "featured": false
      },
      {
        "title": "Pattern Library First: An Approach For Managing CSS",
        "url": "https://smashingmagazine.com/2018/07/pattern-library-first-css",
        "description": "CSS can be hard to manage across a project, especially when you need to include media queries for various breakpoints and fallbacks for older browsers. In this article, we will take a look at using Fractal to manage components which use CSS Grid.",
        "imageUrl": "./bdf9c4d820e242cc0a6aff07fa67e71b3943453adb1edf98c23cf80ab3fe1b1c.png",
        "featured": false
      },
      {
        "title": "The CSS Paint API",
        "url": "https://css-tricks.com/the-css-paint-api",
        "description": "The CSS Paint API is extremely exciting, not only for what it is, but what it represents, which is the beginning of a very exciting time for CSS.",
        "imageUrl": "./b198eeebbe7ee3aa91ec51d72c5424905d228e97bb8da6ebe349811434e62487.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 71,
    "title": "Currents: Developer trends in the cloud",
    "slug": "2018-07-16-071-currents-developer-trends-in-the-cloud",
    "date": "2018-07-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #28, 2018",
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "Developer trends in the cloud",
        "url": "https://digitalocean.com/currents/june-2018",
        "description": "Trends in the developer community move quickly. As a developer-focused company, it's vital for us to keep up with the technologies and tools that developers and their teams are interested in so we can help them achieve their goals.",
        "imageUrl": "./22238d4b424b4026fbb0da509c3760117996f7e15686e13bfd900f17521a1738.png",
        "featured": true
      },
      {
        "title": "Designing for accessibility",
        "url": "https://uxdesign.cc/designing-for-accessibility-is-not-that-hard-c04cc4779d94",
        "description": "Seven easy-to-implement guidelines to design a more accessible web ❤️",
        "imageUrl": "./5bf820025a5cf1898407d736a40162d49cfebe8d56383f9017dec2d6b62a99cb.jpg",
        "featured": false
      },
      {
        "title": "What Is Redux: A Designer’s Guide",
        "url": "https://smashingmagazine.com/2018/07/redux-designers-guide",
        "description": "Do you know Redux's real power is beyond managing the state? As designers, if we understand the advantages and downsides of Redux, we'll be able to contribute to this decision making from the perspective of design.",
        "imageUrl": "./a00854f56673915b1f32b35c4675bf28dff898aeed51552181fa5e122d4d9241.png",
        "featured": false
      },
      {
        "title": "Delivering WordPress in 7KB",
        "url": "https://css-tricks.com/delivering-wordpress-in-7kb",
        "description": "How to squeeze WordPress so that an entire theme is below 7KB? This article show how to achieve this ambitious goal and how to reduce carbon emissions while doing it!",
        "imageUrl": "./6dcaacc405d444f6474266c8010a58b1998022b015b82de9e33301d53bc94200.jpg",
        "featured": false
      },
      {
        "title": "NSQ: realtime distributed messaging platform",
        "url": "https://nsq.io/",
        "description": "NSQ is an ops friendly real-time distributed messaging platform written in Go. You can use this project in a variety of context, for example to power the backbone of your next micro-services architecture.",
        "imageUrl": "./638877a69be75d0650179d96f071b63e1ca4b0f8e3fe264a32379fb44e079c27.png",
        "featured": false
      },
      {
        "title": "Cloudflare Workers, Lambda and Lambda@Edge",
        "url": "https://blog.cloudflare.com/serverless-performance-comparison-workers-lambda",
        "description": "A few months ago we released a new way for people to run serverless Javascript called Cloudflare Workers. We believe Workers is the fastest way to execute serverless functions, but lets prove it.",
        "imageUrl": "./496bb088dd23dbb0c0491aa68b50ec0d6256e9b7d27d9c52c716c51c54666abb.jpg",
        "featured": false
      },
      {
        "title": "Code: Simple, correct, fast. In that order!",
        "url": "https://drewdevault.com/2018/07/09/Simple-correct-fast.html",
        "description": "The single most important quality in a piece of software is simplicity. It’s more important than doing the task you set out to achieve. It’s more important than performance. The reason is straightforward: if your solution is not simple, it will not be correct or fast.",
        "imageUrl": "./a5b5992dc3d4de2a66531479e7c76c71438351a5f099f2dc0ab33f7720d32043.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 70,
    "title": "Computer, build me an app",
    "slug": "2018-07-09-070-computer-build-me-an-app",
    "date": "2018-07-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #27, 2018",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "Computer, build me an app",
        "url": "https://youtu.be/qqt6YxAZoOc",
        "description": "Frameworks exist because writing maintainable apps in vanilla JavaScript is hard. But frameworks aren’t free: downloading and parsing those extra bytes slows things up, just when your users are deciding whether to stick around. Instead of choosing between bulky frameworks and maintainability nightmares, what if we could tell the computer ‘here are the blueprints, now you write the code’? In this talk, we’ll discover a new breed of tools, such as **Svelte**, that let you do exactly that.",
        "imageUrl": "./481509a21ba399a61fb0cb91d5c53718ca5561f58170b01a60896f77dc6dbae6.png",
        "featured": true
      },
      {
        "title": "Flutter - Beautiful native apps in record time",
        "url": "https://flutter.io/",
        "description": "Flutter is Google’s mobile UI framework for crafting high-quality native experiences on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.",
        "imageUrl": "./aadb88462bfd9fb1bb714e7ab440a84306a603eaed278cc84453d1fe1036bb3e.png",
        "featured": false
      },
      {
        "title": "Webpack — The Confusing Parts",
        "url": "https://medium.com/@rajaraodv/webpack-the-confusing-parts-58712f8fcad9",
        "description": "Webpack is the leading module bundler for React and Redux apps. Webpack is a fully fledged solution and, at first, it might result very cumbersome and confusing. This article is going to help you understand the main principle to remove that barrier to entry that might stop you from appreciating this awesome tool!",
        "imageUrl": "./6e390eba1d063f076dc735513bc6dd6a14d303bfbd8bb3e77c2bb019a59dfff6.jpg",
        "featured": false
      },
      {
        "title": "10 Small Design Mistakes We Still Make",
        "url": "https://uxplanet.org/10-small-design-mistakes-we-still-make-1cd5f60bc708",
        "description": "By revisiting the famous UX book \"Don’t Make Me Think\" by Steve Krug, this article re-purposes 10 recurring design mistakes that you should definitely avoid while building your next awesome product.",
        "imageUrl": "./39f6d5ae1be687ba640d94f0d03a8b69d0413a85501cf46dbd7a0db4d537444c.jpg",
        "featured": false
      },
      {
        "title": "Emojicode",
        "url": "https://emojicode.org/",
        "description": "Emojicode is probably the best (and most fun) programming language. It's a serious project, a full-blown language consisting mostly of emojis. How not to love it? I am sure you are already looking for an excuse to introduce Emojicode in your team, even before checking the website!",
        "imageUrl": "./4b4c95da78646e688d2a39085fa03871cd1d35cb03cb2ef714fe0bb8edd818ae.png",
        "featured": false
      },
      {
        "title": "Optimizing React: Virtual DOM explained",
        "url": "https://evilmartians.com/chronicles/optimizing-react-virtual-dom-explained",
        "description": "Learn about React's Virtual DOM and use this knowledge to speed up your applications. In this thorough beginner-friendly introduction to framework's internals, we will demystify JSX, show you how React makes rendering decisions, explain how to find bottlenecks, and share some tips to avoid common mistakes.",
        "imageUrl": "./95f0f7f0baa3be81797efc28d73f0531440fd358b78395e063a7228043226503.jpg",
        "featured": false
      },
      {
        "title": "Design your CSS grids with Layoutit",
        "url": "http://layoutit.com/grid",
        "description": "Visual interface builder for CSS Grid that allows you to easily create and export your custom layouts (with legacy grid support).",
        "imageUrl": "./88677a8bac84b79d3e77b5c3ace0ec5515118d8f1d2af213ec2229d443cc3a4e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 69,
    "title": "Bash Pitfalls",
    "slug": "2018-07-02-069-bash-pitfalls",
    "date": "2018-07-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #26, 2018",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Bash Pitfalls",
        "url": "http://mywiki.wooledge.org/BashPitfalls",
        "description": "A vast wiki focused on common errors that Bash programmers make. File iterations, assignments, word splitting, quotes and a lot more... with a total of 55 common mistakes, after reading this guide, your bash skills will definitely feel more solid!",
        "imageUrl": "./dbd19536680fc9dcedd1a8aa4f7bd930541e128591a04218f767f6668c49d7a7.png",
        "featured": true
      },
      {
        "title": "3 upcoming changes to JavaScript",
        "url": "https://medium.freecodecamp.org/here-are-three-upcoming-changes-to-javascript-that-youll-love-387bce1bfb0b",
        "description": "Let’s take a look at some useful upcoming features in JavaScript: **Optional chaining**, **Nullish****coalescing** and the glorious **Pipeline operator**. In this article, you’ll see the new syntax, some meaningful example and, finally, some links to keep up to date with these features and figure out when they'll be officially included in the language.",
        "imageUrl": "./2f286abe9d1e739674786169c47ef5528e78ff0a94043323dfb19b8fbdd28f64.jpg",
        "featured": false
      },
      {
        "title": "Dealing with Hard Problems",
        "url": "https://artofproblemsolving.com/articles/hard-problems",
        "description": "A few strategies for dealing with hard problems, and the frustration that comes with them. As programmers, we often face hard problems, but this guide is not specifically focused on programming and it can be useful in all sort of complex problems you might find in your own personal path.",
        "imageUrl": "./7c43d497cee12a37899d6e41b267abb48cafe7d0bb69ca83cc17198625d145a7.png",
        "featured": false
      },
      {
        "title": "Using JavaScript modules on the web",
        "url": "https://developers.google.com/web/fundamentals/primers/modules",
        "description": "Using JavaScript modules on the web By Addy Osmani & Mathias Bynens is an article that describes how to get started with JavaScript modules, now supported in all major browsers! This article explains how to use JS modules, how to deploy them responsibly, and what's coming next in this field.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Architect, a new Serverless Framework",
        "url": "https://blog.reifyworks.com/architect-the-killer-serverless-framework-41565372811b",
        "description": "An introduction to Architect, a new serverless framework in the block. The idea of Architect is to be opinionated but simple to understand and use, even for those who are not experienced already with the whole serverless idea.",
        "imageUrl": "./df1d824a9470832d2c27d0d779a11580b5689872f14a30d7257fe8a276dc2f56.jpg",
        "featured": false
      },
      {
        "title": "Drawing Images with CSS Gradients",
        "url": "https://css-tricks.com/drawing-images-with-css-gradients",
        "description": "It's not new that you can draw fairly complicated pictures by crafting particularly obscure CSS declarations. This article will explore a new technique to draw images with CSS that is based on using the \"background\" property in combination with gradients.",
        "imageUrl": "./0923def53528652bbd693cdeb4dd2915761ec71ecda05a5361118d5c835ff34a.jpg",
        "featured": false
      },
      {
        "title": "How To Build A Movie Search App With React and ElasticSearch",
        "url": "https://medium.appbase.io/how-to-build-a-movie-search-app-with-react-and-elasticsearch-2470f202291c",
        "description": "In this post, we will use React and Elasticsearch to build a MovieSearch app. A very interesting project to improve your full stack skills.",
        "imageUrl": "./0827fa8098cace359262d4adf766a0ecf4a4bcfb4ed68a7b7a3aeef4fde9d693.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 68,
    "title": "Attacks against machine learning",
    "slug": "2018-06-25-068-attacks-against-machine-learning",
    "date": "2018-06-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #25, 2018",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Attacks against machine learning",
        "url": "https://elie.net/blog/ai/attacks-against-machine-learning-an-overview",
        "description": "This blog post surveys the attacks techniques that target AI (Artificial Intelligence) systems and how to protect against them.",
        "imageUrl": "./01978f5a186333ceb0542bdc716e367a33b399eef618aa814684a94dd2f623a7.jpg",
        "featured": true
      },
      {
        "title": "GraphQL: Everything You Need to Know",
        "url": "https://medium.com/@weblab_tech/graphql-everything-you-need-to-know-58756ff253d8",
        "description": "So you’ve been constructing and using REST API’s for quite some time now and a short while ago started hearing about GraphQL... In this article, you will find a number of useful details that will make you understand and get you started with GraphQL.",
        "imageUrl": "./a66ab3fe84c8d3d468d793ce171660dbffad46cd76189ad0fa040fd44f354216.jpg",
        "featured": false
      },
      {
        "title": "Design Tip: Never Use Black",
        "url": "https://ianstormtaylor.com/design-tip-never-use-black",
        "description": "Never Use Black! One of the most important colour tricks... Mrs. Zamula, a childhood art teacher, first warned the author of this post about black when he was in middle school. This is a story about why this tip is important and how following it can improve your designs.",
        "imageUrl": "./e7b1db01f9f968ac9c7ebfc91260338202b13fc155ca76ae428238782152b756.png",
        "featured": false
      },
      {
        "title": "anordal/shellharden",
        "url": "https://github.com/anordal/shellharden",
        "description": "shellharden - A bash syntax highlighter that encourages (and can fix) proper quoting of variables",
        "imageUrl": "./eec220086ba844ec0c318b52ede345b2b9b421c8abe971383ad81e4a3c342f8c.jpg",
        "featured": false
      },
      {
        "title": "Creating a Bar Graph with CSS Grid",
        "url": "https://css-tricks.com/creating-a-bar-graph-with-css-grid",
        "description": "If you’re looking for more manageable ways to create bar graphs, or in search of use cases to practice CSS Grid layout, this article is for you!",
        "imageUrl": "./0bfe5474c393bfb034060cc048d34c2c7025724aa5f3cfdbd63b37b196a4993b.jpg",
        "featured": false
      },
      {
        "title": "Kubernetes Security Best Practices",
        "url": "https://speakerdeck.com/ianlewis/kubernetes-security-best-practices",
        "description": "Containers give developers the ability to isolate applications from one another, but that’s not enough. Resource isolation is much different than security isolation. How do we make applications deployed in containers more secure? How do we apply existing tools like SELinux and AppArmor, etc when using container orchestration tools like Kubernetes?",
        "imageUrl": "./ba8d65768113e4e01dc85ec99e6d83eb9e1dc55a35c6303a442697f32f2076c6.jpg",
        "featured": false
      },
      {
        "title": "CSS Doodle",
        "url": "https://css-doodle.com/",
        "description": "An incredible web component for drawing patterns using only CSS. You just need to check out the home page to fall in love with this tool! :)",
        "imageUrl": "./e382205b97e00b3e01d4ed92a1294635bfe7d6b76e1bae2ec80b4055cdba5b8c.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2: From Theory To Practice",
      "author": "Asim Hussain",
      "description": "In this quickstart you'll get a 50,000 foot view of the major features of Angular 2 including: Typescript & ES6 Javascript, Components & Binding, Directives, Dependancy Injection & Services, Angular Modules & Bootstrapping your Angular application., SPAs & Routing, Angular CLI, Forms, Reactive Programming with RXJs, HTTP and finally Unit Testing.",
      "coverImageUrl": "./42ae68e2ba03e04a5972b7f48fcbb414c89e74b4747aae1715503d876e99f3df.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01N9S0CZN/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01N9S0CZN/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 67,
    "title": "10 Things I Regret About Node.js",
    "slug": "2018-06-18-067-10-things-i-regret-about-node-js",
    "date": "2018-06-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #24, 2018",
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "10 Things I Regret About Node.js",
        "url": "https://youtu.be/M3BM9TB-8yA",
        "description": "In this talk Ryan Dahl, original Node.js creator, describes 10 things that he regrets about architectural choices in Node.js and describes what he would have done differently if he had to rewrite Node.js from scratch today. By the way, he is already building a new V8 runtime called deno, introduced at the end of the talk!",
        "imageUrl": "./658671c863cc74b291a3176c39ede83284a2b3b1e84af53cf7c3cb346a439223.png",
        "featured": true
      },
      {
        "title": "UTC is Enough for Everyone, Right?",
        "url": "https://zachholman.com/talk/utc-is-enough-for-everyone-right",
        "description": "Programming with dates, times, and timezones is hard. But here's some help from Zach Holman, who goes about the meaning of time and delves into a deep dive about all the aspects the programmers need to know when working with time.",
        "imageUrl": "./0435b7541b0037679383a6c5a7220c0a11ee63587ead8e83896b53ee3cadf611.png",
        "featured": false
      },
      {
        "title": "Useful Javascript Array and Object Methods",
        "url": "https://codeburst.io/useful-javascript-array-and-object-methods-6c7971d93230",
        "description": "Write cleaner and more readable code by making use of modern JavaScript array and object methods. Never touch a for/while loop again!",
        "imageUrl": "./d41ce493925bf58c046df83c7899abc182eb0ac24e7705b0abf5fa11cd5972af.jpg",
        "featured": false
      },
      {
        "title": "Cloud Native Programming Language",
        "url": "https://ballerina.io/",
        "description": "Ballerina makes it easy to create resilient services that integrate and orchestrate transactions across distributed endpoints.",
        "imageUrl": "./8cd770e71a2bb0e0a2a76f4b05e9b53d9afbac5d018f0843b381b2c38b346410.png",
        "featured": false
      },
      {
        "title": "Keeping Node.js Fast",
        "url": "https://smashingmagazine.com/2018/06/nodejs-tools-techniques-performance-servers",
        "description": "Node is a very versatile platform, but one of the predominant applications is creating networked processes. In this article, we’re going to focus on profiling the most common of these: HTTP web servers.",
        "imageUrl": "./a0bba0b0b790ea9e0a5ba61dd4dc46e55d6b4631ea949baa22f682dba0880f6b.png",
        "featured": false
      },
      {
        "title": "Building Serverless Mobile Applications with React Native & AWS",
        "url": "https://medium.com/react-native-training/building-serverless-mobile-applications-with-react-native-aws-740ecf719fce",
        "description": "In this post, we’ll look at how to build fully serverless & backendless mobile applications with AWS Amplify & React Native.",
        "imageUrl": "./3e6e260d5aba478a280e9e18ee03d452e9bc6d9f99a952f07d707af77e97f71d.jpg",
        "featured": false
      },
      {
        "title": "Friendly Machine Learning For The Web.",
        "url": "https://ml5js.org/",
        "description": "ml5.js aims to make machine learning approachable for a broad audience of artists, creative coders, and students. The library provides access to machine learning algorithms and models in the browser, building on top of TensorFlow.js with no other external dependencies.",
        "imageUrl": "./c85127d5ee3eab859ab0765e31f407c52b0461fc8fac49507a92f0fa1c44e033.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 66,
    "title": "👋 Hello, GitHub",
    "slug": "2018-06-11-066-hello-github",
    "date": "2018-06-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #23, 2018",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "👋 Hello, GitHub",
        "url": "https://natfriedman.github.io/hello",
        "description": "It's no news anymore that GitHub is joining the Microsoft family. But maybe you are curious to have a glimpse of what the future of the platform will be and what might or might not change for Open Source developers. Have a look at this open letter by Nat Friedman, ex-Xamarin CEO and future GitHub CEO!",
        "imageUrl": "./91809db40c432ecf7de82a9de5f91273244ff1611e3234c9841f7da3a7645140.jpg",
        "featured": true
      },
      {
        "title": "Intelligent Tracking Prevention 2.0",
        "url": "https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0",
        "description": "Today we’re happy to bring you Intelligent Tracking Prevention 2.0, or ITP 2.0. It builds upon ITP 1.0, which we released last year, and ITP 1.1, which was released in March, adding the Storage Access API. Removal of the…",
        "imageUrl": "./1d848e2ea939204df0410ef4bfdaa1643046bf1b0e96abe3485b233030995188.jpg",
        "featured": false
      },
      {
        "title": "Kubernetes gets Containerd Integration",
        "url": "https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga",
        "description": "Kubernetes Containerd Integration finally goes GA, supporting Containerd 1.1 and all Kubernetes features. Containerd seems to bring better startup performances when compared to Docker, but if you are curious to know what are all the main advantages and differences, don't miss this article.",
        "imageUrl": "./56dd5c53ae5dc3f447e26beeb668fb38550f2796845e999152dbe4f1e1a79ccf.png",
        "featured": false
      },
      {
        "title": "Build a Node.js command-line chat application with Chatkit",
        "url": "https://medium.freecodecamp.org/build-a-node-js-command-line-chat-application-with-chatkit-8d0c4546085e",
        "description": "Building chat in your app can be pretty complex. Yet, with Chatkit, implementing fully-featured chat is nothing but a few lines of code.",
        "imageUrl": "./a3ce769b8b36d3ebe7f06a2872df0d4cf26c54003c5d4056687b0e4f47d309bc.jpg",
        "featured": false
      },
      {
        "title": "How I Came to Write D",
        "url": "http://drdobbs.com/architecture-and-design/how-i-came-to-write-d/240165322",
        "description": "The path that led Walter Bright to write a language, now among the top 20 most used, began with curiosity — and an insult.",
        "imageUrl": "./93ec8b64717d7233b67f769aea62e44622975c2325358a3bf0966e3e59c787a0.jpg",
        "featured": false
      },
      {
        "title": "Z-Index Explained: How to Stack Elements Using CSS",
        "url": "https://medium.freecodecamp.org/z-index-explained-how-to-stack-elements-using-css-7c5aa0f179b3",
        "description": "I have always struggled with the CSS property z-index. It sounds so easy at first. Elements with a higher z-index value are displayed in…",
        "imageUrl": "./886c3b46288ac2a1778276c3c60afe8fb81b4ef11dd28c83546d97ba9970268f.jpg",
        "featured": false
      },
      {
        "title": "CORS",
        "url": "https://frontendian.co/cors",
        "description": "CORS (Cross-Origin Resource Sharing) is subject tinged with dread for many web developers. Like tales of a mythical sea beast, every developer has a story to tell about the day CORS seized upon one of their web requests, dragging it down into the inexorable depths, never to be seen again.",
        "imageUrl": "./55c1ca1ac90c0d18fe55508c2eae8244f9cb9e3b65b283f9c129e540d6e67da9.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 65,
    "title": "Playing battleships over BGP",
    "slug": "2018-06-04-065-playing-battleships-over-bgp",
    "date": "2018-06-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #22, 2018",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "Playing battleships over BGP",
        "url": "https://blog.benjojo.co.uk/post/bgp-battleships",
        "description": "BGP is the glue of the internet. For a protocol that was produced on two napkins in 1989 it is both amazing and horrifying that it runs almost all of the ISP to ISP interactions and is now a very fundemental part of the internet.",
        "imageUrl": "./875021f6c1544e0545a8fc37dfabaeae4943774adba58d4e265c5aa1cca8acdf.png",
        "featured": true
      },
      {
        "title": "Serverless Architectures",
        "url": "https://martinfowler.com/articles/serverless.html",
        "description": "What is Serverless, and why is (or isn’t) it worth considering? In this articleyou will be enlightened a little on these questions.",
        "imageUrl": "./bac7ed80596148d1df82bfc0fde9e3bf207bdbc31b4efc0336eb064eea4a4087.jpg",
        "featured": false
      },
      {
        "title": "Wired Elements",
        "url": "https://wiredjs.com/",
        "description": "Common UI Elements with a random sketchy hand-drawn look.",
        "imageUrl": "./4e099dee505eb602bdc431bafc78617df6d41b12de8c5f29ceb8a871eb7c9545.png",
        "featured": false
      },
      {
        "title": "A Machine Learning Guide for Average Humans",
        "url": "https://moz.com/blog/learning-machine-learning",
        "description": "If you've ever been curious about learning machine learning but overwhelmed by the wealth of information out there, you've come to the right post. Alexis Sanders shares her own guide on how to learn machine learning, detailing the pros and cons through the viewpoint of a beginner.",
        "imageUrl": "./a99deda18d42f4b1517f4d6dd46174def509dd13d558927f7f50ff61e473ccc8.jpg",
        "featured": false
      },
      {
        "title": "ServiceWorker Cookbook",
        "url": "https://serviceworke.rs/",
        "description": "A collection of all the APIs you need to know to build Service Workers.",
        "imageUrl": "./c57b4fcdb561e26e2a702cc402ca5957038ecff483e01c8ec66f1f6c110b4444.png",
        "featured": false
      },
      {
        "title": "Proxy, The new Javascript ES6 feature",
        "url": "https://atyantik.com/proxy-javascript-es6-feature",
        "description": "You may have heard about or come across a new term called Proxies. So, what do you mean by Proxy, what is JavaScript Proxies, how are they more helpful and how you can implement them using ES6?",
        "imageUrl": "./2e51767b6376675128fb03b42ff85d5e7cbed57b495e0adc6b085fad6b96a224.jpg",
        "featured": false
      },
      {
        "title": "Node.js Cron Jobs By Examples",
        "url": "http://scotch.io/tutorials/nodejs-cron-jobs-by-examples",
        "description": "Ever wanted to do specific things on your application server at certain times without having to physically run them yourself? In this article, you will have a chance to explore an alternative approach to cron, one that runs directly inside a Node.js application!",
        "imageUrl": "./a3763323eb746d4e45a120115cde8965584fce592f4fafecfb83d2779c5243aa.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 64,
    "title": "The most sophisticated piece of software ever written",
    "slug": "2018-05-28-064-the-most-sophisticated-piece-of-software-ever-written",
    "date": "2018-05-28",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #21, 2018",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "The most sophisticated piece of software ever written",
        "url": "https://quora.com/What-is-the-most-sophisticated-piece-of-software-code-ever-written",
        "description": "The most sophisticated software in history was written by a team of people whose names we do not know. It’s a computer worm. You should be curious to read this incredible story, it's definitely worth your time!",
        "imageUrl": "./f468afb84fac60348ab0075b4cce8a57072937bfa99cdff0cf2114aec9503d00.png",
        "featured": true
      },
      {
        "title": "What if JavaScript wins?",
        "url": "https://medium.com/@anildash/what-if-javascript-wins-84898e5341a",
        "description": "JavaScript is now part of the toolkit of most working developers. What if network effects push it into being the first-ever truly dominant programming language?",
        "imageUrl": "./7c59993438b5070ec19b3ee7657c03d06dc7af8bcd95e6eaced4aa9c32b1d8fd.jpg",
        "featured": false
      },
      {
        "title": "Using trampolines to manage large recursive loops in JavaScript",
        "url": "https://blog.logrocket.com/using-trampolines-to-manage-large-recursive-loops-in-javascript-d8c9db095ae3",
        "description": "If you're trying to adopt a functional style in JavaScript, having trampolines is a must.",
        "imageUrl": "./cd3d08f1988fb7db6def779002faa9a8f9d7d13555ff9545e7ebabeec5a66c19.jpg",
        "featured": false
      },
      {
        "title": "Dark theme in a day",
        "url": "https://medium.com/@mwichary/dark-theme-in-a-day-3518dde2955a",
        "description": "Using a bunch of modern CSS to create a night mode for an app.",
        "imageUrl": "./fad6d85125ca49630758b1cb83388b0431bb4c2980720c7fd4f8904a321bc203.jpg",
        "featured": false
      },
      {
        "title": "The Hitchhiker's Guide to Elm",
        "url": "http://azer.bike/journal/elm",
        "description": "Practical handbook for learning the Elm programming language and how to build apps with it.",
        "imageUrl": "./b8417ab08cc5d8ca125ecefe7484a8d0ee78973611d6d1bea0a4be21a5701d26.jpg",
        "featured": false
      },
      {
        "title": "First Look: Angular Ivy",
        "url": "https://telerik.com/blogs/first-look-angular-ivy",
        "description": "Ivy is the upcoming render engine for Angular. This article takes a closer look at Ivy, how it works, and what it means to you.",
        "imageUrl": "./a10f45980920d474be23349245a63028029f85b6d1faa8e4c6aac35de4628f32.jpg",
        "featured": false
      },
      {
        "title": "Is This ES6 or React?",
        "url": "https://zendev.com/2018/05/15/learning-react-is-this-es6-or-react.html",
        "description": "In a recent blog post about his struggle to learn React, Brad Frost highlighted an issue that I've heard from developer after developer: What’s coming from React? What’s just ES6 JavaScript?",
        "imageUrl": "./d3e75db4c9fb4fb3a0712588e98d45d24447f664819d6188c464a8880db3af86.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 63,
    "title": "To be a top developer you have to build things!",
    "slug": "2018-05-22-063-to-be-a-top-developer-you-have-to-build-things",
    "date": "2018-05-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #20, 2018",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "To be a top developer you have to build things!",
        "url": "https://medium.freecodecamp.org/the-secret-to-being-a-top-developer-is-building-things-heres-a-list-of-fun-apps-to-build-aac61ac0736c",
        "description": "You can only become a great developer by putting the effort in. Imagine for a moment — You can’t become fit physically by reading a lot about fitness... that's not how it works of course. In this article, you will find a lot of advice if you are looking for ideas to build new things.",
        "imageUrl": "./84b01cff18daf8cdd9f5bd5317385c1eb92c7e83298582bbad1ea8ba49312b13.jpg",
        "featured": true
      },
      {
        "title": "The Children's Illustrated Guide to Kubernetes",
        "url": "https://deis.com/blog/2016/kubernetes-illustrated-guide",
        "description": "Introducing Phippy, an intrepid little PHP app, and her journey to Kubernetes.What is this? Well, I wrote a book that explains Kubernetes.",
        "imageUrl": "./857e296e67bd248fd8ed9ca60a13b85e48fbcb3b318f92c657892b4d92f3db35.png",
        "featured": false
      },
      {
        "title": "New Programming Jargon",
        "url": "https://blog.codinghorror.com/new-programming-jargon",
        "description": "A fantastic collection of new programming jargon. How many of these words did you know already? How many did you already use on a daily basis?",
        "imageUrl": "./e65bbb7861881abd8814f31fa858cec70cd950941ca142f069b344ed0e2562eb.png",
        "featured": false
      },
      {
        "title": "🏎 Mario Kart: CSS 🏁",
        "url": "https://codeburst.io/mario-kart-css-7572bd2ce608",
        "description": "Interactive Mario Kart with CSS only. No JavaScript... for real! OK, if you don't believe us, check this Codepen out!",
        "imageUrl": "./e0431fbba0b9b4fa3f30513d414716d9f67f6f0d04a9927d8064b9240a8348e6.jpg",
        "featured": false
      },
      {
        "title": "I Used The Web For A Day With JavaScript Turned Off",
        "url": "https://smashingmagazine.com/2018/05/using-the-web-with-javascript-turned-off",
        "description": "Have you ever wondered whether it's possible to do anything on the web without JavaScript? How many sites use progressive enhancement in practice? Chris Ashton did an experiment to find out.",
        "imageUrl": "./cd143108d092c0edd49a6a72fb3338b89f9128b9ee57c2432fd02ed47dfe57bd.png",
        "featured": false
      },
      {
        "title": "The Front-End Tooling Survey 2018",
        "url": "https://ashleynolan.co.uk/blog/frontend-tooling-survey-2018-results",
        "description": "The results of the 2018 Front-End Tooling Survey are out! If you are curious to know what are the hottest frontend technologies such as CSS and JS frameworks, check out the results and analysis of the responses here.",
        "imageUrl": "./1c456754d9d90483745b4898f18859e619cbb201ef437773f83738fd0e9fdd6c.jpg",
        "featured": false
      },
      {
        "title": "New CSS Features That Are Changing Web Design",
        "url": "https://smashingmagazine.com/2018/05/future-of-web-design",
        "description": "Today, the design landscape has changed completely. We’re equipped with new and powerful tools — CSS Grid, CSS custom properties, CSS shapes and CSS writing-mode, to name a few — that we can use to exercise our creativity. Zell Liew explains how.",
        "imageUrl": "./200c67a21f0c2a0bea3c87d5153cb54a7ad16446239a3197d85b436a87e2c91c.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 62,
    "title": "To be a top developer you have to build things!",
    "slug": "2018-05-21-062-to-be-a-top-developer-you-have-to-build-things",
    "date": "2018-05-21",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #20, 2018",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "To be a top developer you have to build things!",
        "url": "https://medium.freecodecamp.org/the-secret-to-being-a-top-developer-is-building-things-heres-a-list-of-fun-apps-to-build-aac61ac0736c",
        "description": "You can only become a great developer by putting the effort in. Imagine for a moment — You can’t become fit physically by reading a lot about fitness... that's not how it works of course. In this article, you will find a lot of advice if you are looking for ideas to build new things.",
        "imageUrl": "./84b01cff18daf8cdd9f5bd5317385c1eb92c7e83298582bbad1ea8ba49312b13.jpg",
        "featured": true
      },
      {
        "title": "The Children's Illustrated Guide to Kubernetes",
        "url": "https://deis.com/blog/2016/kubernetes-illustrated-guide",
        "description": "Introducing Phippy, an intrepid little PHP app, and her journey to Kubernetes.What is this? Well, I wrote a book that explains Kubernetes.",
        "imageUrl": "./857e296e67bd248fd8ed9ca60a13b85e48fbcb3b318f92c657892b4d92f3db35.png",
        "featured": false
      },
      {
        "title": "New Programming Jargon",
        "url": "https://blog.codinghorror.com/new-programming-jargon",
        "description": "A fantastic collection of new programming jargon. How many of these words did you know already? How many did you already use on a daily basis?",
        "imageUrl": "./e65bbb7861881abd8814f31fa858cec70cd950941ca142f069b344ed0e2562eb.png",
        "featured": false
      },
      {
        "title": "🏎 Mario Kart: CSS 🏁",
        "url": "https://codeburst.io/mario-kart-css-7572bd2ce608",
        "description": "Interactive Mario Kart with CSS only. No JavaScript... for real! OK, if you don't believe us, check this Codepen out!",
        "imageUrl": "./e0431fbba0b9b4fa3f30513d414716d9f67f6f0d04a9927d8064b9240a8348e6.jpg",
        "featured": false
      },
      {
        "title": "I Used The Web For A Day With JavaScript Turned Off",
        "url": "https://smashingmagazine.com/2018/05/using-the-web-with-javascript-turned-off",
        "description": "Have you ever wondered whether it's possible to do anything on the web without JavaScript? How many sites use progressive enhancement in practice? Chris Ashton did an experiment to find out.",
        "imageUrl": "./cd143108d092c0edd49a6a72fb3338b89f9128b9ee57c2432fd02ed47dfe57bd.png",
        "featured": false
      },
      {
        "title": "The Front-End Tooling Survey 2018",
        "url": "https://ashleynolan.co.uk/blog/frontend-tooling-survey-2018-results",
        "description": "The results of the 2018 Front-End Tooling Survey are out! If you are curious to know what are the hottest frontend technologies such as CSS and JS frameworks, check out the results and analysis of the responses here.",
        "imageUrl": "./1c456754d9d90483745b4898f18859e619cbb201ef437773f83738fd0e9fdd6c.jpg",
        "featured": false
      },
      {
        "title": "New CSS Features That Are Changing Web Design",
        "url": "https://smashingmagazine.com/2018/05/future-of-web-design",
        "description": "Today, the design landscape has changed completely. We’re equipped with new and powerful tools — CSS Grid, CSS custom properties, CSS shapes and CSS writing-mode, to name a few — that we can use to exercise our creativity. Zell Liew explains how.",
        "imageUrl": "./200c67a21f0c2a0bea3c87d5153cb54a7ad16446239a3197d85b436a87e2c91c.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "he Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 61,
    "title": "Angular 6 Now Available",
    "slug": "2018-05-14-061-angular-6-now-available",
    "date": "2018-05-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #19, 2018",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "Angular 6 Now Available",
        "url": "https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4",
        "description": "The 6.0.0 release of Angular is here! This is a major release focused less on the underlying framework, and more on the toolchain and on making it easier to move quickly with Angular in the future.",
        "imageUrl": "./842ea8513d25709e41e0804d2ffeb544c55d837c479a8c9b5117459f2bcb0164.png",
        "featured": true
      },
      {
        "title": "Text Effects with CSS",
        "url": "https://css-tricks.com/text-effects-css-little-contenteditable-trick",
        "description": "Mandy Michael has been creating some incredible text effects with just the power of CSS. She uses every trick in the book: gradients, transforms, pseudo elements, shadows, and clipping paths to name a few. They are all real web text too. Custom fonts typically, but no images, canvas, or SVG or anyth…",
        "imageUrl": "./0c69d17bf5a7bfa567b9596b7319f9e52b163365a521c728a39fe8a23f77f90f.jpg",
        "featured": false
      },
      {
        "title": "Speed Up Laravel on Top of Swoole",
        "url": "https://laravel-news.com/laravel-swoole",
        "description": "Swoole is a production-grade async programming framework for PHP. It is a PHP extension written in pure C language, which enables PHP developers to write high-performance, scalable, concurrent TCP, UDP, Unix socket, HTTP, WebSocket services in PHP without too much knowledge of the non-blocking I/O.",
        "imageUrl": "./07db48ef695ba30f03dc022c5e7b7c077fa8ef14d20e62184cc624aa7d11fb0d.jpg",
        "featured": false
      },
      {
        "title": "Why you shouldn't use ENV variables for secret data",
        "url": "http://diogomonica.com/2017/03/27/why-you-shouldnt-use-env-variables-for-secret-data",
        "description": "If your application requires a password, SSH private key, TLS Certificate, or any other kind of sensitive data, you shouldn't pass it alongside your configs.",
        "imageUrl": "./0fa2330bd1522a2a3efaad312120087854f0465df06870fc22fd78e15d63e990.jpg",
        "featured": false
      },
      {
        "title": "A brief history of serverless",
        "url": "https://medium.freecodecamp.org/a-brief-history-of-serverless-or-how-i-learned-to-stop-worrying-and-start-loving-the-cloud-7e2fc633310d",
        "description": "Serverless is the new hype in cloud computing. But to really understand how it works and why it exists today, you have to appreciate its history.",
        "imageUrl": "./c369867f11e8466be5c46926b8d3a1cede2c5b3cdbad7d581b684bcc3b5db7e5.jpg",
        "featured": false
      },
      {
        "title": "Is service worker ready?",
        "url": "https://jakearchibald.github.io/isserviceworkerready",
        "description": "A fantastic website that display the current state of Service Worker support across all the mainstream browsers.",
        "imageUrl": "./876467a572ae4884b12b3564b79218c51bd658d5906608d7b86dafe3942f3a4c.png",
        "featured": false
      },
      {
        "title": "Priority Guides: A Content-First Alternative to Wireframes",
        "url": "http://alistapart.com/article/priority-guides-a-content-first-alternative-to-wireframes",
        "description": "Little-known, yet highly effective, priority guides are the content-first, responsive alternative to the ubiquitous wireframe.",
        "imageUrl": "./e4d41abfa34b4ec31be38c4d55cd03666a740f0bd2b0db0caebfc20c963b765f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 60,
    "title": "Cross-Site Request Forgery is dead!",
    "slug": "2018-05-07-060-cross-site-request-forgery-is-dead",
    "date": "2018-05-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #18, 2018",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "Cross-Site Request Forgery is dead!",
        "url": "https://scotthelme.co.uk/csrf-is-dead",
        "description": "After toiling with Cross-Site Request Forgery on the web for, well forever really, we finally have a proper solution, it's Same-Site Cookies.",
        "imageUrl": "./93ac6591d65aa1724f8e1acabd16417593be90adf406e9aa8c3cc146464e6223.png",
        "featured": true
      },
      {
        "title": "TOAST UI",
        "url": "https://ui.toast.com/",
        "description": "The TOAST UI Is a Free and Open-source JavaScript UI Libraries that offers very elaborate and useful components like a calendar, a text editor and charts.",
        "imageUrl": "./3460d4474acc6bf97d959098fde18caf43d3178f53a6135c5e9bae292422d9e3.png",
        "featured": false
      },
      {
        "title": "Node v10 is Here",
        "url": "https://blog.risingstack.com/node-js-10-lts-feature-breakdown",
        "description": "Let's take a look at the new features of Node.js v10, such as: HTTP2, ESM Modules, Error Codes, Fs Promises, the N-API & V8 6.6",
        "imageUrl": "./6c6a4ae7e074f999818f6585199e8ce8cc806cf68154c6d06905662174ea0af4.jpg",
        "featured": false
      },
      {
        "title": "Switching from cluster module to PM2 & RabbitMQ in Node.js",
        "url": "https://medium.com/the-node-js-collection/switching-from-cluster-module-to-pm2-rabbitmq-in-node-js-d0cce5eb96f4",
        "description": "If you have been using Node.js for sometime, you should know that it is single threaded. This is why you can’t take full advantage of multiple core machines unless you use the cluster module or a process manager like PM2.",
        "imageUrl": "./3af8316f698fc4bcbd3051db18dda9d658ae3160b079ecf1fc85bda06d0502bd.jpg",
        "featured": false
      },
      {
        "title": "BigInt: arbitrary-precision integers in JavaScript",
        "url": "https://developers.google.com/web/updates/2018/05/bigint",
        "description": "BigInts are a new numeric primitive in JavaScript that can represent integers with arbitrary precision. This article walks through some use cases and explains the new functionality in Chrome 67 by comparing BigInts to Numbers in JavaScript.",
        "imageUrl": "./67337487a3e95d6b84878aaa4215b190433e7b03c754130b7bf591b3a892d0cc.jpg",
        "featured": false
      },
      {
        "title": "Easing Linear Gradients",
        "url": "https://css-tricks.com/easing-linear-gradients",
        "description": "Linear gradients are easy to create in CSS and are extremely useful. As we'll go through in this article, we can make them visually much smoother by creating them with non-linear gradients. Well, non-linear in the easing sense, anyway!",
        "imageUrl": "./7334cc576d24423bd771cd041574124bf38a5cf2602db6ae96ac5b050c57d556.jpg",
        "featured": false
      },
      {
        "title": "Finger-friendly numerical inputs with `inputmode`",
        "url": "https://css-tricks.com/finger-friendly-numerical-inputs-with-inputmode",
        "description": "Forms are often a nightmare on mobile. We can make the process as pain-free as possible by reacting to context. Input fields that expect numerical values should have a numerical UI. Bringing up a numeric keyboard on small screens is easy on most platforms.",
        "imageUrl": "./b3eed93c426f548941df113099ff15a5bffb66ba6e687def4946a882869e4058.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 59,
    "title": "How Netflix Thinks of DevOps",
    "slug": "2018-04-30-059-how-netflix-thinks-of-devops",
    "date": "2018-04-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #17, 2018",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "How Netflix Thinks of DevOps",
        "url": "https://youtu.be/UTKIT6STSVM",
        "description": "Netflix is a fantastic case study for DevOps because their software-engineering process shows a fundamental understanding of DevOps thinking and a focus on quality attributes through automation-assisted process.",
        "imageUrl": "./6ca65d554335caa60653d7ac1bdd1222e4ac2622d379ef84441b9027a014d66b.png",
        "featured": true
      },
      {
        "title": "CPU utilization is wrong",
        "url": "https://opensource.com/article/18/4/cpu-utilization-wrong",
        "description": "CPU utilization is the metric everyone uses to measure a processor's performance. But %CPU is a misleading measure of how busy your processor really is, says Brendan Gregg, senior performance architect at Netflix, in what he calls a \"five-minute public service announcement,\" at the 16th annual Southern California Linux Expo.",
        "imageUrl": "./2bbd5a2fee1445c44c9b330e1986d55117e3f69ec8bc354c7533a885271a2d7f.png",
        "featured": false
      },
      {
        "title": "Designing very large JS apps",
        "url": "https://medium.com/@cramforce/designing-very-large-javascript-applications-6e013a3291a3",
        "description": "A very interesting retrospective on building large JavaScript applications (frontend) by Malte Ubl.",
        "imageUrl": "./b5af53758e858523c063549e194fb2ed2ba13e99203c6ee45bb19e58a3791ea1.jpg",
        "featured": false
      },
      {
        "title": "HTTP/2 for Node.js",
        "url": "https://medium.com/the-node-js-collection/say-hello-to-http-2-for-node-js-core-261ba493846e",
        "description": "A fantastic example of how to use HTTP/2 for Node.js core, by Node.js contributor James M Snell.",
        "imageUrl": "./c34b899006c5e7f64bd1de39a46b3de44f722e6cdfbb8f409eb25e4cadfdeb3e.png",
        "featured": false
      },
      {
        "title": "CSS at Scale by LinkedIn",
        "url": "https://engineering.linkedin.com/blog/2018/04/css-at-scale--linkedins-new-open-source-projects-take-on-stylesh",
        "description": "Browsers use Cascading Style Sheets (CSS) to control the appearance of websites. From borders, fonts, and colors to layout, images, and animations, there are roughly 500 different style properties. In this article you will learn how linked uses CSS at scale.",
        "imageUrl": "./0484716cb7ac1fadeab7f5a98193d1d7f1a7e8f46144ae81b1e41b4586d1e207.jpg",
        "featured": false
      },
      {
        "title": "What You Can Expect From Node.js 10",
        "url": "http://nodesource.com/blog/what-you-can-expect-from-node-js-10",
        "description": "The release of Node.js 10 is almost upon us! Discover some of the new features and continued developments that will be shipping with the latest version.",
        "imageUrl": "./dddaa4e4fd74d0b0e8b6683d438659c3d71ece9ce75ec82117a2ae49150ac624.jpg",
        "featured": false
      },
      {
        "title": "I wish I knew these before diving into React",
        "url": "https://engineering.opsgenie.com/i-wish-i-knew-these-before-diving-into-react-301e0ee2e488",
        "description": "6 React Development Tips for Beginners that will help you write great React applications.",
        "imageUrl": "./fde740feff8988edf36aef56c6227fc39f0d3ae21bcf307b374f4947190cbee9.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 58,
    "title": "Kubernetes, the easy way",
    "slug": "2018-04-23-058-kubernetes-the-easy-way",
    "date": "2018-04-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #16, 2018",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Kubernetes, the easy way",
        "url": "https://youtu.be/kOa_llowQ1c",
        "description": "Kelsey Hightower delivers an awesome presentation on Kubernetes via several demos during his keynote talk on the KubeCon 2017. The amazing part is how he set the boundaries between a developer using kubernetes and a devops installing kubernetes.",
        "imageUrl": "./b1df0f594cca3cfb20d4f37271bb2713db1712bae9323e524976c6b10d5ff5a7.png",
        "featured": true
      },
      {
        "title": "Traversing the DOM with JavaScript",
        "url": "https://zellwk.com/blog/dom-traversals/",
        "description": "A good JavaScript developer needs to know how to traverse the DOM—it’s the act of selecting an element from another element.",
        "imageUrl": "./f30378fad0a58e141a9a84842f94b92d4e4709efca3fd059dd13ec9a10c52d9f.png",
        "featured": false
      },
      {
        "title": "Front-End Developer Handbook 2018",
        "url": "https://frontendmasters.com/books/front-end-handbook/2018",
        "description": "A guide for front-end developers to equip themselves with latest learning resources and development tools in front-end engineering.",
        "imageUrl": "./8d50efd01a938501aad2dc2d5c86468fa31bd73131a76040d6dcb8546b2c03f1.jpg",
        "featured": false
      },
      {
        "title": "A new standard for password-free logins",
        "url": "https://theverge.com/2018/4/10/17215406/webauthn-support-chrome-firefox-edge-fido-password-free",
        "description": "Chrome and Firefox will support a new standard for password-free logins! This is one small step towards a world without phishing.",
        "imageUrl": "./613bbc391373a072de5fe53332f2987f811c979a258050d0abba29cb02301d9b.jpg",
        "featured": false
      },
      {
        "title": "Write your own JS Promise lib",
        "url": "http://thecodebarbarian.com/write-your-own-node-js-promise-library-from-scratch",
        "description": "You need to understand promises to master async/await. This article, will walk you through writing your own promise library and getting a better understanding on how async/await actually works.",
        "imageUrl": "./c3029183ff7bcb5cc3bb502b081bc0c31fe7dc96982757c92d682acc204ff08b.png",
        "featured": false
      },
      {
        "title": "Helvetica Is Now An Encryption Device",
        "url": "https://fastcodesign.com/90167210/helvetica-is-now-an-encryption-device",
        "description": "An innocent piece of text can now hold secret messages. Are you curious to find out how? If not, trust us, this is crazy interesting! :)",
        "imageUrl": "./d0be84b09a7a980527358613f53a0f2ebae292adcadb4fa131021de6b9c7be8e.jpg",
        "featured": false
      },
      {
        "title": "WebAssembly.Studio",
        "url": "https://hacks.mozilla.org/2018/04/sneak-peek-at-webassembly-studio",
        "description": "WebAssembly.Studio is an online IDE (integrated development environment) that helps you learn and teach others. It’s also a Swiss Army knife that comes in handy whenever working with WebAssembly.",
        "imageUrl": "./01a3c8dd600b0474d97afbe89b1bb41db5ab4269f45c1b1a9f1e828ca8bb0149.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Scraping with Python: Collecting Data from the Modern Web",
      "author": "Ryan Mitchell",
      "description": "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once. Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing.",
      "coverImageUrl": "./3b1c651ba95d78b7e56b9d061b654489f967bb664b283d5be64ac9f029b88bec.jpg",
      "amazonUs": "https://www.amazon.com/dp/B00ZJNH0G0/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B00ZJNH0G0/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 57,
    "title": "DNSFS. Store your files in DNS resolver caches",
    "slug": "2018-04-16-057-dnsfs-store-your-files-in-dns-resolver-caches",
    "date": "2018-04-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #15, 2018",
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "DNSFS. Store your files in DNS resolver caches",
        "url": "https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-storage-dnsfs",
        "description": "Knowing how DNS resolvers actually work, you can use them to your advantage and create a distributed file system on top of them. \"This is the quintessence of cloud computing\" some might say. Here delivered to you in the form of an extremely detailed article.",
        "imageUrl": "./fcf596288f8b38522d0c895beffbe91b1e7e494afabc5dd94f2b5d8087258c4e.png",
        "featured": true
      },
      {
        "title": "23 Best React UI Component Libraries And Frameworks",
        "url": "https://hackernoon.com/23-best-react-ui-component-libraries-and-frameworks-250a81b2ac42",
        "description": "23 best React UI component libraries and frameworks to build your next app!",
        "imageUrl": "./340c9380615322e13a2fcd882b3c21b18c832e51ef23e9722822205112b14d43.jpg",
        "featured": false
      },
      {
        "title": "Node.js can HTTP/2 push!",
        "url": "https://medium.com/the-node-js-collection/node-js-can-http-2-push-b491894e1bb1",
        "description": "Since introducing HTTP/2 into Node.js 8 in July of 2017, the implementation has undergone several rounds of improvements. Now we’re almost ready to lift the “experimental” flag. It’s best to try out HTTP/2 support with Node.js version 9, which has all the latest fixes and improvements.",
        "imageUrl": "./ba36fe7ad25669b50df38a557cc5476e080bd605de58f108f891731095b335ba.png",
        "featured": false
      },
      {
        "title": "Really Good Emails",
        "url": "https://explore.reallygoodemails.com/new-to-email-coding-heres-where-to-start-2494422f0bd4",
        "description": "An article that is gonna teach all the tips and tricks to learn how to write code to produce really high-quality e-mails.",
        "imageUrl": "./152e60f6e389e75eb172d2501276343eee671f8484c4a1f854cb26514f7296bb.jpg",
        "featured": false
      },
      {
        "title": "Linux filesystems: ext4 and beyond",
        "url": "https://opensource.com/article/18/4/ext4-filesystem",
        "description": "The majority of modern Linux distributions default to the ext4 filesystem, just as previous Linux distributions defaulted to ext3, ext2, and—if you go back far enough—ext. If you're new to Linux—or to filesystems—you might wonder what ext4 brings to the table that ext3 didn't. You might also wonder …",
        "imageUrl": "./0a201e7e8bc75503b6033682ef26ae57d3af9d2b8fbafa8b5d996594eadabf88.jpg",
        "featured": false
      },
      {
        "title": "Exciting New Features React 16.3",
        "url": "http://scotch.io/bar-talk/exciting-new-features-react-163-bye-componentwillreceiveprops-hello-new-context-api",
        "description": "Finally, React 16.3 is out! We've all been anxiously waiting for this new React update, well, I definitely have. Maybe you are wondering what's all the hype about? No worries I got you. In this article I highlight the exciting new features that are part of this release. Note: I will not include a",
        "imageUrl": "./3bf90c1ff09b326c032c1ab938ca66b3956c6610069bb702131bb5e3d1747f9c.jpg",
        "featured": false
      },
      {
        "title": "The Comprehensive Beginner’s Guide to JavaScript Geolocation Tracking",
        "url": "https://hackernoon.com/the-comprehensive-beginners-guide-to-javascript-geolocation-tracking-11f7a1bba400",
        "description": "Combining the Google Maps JavaScript API and PubNub for realtime tracking of device location (with the bells and whistles)",
        "imageUrl": "./22c22109b38126145626c75e5dd3ea4ed01a804ecfa2db44a83cd878cdbad9aa.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications",
      "author": "Tomasz Nurkiewicz",
      "description": "In today’s app-driven era, when programs are asynchronous and responsiveness is so vital, reactive programming can help you write code that’s more reliable, easier to scale, and better-performing. With this practical book, Java developers will first learn how to view problems in the reactive way, and then build programs that leverage the best features of this exciting new programming paradigm.",
      "coverImageUrl": "./bfc89b612724cc827df12cd74bfda688fa86774c756e46d104dc6fce54b5ba7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491931655/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491931655/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 56,
    "title": "Hamburgers 🍔🍔🍔",
    "slug": "2018-04-09-056-hamburgers",
    "date": "2018-04-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #14, 2018",
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "Hamburgers 🍔🍔🍔",
        "url": "https://jonsuh.com/hamburgers",
        "description": "A fantastic and mouth-watering collection of CSS-animated Hamburgers. We are talking about hamburger menus, of course...",
        "imageUrl": "./06e539e823c4fb094a78f4d13f8db828c23f27e47af62e7e307bb3ae5a2581c5.jpg",
        "featured": true
      },
      {
        "title": "How display: contents; Works",
        "url": "https://bitsofco.de/how-display-contents-works/",
        "description": "Every element in the DOM is a rectangular box. This \"rectangular box\" consists of two sections. First, we have the actual box, which consists of the border, padding, and margin areas. Second, we have the contents of the box; the content. In this article, you will learn what happens when you use display:content in your CSS.",
        "imageUrl": "./977f878b29026ac451c145b3601ba032aff4bab37f1a5fbf5c83c2a526ab7c7b.png",
        "featured": false
      },
      {
        "title": "Super Mario made only with CSS gradients",
        "url": "https://medium.com/@alcidesqueiroz/super-mario-world-in-css-100-css-no-javascript-no-embedded-images-data-uris-no-external-e43dc0c2b1f4",
        "description": "An impressive experiment of recreating the first animated frames of the famous Super Mario World by using only CSS gradients. No JavaScript involved... for real!",
        "imageUrl": "./91a03615582525c588adc32c0668fb85fb5d687e401587ca7f8c170b07739466.jpg",
        "featured": false
      },
      {
        "title": "The Benefits of Server Side Rendering",
        "url": "https://medium.com/walmartlabs/the-benefits-of-server-side-rendering-over-client-side-rendering-5d07ff2cefe8",
        "description": "Most of the pages on walmart.com are using server side rendering (SSR) with only a few unique exceptions. Why Walmart decided to put so much effort into it? What are the advantage over Client Side Rendering alone?",
        "imageUrl": "./2b7add64f798577bd971a5aaeb560623b1943786fc9a82fad74a7953fdc6710c.jpg",
        "featured": false
      },
      {
        "title": "Cropping Away Negative Impacts of Line Height",
        "url": "https://medium.com/eightshapes-llc/cropping-away-negative-impacts-of-line-height-84d744e016ce",
        "description": "A lovely article focused on typography and CSS that will teach you how to get rid of pesky space above and below HTML text.",
        "imageUrl": "./db127f242242288c021b5be218000cb88298fdf78dd199d297e56a4999168edd.jpg",
        "featured": false
      },
      {
        "title": "The future of APIs",
        "url": "https://blog.goodapi.co/future-of-apis-c84a76bc9c85",
        "description": "APIs aren’t the endgame. They wont’s stay with us forever. So what’s next?",
        "imageUrl": "./30bde9519a2c338acffc4773616cf32803964cc8000a0cdf63393f54ed0e5a8b.jpg",
        "featured": false
      },
      {
        "title": "The GV research sprint",
        "url": "https://library.gv.com/the-gv-research-sprint-a-4-day-process-for-answering-important-startup-questions-97279b532b25",
        "description": "A 4-day process for answering important startup questions. Even if you are not strictly working in a startup environment, those questions might be extremely helpful in regular projects to be sure to maximise the efficiency and the potential of success.",
        "imageUrl": "./76731344de28628bb7f4f6319dab26543e31cdcd49be2ea9a9db24507b27c7cb.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5",
      "author": "Robin Nixon",
      "description": "The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension. Build interactive, data-driven websites with the potent combination of open-source technologies and web standards, even if you only have basic HTML knowledge. With this popular hands-on guide, you'll tackle dynamic web programming with the help of today's core technologies: PHP, MySQL, JavaScript, jQuery, CSS, and HTML5.",
      "coverImageUrl": "./4dd383a9368aaa6ed632aede9e478cdc0678ed0fe58e1cd4ac7a53fa88dfa423.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491918667/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491918667/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 55,
    "title": "gRPC Support in NGINX",
    "slug": "2018-04-02-055-grpc-support-in-nginx",
    "date": "2018-04-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #13, 2018",
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "gRPC Support in NGINX",
        "url": "https://nginx.com/blog/nginx-1-13-10-grpc",
        "description": "NGINX now proxies gRPC traffic, so you can terminate, inspect, and route gRPC method calls. Manage encryption and load balance gRPC traffic.",
        "imageUrl": "./957005cc131df02985f99e087fbb6e362c100eac69a78c9c6275c0227708b734.jpg",
        "featured": true
      },
      {
        "title": "AWS Lambda runtimes performance",
        "url": "https://read.acloud.guru/comparing-aws-lambda-performance-of-node-js-python-java-c-and-go-29c1163c2581",
        "description": "An updated runtime performance benchmark of all five programming languages supported by AWS Lambda",
        "imageUrl": "./32ad1bc4c6f0265a512d3b56632a01a7a361e5870686dbf7538a5fe9b3a47bc6.jpg",
        "featured": false
      },
      {
        "title": "UI Toggles to turn you on",
        "url": "https://blog.prototypr.io/ui-toggles-to-turn-you-on-83de3ef91e21",
        "description": "Some incredible UI Inspiration for designing fresh and funny toggle buttons.",
        "imageUrl": "./fa5161526f16b889f4d6459b2169451524029a978a7da086b8c257c10e04aa35.jpg",
        "featured": false
      },
      {
        "title": "Using JSX with Vue",
        "url": "http://scotch.io/tutorials/using-jsx-with-vue-and-why-you-should-care",
        "description": "Vue.js has an easy API and several options for defining HTML templates in our components. You can also use JSX with it and this article is going to tell you why you might want to do that!",
        "imageUrl": "./df6d7d5e57dcfba1ec779900e51e071a259a374c19648a1982d87ca966ec6bd7.jpg",
        "featured": false
      },
      {
        "title": "Optimizing a Static Site",
        "url": "https://hackernoon.com/optimizing-a-static-site-d5ab6899f249",
        "description": "An amazing case study about optimizing a static website to the point of making it 10 times more performant.",
        "imageUrl": "./2f0da4b5864d624f1ba6edc7b14fe53c7d27f0428a49ff78974facd94e4a416a.jpg",
        "featured": false
      },
      {
        "title": "JavaScript vs. TypeScript vs. ReasonML",
        "url": "http://2ality.com/2018/03/javascript-typescript-reasonml.html",
        "description": "This blog post describes the pros and cons of JavaScript, TypeScript and ReasonML. Descriptions are based on recent experiences with TypeScript and ReasonML on a few smaller real-world projects and on years of experience with JavaScript.",
        "imageUrl": "./d8a13364300a11d8d3580234bf685a6e643d9f1d0927ad5f3d2a5db3649bbc19.jpg",
        "featured": false
      },
      {
        "title": "First Contact With 'var' In Java 10",
        "url": "https://blog.codefx.org/java/java-10-var-type-inference",
        "description": "Java 10 introduces the var keyword, which lets the compiler infer local variable types. Here's how var works, why it exists, how it impacts readability.",
        "imageUrl": "./c19f501076cdb8cf37f40e326e4525af8c67af14c1bfd72222b5f26ef957a5c2.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence",
      "author": "Pramod J. Sadalage",
      "description": "The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.",
      "coverImageUrl": "./96f077a648367bca955163aa3692e65c5704f3d7a7c6557690997e5ffeea975b.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321826620/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321826620/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 54,
    "title": "Programmer interfaces",
    "slug": "2018-03-26-054-programmer-interfaces",
    "date": "2018-03-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #12, 2018",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "Programmer interfaces",
        "url": "https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bEgysfDmb8PDV6iCAjH5JIvaI/preview",
        "description": "A fascinating and inspiring gallery containing hundreds of screenshots from user interfaces of different programming and simulations tools appeared in the history of software.",
        "imageUrl": "./20ca423804992b88f574afb78c36805ab75a6dc108ba8b1bd32073a0f747ccbe.png",
        "featured": true
      },
      {
        "title": "CSS Gradient",
        "url": "https://cssgradient.io/",
        "description": "CSS Gradient is a happy little website and free tool that lets you create gradients for the web. It's also chock-full of colorful content about gradients from technical articles to real life examples like Stripe and Instagram.",
        "imageUrl": "./91e89f38457161bbc6fef326c33c1b99d7dc89335af9864be7067d66596dad6a.png",
        "featured": false
      },
      {
        "title": "Using HTTP Headers to Secure Your Site",
        "url": "https://dev.to/heroku/using-http-headers-to-secure-your-site-2no0",
        "description": "A detailed description of some HTTP headers that you could (and should) use to make your websites safer to visit.",
        "imageUrl": "./b6bb12211f96005692b96332eef480b6999200f95f7a8204e6a45d54162c1551.jpg",
        "featured": false
      },
      {
        "title": "Replacing Redux with the new React context API",
        "url": "https://medium.freecodecamp.org/replacing-redux-with-the-new-react-context-api-8f5d01a00e8c",
        "description": "The new context API that comes with React 16.3 is pretty neat. In this article you will see some examples on how it can be used to replace Redux.",
        "imageUrl": "./f67d1aff0d6c012b211c76c3f75b41ea754192d8a4d0a1b1448368c7d5db1857.jpg",
        "featured": false
      },
      {
        "title": "Why Is SQLite Coded In C",
        "url": "https://sqlite.org/whyc.html",
        "description": "C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language anytime soon. If you are curious to know the reason why then this article is for you!",
        "imageUrl": "./d5c96da061e5864bdc4dbb601a8ddded2225d53e03b6f4e1512b121a4045db59.gif",
        "featured": false
      },
      {
        "title": "React.js Frequently Faced Problems",
        "url": "https://dev.to/samerbuna/reactjs-frequently-facedproblems--l5g",
        "description": "A collection of common problems (and possible solutions) that are commonly faced when building complex applications with React.",
        "imageUrl": "./5925a0fa90c2bf0e9d7030a3b69262a335565d869484374372c486ceed302a61.jpg",
        "featured": false
      },
      {
        "title": "How to build a GitHub bot with PhantomJS, React, and Serverless framework",
        "url": "https://medium.freecodecamp.org/how-to-build-a-github-bot-with-phantomjs-react-and-serverless-framework-7b66bb575616",
        "description": "A tutorial about building a simple Serverless bot that returns a chart with top GitHub repository contributors for a selected period.",
        "imageUrl": "./8ab611bf07052c6ebc73a8684ce24611631cc8999261da2d651a5c9d1b896183.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them",
      "author": "Phil Sturgeon",
      "description": "API development is becoming increasingly common for server-side developers thanks to the rise of front-end JavaScript frameworks, iPhone applications, and API-centric architectures. It might seem like grabbing stuff from a data source and shoving it out as JSON would be easy, but surviving changes in business logic, database schema updates, new features, or deprecated endpoints can be a nightmare. After finding many of the existing resources for API development to be lacking, Phil learned a lot of things the hard way through years of trial and error. This book aims to condense that experience, taking examples and explanations further than the trivial apples and pears nonsense tutorials often provide. By passing on some best practices and general good advice you can hit the ground running with API development, combined with some horror stories and how they were overcome/avoided/averted.",
      "coverImageUrl": "./546c5cf136073615afda5cab173feff341171a26a848cf7ce09bb8bd8b07ce89.jpg",
      "amazonUs": "https://www.amazon.com/dp/0692232699/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0692232699/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 53,
    "title": "Introduction to container terminology",
    "slug": "2018-03-19-053-introduction-to-container-terminology",
    "date": "2018-03-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #11, 2018",
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "Introduction to container terminology",
        "url": "https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/",
        "description": "Terms like containers and images are used interchangeably, but there are important conceptual differences. In the world of containers, repository has a different meaning than what you’d expect. Additionally, the landscape for container technologies is larger than just docker...",
        "imageUrl": "./8a0817355eb3c4191bb9bd39660232b7944f50f5202b6273295f62798591aa5c.png",
        "featured": true
      },
      {
        "title": "Machine Learning Crash Course",
        "url": "https://developers.google.com/machine-learning/crash-course",
        "description": "A FREE self-study guide for aspiring machine learning practitioners by Google.",
        "imageUrl": "./0588d34ac29c3fd5091d95c78c8413137f4832299bf58462ba0f23df3eb2059f.png",
        "featured": false
      },
      {
        "title": "PHP 5.6, 7.0, 7.1, 7.2 & HHVM Benchmarks (2018)",
        "url": "https://kinsta.com/blog/php-7-hhvm-benchmarks",
        "description": "Tested performance of 20+ platforms/configurations (WordPress, Drupal, Joomla!) on 5 different engines (PHP 5.6, 7.0, 7.1, HHVM) and PHP 7.2 took the gold in 14 of 20 tests. Check out these 2018 benchmarks.",
        "imageUrl": "./6288fd72b7bbdc649d33e2636f54c741b70919def6351169bc6586ff4bb6721f.jpg",
        "featured": false
      },
      {
        "title": "Lesser known CSS quirks & advanced tips",
        "url": "https://medium.com/@peedutuisk/lesser-known-css-quirks-oddities-and-advanced-tips-css-is-awesome-8ee3d16295bb",
        "description": "Lesser known CSS features, weirdest quirks and oddities. Along with advanced CSS tips and tricks for front-end developers.",
        "imageUrl": "./5d86909860af31d1e7c4180fe30ebeba7c14b95d5642e5d611a3a06304580ab2.jpg",
        "featured": false
      },
      {
        "title": "Understanding V8’s Bytecode",
        "url": "https://medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775",
        "description": "V8 is Google’s open source JavaScript engine. Chrome, Node.js, and many other applications use V8. This article explains V8’s bytecode…",
        "imageUrl": "./fd31a8e0a526ab5ba98f251a8d08cb928a65feb7205d1448cc1104ecf012da66.jpg",
        "featured": false
      },
      {
        "title": "10 Tips for Javascript Debugging",
        "url": "https://medium.com/appsflyer/10-tips-for-javascript-debugging-like-a-pro-with-console-7140027eb5f6",
        "description": "A series of useful tips on how you can use the console to ease your debugging needs with JavaScript applications.",
        "imageUrl": "./2bd207913c0b4ded3bc1d587df1b09c32e68fb6fc0a2ac0d12ab7723de09ff7a.jpg",
        "featured": false
      },
      {
        "title": "Designing The Perfect Date And Time Picker",
        "url": "https://smashingmagazine.com/2017/07/designing-perfect-date-time-picker",
        "description": "What could be so difficult about designing a **decent date picker**? Basically, we just need an input field and an icon that represents a calendar clearly enough, and once the user clicks on that icon, we pop up a little overlay with the days lined up in rows. Right?\nWell, not every date picker fits…",
        "imageUrl": "./3a4c8f7ea821226957a81e2aedce8a49fa14b9963a08512e2c92dfc7d3bad06f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "UX Strategy: How to Devise Innovative Digital Products that People Want",
      "author": "Jaime Levy",
      "description": "User experience (UX) strategy requires a careful blend of business strategy and UX design, but until now, there hasn’t been an easy-to-apply framework for executing it. This hands-on guide introduces lightweight strategy tools and techniques to help you and your team craft innovative multi-device products that people want to use. Whether you’re an entrepreneur, UX/UI designer, product manager, or part of an intrapreneurial team, this book teaches simple-to-advanced strategies that you can use in your work right away.",
      "coverImageUrl": "./fb5bfe56ce390883cd7e92437fbc707fe0ce9062ff82c591ed2eba65ee4daa8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372864/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372864/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 52,
    "title": "Ancient Maths to enrich your design",
    "slug": "2018-03-12-052-ancient-maths-to-enrich-your-design",
    "date": "2018-03-12",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #10, 2018",
    "quote": {
      "text": "The human spirit must prevail over technology",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "Ancient Maths to enrich your design",
        "url": "https://medium.freecodecamp.org/using-ancient-mathematics-to-enrich-your-design-skills-ac360a83d297",
        "description": "This fantastic article showcases how ancient mathematics can enrich your design skills. Basic geometries can be combined to define the structure of your design. And you'll be surprised, this tecnique is thousands of years old!",
        "imageUrl": "./04f793391c884ad75514505fda0b2d109d7b78f84022ef4af31103e5ae52aeb7.png",
        "featured": true
      },
      {
        "title": "Fastify 1.0.0 is here!",
        "url": "https://medium.com/@fastifyjs/fastify-goes-lts-with-1-0-0-911112c64752",
        "description": "After a year and a half of very active development with 1562 commits by 67 individuals through 75 releases, Fastify is graduating to 1.0.0! It's time for you to start to use this amazing web framework in production!",
        "imageUrl": "./948ffeed496267e09cd7ca027f91568e4685b53c799e39ae0ba1865a312598cc.png",
        "featured": false
      },
      {
        "title": "30 Seconds of CSS",
        "url": "https://atomiks.github.io/30-seconds-of-css",
        "description": "A curated collection of useful CSS snippets you can understand in 30 seconds or less. From foundational elements such as clearfix to gradient text color and gradient cursor tracking to CSS easing and far beyond.",
        "imageUrl": "./1ff6eb7ef5e693e3928c92256490b78935b6aba8acfd278ba4af5bca920c46ff.png",
        "featured": false
      },
      {
        "title": "CSS Puns",
        "url": "https://saijogeorge.com/css-puns",
        "description": "This website incarnates the idea of \"what if you could tell jokes only using CSS\". We know it sounds somewhat creepy, but if you are a full stack developer, trust us, it is actually funny!",
        "imageUrl": "./71154c7d07d2b74ef973e3c7ee7b3edcd4e222e89bd23f4f017b7337999e500e.jpg",
        "featured": false
      },
      {
        "title": "Building a Component Library from Scratch",
        "url": "https://medium.com/oscar-tech/building-a-component-library-from-scratch-ba6421074d6a",
        "description": "The interesting story of Oscar and how he used React and CSS Modules to build a flexible component library for its many front-ends.",
        "imageUrl": "./2b330d89748a43ab9aeb303f532d81b7d3c8f6571b217a656c168a5150ddd413.gif",
        "featured": false
      },
      {
        "title": "GDPR - A Practical Guide",
        "url": "https://techblog.bozho.net/gdpr-practical-guide-developers",
        "description": "You’ve probably heard about GDPR. The new European data protection regulation that applies practically to everyone. Especially if you are working in a big company, it’s most likely that there’sContinue reading",
        "imageUrl": "./5419fd1f602f4a2869d42eb45453cb1b68ecac13bcc3dcc3a3ef73f216408f97.jpg",
        "featured": false
      },
      {
        "title": "Webpack 4 released",
        "url": "https://medium.com/webpack/webpack-4-released-today-6cdb994702d4",
        "description": "Webpack 4 (Codename: Legato) has been released and this release brings an incredible number of new features with it: improved performance, devel/production modes, web assembly support, etc. Read the release announcement to discover all of them!",
        "imageUrl": "./b7ea41bd2189d05f7c7babc1c3f3bea7ae0c06f34e96b6495f9046a79df36782.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Test Driven Development: By Example",
      "author": "Kent Beck",
      "description": "Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.",
      "coverImageUrl": "./ef72fdfbf05d98a13cd8c799cb261327f791b8743ab00f96b9dc0c4c1fb91ed1.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321146530/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321146530/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 51,
    "title": "Slack Clone Using GraphQL and React",
    "slug": "2018-03-05-051-slack-clone-using-graphql-and-react",
    "date": "2018-03-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #9, 2018",
    "quote": {
      "text": "I think that novels that leave out technology misrepresent life as badly as Victorians misrepresented life by leaving out sex",
      "author": "Kurt Vonnegut",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Kurt_Vonnegut"
    },
    "links": [
      {
        "title": "Slack Clone Using GraphQL and React",
        "url": "https://www.youtube.com/playlist?list=PLN3n1USn4xlkdRlq3VZ1sT6SGW0-yajjL",
        "description": "A fantastic series of video tutorials on YouTube that will guide you to build a complete Slack clone using GraphQL and React.",
        "imageUrl": "./211bee9e42212404384009edf8be41dddddbfd231ce9773f90ffa1b1575fee19.png",
        "featured": true
      },
      {
        "title": "Python 3, with pleasure!",
        "url": "https://github.com/arogozhnikov/python3_with_pleasure",
        "description": "A series of tips n' tricks for developers and data scientists that want to migrate from Python2 to Python3.",
        "imageUrl": "./c0478f58bc5d22374dc297a23f91daede1e287f2f8174cc10bba5b771c739bb4.png",
        "featured": false
      },
      {
        "title": "A Visual Introduction to Machine Learning",
        "url": "http://r2d3.us/visual-intro-to-machine-learning-part-1",
        "description": "What is machine learning? See how it works with our animated data visualization.",
        "imageUrl": "./b2b258d7be737757eb61863da7762b907cf3c05656ba29e173480f8fea9ca848.jpg",
        "featured": false
      },
      {
        "title": "7 Practical Tips for Cheating at Design",
        "url": "https://medium.com/refactoring-ui/7-practical-tips-for-cheating-at-design-40c736799886",
        "description": "Improving your designs with tactics instead of talent. Sometimes is convenient to have  a set of principles and guidelines and stick to them instead of reinventing the wheel all the time.",
        "imageUrl": "./d1c47d108552c97c4dc29611bf68df0772755fcccabf69f20d6aa545564a7de0.jpg",
        "featured": false
      },
      {
        "title": "Dropdown alternatives for better forms",
        "url": "https://medium.com/@kollinz/dropdown-alternatives-for-better-mobile-forms-53e40d641b53",
        "description": "Using a dropdown menu usually  seems a no-brainer but it’s also easy to misuse due to its limitations. You can do better.",
        "imageUrl": "./2e2882b66e358d474d09b145acf18a5d4f9c8c624c2b644d17bd89aae284531f.jpg",
        "featured": false
      },
      {
        "title": "Promise.prototype.finally in Node.js",
        "url": "http://thecodebarbarian.com/using-promise-finally-in-node-js",
        "description": "*Promise.prototype.finally()* reached stage 4 of the TC39 proposal process. This means the proposal was accepted and is now part of the latest draft of the ECMAScript spec, and it is only a matter of time before it lands in Node.js. This article will show you how to use *Promise.prototype.finally()* and how to write your own simplified polyfill.",
        "imageUrl": "./7d6e0b2056709286b0db0aea96e736fac6f998c651f2074ceaec7e6938e91081.png",
        "featured": false
      },
      {
        "title": "Pwned Passwords V2",
        "url": "https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/",
        "description": "if someone is signing up to a service with a password that has previously appeared in a data breach, either it's the same person reusing their passwords (bad) or two different people who through mere coincidence, have chosen exactly the same password. With Pwned Passwords you will be able to warn your users if they are using one of those compromised passwords in your website.",
        "imageUrl": "./531bd55d10a71bbb0d8b480fb5559a9ef37642865350bfeaba2e31b5e76231f7.png",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful Web APIs: Services for a Changing World",
      "author": "Leonard Richardson",
      "description": "The popularity of REST in recent years has led to tremendous growth in almost-RESTful APIs that don’t include many of the architecture’s benefits. With this practical guide, you’ll learn what it takes to design usable REST APIs that evolve over time.",
      "coverImageUrl": "./9c4219f67796409cdc3651baaeb21d2190a783120c0f90db3533777479bc62a9.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358063/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358063/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 50,
    "title": "A secure web is here to stay",
    "slug": "2018-02-26-050-a-secure-web-is-here-to-stay",
    "date": "2018-02-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #8, 2018",
    "quote": {
      "text": "Humanity is acquiring all the right technology for all the wrong reasons",
      "author": "R. Buckminster Fuller",
      "authorTitle": "Inventor and Author",
      "authorUrl": "https://en.wikipedia.org/wiki/R._Buckminster_Fuller"
    },
    "links": [
      {
        "title": "A secure web is here to stay",
        "url": "https://security.googleblog.com/2018/02/a-secure-web-is-here-to-stay.html",
        "description": "Beginning in July 2018 with the release of Chrome 68, Chrome will mark all HTTP sites as “not secure”. Read how this is going to impact the web and hopefully make it more secure.",
        "imageUrl": "./1fdea7bccb660db5c10caaafba9589d9aee1accc1cd053e1b0295abe31504153.png",
        "featured": true
      },
      {
        "title": "Everything Easy is Hard Again",
        "url": "https://frankchimero.com/writing/everything-easy-is-hard-again",
        "description": "Frank Chimero describes his new found relationship with web design, coming back to the field after a while everything that was easy before now is different and seems hard again. The struggle of every software developer to keep up with a constantly changing technology...",
        "imageUrl": "./f8cab4bbfeca9e87bdc927501f48ca9d02ea5134f77dfda17d6558884580fa79.gif",
        "featured": false
      },
      {
        "title": "Replacing jQuery With Vue.js",
        "url": "https://smashingmagazine.com/2018/02/jquery-vue-javascript",
        "description": "Did you know that you can incorporate Vue into your project the same way that you would incorporate jQuery — with no build step necessary? This article by Sarah Drasner covers some common use cases in jQuery and how we can switch them over to Vue, and why we’d even want to do so.",
        "imageUrl": "./bcdc3df7fe50eb3809b313e91fc64d84b98753deee838548a8b5902fefd7ef91.png",
        "featured": false
      },
      {
        "title": "SSE Instead Of WebSockets",
        "url": "https://smashingmagazine.com/2018/02/sse-websockets-data-flow-http2",
        "description": "What is the best way to deliver real-time updates to your web application in an easy and structured way? This article describes a new approach that uses SSE Instead Of WebSockets For Unidirectional Data Flow Over HTTP/2.",
        "imageUrl": "./241d3c1f27cadd1f4a5efa017d25b05a369ca608d25118548967eddf021647ce.png",
        "featured": false
      },
      {
        "title": "Direction Aware Hover Effects",
        "url": "https://css-tricks.com/direction-aware-hover-effects",
        "description": "An implementation of an extremely particular design trick that never fails to catch people's eye! Check out the source code on Codepen.",
        "imageUrl": "./62be515726d981052128d0e8ea4dc1bae731fa3e47bc03d4c2b9545ba90b30fa.jpg",
        "featured": false
      },
      {
        "title": "Build a React Native App and Authenticate with OAuth 2.0",
        "url": "http://scotch.io/tutorials/build-a-react-native-app-and-authenticate-with-oauth-20",
        "description": "Use React Native and AppAuth to create a native mobile application that authenticates with Okta.",
        "imageUrl": "./94f6840aa329049e228602826b2b2f88dca164e47eca1d12ac770a3a0d04ef64.jpg",
        "featured": false
      },
      {
        "title": "Let's talk about usernames",
        "url": "https://b-list.org/weblog/2018/feb/11/usernames",
        "description": "subtitled \"The right way to do identity\", this is an essay that introduces a number of non-obvious observation about usernames and can help you to design support for username effectively in your next application.",
        "imageUrl": "./26b45b50180ab6917a7addfa30702f9a87eaa252c7d920b82f00651dc0256549.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Information Architecture: For the Web and Beyond",
      "author": "Louis Rosenfeld",
      "description": "Information architecture (IA) is far more challenging—and necessary—than ever. With the glut of information available today, anything your organization wants to share should be easy to find, navigate, and understand. But the experience you provide has to be familiar and coherent across multiple interaction channels, from the Web to smartphones, smartwatches, and beyond.To guide you through this broad ecosystem, this popular guide—now in its fourth edition—provides essential concepts, methods, and techniques for digital design that have withstood the test of time.",
      "coverImageUrl": "./6479919bd4c4e1ab7a2cbc0f5cf23b45ee7ca46af986574798fd02163903111f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491911689/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491911689/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 49,
    "title": "React and D3 together",
    "slug": "2018-02-19-049-react-and-d3-together",
    "date": "2018-02-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #7, 2018",
    "quote": {
      "text": "Technology is a word that describes something that doesn’t work yet",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "React and D3 together",
        "url": "https://www.youtube.com/watch?v=SVbTTUpCLfo",
        "description": "D3 and React, who should control the DOM? In this amazing talk from ReactiveConf 2017, you will learn when React should have ownership of the DOM, and when D3 should instead.",
        "imageUrl": "./cdc936afd8073dd2e22e0da3832bc97e5971e712cb9d42cb5f3f12104ccef9ca.jpg",
        "featured": true
      },
      {
        "title": "The Web 3.0",
        "url": "https://medium.com/@matteozago/why-the-web-3-0-matters-and-you-should-know-about-it-a5851d63c949",
        "description": "What is the Web 3.0 and why it matters? This article illustrates what the future web should be and why we should start to plan for it and take advantages from new tech on the web.",
        "imageUrl": "./04508a94cf0718202066e1a7679a46c6db461d9e977abdd5150f1a38a6601838.jpg",
        "featured": false
      },
      {
        "title": "JavaScript for the Web",
        "url": "https://sabe.io/classes/javascript",
        "description": "An amazing and FREE class for beginners to learn how to work with DOM elements, make AJAX calls, work with cookies, and much more!",
        "imageUrl": "./e54058746c00980772e084c0416a1aa2dc6b0176046ac16a4dea80a5742c415d.jpg",
        "featured": false
      },
      {
        "title": "Remoteur",
        "url": "http://www.remoteur.com/",
        "description": "**⭐️SPONSORED**\n\n\nA fantastic newsletter dedicated to Remote jobs in Europe delivered to your inbox bi-weekly.",
        "imageUrl": "./ab0b6876bb58c67e553368110901b39bd4843ced1bbfdd5f903b551fbd4d40d0.png",
        "featured": false
      },
      {
        "title": "Rekit Studio",
        "url": "https://medium.freecodecamp.org/introducing-rekit-studio-a-real-ide-for-react-and-redux-development-baf0c99cb542",
        "description": "Introducing Rekit Studio, a complete IDE for React, Redux and React Router development!",
        "imageUrl": "./4119be7f3c5b6018d9925a5371e3445451d8ffcf2e5e3ef27b3e4ea5b90b59de.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Testing in 2018",
        "url": "https://medium.com/welldone-software/an-overview-of-javascript-testing-in-2018-f68950900bc3",
        "description": "This guide is intended to catch you up with the most important reasoning, terms, tools, and approaches to JavaScript testing in 2018.",
        "imageUrl": "./52c17e54e5bc97689ee2065e3cd60f31d665c6b3a7c11552a7701b77aebf82b9.jpg",
        "featured": false
      },
      {
        "title": "Eloquent JavaScript, 3rd ed.",
        "url": "https://eloquentjavascript.net/3rd_edition",
        "description": "This is one of the best books about JavaScript, programming, and the wonders of the digital. You can read the new edition online for FREE or get your own paperback copy to support the amazing work of Marijn Haverbeke.",
        "imageUrl": "./7d30734383a891dd73fec2fdaac60d1120b28da7eb9a6c70329738f94eaca8bf.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Big Data: Principles and best practices of scalable realtime data systems",
      "author": "Nathan Marz",
      "description": "Big Data teaches you to build big data systems using an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data. It describes a scalable, easy-to-understand approach to big data systems that can be built and run by a small team.",
      "coverImageUrl": "./f109f576f51b956a93fffd90f2756794ef95a8d46f118a0f1e23f611c7af4a75.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617290343/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617290343/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 48,
    "title": "Modern CSS Explained For Dinosaurs – Actualize – Medium",
    "slug": "2018-02-12-048-modern-css-explained-for-dinosaurs-actualize-medium",
    "date": "2018-02-12",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #6, 2018",
    "quote": {
      "text": "One machine can do the work of fifty ordinary men.  No machine can do the work of one extraordinary man",
      "author": "Elbert Hubbard",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Elbert_Hubbard"
    },
    "links": [
      {
        "title": "Modern CSS For Dinosaurs",
        "url": "https://medium.com/actualize-network/modern-css-explained-for-dinosaurs-5226febe3525",
        "description": "CSS is strangely considered both one of the easiest and one of the hardest languages to learn as a web developer. It’s certainly easy…",
        "imageUrl": "./33c412703b96ac64f867a9ae671870eabb4b938970afbc0e1097ddff8d8cace1.jpg",
        "featured": true
      },
      {
        "title": "The building blocks of Web Workers",
        "url": "https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-when-you-should-use-them-a547c0757f6a",
        "description": "This article offers an overview of web workers, it discusses the different types of workers, how their building components come to play together, and what advantages and limitations they offer in different scenarios.",
        "imageUrl": "./f8a8d127252d30a1b01adc6c6c51edb65f847098715a903a6a6999d0cade53c3.jpg",
        "featured": false
      },
      {
        "title": "thejameskyle/the-super-tiny-compiler",
        "url": "https://github.com/thejameskyle/the-super-tiny-compiler",
        "description": "Most people don't really have to think about compilers in their day jobs. However, compilers are all around you, tons of the tools you use are based on concepts borrowed from compilers. This repository will show you how to build a super simple compiler and you will learn a ton about compilers this way...",
        "imageUrl": "./4268b8ef0a87f4a42fae9ad13f8be0497591d6a8697e1c733e34a703e4ab97aa.png",
        "featured": false
      },
      {
        "title": "ECMAScript 2018: the final feature set",
        "url": "http://2ality.com/2017/02/ecmascript-2018.html",
        "description": "The feature set of ECMAScript 2018 was finalized during the latest TC39 meeting (23-25 January 2018). This blog post describes it.",
        "imageUrl": "./d8a13364300a11d8d3580234bf685a6e643d9f1d0927ad5f3d2a5db3649bbc19.jpg",
        "featured": false
      },
      {
        "title": "Make me think!",
        "url": "https://blog.prototypr.io/make-me-think-90b46aa50513",
        "description": "Designers and engineers simply burdened the users with this increase in complexity. Fortunately, UX (User eXperience) designers have found ways to design beautiful interfaces that are easy to use. This article explores these topics trying discussing ways to deal with complex problems and usable solutions.",
        "imageUrl": "./f045dd41cea794209e7117e623b251486d38162abdf646747285bfd545106430.jpg",
        "featured": false
      },
      {
        "title": "Using Media Queries For Responsive Design In 2018",
        "url": "https://smashingmagazine.com/2018/02/media-queries-responsive-design-2018",
        "description": "This article will take a look at the use of media queries for responsive design today, how they work alongside Flexbox and Grid Layout, and also have a look at what is coming in the future.",
        "imageUrl": "./6a30c473321b6de18e99bd1d6c19920c1221ee98ea34854eda3aab26f83ef0a8.png",
        "featured": false
      },
      {
        "title": "Sketching in the Browser",
        "url": "https://medium.com/seek-blog/sketching-in-the-browser-33a7b7aa0526",
        "description": "How to automatically generate a Sketch library for designers from our living style guide, based on a real use case.",
        "imageUrl": "./b1196cba9aaf777a1b8c414ee893599a467a0ced8083639d9db069a599d78844.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Design Patterns: Elements of Reusable Object-Oriented Software",
      "author": "E. Gamma, R. Helm, R. Johnson, J. Vlissides",
      "description": "Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.",
      "coverImageUrl": "./3d2f9c2ee1c817b2dcd3443fbb6f71d7fcb0499b00de983a9ffe8f8c6058fa29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201633612/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201633612/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 47,
    "title": "How To Build A Horse With Programming",
    "slug": "2018-02-05-047-how-to-build-a-horse-with-programming",
    "date": "2018-02-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #5, 2018",
    "quote": {
      "text": "It has become appallingly obvious that our technology has exceeded our humanity",
      "author": "Albert Einstein",
      "authorTitle": "Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Albert_Einstein"
    },
    "links": [
      {
        "title": "How To Build A Horse With Programming",
        "url": "https://blog.toggl.com/build-horse-programming",
        "description": "Tired of modern transportation? Have a ton of hay laying around? It sounds like you might very well be in the market for a horse, but maybe not one built with a programming language. Why not? You'll see...",
        "imageUrl": "./b47f80234c32ea19f61d98d92d2dfe4378624f4267677e6c24768141938efa0e.jpg",
        "featured": true
      },
      {
        "title": "Guide for writing awesome React components",
        "url": "https://codeburst.io/step-by-step-guide-for-writing-awesome-react-components-210c6def902b",
        "description": "Descriptive and versatile checklist with must do’s and should do’s when conceptualizing sleek and professional React code.",
        "imageUrl": "./504eb33c33a59de275209663e3107564c71e413203fd5d02f08ea6b9d0db3b22.jpg",
        "featured": false
      },
      {
        "title": "Wargames",
        "url": "http://overthewire.org/wargames",
        "description": "Learn and practice IT security concepts in the form of fun-filled games.",
        "imageUrl": "./370a33d5813bd2201a206cca78a1341b0b7cbd20976a6c513778b5d9e7d42444.png",
        "featured": false
      },
      {
        "title": "Making the fastest site in the world",
        "url": "https://hackernoon.com/10-things-i-learned-making-the-fastest-site-in-the-world-18a0e1cdf4a7",
        "description": "This post is about performance techniques and illustrates 10 learnings while trying to build an extremely performant website.",
        "imageUrl": "./07df9dadbd1f5ba5158f42a807d5e543dea379b40c03fce86f32c5d42135505c.jpg",
        "featured": false
      },
      {
        "title": "CSS Naming Conventions",
        "url": "https://medium.freecodecamp.org/css-naming-conventions-that-will-save-you-hours-of-debugging-35cea737d849",
        "description": "A selection of helpful CSS naming conventions to help you save time, be consistent and avoid to spend hours of terrible debugging.",
        "imageUrl": "./cff6eb4507ebb8c4f4943c05756eec9bdd388ef89bca323d528e335abfd25466.jpg",
        "featured": false
      },
      {
        "title": "Hacker 101",
        "url": "https://hacker101.com/",
        "description": "Another interesting free class for web security. Whether you’re a programmer with an interest in bug bounties or in learning how to build secure web applications, Hacker101 has something to teach you.",
        "imageUrl": "./c00cd8e0fb49e6395cd60be18276c6d9312ecaee5ceb0c07993cdcac06f582bf.png",
        "featured": false
      },
      {
        "title": "Principles in UI design",
        "url": "https://medium.muz.li/gestalt-principles-in-ui-design-6b75a41e9965",
        "description": "Gestalt (form, shape in German) is a group of visual perception principles developed by German psychologists in 1920s. It is built on the theory that “an organized whole, is perceived as greater than the sum of its parts”.",
        "imageUrl": "./80a789decc863c54e6d8b330d0733f59b52cad4654e01ac7fbc8791660bc6bf4.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "PHP and MySQL Web Development (5th Edition) (Developer's Library)",
      "author": "Luke Welling",
      "description": "PHP and MySQL are popular open-source technologies that are ideal for quickly developing database-driven Web applications. PHP is a powerful scripting language designed to enable developers to create highly featured Web applications quickly, and MySQL is a fast, reliable database that integrates well with PHP and is suited for dynamic Internet-based applications",
      "coverImageUrl": "./215552defe4b9e1ca9846aa5b85f2a20bdf3752b7580570be5a6d3bda1582bfa.jpg",
      "amazonUs": "https://www.amazon.com/dp/0321833899/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0321833899/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 46,
    "title": "Bootstrap 4, released!",
    "slug": "2018-01-29-046-bootstrap-4-released",
    "date": "2018-01-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #4, 2018",
    "quote": {
      "text": "Just because something doesn’t do what you planned it to do doesn’t mean it’s useless",
      "author": "Thomas Edison",
      "authorTitle": "Inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Thomas_Edison"
    },
    "links": [
      {
        "title": "Bootstrap 4, released!",
        "url": "http://blog.getbootstrap.com/2018/01/18/bootstrap-4",
        "description": "The most popular HTML, CSS, and JS framework in the world finally got out of beta and had its first v4 stable published, go check it out.",
        "imageUrl": "./b9a4054f81189c0c80c80c17f4afb10e933c1a8088507cd85b2f2dcb8e962c0e.jpg",
        "featured": true
      },
      {
        "title": "Free CSS Grid course by Wes Bos",
        "url": "https://cssgrid.io/",
        "description": "Learn all about CSS Grid with this 4 hours free video series by Wes Bos!",
        "imageUrl": "./995591c6d934ace19ff13c6aae51301caac66435ade77516acc0c50e0ec2718f.jpg",
        "featured": false
      },
      {
        "title": "Scaling Kubernetes to 2,500 Nodes",
        "url": "https://blog.openai.com/scaling-kubernetes-to-2500-nodes",
        "description": "A great Kubernetes case study for deep learning research. A cluster that has been running for over two years. Kubernetes provides a fast iteration cycle, reasonable scalability, and a lack of boilerplate which makes it ideal for most of the use cases described in this article.",
        "imageUrl": "./ddeecdc3f358a970ee9463d4c741a3ecf8ef5d24260ba8953d5d7fae6e80ff05.jpg",
        "featured": false
      },
      {
        "title": "The Ultimate Guide to JavaScript Frameworks",
        "url": "https://javascriptreport.com/the-ultimate-guide-to-javascript-frameworks",
        "description": "Keeping up with JavaScript frameworks can be a challenge. There are a lot of them, and seemingly another one every month. How do you know which ones might be right for your project? What are their strengths and weaknesses?",
        "imageUrl": "./3f2b0febd10e3d2f907daec5670eb89ada7a32f7ee44ece9a6041b84a79841b1.jpg",
        "featured": false
      },
      {
        "title": "Dispatch, an Open Source Serverless Framework",
        "url": "https://blogs.vmware.com/opensource/2018/01/12/dispatch-project-open-source-serverless-framework",
        "description": "Dispatch, an open source serverless framework, is available now on GitHub. VMware explains why this Functions as a Service (FaaS) is more than just functions.",
        "imageUrl": "./8b5b52fe2b6e4832b620c96c153e09bc3f03e85445863b6983beb49071b1cd3d.jpg",
        "featured": false
      },
      {
        "title": "Drag and Drop for Design Systems",
        "url": "https://uxdesign.cc/drag-and-drop-for-design-systems-8d40502eb26d",
        "description": "Drag and drop interactions are often overlooked or go unnoticed. Sometimes they happen so naturally that you don’t even realize it. But if you look closely and compare different examples you can find very different UX standards around drag and drop.",
        "imageUrl": "./6944707771f87d0c149f643abf3ee4441845c37523e3847af9ac4fbc71404dcd.jpg",
        "featured": false
      },
      {
        "title": "Keep Webpack Fast",
        "url": "https://slack.engineering/keep-webpack-fast-a-field-guide-for-better-build-performance-f56a5995e8f1",
        "description": "Webpack is a brilliant tool for bundling frontend assets. When you start to have complex build configurations, it might start to slow down sensibly. This article describes some rules that can help you to keep Webpack build speed fast.",
        "imageUrl": "./69d3373f21cd4a6842388dfd10176014908cc5f82cd4cb722bcd3b02538245b7.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Regular Expressions",
      "author": "Jeffrey E. F. Friedl",
      "description": "Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage.",
      "coverImageUrl": "./396d6f15a915700637c37f7d2fcde88b8839c4580fbc81d9acd6add805980fd3.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596528124/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596528124/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 45,
    "title": "The laws of UX",
    "slug": "2018-01-22-045-the-laws-of-ux",
    "date": "2018-01-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #3, 2018",
    "quote": {
      "text": "All of the biggest technological inventions created by man - the airplane, the automobile, the computer - says little about his intelligence, but speaks volumes about his laziness",
      "author": "Mark Kennedy",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Mark_Kennedy"
    },
    "links": [
      {
        "title": "The laws of UX",
        "url": "https://lawsofux.com/",
        "description": "A beautiful collection of the key maxims that designers and developers must consider when building user interfaces.",
        "imageUrl": "./627698355e43bf557571a7cf3861ba6365af35bfadceb4fb5b1f4fa0036104d3.jpg",
        "featured": true
      },
      {
        "title": "Building Secure PHP Software",
        "url": "https://paragonie.com/blog/2017/12/2018-guide-building-secure-php-software",
        "description": "Everything a developer needs to know to build secure software in the PHP programming language in the year 2018",
        "imageUrl": "./819f0dc5cc308b4d9b849986abc6702610243e158ea19e5e9580ee81a4a96666.png",
        "featured": false
      },
      {
        "title": "Node.js + face-recognition.js",
        "url": "https://medium.com/@muehler.v/node-js-face-recognition-js-simple-and-robust-face-recognition-using-deep-learning-ea5ba8e852",
        "description": "Face-recognition.js is n npm package for JavaScript applications that need face recognition capabilities.",
        "imageUrl": "./f8f6b6ecd0ed59a63a204f33ab0c6ed9784a7d503ecca712527e3b09de74b0d6.jpg",
        "featured": false
      },
      {
        "title": "PHP-PM",
        "url": "https://laravel-news.com/php-pm",
        "description": "PHP-PM is an open-source process manager, supercharger, and load balancer for PHP applications. PPM uses ReactPHP to achieve event-driven, non-blocking I/O with PHP.",
        "imageUrl": "./b8dca9df211c0b9564dbee6845f8c1a68009fbf3ceb0ff97e923c81b51daf755.jpg",
        "featured": false
      },
      {
        "title": "Meet the New HTML Dialog Element",
        "url": "https://keithjgrant.com/posts/2018/meet-the-new-dialog-element",
        "description": "HTML 5.2 has introduced a new element for native modal dialog boxes. At first glance, it seems fairly straightforward but some nice features that might be easy to miss.",
        "imageUrl": "./cff5ff6a4da3e91fc3ff684d89aec8f5af829ca41b8a7b70710291a6fc398f8b.png",
        "featured": false
      },
      {
        "title": "gif.js",
        "url": "http://jnordberg.github.io/gif.js",
        "description": "Full-featured JavaScript GIF encoder that runs in your browser.",
        "imageUrl": "./813fd8d193419cdf7389f9223f04a1f924ec23c73d34b89ae2e8e7198851124e.png",
        "featured": false
      },
      {
        "title": "Building a Serverless REST API with Node.js and MongoDB",
        "url": "https://hackernoon.com/building-a-serverless-rest-api-with-node-js-and-mongodb-2e0ed0638f47",
        "description": "A tutorial that will show you how to build a REST API using Serverless, Node.js and MongoDB.",
        "imageUrl": "./78becfdbda367ddff3fa4c502c351c11280edc0866d6e796c0c3f1bf18482097.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Designing Interfaces: Patterns for Effective Interaction Design",
      "author": "Jenifer Tidwell",
      "description": "Despite all of the UI toolkits available today, it's still not easy to design good application interfaces. This bestselling book is one of the few reliable sources to help you navigate through the maze of design options.",
      "coverImageUrl": "./efd3a4879002fbb37a1b94c9c3a347059c5bfc0661f163c8e89164fe5c872c8e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449379702/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449379702/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 44,
    "title": "Harvesting credit card numbers and passwords from your site",
    "slug": "2018-01-15-044-harvesting-credit-card-numbers-and-passwords-from-your-site",
    "date": "2018-01-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #2, 2018",
    "quote": {
      "text": "Any sufficiently advanced technology is equivalent to magic",
      "author": "Arthur C. Clarke",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_C._Clarke"
    },
    "links": [
      {
        "title": "Harvesting credit card numbers and passwords from your site",
        "url": "https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5",
        "description": "The following is a true story. Or maybe it’s just based on a true story. Perhaps it’s not true at all.",
        "imageUrl": "./70c1472fc3d57a62e3ba6601ae72b30ababc3aedf9209f5a565c51b9d1d3f4e0.jpg",
        "featured": true
      },
      {
        "title": "Front-end hacking cheatsheets",
        "url": "https://medium.freecodecamp.org/modern-frontend-hacking-cheatsheets-df9c2566c72a",
        "description": "It’s impossible to remember all the APIs by heart. This is when cheatsheets jump in! Here are the best front-end cheatsheets, all together!",
        "imageUrl": "./768a0b8cfeae6b660245797b7b25fe171fd37c924580f68b5d9cad0ca3605627.jpg",
        "featured": false
      },
      {
        "title": "A Practical Guide to SVGs",
        "url": "https://svgontheweb.com/",
        "description": "This guide aims to give a practical overview of how you can use SVGs on your websites — with some tips and tricks along the way to get the most out of them.",
        "imageUrl": "./efd88f4687028b60cfde0cae52b41a5f7f1f33f44fb608ff780d4d2a0152171a.png",
        "featured": false
      },
      {
        "title": "What's new in HTML 5.2",
        "url": "https://bitsofco.de/whats-new-in-html-5-2/",
        "description": "This article illustrates the new features introduced by the latest specification of HTML, version 5.2, freshly published by W3C.",
        "imageUrl": "./18aa30e22217c2c40b5169677c77f6a254ac67316f1f30262809c718e3048fe0.png",
        "featured": false
      },
      {
        "title": "11 Things I Learned Reading the CSS Grid Specification",
        "url": "https://medium.freecodecamp.org/11-things-i-learned-reading-the-css-grid-specification-fb3983aa5e0",
        "description": "While reading the spec, the author of this article learned some very subtle, but profound details and he is sharing them with you to make you a better CSS Grid user.",
        "imageUrl": "./ceb09c0293eb98082fd81971cbca73a1e85ae8acb183da9c1fbdc7d27cd0645f.jpg",
        "featured": false
      },
      {
        "title": "CSS Cheat Sheet",
        "url": "https://adam-marsden.co.uk/css-cheat-sheet",
        "description": "CSS Cheat Sheet - A reference for CSS goodness.",
        "imageUrl": "./7e214331abdb07ad93e3ae7b5828427080ed0f408b24d54a61a62467c5b476be.jpg",
        "featured": false
      },
      {
        "title": "Angular 5 - Free video course",
        "url": "https://codecraft.tv/courses/angular",
        "description": "A totally free video course on Angular 5 that is going to teach you: the latest features of ES6 JavaScript and TypeScript, the Angular CLI, RxJS and Observables, unit testing in Angular. All of this by building a complete application.",
        "imageUrl": "./0a1bdd8a3a9ec1f80ddedcd3b1faa4bc458d0049015df434a67126eae505cf1a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Fluent Python: Clear, Concise, and Effective Programming",
      "author": "Luciano Ramalho",
      "description": "Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer.  With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features.",
      "coverImageUrl": "./30290ce19e65a7fffc72aab6893578a1fc0008018337e91d311736d9b587c8fe.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491946008/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491946008/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 43,
    "title": "AI and Deep Learning in 2017",
    "slug": "2018-01-08-043-ai-and-deep-learning-in-2017",
    "date": "2018-01-08",
    "templateType": "old-mailchimp",
    "intro": "— Happy new year from Fullstack bulletin 🎉\nBest 7 links of week #1, 2018",
    "quote": {
      "text": "Technology is anything that wasn’t around when you were born",
      "author": "Alan Kay",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Kay"
    },
    "links": [
      {
        "title": "AI and Deep Learning in 2017",
        "url": "http://www.wildml.com/2017/12/ai-and-deep-learning-in-2017-a-year-in-review/",
        "description": "A number of Artificial Intelligence and Deep learning topics that made 2017 a great year for this field. If you are curious to see what 2018 will bring, this article is a good starting point.",
        "imageUrl": "./efac9caa68e19b48ae9c971454a056d6211b8e7a55ea73426f46cccdb23198e2.png",
        "featured": true
      },
      {
        "title": "The Future Belongs to CSS",
        "url": "https://codepen.io/joshuajcollinsworth/pen/aEJGvg",
        "description": "A fantastic Codepen that demonstrates once again how much CSS is underrated. See how a combination of CSS Grid, Flexbox and position \"sticky\" can help you achieve dynamic layouts without a single line of JavaScript.",
        "imageUrl": "./0d7481b8aeac88a63fde5993e042c599202059719578ebc6b54a21b181e11125.png",
        "featured": false
      },
      {
        "title": "Minimum Viable Sharing Meta Tags",
        "url": "http://www.phpied.com/minimum-viable-sharing-meta-tags/",
        "description": "A super interesting research aiming at defining the minimum viable set of sharing meta tags to achieve good visibility on Facebook and Twitter and, at the same time, keep your markup as light as possible.",
        "imageUrl": "./f2d8a5fa316e0e023c1bf867355e8f9d6ee3e21a4fceeb7827695af59d2ca7a0.png",
        "featured": false
      },
      {
        "title": "Top JavaScript Libraries & Tech to Learn in 2018",
        "url": "https://medium.com/javascript-scene/top-javascript-libraries-tech-to-learn-in-2018-c38028e028e6",
        "description": "This article proposes few bets on the JavaScript libraries and related technologies that will be worth learning in 2018. Pretty interesting if you are trying to define your new learning paths for this year.",
        "imageUrl": "./d9f8fbbbccd6ba2c5a637ed663d11ebd3fdb8e8e7215eb759bb6fe7711390e6c.jpg",
        "featured": false
      },
      {
        "title": "To Serve Man, with Software",
        "url": "https://blog.codinghorror.com/to-serve-man-with-software",
        "description": "An inspiring article by Jeff Atwood (founder of Stack Overflow and Discourse) that describes the role of software developers and delves into ethics in this \"era of software\". Can we be responsible developers and create software for a better world?",
        "imageUrl": "./798d8d2c15c04a37c956020a8446ca31616f0e5fb86a493a84ec3048560698a5.png",
        "featured": false
      },
      {
        "title": "Best Data Viz Projects of '17",
        "url": "http://flowingdata.com/2017/12/28/10-best-data-visualization-projects-of-2017",
        "description": "A collection of 10 fantastic data visualization projects that ruled the past year. This projects will not just inspire you but also teach you some of the most unexpected lessons ever, for instance \"Why eggs are shaped like eggs\"...",
        "imageUrl": "./41458d14e0f06453079dd54e0acc030bbea096b6a4fcdd0a2b403b8d4b0eda60.png",
        "featured": false
      },
      {
        "title": "From Bootstrap to CSS Grid",
        "url": "https://open.nytimes.com/bootstrap-to-css-grid-87b3f5f830e4",
        "description": "Despite many clever hacks and creative workarounds, there hasn’t been a simple answer for creating a layout on the web. Developers have been saying for years that there has to be a better way to create responsive websites, and finally, there is: CSS Grid, a proper layout tool for the web baked right into CSS itself, is here.",
        "imageUrl": "./c4d7fe7206ece7e3fbbf13a83ef1ad48b7a1c9561e8c57cdd334bb72e66f1ddb.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Algorithms to live by",
      "author": "Brian Christian and Tom Griffiths",
      "description": "A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mindAll our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favourites is the most fulfilling?",
      "coverImageUrl": "./24438c07b3bd2a14108cd79d826105f246b331801bf6b194abd1244f7b8e66af.jpg",
      "amazonUs": "https://www.amazon.com/dp/0008166099/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0008166099/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 42,
    "title": "Free Interactive Python Tutorial",
    "slug": "2018-01-01-042-free-interactive-python-tutorial",
    "date": "2018-01-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #52, 2017",
    "quote": {
      "text": "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense",
      "author": "E.W. Dijkstra",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/E._W._Dijkstra"
    },
    "links": [
      {
        "title": "Free Interactive Python Tutorial",
        "url": "http://learnpython.org/",
        "description": "LearnPython.org is a free interactive Python tutorial for people who want to learn Python, fast.",
        "imageUrl": "./dd0fc1405ebd7ad8f0ddd99346321147c5306f1945593c6d81de4cc79ffa7981.jpg",
        "featured": true
      },
      {
        "title": "You Might Not Need JavaScript",
        "url": "http://youmightnotneedjs.com/",
        "description": "Examples of common UI elements and interactions with HTML and CSS alone.",
        "imageUrl": "./b7e148139bcc42309f22afacea8ef2ca54e4480c64313940b42a6064452ac99f.jpg",
        "featured": false
      },
      {
        "title": "The frontend checklist",
        "url": "https://frontendchecklist.io/",
        "description": "An application that helps meticulous developers to build perfect websites! Follow the rules and deliver the best of your work in a generated report!",
        "imageUrl": "./9427076902f2bec9d5a38fa805ef0e3f3ea3d37d0d4f43166ba04a680676a60a.jpg",
        "featured": false
      },
      {
        "title": "The Vanilla JavaScript Repository",
        "url": "https://plainjs.com/",
        "description": "PlainJS is a Vanilla JavaScript repository for writing powerful web applications without jQuery or other JavaScript libraries.",
        "imageUrl": "./3f2ed37660ecd57543bb413f04b6e688ebcea086a6ff7557f395b4568fc79124.jpg",
        "featured": false
      },
      {
        "title": "SQL Injection Wiki",
        "url": "https://sqlwiki.netspi.com/",
        "description": "This wiki's mission is to be a one-stop resource for fully identifying, exploiting, and escalating SQL injection vulnerabilities across various Database Management Systems.",
        "imageUrl": "./5f5c70281079f2200d7af0850ea850740ab448c38845b2de0c976ab9380404a1.jpg",
        "featured": false
      },
      {
        "title": "Gif without the GIF",
        "url": "https://calendar.perfplanet.com/2017/animated-gif-without-the-gif",
        "description": "GIFs are awesome but terrible for quality and performance. Replacing GIFs with movies\n\nis better but has performance drawbacks: not preloaded, uses range requests, etc. Now you can use an image and set an mp4 as source in Safari Technology Preview. This article illustrates this approach and its results.",
        "imageUrl": "./5e6c43ce5513b73b2962c79615a8c523dad29857ad69e217ae664330adb80930.jpg",
        "featured": false
      },
      {
        "title": "Building Better UI Designs With Layout Grids",
        "url": "https://smashingmagazine.com/2017/12/building-better-ui-designs-layout-grids",
        "description": "Designing for multiple screens has become integral to businesses. Learn how grids can help you build better web designs.",
        "imageUrl": "./1dae42a20b5742cc7e9527d4c955e5531b27e290b30fdb630e905f73fa559c44.png",
        "featured": false
      }
    ],
    "book": {
      "title": "RESTful API Design",
      "author": "Matthias Biehl",
      "description": "this book is packed with best practices on many technical aspects of RESTful API Design, such as the correct use of resources, URIs, representations, content types, data formats, parameters, HTTP status codes and HTTP methods. You want to design and develop APIs like a Pro? Use API description languages to both design APIs and develop APIs efficiently. The book introduces the two most common API description languages RAML and OpenAPI/Swagger",
      "coverImageUrl": "./28aacc6a13ca1347c15c3795f8d6bcb239721dbccca6de24ceed1765e89588ee.jpg",
      "amazonUs": "https://www.amazon.com/dp/1514735164/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1514735164/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 41,
    "title": "Artwork Personalization at Netflix",
    "slug": "2017-12-25-041-artwork-personalization-at-netflix",
    "date": "2017-12-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #51, 2017",
    "quote": {
      "text": "It's still magic even if you know how it's done",
      "author": "Terry Pratchett",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Terry_Pratchett"
    },
    "links": [
      {
        "title": "Artwork Personalization at Netflix",
        "url": "https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76",
        "description": "Netflix started a new personalization experiment. Every user now sees different movie artworks, based on their movies preference. In this engineering article, Netflix explains how this customisation is achieved and how the results are measured.",
        "imageUrl": "./d910610b6d9cfea6ead8e40afc27108ba6349a1b33a8b86dcdee5edf646794e7.jpg",
        "featured": true
      },
      {
        "title": "Learned Index Structures",
        "url": "https://arxiv-vanity.com/papers/1712.01208v1",
        "description": "A B-Tree-Index is a model to map a key to the position of a record within a sorted array, a Hash-Index as a model to map a key to a position of a record within an unsorted array, and a BitMap-Index as a model to indicate if a data record exists or not. In this exploratory research paper by MIT and Google, this premise is used to hypothesize the possibility to create an indexing model that can find it's own optimal internal representation using deep learning.",
        "imageUrl": "./3477978133d80e3df103420183411371d9d62436573e8839291f3e9f09116d11.png",
        "featured": false
      },
      {
        "title": "19 web design trends for 2018",
        "url": "https://webflow.com/blog/19-web-design-trends-for-2018",
        "description": "Discover the web design trends, techniques, and tools that will define website and digital product design in 2018 — and beyond.",
        "imageUrl": "./72cecd8ae41938019779bd8d3d4d4a4672a2b1c17fe98b8b7845c161e2dd90b9.jpg",
        "featured": false
      },
      {
        "title": "A Guide to Learning CSS Grid Layout",
        "url": "http://learncssgrid.com/",
        "description": "A comprehensive guide to help you understand and learn CSS Grid Layout, by Jonathan Suh.",
        "imageUrl": "./c244f4326849dafc60fb20d137168b444f29a18651dfa6dbff39453fc6071609.jpg",
        "featured": false
      },
      {
        "title": "📦 Parcel",
        "url": "https://parceljs.org/",
        "description": "Blazing fast, zero configuration web application bundler. An interesting alternative to Webpack.",
        "imageUrl": "./047a747f3593823358aab7681c6a40c45888dc45198d13b68c5ca250142aa854.jpg",
        "featured": false
      },
      {
        "title": "React Fundamentals and Advanced Patterns",
        "url": "https://blog.kentcdodds.com/learn-react-fundamentals-and-advanced-patterns-eac90341c9db",
        "description": "Two and a half hours of beginner and advanced React material available for FREE on egghead.",
        "imageUrl": "./24159f12f526b3c9e770a1a465d83991885dac7aaa3ed1d76cbcef4feb834ae7.jpg",
        "featured": false
      },
      {
        "title": "Learn Redis the hard way (in production)",
        "url": "http://tech.trivago.com/2017/01/25/learn-redis-the-hard-way-in-production",
        "description": "Trivago adopts Redis a lot for their cloud infrastructure. The use cases vary: Caching, temporary storage of data before moving those into another storage or a typical database for hotel metadata including persistence. In this article, they describe their experience with Redis and how they learned to use it at best after a number of failures in production.",
        "imageUrl": "./52417e79be6321e87e4ac13a93d526b7d608a1729d7d37f93280b22d611de432.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "SQL Pocket Guide: A Guide to SQL Usage",
      "author": "Jonathan Gennick",
      "description": "If you're a programmer or database administrator who uses SQL in your day-to-day work, this popular pocket guide is the ideal on-the-job reference. You'll find many examples that address the language's complexity, along with key aspects of SQL used in IBM DB2 Release 9.7, MySQL 5.1, Oracle Database 11g Release 2, PostgreSQL 9.0, and Microsoft SQL Server 2008 Release 2. SQL Pocket Guide describes how these database systems implement SQL syntax for querying, managing transactions, and making changes to data. It also shows how the systems use SQL functions, regular expression syntax, and type conversion functions and formats.",
      "coverImageUrl": "./35a5ca46259353653af886e2e2f8fc5d46ab2919392341b928656ba9804d943e.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449394094/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449394094/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 40,
    "title": "Big-O Algorithm Complexity Cheat Sheet",
    "slug": "2017-12-18-040-big-o-algorithm-complexity-cheat-sheet",
    "date": "2017-12-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #50, 2017",
    "quote": {
      "text": "In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg",
      "author": "Bjarne Stroustrup",
      "authorTitle": "Computer scientist and C++ inventor",
      "authorUrl": "https://en.wikipedia.org/wiki/Bjarne_Stroustrup"
    },
    "links": [
      {
        "title": "Big-O Algorithm Complexity Cheat Sheet",
        "url": "http://bigocheatsheet.com/",
        "description": "This webpage covers the space and time Big-O complexities of common algorithms used in Computer Science.  Extremely useful to understand these concepts better and to get ready for for your next technical interviews.",
        "imageUrl": "./df4950d357f19a0cec848f7e2c02a90b735ce488a0b63e5eea8a26d0377967c4.png",
        "featured": true
      },
      {
        "title": "Why CSS Grid is better than Bootstrap",
        "url": "https://hackernoon.com/how-css-grid-beats-bootstrap-85d5881cf163",
        "description": "CSS Grid is a new way of creating layouts on the web. For the first time ever we have a proper layout system available natively in the browser and we don't have to rely on heavy and opinionated frameworks like Bootstrap.",
        "imageUrl": "./d5dd132480cf8c499f12e0fb33a6b4a3871e89e802006b761044c624c65bde81.png",
        "featured": false
      },
      {
        "title": "How WebRender gets rid of jank",
        "url": "https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank",
        "description": "The Firefox Quantum release is getting close. It brings many performance improvements, including the super fast CSS engine that we brought over from Servo.",
        "imageUrl": "./c42e5a4e22ab447ec7616a193d21ec28f9e73421a6537b494dfbdd1c1b539d3b.jpg",
        "featured": false
      },
      {
        "title": "Database guide for Mobile App Developers",
        "url": "https://www.simform.com/mobile-app-developers-database-selection/",
        "description": "A lengthy but extremely digestible guide on the different database/storage systems and their characteristics, to help you select the right one based on your next mobile app requirements.",
        "imageUrl": "./f39edd6597d9e903fb118f5413a433583de25ebbccd0d435056a2f12d48c4930.png",
        "featured": false
      },
      {
        "title": "Zigzag Image–Text Layouts Make Scanning Less Efficient",
        "url": "https://nngroup.com/articles/zigzag-page-layout",
        "description": "In two-column layouts, vertically aligned images support efficient scanning better than images that alternate placement with text.",
        "imageUrl": "./53e1889b24ec6b5327d7b0992bfba905cece570fa6132b4534a22bc8f3037a6f.jpg",
        "featured": false
      },
      {
        "title": "State of JavaScript in 2017",
        "url": "https://medium.freecodecamp.org/a-look-back-at-the-state-of-javascript-in-2017-a5b7f562e977",
        "description": "In advance of the 2017 State of JS survey results, our panel of experts looks back on the past year",
        "imageUrl": "./53e54a5e7f7d065da571f0571d4fce2bfe5f49dcd4540adba4f973f1791f69c9.jpg",
        "featured": false
      },
      {
        "title": "I just deployed a serverless app and I can’t code",
        "url": "https://medium.freecodecamp.org/i-just-deployed-a-serverless-app-and-i-cant-code-here-s-how-i-did-it-94983d7b43bd",
        "description": "A story of a non-developer that managed to deploy a real, working application adopting the serverless paradigma. An interesting use case to understand how software is moving towards a more approachable direction, even for not strongly technical people.",
        "imageUrl": "./52837860f9914cc870f30ead6b747b758d0cabff2b728348459d8e6271bd3d5f.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Docker in Action",
      "author": "Jeff Nickoloff",
      "description": "After starting with a clear explanation of the Docker model, you will learn how to package applications in containers, including techniques for testing and distributing applications. You will also learn how to run programs securely and how to manage shared resources. Using carefully designed examples, the book teaches you how to orchestrate containers and applications from installation to removal. Along the way, you'll discover techniques for using Docker on systems ranging from dev-and-test machines to full-scale cloud deployments.",
      "coverImageUrl": "./f7904cb457d00eac2148258f1c19521c542a8bdd85bebcf49fa71431fd10b07f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1633430235/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1633430235/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 39,
    "title": "Securing Serverless Applications",
    "slug": "2017-12-11-039-securing-serverless-applications",
    "date": "2017-12-11",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #49, 2017",
    "quote": {
      "text": "Computers are like Old Testament gods; lots of rules and no mercy",
      "author": "Joseph Campbell",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Campbell"
    },
    "links": [
      {
        "title": "Securing Serverless Applications",
        "url": "https://youtube.com/watch?v=B3j4xql7we0",
        "description": "You need a new approach to security for serverless applications. Classic approaches just don’t make sense, because tools and process can only take you so far. This video from the latest AWS re:Invent will guide you step by step to securing your serverless applications.",
        "imageUrl": "./a8d1f4668bb79bd41e867cb976e3de47b3259485fe5354c46f5273fb9ae90b89.jpg",
        "featured": true
      },
      {
        "title": "Video Guide to AWS ECS and Docker",
        "url": "http://awsdevops.io/courses/190849",
        "description": "A Conceptual Exploration of Deploying Docker-based Apps and Services to AWS EC2 Container Service. A video course made \"For Humans\".",
        "imageUrl": "./cc5a12be87e40d63cd51ad9062b2807c900bc70981b77ecce93a260da79e5596.jpg",
        "featured": false
      },
      {
        "title": "A Deep Dive into InfluxDB",
        "url": "https://blog.codeship.com/a-deep-dive-into-influxdb/",
        "description": "This article focus on InfluxDB, a database optimized to store and run time-series data.\n\nInflux can help us to gather metrics and understand how our applications are performing. If you are interested in these kind of topics, this article is worth checking it out.",
        "imageUrl": "./486fa7d2c1a213b97f76cdbb58f712750b3e8903337e776cf591ef6241ba2a9c.png",
        "featured": false
      },
      {
        "title": "Why CSS Grid is better than Bootstrap for creating layouts",
        "url": "https://hackernoon.com/how-css-grid-beats-bootstrap-85d5881cf163",
        "description": "CSS Grid is a new way of creating layouts on the web. For the first time ever we have a proper layout system available natively in the browser.",
        "imageUrl": "./d603ee8c95d5d4d93762160ba1e4139c74720a660a44ed9a1c84c0f7f5a9a91b.jpg",
        "featured": false
      },
      {
        "title": "Turbo: 5x faster than Yarn & NPM",
        "url": "https://medium.com/@ericsimons/introducing-turbo-5x-faster-than-yarn-npm-and-runs-natively-in-browser-cc2c39715403",
        "description": "A NEW alternative to yarn and NPM to install dependencies in JavaScript. Turbo claims to be 5 times faster than its competitors and it also runs natively in the browser!",
        "imageUrl": "./af35adfd827187d204aad0594b48b37b987a6962e5f61300defd90a8d8433e63.jpg",
        "featured": false
      },
      {
        "title": "React v16.2.0: Improved Support for Fragments",
        "url": "https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html",
        "description": "React 16.2 is now available! The biggest addition is improved support for returning multiple children from a component’s render method. We call this feature fragments : Fragments look like empty JSX tags. They let you group a list of children without adding extra nodes to the DOM.",
        "imageUrl": "./d2cb3ad4505d54a3fdff0b1ab312e32017b8d9c86f2130e0130122118491da07.jpg",
        "featured": false
      },
      {
        "title": "SMS Notifications with AWS Lambda, JavaScript and Twilio",
        "url": "https://www.twilio.com/blog/2017/12/automated-sms-notifications-aws-lambda-javascript-twilio-sms-apis.html",
        "description": "A beginners tutorial on how to use AWS Lambda and Twilio SMS API to build a little application that can keep us informed on the current exchange rate for a given set of currencies.",
        "imageUrl": "./729d78395b051ade17e686f1d1096b86bbde8409e928b817a6a66fa046080c3e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Web Development with Node and Express: Leveraging the JavaScript Stack",
      "author": "Ethan Brown",
      "description": "Learn how to build dynamic web applications with Express, a key component of the Node/JavaScript development stack. In this hands-on guide, author Ethan Brown teaches you the fundamentals through the development of a fictional application that exposes a public website and a RESTful API. You’ll also learn web architecture best practices to help you build single-page, multi-page, and hybrid web apps with Express.",
      "coverImageUrl": "./fa50d6bec7065a557f93ff1ccee308384e327bc7bdc62dab9513ef493759a11f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491949309/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491949309/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 38,
    "title": "Making Promises safer in Node.js",
    "slug": "2017-12-04-038-making-promises-safer-in-node-js",
    "date": "2017-12-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #48, 2017",
    "quote": {
      "text": "Computers are useless.  They can only give you answers",
      "author": "Pablo Picasso",
      "authorTitle": "Artist",
      "authorUrl": "https://en.wikipedia.org/wiki/Pablo_Picasso"
    },
    "links": [
      {
        "title": "Making Promises safer in Node.js",
        "url": "https://www.nearform.com/blog/making-promises-safer-in-node-js/",
        "description": "Promises can be a powerful choice for a project, but before buying into them there are some pitfalls to be aware of. Be sure to check this article out if you are a Node.js/JavaScript developer.",
        "imageUrl": "./4496ccc87c7b6c19252eff0cfd6b24152a4f4c313a6ea3ce32a49b1b5829a463.png",
        "featured": true
      },
      {
        "title": "Design Systems Handbook",
        "url": "https://designbetter.co/design-systems-handbook",
        "description": "A design system unites product teams around a common visual language. In this book, learn how you can create a design system and help your team improve product quality while reducing design debt.",
        "imageUrl": "./5976929ac1a59d7b4b89e0ccb6eaf8e1112987e8fd087e3c5e9dfd2aaa38101d.jpg",
        "featured": false
      },
      {
        "title": "The Future is Without Apps",
        "url": "https://medium.com/fwd-thoughts/the-future-is-without-apps-ddf43ec52aab",
        "description": "Apparently, the tech world is moving in a direction where the web is more and more empowered. The more capabilities we will give to the web, the more likely we won't need native apps anymore. This article explores this theme and tries to predict what the future of mobile apps will be.",
        "imageUrl": "./097f18ecc068867398b8864712b2a8e9bfd9affdd2a3d7d5b7bb42ef0dc1f461.jpg",
        "featured": false
      },
      {
        "title": "TLDR pages",
        "url": "http://tldr.sh/",
        "description": "A fantastic command line utility that is meant to replace man pages. It gives you a much digestible summary of how to use common command line utilities (tar, curl, etc.), focusing on practical examples more than illustrating all the possible available options.",
        "imageUrl": "./f6c0dde9875007405cc286642e083a695278ab3a9b471ff62f8f32806e5c0b62.png",
        "featured": false
      },
      {
        "title": "The Architecture of Open Source Applications: nginx",
        "url": "http://aosabook.org/en/nginx.html",
        "description": "An evergreen article about the architecture of one of the most famous web servers: Nginx. Nginx was built with some radical design choices aimed at achieving great performance and high concurrency and this architecture influenced other projects like Node.js. A must read if you are passioned about systems and software design.",
        "imageUrl": "./d7fe164a5b750d0cd6d38b5bbd798e4229407bb0657eba6942efea1e2d148b10.png",
        "featured": false
      },
      {
        "title": "DESIGNERCIZE",
        "url": "https://designercize.com/",
        "description": "If you are looking for new crazy design challenges or you just want to make fun of a designer colleague, this game is definitely for you. It will automatically generate design specifications that you will have to fulfil in a given time frame. Better enjoyed with company...",
        "imageUrl": "./9ff16d790f4cf4c130d595078dfa095d420d6aba56f0b1ac9500294a5291e684.jpg",
        "featured": false
      },
      {
        "title": "Quick Code",
        "url": "http://quickcode.co/",
        "description": "A fantastic collection of free tutorials and online video courses for the web, mobile, chatbot, AR/VR development, database management, data science, web design and cryptocurrency. A great starting point if you want to approach software development or expand your knowledge in new areas.",
        "imageUrl": "./7bc9acb76133e25f68650f930f5fecc37ac3a7ab0c28bb107a48a40ac3b10c61.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Modern PHP: New Features and Good Practices",
      "author": "Josh Lockhart",
      "description": "PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you’ll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries. Author Josh Lockhart—creator of PHP The Right Way, a popular initiative to encourage PHP best practices—reveals these new language features in action. You’ll learn best practices for application architecture and planning, databases, security, testing, debugging, and deployment.",
      "coverImageUrl": "./418bba906f21b114b5c7dcb0d9e0d7c44a714c727d1cf0edbb7f097a7406b2d5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491905018/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491905018/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 37,
    "title": "Announcing TensorFlow Lite",
    "slug": "2017-11-27-037-announcing-tensorflow-lite",
    "date": "2017-11-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #47, 2017",
    "quote": {
      "text": "The difference between theory and practice is that in theory, there is no difference between theory and practice",
      "author": "Richard Moore",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Richard_Moore"
    },
    "links": [
      {
        "title": "Announcing TensorFlow Lite",
        "url": "https://developers.googleblog.com/2017/11/announcing-tensorflow-lite.html",
        "description": "Google just released a lighter version of their famous Machine Learning framework TensorFlow that targets mobile and embedded devices. With this new version new possibilities are unlocked especially where performance matters, so if you are starting to explore Machine Learning or you are already proficient with it, this is worth checking out.",
        "imageUrl": "./732e46891844d35e49d6937f877f283757edf9f60801db5f17abcbbc842007a2.jpg",
        "featured": true
      },
      {
        "title": "The Cost Of JavaScript",
        "url": "https://medium.com/dev-channel/the-cost-of-javascript-84009f51e99e",
        "description": "A fantastic article by Addy Osmani that illustrates a number of different techniques that you can use while packaging your JavaScript code to make it smaller and more efficient for the browser to download and execute. A must read if you ever have to release frontend facing code (who doesn't!).",
        "imageUrl": "./3fbad9ae5a4fe77c2790745a8617db68da545d23a69d718fde60d31a9879444c.jpg",
        "featured": false
      },
      {
        "title": "The Most Important Rule in UX Design that Everyone Breaks",
        "url": "https://blog.prototypr.io/the-most-important-rule-in-ux-design-that-everyone-breaks-1c1cb188931",
        "description": "This article explores the \"Miller's law\", a well known (but also well forgotten) principle applied mostly to improve User Experience design. The same principle can be applied in many other fields, including personal life management. If you never heard about the Miller's law, be sure to check this article out.",
        "imageUrl": "./9d39e81b1cc198aad56435a0a9bb516e7949f35020db5df4d8c210e5fc651525.jpg",
        "featured": false
      },
      {
        "title": "Optimizing web servers for high throughput and low latency",
        "url": "https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency",
        "description": "This article from the Dropbox Traffic Team explores different ways to tune web servers and proxies. It will give you a lot of practical insights if you are looking to improve reliability, performance, and efficiency of a web server.",
        "imageUrl": "./2484283d7aebb4995440c1d6f3bc3b6170c3d1846661901d882eb4c673f79ed2.jpg",
        "featured": false
      },
      {
        "title": "Introducing security alerts on GitHub",
        "url": "https://github.com/blog/2470-introducing-security-alerts-on-github",
        "description": "Last month, GitHub made easier to keep track of the projects your code depends on with the dependency graph, currently supported in Javascript and Ruby. Check out this new feature that will help you to trust external dependencies more and to keep your codebase more secure.",
        "imageUrl": "./b96ba35966e418576cd787e524673170a71d3898c75f9415b7346295de8848ae.jpg",
        "featured": false
      },
      {
        "title": "WebAssembly in browsers",
        "url": "https://blog.mozilla.org/blog/2017/11/13/webassembly-in-browsers",
        "description": "Apple and Microsoft are shipping WebAssembly support in the latest versions of Safari and Edge, so all four major browsers can now run code compiled to the super-fast wasm format. Are you ready to start shipping some WebAssembly?",
        "imageUrl": "./2add23118e6e4b6fb664c801ff74f17f501918bf54617e1b8ee142fd25fdbe80.jpg",
        "featured": false
      },
      {
        "title": "Netflix functions without client-side React",
        "url": "https://jakearchibald.com/2017/netflix-and-react",
        "description": "Netflix improved performance by deferring react on the client, but this doesn't reflect badly on React. In this article by Jake Archibald, you can get a different perspective on how to use React and how it affects server and client-based rendering.",
        "imageUrl": "./4e5f1ae3a5e30b9098c47170aeba201903baaa90ca8a946cc04b4edb5310c84d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elixir in Action",
      "author": "Saša Jurić",
      "description": "Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime.",
      "coverImageUrl": "./490e43e003f0e552efa4caaeaf3601ab5225c857e806244ebb7a236234ac2ca7.jpg",
      "amazonUs": "https://www.amazon.com/dp/161729201X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/161729201X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 36,
    "title": "Neural network image super-resolution and enhancement",
    "slug": "2017-11-20-036-neural-network-image-super-resolution-and-enhancement",
    "date": "2017-11-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #46, 2017",
    "quote": {
      "text": "To err is human, but to really foul things up you need a computer",
      "author": "Paul Ehrlich",
      "authorTitle": "Physician and scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Paul_Ehrlich"
    },
    "links": [
      {
        "title": "Neural network image super-resolution and enhancement",
        "url": "https://letsenhance.io/",
        "description": "Free service to upscale and improve your photos and images using state-of-art neural networks.",
        "imageUrl": "./0a7531b0c9d86318cda5e7307cef2830cde05e8c5ce5baf05cfd5c4f23c990f5.jpg",
        "featured": true
      },
      {
        "title": "Use SVG as Placeholders, and Other Image Loading Techniques",
        "url": "https://medium.freecodecamp.org/using-svg-as-placeholders-more-image-loading-techniques-bed1b810ab2c",
        "description": "An interesting and detailed article that explores different new techniques to create image placeholders.",
        "imageUrl": "./e4908aa321b742bd19019729cf681df6b045e4354dc3083ccd51fd859ba86dcb.jpg",
        "featured": false
      },
      {
        "title": "React: Forms, Inputs and Events",
        "url": "https://medium.com/capital-one-developers/how-to-work-with-forms-inputs-and-events-in-react-c337171b923b",
        "description": "This article covers how to capture text input and input via other form elements like <input>, <textarea>, and <option>. Working with them is paramount to web development because they allow our applications to receive data (e.g. text) and actions (e.g. clicks) from users.",
        "imageUrl": "./96af22a48c6ed807d5ae898939a4045387202859487bdf3e4ca52041cbcfb004.png",
        "featured": false
      },
      {
        "title": "i0natan/nodebestpractices",
        "url": "https://github.com/i0natan/nodebestpractices",
        "description": "An open source list of Node.js best practices list. Curated from the top-ranked articles and very often updated. Definitely, a not-to-be-missed if you are into Node.js or JavaScript.",
        "imageUrl": "./856685e5be74c4fb991192188b6bf1b0b2b42cbab8196d061c57cf0fffe9e62d.jpg",
        "featured": false
      },
      {
        "title": "Announcing Prometheus 2.0",
        "url": "https://prometheus.io/blog/2017/11/08/announcing-prometheus-2-0",
        "description": "An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. It recently reached version 2.0 with some new interesting features.",
        "imageUrl": "./f72cff8f8200124391b60e1ce5d404eb8beb8e627fd2a52986ad5c67af2bbc94.png",
        "featured": false
      },
      {
        "title": "ES2017 Async/Await",
        "url": "https://codeburst.io/javascript-es-2017-learn-async-await-by-example-48acc58bad65",
        "description": "A set of interesting Async/Await examples, to really understand how it works and how you can take full advantage of this new ECMAScript feature.",
        "imageUrl": "./6fb7138aa94432bad99c043709da805211d0e15539f9862e7dcb0f8ab12d6cc8.jpg",
        "featured": false
      },
      {
        "title": "Write a Vue JS Wrapper Component",
        "url": "https://laravel-news.com/vue-wrapper-component",
        "description": "A Vue “wrapper” component is a technique used to integrate a 3rd party plugin with Vue by wrapping it in a custom Vue component. The wrapper technique means that you are likely bringing in a library like jQuery and a jQuery plugin.",
        "imageUrl": "./6a4c023a9b04d6e9b223192987cbe464a67a7ec58cbd1655fd290fd26e2c3454.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Mastery",
      "author": "Andy Budd",
      "description": "Fully updated to the latest CSS modules, make the journey to CSS mastery as simple and painless as possible. This book dives into advanced aspects of CSS-based design, such as responsive design, modular CSS, and CSS typography. Through a series of easy-to-follow tutorials, you will learn practical CSS techniques you can immediately start using in your daily work.",
      "coverImageUrl": "./513cab7982483119d4449542560da5b139ad8ff61b1c9e3b7d2904bd9a602db5.jpg",
      "amazonUs": "https://www.amazon.com/dp/1430258632/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1430258632/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 35,
    "title": "Sorting Algorithms Visualized",
    "slug": "2017-11-13-035-sorting-algorithms-visualized",
    "date": "2017-11-13",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #45, 2017",
    "quote": {
      "text": "Technology feeds on itself. Technology makes more technology possible",
      "author": "Alvin Toffler",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Alvin_Toffler"
    },
    "links": [
      {
        "title": "Sorting Algorithms Visualized",
        "url": "https://imgur.com/gallery/voutF",
        "description": "Visualization can greatly help you understand complex concepts. In this collection of animated visualization, you can quickly grasp how different sorting algorithms really work. Mindblowing!",
        "imageUrl": "./f915bdb5a58097e6538ff5c3aad1c1f8d4147b64aabdde6f65087302bc2f93dd.jpg",
        "featured": true
      },
      {
        "title": "Angular 5 Now Available",
        "url": "https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced",
        "description": "\"Pentagonal-donut\" is the codename for this major release of Angular. It comes with a number of new features and bug fixes. Among the many changes:  some compiler improvements, build optimization by default, improved decorators support and internationalization utilities.",
        "imageUrl": "./ff2a827b2f1460a3f79b642c24b6066bb23ebda61295da658b1939a6c71f1c75.jpg",
        "featured": false
      },
      {
        "title": "Want to know how Deep Learning works?",
        "url": "https://medium.freecodecamp.org/want-to-know-how-deep-learning-works-heres-a-quick-guide-for-everyone-1aedeca88076",
        "description": "A quick and simple guide suitable for every level of expertise to understand Artificial Intelligence (AI) and Machine Learning (ML), which undoubtedly are some of the hottest topics right now.",
        "imageUrl": "./f261f6b6298ca67b9fa8314f23d6e0beb56ec165df00d450d2c0f3e380113c13.jpg",
        "featured": false
      },
      {
        "title": "Why We Switched from Python to Go",
        "url": "https://getstream.io/blog/switched-python-go",
        "description": "Deciding on a programming language is always a difficult choice, learn why Stream switched from Python to Go as their language of choice.",
        "imageUrl": "./84996845f9caf4e9dfde111e8abb68e290bb8aef30543f8aa48c5d5876944b5c.jpg",
        "featured": false
      },
      {
        "title": "Flexbox and Grids, your layout’s best friends",
        "url": "https://aerolab.co/blog/flexbox-grids",
        "description": "CSS Flexbox and Grid layouts are not mutually exclusive. In this article, you will see how you can take advantage of the different features of the two systems and how to actually make them work together to design extremely flexible and variegated layouts.",
        "imageUrl": "./3b97fb6436533f670c915d1fe677533a7caa42d34239173f3237c2394683ce1a.jpg",
        "featured": false
      },
      {
        "title": "Fastify, fast and low overhead web framework for Node.js",
        "url": "https://www.fastify.io/",
        "description": "Fastify is a web framework highly focused on speed and low overhead. It is inspired from Hapi and Express and as far as we know, it is one of the fastest web frameworks in town. Use Fastify can increase your throughput up to 100%.",
        "imageUrl": "./d13f8da7a965c8007917d0f5e5649a3217ddefbef02c3468a9f64cad94b70b2a.png",
        "featured": false
      },
      {
        "title": "The Comic Sans Index: What Kind of Fonts Do Americans Use?",
        "url": "https://priceonomics.com/the-comic-sans-index-what-kind-of-fonts-do",
        "description": "In this article, you will find an incredibly detailed analysis of the font usage patterns of Americans. Apparently, the original goal was to answer a very important question - who likes Comic Sans?",
        "imageUrl": "./631d91a0dbc7be6444a507a2090527a0212c32bab26fc47276ae931c1129cf2d.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Node.js Design Patterns - Second Edition",
      "author": "Mario Casciaro and Luciano Mammino",
      "description": "Get the best out of Node.js by mastering  its most powerful components and patterns to create modular and scalable applications with ease. Create reusable patterns and modules by leveraging the new features of Node.js. Understand  the asynchronous single thread design of node and grasp all its features and patterns to take advantage of various functions. This unique guide will help you get the most out of Node.js and its ecosystem.",
      "coverImageUrl": "./374eb1f17899892bde81fb2a441759d118834d10c4a0c7dbcac5aed5fa2cfa8f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785885588/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785885588/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 34,
    "title": "PWAs to Windows 10",
    "slug": "2017-11-06-034-pwas-to-windows-10",
    "date": "2017-11-06",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #44, 2017",
    "quote": {
      "text": "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human",
      "author": "Alan Turing",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Turing"
    },
    "links": [
      {
        "title": "PWAs to Windows 10",
        "url": "https://www.thurrott.com/windows/windows-10/142649/microsofts-bold-plan-bring-pwas-windows-10",
        "description": "Microsoft has a bold plan to bring PWAs (Progressive Web Apps) to Windows 10 as an alternative to native Windows application. Discover more about the plan and why it can make the web even stronger.",
        "imageUrl": "./797b96f193367d5e5cf607bbf1d15cac92802ae76b423e687c5b3eb84b8da918.png",
        "featured": true
      },
      {
        "title": "Sketching Interfaces",
        "url": "https://airbnb.design/sketching-interfaces",
        "description": "Discover how Airbnb engineers managed to create a computer vision tool that is able to generate functional code from low fidelity wireframes.",
        "imageUrl": "./79577d7df63229574febb8931c00bf54f63aadeaafa758fabb30a2e5743cc4f4.jpg",
        "featured": false
      },
      {
        "title": "Enhancing a blurred QRCode",
        "url": "https://medium.freecodecamp.org/lets-enhance-how-we-found-rogerkver-s-1000-wallet-obfuscated-private-key-8514e74a5433",
        "description": "The incredible story (with an incredible level of techy details) of a group of engineers who managed to recover a blurred QR Code that lead to $1000 in Bitcoin. If you wish to understand more about QR Codes and how they work this article is a precious gem.",
        "imageUrl": "./a3bac4b6c033ff68bc22edacf2384a5acd2813210095ab4814c0d4f7962e5c9c.jpg",
        "featured": false
      },
      {
        "title": "HEML, markup for responsive emails",
        "url": "https://heml.io/",
        "description": "HEML is an open source markup language for building responsive email. It gives you the native power of HTML without having to deal with all of the email quirks. HEML makes building emails as easy as building websites.",
        "imageUrl": "./d823f5f55f0c5f6ee4e9d8ae6b3cbc7cf5c884ccce34bbc4d0ce647b8b09dfe7.png",
        "featured": false
      },
      {
        "title": "Node.js 9 now \"Current\" and Node.js 8 new LTS",
        "url": "https://medium.com/the-node-js-collection/news-node-js-8-moves-into-long-term-support-and-node-js-9-becomes-the-new-current-release-line-74cf754a10a0",
        "description": "Node.js 8 is now ready for production as it transfers into the de facto Long-Term release, while Node.js 9 is now the new \"current\" release line.",
        "imageUrl": "./256236f0e77514bc47cf21be5a9971ce076501aea00c816dccb243255ba7d64d.jpg",
        "featured": false
      },
      {
        "title": "A free guide to <head> elements",
        "url": "http://gethead.info/",
        "description": "A free and super friendly guide to <html> elements. The guide is very well structured and it provides different levels of details, from minimal websites with minimal markup to a full blow collection of things that you might want to have in your HTML page for achieving maximum integration with the rest of the internet!",
        "imageUrl": "./46d3732c0f40765510f4b4bc1cb43799d9dc1237cea83cd13f6962ea176b9363.png",
        "featured": false
      },
      {
        "title": "I've seen heaven. And it's written in JavaScript.",
        "url": "https://dev.to/bitario/the-beauty-of-react-native-920",
        "description": "An opinionated but interesting piece that provides several reasons to back the claim \"React Native is the Future\".",
        "imageUrl": "./eed23a054f07fb3283e2843d2b692f2496e527d430a622d4c2228b1342b11618.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise",
      "author": "Martin L. Abbott and Michael T. Fisher",
      "description": "Writing for technical and nontechnical decision-makers, Abbott and Fisher cover everything that impacts scalability, including architecture, process, people, organization, and technology. Their insights and recommendations reflect more than thirty years of experience at companies ranging from eBay to Visa, and Salesforce.com to Apple. You’ll find updated strategies for structuring organizations to maximize agility and scalability, as well as new insights into the cloud (IaaS/PaaS) transition, NoSQL, DevOps, business metrics, and more. Using this guide’s tools and advice, you can systematically clear away obstacles to scalability–and achieve unprecedented IT and business performance.",
      "coverImageUrl": "./27758fc426f7d2d06617adef6757d946de680ad0276de90acaaf5ee4c6715d29.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134032802/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134032802/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 33,
    "title": "Taking PHP Seriously",
    "slug": "2017-10-30-033-taking-php-seriously",
    "date": "2017-10-30",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #43, 2017",
    "quote": {
      "text": "Companies spend millions of dollars on firewalls, encryption and secure access devices, and it’s money wasted, because none of these measures address the weakest link in the security chain",
      "author": "Kevin Mitnick",
      "authorTitle": "Auhor and Security Consultant",
      "authorUrl": "https://en.wikipedia.org/wiki/Kevin_Mitnick"
    },
    "links": [
      {
        "title": "Taking PHP Seriously",
        "url": "https://slack.engineering/taking-php-seriously-cf7a60065329",
        "description": "Keith Adams from Slack Engineering illustrates the pros and cons of PHP and explains why, even though it doesn't have the best reputation, it's still a great language to build complex applications.",
        "imageUrl": "./0f4a1c85dda57db976a7feba663d6308d51d558b24157d4792050317b80217dd.jpg",
        "featured": true
      },
      {
        "title": "Saying Goodbye to Firebug",
        "url": "https://hacks.mozilla.org/2017/10/saying-goodbye-to-firebug",
        "description": "When it came out in 2005, Firebug was the first tool to let programmers inspect, edit, and debug code right in the Firefox browser. Over its 12-year lifespan, the open source tool developed a near cult following among web developers. Today we have to say goodbye to it...",
        "imageUrl": "./96435a6ffa7616feb558ae1471e22ee8df150bcf1af3c5a305a45ca5222cbeb1.jpg",
        "featured": false
      },
      {
        "title": "Building Better Interfaces with SVG",
        "url": "http://slides.com/sarasoueidan/building-better-interfaces-with-svg",
        "description": "A fantastic presentation by Sara Soueidan about the capabilities of SVG and why you should use this technology when developing your web interfaces.",
        "imageUrl": "./a27e01eae3c03b4078aab703cea34b3fc349c7fee0d94d04810cd8acdcdf7094.jpg",
        "featured": false
      },
      {
        "title": "Modern JavaScript Explained For Dinosaurs",
        "url": "https://medium.com/@peterxjang/modern-javascript-explained-for-dinosaurs-f695e9747b70",
        "description": "Learning modern JavaScript is tough if you haven’t been there since the beginning. This article illustrates why in a funny and thought-challenging way!",
        "imageUrl": "./d2e46c15fa057d3f16d3b8849b0eb22d3b38ac58520755ac200c05b6c2ad834b.jpg",
        "featured": false
      },
      {
        "title": "Google and the Resurgence of Italian Design",
        "url": "https://blog.prototypr.io/google-and-the-resurgence-of-italian-design-e9234cf3d073",
        "description": "Once upon a time, we had products that were colorful, in shapes that were quirky, whimsical, and expressive. Interesting! And then, almost every tech product became white, silver, gray, black, flat, square, round, and minimalist. Boring.\nBut there are hints that this is changing. And one of the leaders of this change is, somewhat improbably, Google.",
        "imageUrl": "./b962c6a79507463014f20e1f8e5613a00be3d0e7d7b63b20a6075bd7fd172fc3.jpg",
        "featured": false
      },
      {
        "title": "Event loop and async programming in JavaScript",
        "url": "https://blog.sessionstack.com/how-javascript-works-event-loop-and-the-rise-of-async-programming-5-ways-to-better-coding-with-2f077c4438b5",
        "description": "An interesting article about the internals of JavaScript and its single-threaded environment. The article illustrates pros and cons of this model and it also provides 5 tips on how to write cleaner code with async/await.",
        "imageUrl": "./d6fbf2a051a3c1008ed0166ff6605f6d3f79ba90f8561d6d84e98eb5212e0e74.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Guessing Game",
        "url": "https://javascript-game.firebaseapp.com/",
        "description": "You know there are too many JS libraries when there is a game for it. Can you guess the library from its logo? If you do you definitely are a JavaScript master!",
        "imageUrl": "./b4df6e24e471e26cbdbb8b24e1a1232b85a8a8591323572a7c99aed9fb79cb4b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Linux Pocket Guide: Essential Commands",
      "author": "Daniel J. Barrett",
      "description": "If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash. Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers. Selected topics include:The filesystem and shell, File creation and editing, Text manipulation and pipelines, Backups and remote storage, Viewing and controlling processes, User account management, Becoming the superuser, Network connections, Audio and video, Installing softwar, Programming with shell scripts.",
      "coverImageUrl": "./fcd1dd45a11d838bd7fffe901365729615e97b5a211cd1a7b7ef779c02fffe5d.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491927577/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491927577/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 32,
    "title": "Confessions of an impostor",
    "slug": "2017-10-23-032-confessions-of-an-impostor",
    "date": "2017-10-23",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #42, 2017",
    "quote": {
      "text": "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years",
      "author": "John Von Neumann",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/John_von_Neumann"
    },
    "links": [
      {
        "title": "Confessions of an impostor",
        "url": "https://www.smashingmagazine.com/2017/10/confessions-impostor-syndrome/",
        "description": "it’s time to shed some light on what impostor syndrome is, how we suffer from it day to day in our jobs, why it happens and what we can do about it. This article will, hopefully, guide you through some seldom-spoken aspects of this phenomenon in our industry.",
        "imageUrl": "./31ae03cbf8314868e55f574bdbbb0f02b30db06f7c5f2931579508f7df39a5fd.png",
        "featured": true
      },
      {
        "title": "KRACK Attacks: Breaking WPA2",
        "url": "https://krackattacks.com/",
        "description": "This website presents the Key Reinstallation Attack (KRACK). It breaks the WPA2 protocol by forcing nonce reuse in encryption algorithms used by Wi-Fi.",
        "imageUrl": "./3408f0ecf8cab90580ffe393473361bb76363136cdd2187dd22f00df3138f5a0.png",
        "featured": false
      },
      {
        "title": "The 6 Fundamental Concepts of Systems Thinking",
        "url": "https://medium.com/disruptive-design/tools-for-systems-thinkers-the-6-fundamental-concepts-of-systems-thinking-379cdac3dc6a",
        "description": "In this series on systems thinking, the author shares the key insights and tools needed to develop and advance a systems mindset for dealing with a systems mindset for dealing with complex problem solving.",
        "imageUrl": "./52735c81ab10f8d967d3a3ac1b4ade809459d9bcf5f22b9fe3ff3f3917829dde.jpg",
        "featured": false
      },
      {
        "title": "Bootstrap 4 Design Blocks",
        "url": "https://froala.com/design-blocks",
        "description": "Design blocks are the building blocks for creating beautiful websites. Froala Design blocks consist of over 170 FREE blocks based on Bootstrap 4.",
        "imageUrl": "./a859f2f8f6297aa1ff6f5837e39e88af992483d81b76a5bdc45720d2a27d3e44.jpg",
        "featured": false
      },
      {
        "title": "The History of the Ampersand",
        "url": "https://medium.com/black-lion-banner/the-history-of-the-ampersand-c81839171940",
        "description": "These days everybody knows about the ampersand. It’s one of typography’s most unique and interesting characters. If you are curious about typography or design in general, you can't miss this article.",
        "imageUrl": "./a9b10f5b0678acb20a891715250a09292ae58fe50630a812958aeaf8b91f7e4a.jpg",
        "featured": false
      },
      {
        "title": "tessalt/echo-chamber-js",
        "url": "https://github.com/tessalt/echo-chamber-js",
        "description": "A fancy and ironic project, that re-implements a client-side comments system (like Disqus) but where only the authors of every comment will be able to read it!",
        "imageUrl": "./800a9b855ee733c736e8ce46f182428a6a34b9800000cbc9220b13044fe29413.jpg",
        "featured": false
      },
      {
        "title": "Cheat Sheets for Machine Learning",
        "url": "https://startupsventurecapital.com/essential-cheat-sheets-for-machine-learning-and-deep-learning-researchers-efb6a8ebd2e5",
        "description": "Learning machine learning and deep learning is difficult for newbies. As well as deep learning libraries are difficult to understand. With this cheatsheet, you can have a nice recap of things you might forget along the way.",
        "imageUrl": "./69c8e9a1ddff5d802db54b12414f71bf317bdf7f4f5992487249977353f85825.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "React.js Essentials",
      "author": "Artemij Fedosejev",
      "description": "A fast-paced guide to designing and building scalable and maintainable web apps with React.js. Begin by exploring how you can create single and multiple user interface elements. Create stateless and stateful components and make them reactive, learn to interact between your components and lifecycle methods and gauge how to effectively integrate your user interface components with other JavaScript libraries. Delve deep into the core elements of the Flux architecture and learn how to manage your application using stores. Finish by going that extra mile with the Jest test framework, running multiple tests on your application and find solutions to scale it further without complexity.",
      "coverImageUrl": "./eb95347c1c0e80dbd4676f9526e1a8610c6ada33f97b47b2a0d06ce514d88632.jpg",
      "amazonUs": "https://www.amazon.com/dp/1783551623/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1783551623/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 31,
    "title": "The Dangers of CSV Injection",
    "slug": "2017-10-16-031-the-dangers-of-csv-injection",
    "date": "2017-10-16",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #41, 2017",
    "quote": {
      "text": "I think computer viruses should count as life.  I think it says something about human nature that the only form of life we have created so far is purely destructive.  We’ve created life in our own image",
      "author": "Stephen Hawking",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Stephen_Hawking"
    },
    "links": [
      {
        "title": "The Dangers of CSV Injection",
        "url": "http://georgemauer.net/2017/10/07/csv-injection.html",
        "description": "Did you ever thought about SQL injections but for Excel? Maybe it sounds like a crazy useless idea, but in reality, it might be more dangerous than you think!",
        "imageUrl": "./9a3e3091a5c436384ebba52dfb4783e04e68315bcb66e8cba7ca91cc35252280.png",
        "featured": true
      },
      {
        "title": "Image Effects with CSS",
        "url": "http://bennettfeely.com/image-effects",
        "description": "A collection of CSS snippets to create fast, complex image effects for websites.",
        "imageUrl": "./439fa3963cecb2b180e08406fbf03d302ba031c8b13bfd9a51a006b1df388f61.jpg",
        "featured": false
      },
      {
        "title": "Determinism in League of Legends",
        "url": "https://engineering.riotgames.com/news/determinism-league-legends-unified-clock",
        "description": "This post covers the single largest area of effort required to achieve determinism: the unified clock. You’ll learn how you can measure time in games by following the best practices adopted by Riot Games for League of Legends.",
        "imageUrl": "./55ba35defe7d99f3bc32df7dfdad4ee1cc4283d6453a01d9d4f9960a2f77d15d.jpg",
        "featured": false
      },
      {
        "title": "CSS Grid Challenge",
        "url": "https://smashingmagazine.com/2017/10/css-grid-challenge-2017-winners",
        "description": "Discover the winners of the CSS Grid Challenge 2017 by Smashing Magazine and download all the code. A nice way to see CSS grid in action in many original ways.",
        "imageUrl": "./626766192e829aa5c3b0622da0e1d3fe72e94811a288365aa1dc4faffb370289.png",
        "featured": false
      },
      {
        "title": "CSS Grid Gotchas And Stumbling Blocks",
        "url": "https://smashingmagazine.com/2017/09/css-grid-gotchas-stumbling-blocks",
        "description": "Getting to the bottom of CSS Grid with the most common questions asked when using the specification, including gotchas and things to keep in mind.",
        "imageUrl": "./422cc473fd71bb421599fd212e215c7d93ca9cec9670cc6bcd02eca9967e6a10.png",
        "featured": false
      },
      {
        "title": "From jQuery to Vue.js",
        "url": "https://laravel-news.com/vue-js-tutorial-jquery-vue-js",
        "description": "As far as JavaScript libraries are concerned, there’s never been a more popular library than jQuery. This article aims to explore Vue.js transitioning from jQuery. A great starting point for those who are used to jQuery and want to migrate to a more modern and effective way of building interactive web apps.",
        "imageUrl": "./fd919d34e0258578aedab4a22a17ff81f6d885269837d1d7eb3ae7b7f3f48926.jpg",
        "featured": false
      },
      {
        "title": "A Look at Bootstrap 4's New CSS Reset",
        "url": "http://scotch.io/tutorials/a-look-at-bootstrap-4s-new-reset-rebootcss",
        "description": "Bootstrap introduces a renewed CSS reset stylesheet. This article goes in deep and explores all the rationale behind it and explain why it is good!",
        "imageUrl": "./19b2d28d6a8014c23aa838058fa49200615d72e122923f6438268ba65c35be4b.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Cassandra: The Definitive Guide: Distributed Data at Web Scale",
      "author": "Jeff Carpenter and Eben Hewitt",
      "description": "Imagine what you could do if scalability wasn't a problem. With this hands-on guide, you’ll learn how the Cassandra database management system handles hundreds of terabytes of data while remaining highly available across multiple data centers. This expanded second edition—updated for Cassandra 3.0 provides the technical details and practical examples you need to put this database to work in a production environment. Authors Jeff Carpenter and Eben Hewitt demonstrate the advantages of Cassandra’s non-relational design, with special attention to data modeling.",
      "coverImageUrl": "./10919e24e677765bb72655af277029f8dbb8ee40b9d66eeac77305bc7fd728c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491933666/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491933666/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 30,
    "title": "JavaScript drag and drop library",
    "slug": "2017-10-09-030-javascript-drag-and-drop-library",
    "date": "2017-10-09",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #40, 2017",
    "quote": {
      "text": "Should array indices start at 0 or 1?  My compromise of 0.5 was rejected without, I thought, proper consideration",
      "author": "Stan Kelly-Bootle",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Stan_Kelly-Bootle"
    },
    "links": [
      {
        "title": "JavaScript drag and drop library",
        "url": "https://shopify.github.io/draggable",
        "description": "Draggable is a lightweight, responsive, modern drag and drop JavaScript library – the ideal choice for adding slick native-feeling drag and drop behaviour to your web apps.",
        "imageUrl": "./8c90ab5c62689997bce22c43aaf0be94ad7c6739f2ae86a3c45c6f764419101f.jpg",
        "featured": true
      },
      {
        "title": "A Five Minutes Guide to Better Typography",
        "url": "http://pierrickcalvez.com/journal/a-five-minutes-guide-to-better-typography",
        "description": "This article illustrates all the basics you need to know about typography in an incredibly nice and digestible format.",
        "imageUrl": "./d93d37ee2ac3d4e19a1aed8827358367bbb22daddc7dfb6311c5a49332f7da37.png",
        "featured": false
      },
      {
        "title": "Serving 100 Gbps from an Open Connect Appliance",
        "url": "https://medium.com/netflix-techblog/serving-100-gbps-from-an-open-connect-appliance-cdb51dda3b99",
        "description": "An impressive Netflix case study that describes how they achieved stunning network performance on a single machine delivering data at 100 Gbps as part of their Open Connect appliance program.",
        "imageUrl": "./0fc0af8a6c8d94562030deb76b99dd6aeb9dca61040e9aae0dfc65c62e78e31a.jpg",
        "featured": false
      },
      {
        "title": "Creating Isometric Illustrations",
        "url": "https://medium.muz.li/creating-isometric-illustrations-made-simple-with-the-geometric-technique-1a58bb2bb41e",
        "description": "Learn how to quickly create Eye-Popping Isometric Graphics on the go for your design requirements.",
        "imageUrl": "./7e306e443fbf3ad27cdeb87ad39ec6a7784d5d09ebcc0687bef69489b4ae5172.jpg",
        "featured": false
      },
      {
        "title": "Essential Image Optimization",
        "url": "https://images.guide/",
        "description": "A beautifully illustrated free e-book on modern image optimization techniques. Formats, decoders, techniques for efficient compression and more are covered.",
        "imageUrl": "./cfb91b193cf3ce845b933c9cddbf712d1836eb0c03081220dd7f9e03e1bff947.jpg",
        "featured": false
      },
      {
        "title": "jeromeetienne/AR.js",
        "url": "https://github.com/jeromeetienne/AR.js",
        "description": "An efficient Augmented Reality for the Web written in JavaScript that can achieve 60fps on mobile!",
        "imageUrl": "./4b3415d596258f0666003a8fce1a20972b6ba434eaaa17d61bb331852c8a68ad.jpg",
        "featured": false
      },
      {
        "title": "Vue.js - Official Style Guide",
        "url": "https://vuejs.org/v2/style-guide",
        "description": "An official style guide for Vue-specific code directly from the Vue team. If you use Vue in a project, it’s a great reference to avoid errors, bikeshedding, and anti-patterns.",
        "imageUrl": "./a074777ab779069877335b9dfb067b3cec0fea5a87ea4c0d7f72c0a8219a1c62.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Introduction to Algorithms, Third Edition (International Edition)",
      "author": "Thomas H. Cormen",
      "description": "Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor.  Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.",
      "coverImageUrl": "./ada166c15107ba9d6c6eec0fcaaef5daa371a0f2d5e3550a7ea6e624aed90770.jpg",
      "amazonUs": "https://www.amazon.com/dp/0262533057/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0262533057/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 29,
    "title": "Winamp2-js • Winamp in your browser",
    "slug": "2017-10-02-029-winamp2-js-winamp-in-your-browser",
    "date": "2017-10-02",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #39, 2017",
    "quote": {
      "text": "UNIX is simple.  It just takes a genius to understand its simplicity",
      "author": "Dennis Ritchie",
      "authorTitle": "Computer scientist and inventor of the C language",
      "authorUrl": "https://en.wikipedia.org/wiki/Dennis_Ritchie"
    },
    "links": [
      {
        "title": "Winamp2-js • Winamp in your browser",
        "url": "https://jordaneldredge.com/projects/winamp2-js",
        "description": "A functional clone of Winamp 2.9 reimplemented in HTML5 and JavaScript so that it can run in a web page. The code is open source and available on GitHub.",
        "imageUrl": "./21c71730b861c3c26ff6bb3d1009cc05dd1c8e923a49115c0200d725c23c3b6f.jpg",
        "featured": true
      },
      {
        "title": "React v16.0 released!",
        "url": "https://reactjs.org/blog/2017/09/26/react-v16.0.html",
        "description": "Among the changes are some long-standing feature requests, including fragments, error boundaries, portals, support for custom DOM attributes, improved server-side rendering, and reduced file size.",
        "imageUrl": "./eab28b4cb123d5a9b6ac4b48c908fe17fdd77002cdfa9b67248a632b13d28983.jpg",
        "featured": false
      },
      {
        "title": "Relicensing React, Jest, Flow, and Immutable.js",
        "url": "https://code.facebook.com/posts/300798627056246",
        "description": "Facebook is going to re-license some of their most famous open source technologies including React, Jest and Immutable.js under MIT license. This is a big step forward after the heated discussion going on the web during the latest months about the current license.",
        "imageUrl": "./70062211625cf8b547a4292de82b4852b2aa8067efbc00b52ea057ae7009fced.png",
        "featured": false
      },
      {
        "title": "Designing Websites for iPhone X",
        "url": "https://webkit.org/blog/7929/designing-websites-for-iphone-x",
        "description": "Safari displays your existing websites beautifully on the edge-to-edge display of the new iPhone X. Content is automatically inset within the display’s safe area so it is not obscured by the rounded corners or the device. But the iPhone X \"notch\" might pose some new design challenges. This article will address those by using some CSS code.",
        "imageUrl": "./753bd3b8abfc238687871297167676be98a7eb5675dec7d53208d01981d7b546.jpg",
        "featured": false
      },
      {
        "title": "mbeaudru/modern-js-cheatsheet",
        "url": "https://github.com/mbeaudru/modern-js-cheatsheet",
        "description": "A fantastic cheat sheet for the JavaScript knowledge you will frequently encounter in modern projects.",
        "imageUrl": "./4344f6a5eeab56122410373c7bc6b6a7365aea6338f9853832beabf72eff4466.jpg",
        "featured": false
      },
      {
        "title": "Color, psychology and design – UX Planet",
        "url": "https://uxplanet.org/how-color-can-effect-emotion-ccab0431b1d",
        "description": "In design, the color act as a key function that grabs the attention of the user. Color is the easiest aspect to remember when come to encountering new things for the users. There are some facts that quite important when coming to color psychology.",
        "imageUrl": "./4f6f1bca49a2b3c6f8c19555a8a5d9300c6b094145a5b429b9a4a3cc1bfe5288.jpg",
        "featured": false
      },
      {
        "title": "Trace your microservices with Open Tracing",
        "url": "http://devcampy.com/talks/cncf-italy/2017/06/15/trace-your-microservices-zipkin-opentracing-php.html",
        "description": "A practical approach to OpenTracing in a set of PHP microservice applications. In this talk, we will focus on Zipkin and OpenTracing. An example of integration in an online application clarifies our needs of tracing and measuring things in our Software, simply because measure is the key to science.",
        "imageUrl": "./51cc65d59b44c84f4e27a6149e092c4a49aaac436cee68434de7e6a1e23d8f15.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Agile Web Development with Rails 5",
      "author": "Sam Ruby",
      "description": "Rails 5 and Ruby 2.2 bring many improvements, including new APIs and substantial performance enhancements, and the fifth edition of this award-winning classic is now updated! If you're new to Rails, you'll get step-by-step guidance. If you're an experienced developer, this book will give you the comprehensive, insider information you need for the latest version of Ruby on Rails.",
      "coverImageUrl": "./8ce7511fb3c8594f256f41ec4168254572d3e762c632005637323efef4d09ba0.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501712/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501712/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 28,
    "title": "Implementing system fonts on Booking.com",
    "slug": "2017-09-25-028-implementing-system-fonts-on-booking-com",
    "date": "2017-09-25",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #38, 2017",
    "quote": {
      "text": "The best way to predict the future is to implement it",
      "author": "David Heinemeier Hansson",
      "authorTitle": "Software Developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/David_Heinemeier_Hansson"
    },
    "links": [
      {
        "title": "Implementing system fonts on Booking.com",
        "url": "https://booking.design/implementing-system-fonts-on-booking-com-a-lesson-learned-bdc984df627f",
        "description": "Inspired by the recent work that Github and Medium have done to improve their fonts and thus the reading experience on their sites, this is the story of how Booking.com got to thinking about their own long-established font choices.",
        "imageUrl": "./1c849378c9dea0df070c4495655c7ffa8cc2b8232360eb05cf3e93eb1347f409.jpg",
        "featured": true
      },
      {
        "title": "CoffeeScript 2 is here...",
        "url": "http://coffeescript.org/announcing-coffeescript-2",
        "description": "This new release of the CoffeeScript language and compiler aims to bring CoffeeScript into the modern JavaScript era, closing gaps in compatibility with JavaScript while preserving the clean syntax that is CoffeeScript’s hallmark. In a nutshell:",
        "imageUrl": "./b41cbc37b3c5fb28e0158a95d68ab918c82dd2e9b155378ddfa64bb46afd161a.jpg",
        "featured": false
      },
      {
        "title": "The Father Of Mobile Computing Is Not Impressed",
        "url": "https://fastcompany.com/40435064/what-alan-kay-thinks-about-the-iphone-and-technology-now",
        "description": "Alan Kay influenced Jobs and dreamed up a digital future designed for learning and thinking. Fifty years on, but he is still waiting for his dream to come true.",
        "imageUrl": "./b699c878a7270ad682f5c8795ebcbca70105bd6478cca59a0b7c88615691c0c5.jpg",
        "featured": false
      },
      {
        "title": "Better Web Typography for a Better Web.",
        "url": "http://betterwebtype.com/",
        "description": "Better Web Type is an easy-to-follow web typography email course for web designers and web developers.",
        "imageUrl": "./56a8b5b870b53ae0bf69d77ebe7cbf6a7d2ee95fa62fe5894b11f01e135c093a.jpg",
        "featured": false
      },
      {
        "title": "mr-mig/every-programmer-should-know",
        "url": "https://github.com/mr-mig/every-programmer-should-know",
        "description": "A collection of (mostly) technical things every software developer should know",
        "imageUrl": "./34f7d55977bdb7dc86c8338e6f601028a919e3681e092ad3d70141d567db47f4.jpg",
        "featured": false
      },
      {
        "title": "\"The Notch\" and CSS",
        "url": "https://css-tricks.com/the-notch-and-css",
        "description": "Apple's iPhone X has a screen that covers the entire face of the phone, save for a \"notch\" to make space for a camera and other various components. This peculiar \"feature\" might make websites design in landscape mode challenging...",
        "imageUrl": "./75c953e1b6de077a93b6ec1689da32c656683a72eb68b36965d249ab3c8280e5.jpg",
        "featured": false
      },
      {
        "title": "Is there any value in people who cannot write JavaScript?",
        "url": "https://medium.com/@mandy.michael/is-there-any-value-in-people-who-cannot-write-javascript-d0a66b16de06",
        "description": "When every new website on the internet has perfect, semantic, accessible HTML and exceptionally executed, accessible CSS that works on every device and browser, then you can tell me that these languages are not valuable on their own. Until then we need to stop devaluing CSS and HTML.",
        "imageUrl": "./e1e74bf2bd7c0db82f3372fa72b577c48f87321892ac6805ab0d4f1c821ccbd5.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "ReactJS by Example- Building Modern Web Applications with React",
      "author": "Vipul A M",
      "description": "tarting with a project on Open Library API, you will be introduced to React and JSX before moving on to learning about the life cycle of a React component. In the second project, building a multi-step wizard form, you will learn about composite dynamic components and perform DOM actions. You will also learn about building a fast search engine by exploring server-side rendering in the third project on a search engine application. Next, you will build a simple frontpage for an e-commerce app in the fourth project by using data models and React add-ons. In the final project you will develop a complete social media tracker by using the flux way of defining React apps and know about the best practices and use cases with the help of ES6 and redux.",
      "coverImageUrl": "./a4e0dee4571c84ad4a0d244e4ef6cdb129bb9185a1fdb2fc5e8eecb99c12e3c8.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785289640/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785289640/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 27,
    "title": "Web Design in 4 minutes",
    "slug": "2017-09-18-027-web-design-in-4-minutes",
    "date": "2017-09-18",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #37, 2017",
    "quote": {
      "text": "Never trust a computer you can’t throw out a window",
      "author": "Steve Wozniak",
      "authorTitle": "American inventor & Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Wozniak"
    },
    "links": [
      {
        "title": "Web Design in 4 minutes",
        "url": "http://jgthms.com/web-design-in-4-minutes",
        "description": "Learn the basics of web design in 4 minutes with this amazing interactive tutorial.",
        "imageUrl": "./94ea70d8b0bd63106ca67d573d32a98dc4cce8b503250e94ef05624c44797d98.jpg",
        "featured": true
      },
      {
        "title": "Flat UI Elements Attract Less Attention",
        "url": "https://nngroup.com/articles/flat-ui-less-attention-cause-uncertainty",
        "description": "In an eyetracking experiment comparing different clickability clues, weak and flat signifiers required more user effort than strong ones.",
        "imageUrl": "./3ddf03b15d618f2d0fe977f21ac1b8ced8313ee762ab810b76eacb639599f281.png",
        "featured": false
      },
      {
        "title": "Why we moved from Angular 2 to Vue.js",
        "url": "https://medium.com/reverdev/why-we-moved-from-angular-2-to-vue-js-and-why-we-didnt-choose-react-ef807d9f4163",
        "description": "An interesting case study from Rever, a company that decided to ditch Angular 2.x for building their apps and migrated to Vue.js instead. The article also provides some reasons why they decided not to use React.",
        "imageUrl": "./ce62e9c249c8b412e3592bbe0ee70f8ff5de52d4db56ba54f94a544e10a5c0d4.jpg",
        "featured": false
      },
      {
        "title": "50 Things You Probably Forgot To Design",
        "url": "https://medium.com/ux-power-tools/50-things-you-probably-forgot-to-design-7a288b0ef914",
        "description": "Every time you design a website or an app there are (at least) 50 details that almost everybody forgets to think about. Password recovery flows, splash screens, welcome emails, terms of service pages, the user onboarding, etc. This article attempts to collect the most forgotten elements of design and gives insights and examples for them.",
        "imageUrl": "./80b881aa0ccbacca8a0076a2d3c35acb22843b1308645c52895bfb2c4437cf86.jpg",
        "featured": false
      },
      {
        "title": "Every JavaScript framework tutorial written more than 5 minutes ago",
        "url": "https://medium.freecodecamp.org/every-javascript-framework-tutorial-written-more-than-5-minutes-ago-f96642d4f05",
        "description": "Install, install, install, update, update, update, uh-oh",
        "imageUrl": "./6f25680fbb7d6234265af8a1f6f797e4f85bd441c404ff1f3267e71e8586891b.jpg",
        "featured": false
      },
      {
        "title": "Angular vs. React vs. Vue: A 2017 comparison",
        "url": "https://medium.com/unicorn-supplies/angular-vs-react-vs-vue-a-2017-comparison-c5c52d620176",
        "description": "Deciding on a JavaScript framework for your web application can be overwhelming. Angular and React are very popular these days, and there is even Vue.js! 😱",
        "imageUrl": "./8671c0a45e2be9546b85d35b83ea5dfa743d873052b84b4354feba871573ba40.jpg",
        "featured": false
      },
      {
        "title": "Javascript : The Curious Case of Null >= 0",
        "url": "https://blog.campvanilla.com/javascript-the-curious-case-of-null-0-7b131644e274",
        "description": "Why it’s important to read the Javascript Spec (and also to be always ready to be surprised by JavaScript :P)",
        "imageUrl": "./2c3098caf95e2a3a7cb11f27a21e8a0a1f0507e01420cb31ef46afbb6c12eca7.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Elasticsearch: The Definitive Guide: A Distributed Real-Time Search and Analytics Engine",
      "author": "Clinton Gormley",
      "description": "Whether you need full-text search or real-time analytics of structured data—or both—the Elasticsearch distributed search engine is an ideal way to put your data to work. This practical guide not only shows you how to search, analyze, and explore data with Elasticsearch, but also helps you deal with the complexities of human language, geolocation, and relationships. If you’re a newcomer to both search and distributed systems, you’ll quickly learn how to integrate Elasticsearch into your application.",
      "coverImageUrl": "./2ddcf691a406ca14d2511a89ef30ae08a29fa1c50fa8de58d3b1506180ab6520.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449358543/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449358543/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 26,
    "title": "A super fast CSS engine",
    "slug": "2017-09-04-026-a-super-fast-css-engine",
    "date": "2017-09-04",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #35, 2017",
    "quote": {
      "text": "Programs must be written for people to read, and only incidentally for machines to execute",
      "author": "Gerald Jay Sussman and Hal Abelson",
      "authorTitle": "Computer Scientists and Authors",
      "authorUrl": "https://en.wikipedia.org/wiki/Gerald_Jay_Sussman"
    },
    "links": [
      {
        "title": "A super fast CSS engine",
        "url": "https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo",
        "description": "Project Quantum is a major rewrite of Firefox’s internals to make Firefox fast. This article provides a very detailed, yet enjoyable, description of how Project Quantum works and why it is faster than its predecessor.",
        "imageUrl": "./d5cdf3685ad412fbf4b5986e290466e25dda5fa6528eb30a559bcff68fac3c26.jpg",
        "featured": true
      },
      {
        "title": "150 animated Chrome DevTools tips",
        "url": "https://medium.com/dev-channel/increase-your-web-development-skill-set-150-animated-tips-on-chrome-devtools-4a30155e6b8e",
        "description": "Over 150 animated gifs which showcase how to use Chrome DevTools. Beware, this collection of tips & tricks might quickly turn you into an extremely productive web developer! :)",
        "imageUrl": "./29a7bbd907f8a60aa8db7b96716780c54f4fe4d4f4c48291625907163ea3b76c.jpg",
        "featured": false
      },
      {
        "title": "Trending Developer Skills",
        "url": "https://medium.freecodecamp.org/trending-developer-skills-based-on-my-analysis-of-ask-hn-whos-hiring-26c02a3ca1fd",
        "description": "For people learning to code and for experienced software developers alike, change is constant. Betting on guessing (and learning) what would the next thing be might be the key to land your next awesome job.",
        "imageUrl": "./c8eafa55619019e7c763a87529fcbd613af477d0b42d53543278700c631f2ca2.jpg",
        "featured": false
      },
      {
        "title": "Async/Await Will Make Your Code Simpler",
        "url": "http://blog.patricktriest.com/what-is-async-await-why-should-you-care",
        "description": "Or How I Learned to Stop Writing Callback Functions and Love Javascript ES8.",
        "imageUrl": "./22226dbf7812a6d4e8a1d395c5b72754c03d92684f7e52824a64962512c316f7.jpg",
        "featured": false
      },
      {
        "title": "GoogleChrome/puppeteer",
        "url": "https://github.com/GoogleChrome/puppeteer",
        "description": "A Node.js library coming directly from the Chrome team that allows you to easily control a headless instance of Google Chrome.",
        "imageUrl": "./306022361b1f1c0b39a21a0db7d59c3bfede159f5d458a7e7f358e80f3b42397.jpg",
        "featured": false
      },
      {
        "title": "Integrating Animation into a Design System",
        "url": "https://alistapart.com/article/integrating-animation-into-a-design-system",
        "description": "A cohesive animation system can help express a product’s personality and make the interface feel connected and whole. Learn how to include animations directly into your design system.",
        "imageUrl": "./6580c64dc6eb99f99bc580a0a8c701910847f9957572e6bda1112a81fe68b1ff.png",
        "featured": false
      },
      {
        "title": "zeeshanu/learn-regex",
        "url": "https://github.com/zeeshanu/learn-regex",
        "description": "A fantastic GitHub repository that attempts to offer an easy way to finally understand and learn regular expressions.",
        "imageUrl": "./92e64a8a58de5645662b2e26f68cfd0eeed47d3b6ddcdbddcc585c6b9e88992e.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Building Microservices: Designing Fine-Grained Systems",
      "author": "Sam Newman",
      "description": "Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.",
      "coverImageUrl": "./1575a11c0c5e3af091d32426cf1cdcb142f177a57d156a18bad7df292b50a78c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491950358/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491950358/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 25,
    "title": "Bootstrap 4 Beta",
    "slug": "2017-08-28-025-bootstrap-4-beta",
    "date": "2017-08-28",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #34, 2017",
    "quote": {
      "text": "Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important",
      "author": "Bill Gates",
      "authorTitle": "Software Developer and Microsoft co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Bill_Gates"
    },
    "links": [
      {
        "title": "Bootstrap 4 Beta",
        "url": "http://blog.getbootstrap.com/2017/08/10/bootstrap-4-beta",
        "description": "The new version of the most popular HTML, CSS, and JS framework in the world is finally out of alpha. Among the many new features, a broad support for flex boxes based design. Check out now the new beta.",
        "imageUrl": "./b9a4054f81189c0c80c80c17f4afb10e933c1a8088507cd85b2f2dcb8e962c0e.jpg",
        "featured": true
      },
      {
        "title": "SVG can do THAT?!",
        "url": "http://slides.com/sdrasner/svg-can-do-that",
        "description": "An incredibly detailed presentation by Sarah Drasner about SVG and its capabilities. You will probably be surprised at how many unexploited opportunities we have today on the web with SVG.",
        "imageUrl": "./92fc072410fd3fe6a690439ae469dbe81c0abb9662538b9df14e59d7619e8c60.jpg",
        "featured": false
      },
      {
        "title": "Linux Load Averages: Solving the Mystery",
        "url": "http://brendangregg.com/blog/2017-08-08/linux-load-averages.html",
        "description": "Linux load averages explained, including why they include the uninterruptible I/O sleep state.",
        "imageUrl": "./77d167cc7786ac1d32989e8b47195f8aa0011146244a32f537f4262f8ac4c2e0.jpg",
        "featured": false
      },
      {
        "title": "What Is A Full Stack Web Developer, And Why Should I Become One?",
        "url": "https://medium.com/udacity/what-is-a-full-stack-web-developer-and-why-should-i-become-one-6e93d0c774b6",
        "description": "What distinguishes a successful Full Stack Web Developer is not a superhuman ability to do everything, but rather, to understand everything…",
        "imageUrl": "./d779055548b9eac6f91d085aee6234d83df44ef8724e738fbb89c7a68f9a4fc8.jpg",
        "featured": false
      },
      {
        "title": "Building A Simple AI Chatbot With Web Speech API And Node.js",
        "url": "https://smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js",
        "description": "In this tutorial, we will use the API to create an artificial intelligence (AI) voice chat interface in the browser. The app will listen to the user’s voice and reply with a synthetic voice.",
        "imageUrl": "./80c969fd2c6899c27696668841939e87ca4aa490021a3d7ddab6d4c7d9cf3698.png",
        "featured": false
      },
      {
        "title": "How we built our first full-stack JavaScript web app in three weeks",
        "url": "https://medium.com/ladies-storm-hackathons/how-we-built-our-first-full-stack-javascript-web-app-in-three-weeks-8a4668dbd67c",
        "description": "A simple step-by-step guide to go from idea to deployed app",
        "imageUrl": "./778a37a8b0697b3ff2bee139606bf37ce0d58c60f74e1303de66b32961cb99f6.jpg",
        "featured": false
      },
      {
        "title": "Do’s and Don’ts of Web Design",
        "url": "https://uxplanet.org/dos-and-don-ts-of-web-design-8c9d6a5de7c6",
        "description": "Web design is a tricky subject. There are a lot of things you should consider when creating a website. In order to simplify this task, this article offers a list of do’s and don’ts principles that every web designer should take into account.",
        "imageUrl": "./cf40b54da42d0d5078edf73dcfaf1c67087c7291c9ffbec110234b3ddf5f4f10.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Eloquent JavaScript: A Modern Introduction to Programming",
      "author": "Marijn Haverbeke",
      "description": "JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. Eloquent JavaScript, 2nd Edition dives deep into the JavaScript language to show you how to write beautiful, effective code.",
      "coverImageUrl": "./500a13f688abaf7a9f0324159c3adba6009fb65130dcfb670d2da0b1ef93b65f.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593275846/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593275846/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 24,
    "title": "Machine learning in your browser via JavaScript",
    "slug": "2017-08-21-024-machine-learning-in-your-browser-via-javascript",
    "date": "2017-08-21",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #33, 2017",
    "quote": {
      "text": "Errors using inadequate data are much less than those using no data at all",
      "author": "Charles Babbage",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Charles_Babbage"
    },
    "links": [
      {
        "title": "Machine learning comes to your browser via JavaScript",
        "url": "http://infoworld.com/article/3212884/machine-learning/machine-learning-comes-to-your-browser-via-javascript.html",
        "description": "A new JavaScript library runs Google's TensorFlow right in the browser with GPU acceleration—a novel way to bring machine learning to the masses",
        "imageUrl": "./fc4313b0836e8251bfcea0c8d7b840397e472beebb6df7bc7f3f7bd012ffad06.jpg",
        "featured": true
      },
      {
        "title": "JPNG.svg (Transparent PNG with JPEG Compression)",
        "url": "https://codepen.io/shshaw/details/LVKEdv",
        "description": "Combine the transparency of a PNG with the compression of a JPEG. A new approach that will save your user a lot of bandwidth.",
        "imageUrl": "./1c7c2888d03ce2a0e7a41cca40ce629bab7da05f1a9eaf3d90a1a7aa03005d8c.jpg",
        "featured": false
      },
      {
        "title": "10 guidelines to improve your web accessibility",
        "url": "https://aerolab.co/blog/web-accessibility",
        "description": "We put together a list of ten web accessibility guidelines that will guarantee access to your site to any person, in spite of their disabilities.",
        "imageUrl": "./06b587aac60275a0cd20ecdf26f86ee2c369cbeae9af3c2c9e2b77d66913067a.jpg",
        "featured": false
      },
      {
        "title": "Nuxt.js: A Universal Vue.js Application Framework",
        "url": "https://sitepoint.com/nuxt-js-universal-vue-js",
        "description": "Improve the loading performance and SEO of your Vue.js apps with Server-side rendering (SSR). Learn to build a universal Vue app with the Nuxt.js framework.",
        "imageUrl": "./fb625d4de7dfd0e0bfb5753f7213810c5cc83bbc3a4a387360c0a337abfa5eaf.jpg",
        "featured": false
      },
      {
        "title": "exa - A modern replacement for ls",
        "url": "https://the.exa.website/",
        "description": "exa is a modern replacement for ls. It uses colours for information by default, helping you distinguish between many types of files, such as whether you are the owner, or in the owning group. It also has extra features not present in the original ls, such as viewing the Git status for a directory.",
        "imageUrl": "./f5c710d6d8d3370ee8e29b193463796636c6a3750ae815336d6f659f14498655.png",
        "featured": false
      },
      {
        "title": "The Languages Which Almost Became CSS",
        "url": "http://blog.cloudflare.com/the-languages-which-almost-became-css",
        "description": "The history of all the languages which almost became CSS and the development of the styled web.",
        "imageUrl": "./be972c0246040196405e294bcf9bf84208c504d1113a6c2bc4e031acd2111cb7.jpg",
        "featured": false
      },
      {
        "title": "8 things to learn in React before using Redux",
        "url": "https://robinwieruch.de/learn-react-before-using-redux",
        "description": "Facts about React that should be known before using Redux (or MobX). Most important: Learn React first, then opt-in Redux...",
        "imageUrl": "./6dadc83bba5e172281600d7e3eb81411d934ce20e5aa428454232a339170e445.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "JavaScript: The Good Parts",
      "author": "Douglas Crockford",
      "description": "Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation.",
      "coverImageUrl": "./b4beb220d7fc9561d1a7ac83cc89192fb78f862d089424d2a5ef352069ce6e33.jpg",
      "amazonUs": "https://www.amazon.com/dp/0596517742/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0596517742/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 23,
    "title": "What happens when you type Google.com",
    "slug": "2017-08-14-023-what-happens-when-you-type-google-com",
    "date": "2017-08-14",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #32, 2017",
    "quote": {
      "text": "Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway",
      "author": "Andrew S. Tanenbaum",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"
    },
    "links": [
      {
        "title": "What happens when you type Google.com",
        "url": "https://github.com/alex/what-happens-when",
        "description": "A repository that attempts to answer (in a very detailed manner) the age old interview question \"What happens when you type google.com into your browser and press enter?\"",
        "imageUrl": "./c3e7acaecc83d22728f685a5f7d5d68473c5c9a79af111106b87cccd2b9619f1.jpg",
        "featured": true
      },
      {
        "title": "coolHue - Coolest Gradient Hues",
        "url": "https://webkul.github.io/coolhue",
        "description": "Coolest hand picked Gradient Hues and Swatches for your next super amazing stuff. Select the gradients you like and easily export them to CSS3 code or to Photoshop or Sketch palettes.",
        "imageUrl": "./a6f355a8fd730a57f94aef5af5357d1b0ff55a775798e7c0c184f48e1b919924.jpg",
        "featured": false
      },
      {
        "title": "W.T.F. JS",
        "url": "https://github.com/denysdovhan/wtfjs",
        "description": "A repository that collects a list of funny, tricky and rather misleading JavaScript examples. If you are into JavaScript or Node.js, be sure to check this out, you might learn a lot!",
        "imageUrl": "./81719f2dd66adecebc559ff878fdfcf84dca8eb4b21639b0b0a31e6e225d7d07.jpg",
        "featured": false
      },
      {
        "title": "Chromeless",
        "url": "https://github.com/graphcool/chromeless",
        "description": "A Node.js library that allows you to easily control Chrome (headless) to achieve complex browser-based automation. It can run locally or even on AWS Lambda.",
        "imageUrl": "./96207a3a42d18f16a8190ebb49488136c639fc2c2c99354d8b73e0d25e6a4f85.jpg",
        "featured": false
      },
      {
        "title": "Apple’s refuses to support Progressive Web Apps",
        "url": "https://m.phillydevshop.com/apples-refusal-to-support-progressive-web-apps-is-a-serious-detriment-to-future-of-the-web-e81b2be29676",
        "description": "Progressive Web Applications (PWAs) are one of the most exciting and innovative things happening in web development right now and Apple's refusal to support Progressive Web Apps is a detriment to future of the web. Read here to know more about what we can expect from the future of PWAs.",
        "imageUrl": "./e4ad40fb68895d8611f6f4a987e7c97ca791e5ae6542a11e188e50bc5151d423.jpg",
        "featured": false
      },
      {
        "title": "A petition to open source Flash",
        "url": "https://github.com/pakastin/open-source-flash",
        "description": "Flash is an important piece of Internet history and killing Flash means future generations can't access the past. Games, experiments and websites would be forgotten.Open sourcing Flash would be a good solution to keep Flash projects alive safely for archive reasons.\nIf you appreciate the effort, contribute yourself to this petition that has been already signed by more than **6.000 people** on GitHub",
        "imageUrl": "./66c84398086515762000953e047910a2d0bb937d72c43fae7c2a06ec4e6e6363.jpg",
        "featured": false
      },
      {
        "title": "Introducing Monogram",
        "url": "http://thecodebarbarian.com/introducing-monogram-the-anti-odm-for-mongodb-nodejs",
        "description": "Monogram is a new library defined as \"the Anti-ODM for Node.js and MongoDB\". If you use Node.js and MongoDB this library based on Observables and RX patterns might become one of your best companions.",
        "imageUrl": "./dca8ac6f25133c3f953e6a3b362573ff4ebc87312b1d5b95a7e9f6ea3311a930.png",
        "featured": false
      }
    ],
    "book": {
      "title": "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices",
      "author": "Viktor Farcic",
      "description": "This book is about different techniques that help us architect software in a better and more efficient way with microservices packed as immutable containers, tested and deployed continuously to servers that are automatically provisioned with configuration management tools. It's about fast, reliable and continuous deployments with zero-downtime and ability to roll-back. It's about scaling to any number of servers, design of self-healing systems capable of recuperation from both hardware and software failures and about centralized logging and monitoring of the cluster.",
      "coverImageUrl": "./541c1dd09cac26ae06429687c2601da19e8cb4c7894063854cb3ae1c65eb6db9.jpg",
      "amazonUs": "https://www.amazon.com/dp/152391744X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/152391744X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 22,
    "title": "7 Security Measures to Protect your Servers",
    "slug": "2017-08-07-022-7-security-measures-to-protect-your-servers",
    "date": "2017-08-07",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #31, 2017",
    "quote": {
      "text": "Computers are good at following instructions, but not at reading your mind",
      "author": "Donald Knuth",
      "authorTitle": "Author and computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Donald_Knuth"
    },
    "links": [
      {
        "title": "7 Security Measures to Protect your Servers",
        "url": "https://digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers",
        "description": "Making your applications to function correctly without addressing the security needs of your infrastructure could have devastating side effects. Be sure to follow these 7 rules to ensure you servers are secure enough for most of the use case out there.",
        "imageUrl": "./4bfe7725ebeb8c4520096bb79a26ed4671d255801e7492f570e36a7fd4fb07ff.jpg",
        "featured": true
      },
      {
        "title": "Passwords Evolved: Authentication Guidance for the Modern Era",
        "url": "https://troyhunt.com/passwords-evolved-authentication-guidance-for-the-modern-era",
        "description": "In the beginning, things were simple: you had two strings (a username and a password) and if someone knew both of them, they could log in. Easy. But the ecosystem in which they were used was simple too... In this amazing article Troy Hunt discusses the history of passwords and proposes smarter ways to deal with them in today applications.",
        "imageUrl": "./93c58741bc33a2ef5a852e286435fec3c4980292e2f82b4f36efcfa824b919b8.jpg",
        "featured": false
      },
      {
        "title": "Product Design for Sustainability",
        "url": "https://uxdesign.cc/product-design-for-sustainability-3fffbb2a7f0e",
        "description": "How products we build today can make the world more sustainable tomorrow.",
        "imageUrl": "./f9a7d9ec838303ee39dfbfe4d15cb52d704c59cbffeece4d27bbc8c2f5011286.jpg",
        "featured": false
      },
      {
        "title": "Postgres Query Plan Visualization",
        "url": "http://tatiyants.com/postgres-query-plan-visualization",
        "description": "Postgres Explain Visualizer (Pev) is a tool created to make EXPLAIN output easier to grok. It creates a graphical representation of the query plan.",
        "imageUrl": "./c78e3132a827f66944527514aacb950c748b35e36b1942825ca2b3c0c50cba0a.jpg",
        "featured": false
      },
      {
        "title": "Monospaced Programming Fonts with Ligatures",
        "url": "https://hanselman.com/blog/MonospacedProgrammingFontsWithLigatures.aspx",
        "description": "Typographic ligatures are when multiple characters appear to combine into a single character. They will make your editor and your code look beautiful.",
        "imageUrl": "./30892b81dc4282d779e471c2ff2d2c5aa0d2314dc6ae922fdd99baf265835742.jpg",
        "featured": false
      },
      {
        "title": "Node.js Emerging as the Universal Development Framework",
        "url": "https://hackernoon.com/node-js-emerging-as-the-universal-development-framework-for-a-diversity-of-applications-c2e788290f5f",
        "description": "Node.js is emerging as a universal development framework for digital transformation with a broad diversity of applications. Read the results of this interesting survey involving more than 1.400 developers to understand what the future of IT might look like.",
        "imageUrl": "./357b6c647da160fa2a30dc8887f8a31cecf60874afb0b8c28aba3902e7056e36.jpg",
        "featured": false
      },
      {
        "title": "Vue.js 2.0 In 60 Minutes",
        "url": "https://youtube.com/watch?v=z6hQqgvGI4Y",
        "description": "This FREE crash course will teach you all of the fundamentals of Vue.js 2.0 JavaScript framework. Vue-cli, Declarative, Rendering, Directives, Conditionals, etc.",
        "imageUrl": "./947c40fdeebd9980e0138c64d6bd0dbcaa4964befa05fb995edc2f965373dd9c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, and Efficient Full-Stack Web Development",
      "author": "David B. Copeland",
      "description": "As a Rails developer, you care about user experience and performance, but you also want simple and maintainable code. Achieve all that by embracing the full stack of web development, from styling with Bootstrap, building an interactive user interface with AngularJS, to storing data quickly and reliably in PostgreSQL. Take a holistic view of full-stack development to create usable, high-performing applications, and learn to use these technologies effectively in a Ruby on Rails environment.",
      "coverImageUrl": "./916a92b54ef122132c9c594e8eb8d9182649599a02cfe38f79d2f203037b008c.jpg",
      "amazonUs": "https://www.amazon.com/dp/1680501267/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1680501267/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 21,
    "title": "How Discord Scaled Elixir to 5,000,000 Concurrent Users",
    "slug": "2017-07-31-021-how-discord-scaled-elixir-to-5-000-000-concurrent-users",
    "date": "2017-07-31",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #30, 2017",
    "quote": {
      "text": "To iterate is human, to recurse divine",
      "author": "L. Peter Deutsch",
      "authorTitle": "Software developer and Entrepreneur",
      "authorUrl": "https://en.wikipedia.org/wiki/L._Peter_Deutsch"
    },
    "links": [
      {
        "title": "How Discord Scaled Elixir to 5,000,000 Concurrent Users",
        "url": "https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b",
        "description": "An amazing use case of Elixir (and its underlying Erlang VM) that underlines the promising capabilities of this language and its architecture.",
        "imageUrl": "./e03f1921338cb8a43761b449297f2cbe6f8db23ad29b5f75c045a6d280ee9f38.jpg",
        "featured": true
      },
      {
        "title": "The MVC Design Pattern in Vanilla JavaScript",
        "url": "https://sitepoint.com/mvc-design-pattern-javascript",
        "description": "With this tutorial, you will finally stop abstracting JavaScript with frameworks and you will learn how to implement the MVC design pattern (model-view-controller) in vanilla JavaScript.",
        "imageUrl": "./8e4eb12b067145eef3c8aa5e4bcc6f9d9505b98a226e7dd1947258f4cb417fc1.png",
        "featured": false
      },
      {
        "title": "The Website Speed Test Image Analysis Tool",
        "url": "https://smashingmagazine.com/2017/07/website-speed-test-image-analysis-tool",
        "description": "It is hard to overstate the effect that images have on the average web page’s performance; faster websites have a broader reach and a higher impact. The first and most important thing you can do to improve the performance of your website’s images is figuring out how to measure them.",
        "imageUrl": "./23db6de59a201d9c9e03dcf92b47c8e3b0368898c0f513e17ac8b1db1f4ebd71.png",
        "featured": false
      },
      {
        "title": "You Might Not Need jQuery",
        "url": "https://css-tricks.com/now-ever-might-not-need-jquery",
        "description": "The DOM and native browser API's have improved by leaps and bounds since jQuery's release all the way back in 2006. People have been writing \"You Might Not need it anymore\". Is it really true?",
        "imageUrl": "./22fb1dea5bd88cc28cc1643d1a43486fd19c1286ad13ed023fdbb45fd89c35c4.png",
        "featured": false
      },
      {
        "title": "UUID or GUID as Primary Keys? Be Careful!",
        "url": "https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439",
        "description": "You can use of UUIDs as the primary key to avoid database scale problems. But should you? This article proposes an interesting alternative.",
        "imageUrl": "./733c3230cd2e023375f41fbadf2b044b591bebf78e3350f9243d66bfcb4d233c.jpg",
        "featured": false
      },
      {
        "title": "Designing The Perfect Slider",
        "url": "https://smashingmagazine.com/2017/07/designing-perfect-slider",
        "description": "In this article, we’ll look into the fine details of designing better slider controls for selecting a value or a range of values. Think of price range sliders, 360-degree-view sliders, timeline sliders, health insurance quote calculators, or build-your-own-mobile-plan features... the possibilities are only limited by your imagination.",
        "imageUrl": "./8b2309e05bc6edfa533a4f67a3898972a6ed84d64a16149a13b8e0a1436312a9.png",
        "featured": false
      },
      {
        "title": "Google not Amazon — Make fantastic savings in a serverless world",
        "url": "https://in.3wks.com.au/google-not-amazon-make-fantastic-savings-in-a-serverless-world-b6d37710839c",
        "description": "In this opinionated article, Andrew Walker explains why you should start considering to use Google cloud for your next project instead of Amazon Web Services, especially if you are thinking to adopt serverless architectures.",
        "imageUrl": "./c347dbce555251d66c3ae7770f40fbe7d6811e2f6ccb9678b8b4279b5bd140d5.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Mastering Symfony",
      "author": "Sohail Salehi",
      "description": "In this book, you will learn some lesser known aspects of development with Symfony, and you will see how to use Symfony as a framework to create reliable and effective applications. You might have developed some impressive PHP libraries in other projects, but what is the point when your library is tied to one particular project? With Symfony, you can turn your code into a service and reuse it in other projects.",
      "coverImageUrl": "./d8bd967503d4ad357e4fca70c6900b2da278b7cd54f0417d9683194425c0bcbf.jpg",
      "amazonUs": "https://www.amazon.com/dp/1784390313/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1784390313/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 20,
    "title": "ES8 was Released and here are its Main New Features 🔥",
    "slug": "2017-07-24-020-es8-was-released-and-here-are-its-main-new-features",
    "date": "2017-07-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #29, 2017",
    "quote": {
      "text": "Standards are always out of date.  That’s what makes them standards",
      "author": "Alan Bennett",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_Bennett"
    },
    "links": [
      {
        "title": "ES8 was Released and here are its Main New Features 🔥",
        "url": "https://hackernoon.com/es8-was-released-and-here-are-its-main-new-features-ee9c394adf66",
        "description": "The new features of the EcmaScript specification 8th edition",
        "imageUrl": "./d4fd2cca814035ab8a375158404895c9b47b0e25732e38f2db4806f2e6485a26.jpg",
        "featured": true
      },
      {
        "title": "Reverse Engineering One Line of JavaScript",
        "url": "https://alexkras.com/reverse-engineering-one-line-of-javascript",
        "description": "An interesting exercise in trying to explain how an animated ASCII art, built in vanilla JavaScript, actually works.",
        "imageUrl": "./5f598356c1f4069dc269f0c59c04824d7fa71c6b2a23346eb549909d6be8fa2f.jpg",
        "featured": false
      },
      {
        "title": "GPU Accelerated JavaScript",
        "url": "http://gpu.rocks/",
        "description": "A single-file JavaScript library for GPGPU in the browser. It will automatically compile specially written JavaScript functions into shader language and run them on the GPU using the WebGL API.",
        "imageUrl": "./9504e97977d1aa62dea2ec1297faab1ce77ac6e42a05b6375e0398f6eb09fbfe.jpg",
        "featured": false
      },
      {
        "title": "Redis 4.0 General Availability",
        "url": "https://groups.google.com/d/msg/redis-db/5Kh3viziYGQ/58TKLwX0AAAJ",
        "description": "Finally, after the canonical 1 year of developments, Redis 4.0.0 is out and it ships with a good amount of interesting features that you should check out.",
        "imageUrl": "./0e15cd4be5b4574293f63e5ed0919b15ae532e68c1448250a005f61e45a5f504.png",
        "featured": false
      },
      {
        "title": "coells/100days",
        "url": "https://github.com/coells/100days",
        "description": "This repository contains notebooks with live code to accompany 100 days of algorithms challenge.",
        "imageUrl": "./fef699900b00332542b0c2917cafb2464e681d5be4692bd9700dda1fb926b9d5.jpg",
        "featured": false
      },
      {
        "title": "shieldfy/API-Security-Checklist",
        "url": "https://github.com/shieldfy/API-Security-Checklist",
        "description": "API-Security-Checklist - Checklist of the most important security countermeasures when designing, testing, and releasing your API",
        "imageUrl": "./7671e3968ad18f1223a798845ec8f249f037d42031fdb22b1874e6c67179c878.jpg",
        "featured": false
      },
      {
        "title": "URLs are UI",
        "url": "https://hanselman.com/blog/URLsAreUI.aspx",
        "description": "What a great title. 'URLs are UI.' Pithy, clear, crisp. Very true. I've been saying it for years. Someone on Twitter ...",
        "imageUrl": "./d9171282671060b2a11f7e895a43cb97c10d78748ef9ac41bca82344c2f59083.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Irresistible APIs: Designing web APIs that developers will love",
      "author": "Kirsten Hunter",
      "description": "Well-designed APIs feel like a natural extension of the application, rather than just a new interface into the backend database. Designing Web APIs based on use cases allows an organization to develop irresistible APIs, which developers can consume easily and which support the business values of that organization.",
      "coverImageUrl": "./30b0a33a50dce31e700a6e019b8e0d6136b4e6d656592cb23358dc5b945f4c2a.jpg",
      "amazonUs": "https://www.amazon.com/dp/1617292559/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1617292559/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 19,
    "title": "Image Optimization in PHP",
    "slug": "2017-07-17-019-image-optimization-in-php",
    "date": "2017-07-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #28, 2017",
    "quote": {
      "text": "I do not fear computers. I fear lack of them",
      "author": "Isaac Asimov",
      "authorTitle": "Author and Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Isaac_Asimov"
    },
    "links": [
      {
        "title": "Image Optimization in PHP",
        "url": "http://cloudinary.com/blog/image_optimization_in_php",
        "description": "Image optimization involves delivering images with the smallest possible file size while maintaining visual quality. Here we highlight the tips on how to optimize images using PHP.",
        "imageUrl": "./15f1c8fdf8b26bf4cd75e5514e29b6ae5d4258c4b82b858a10169bd0b8970b5e.jpg",
        "featured": true
      },
      {
        "title": "How to defend your website with ZIP bombs",
        "url": "https://blog.haschek.at/post/f2fda",
        "description": "An interesting technique that shows how to protect our website against vulnerability scanners using zip bombs.",
        "imageUrl": "./bf2e178c7e9105ed8ecb184862932ebce0dfb0a72aaf2e6482a65d6cf15c3509.jpg",
        "featured": false
      },
      {
        "title": "CSS is Awesome",
        "url": "https://css-tricks.com/css-is-awesome",
        "description": "Brandon Smith here dissects a classic CSS visual joke and turns this exercise into a case study in why people get frustrated with CSS.",
        "imageUrl": "./7a3075953ce212db6b2ea7ebf6eee6294a05c657bf0c0eb04aa3080e9065deb2.jpg",
        "featured": false
      },
      {
        "title": "Housing Go - Behind the Screens",
        "url": "https://medium.com/engineering-housing/progressing-mobile-web-fac3efb8b454",
        "description": "A interesting case study in migrating an existing website to Progressive Web Application. The article explores some of the capabilities of modern browsers like Service Workers, IndexedDB, Add to Home Screen, Push Notifications, the aim was to make an app that is fast, performant and reliable.",
        "imageUrl": "./ca77002c80ba6053f9f55e0c8340bb1e4b39917671daf990accf5d691ea2da3c.jpg",
        "featured": false
      },
      {
        "title": "Raft Consensus Algorithm",
        "url": "https://raft.github.io/",
        "description": "Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all major pieces needed for practical systems.",
        "imageUrl": "./edaf90e342ba1dd6be6ac6ca50389680de3bdab5974a9f9d1a4b52df55cd2c40.png",
        "featured": false
      },
      {
        "title": "What's the Deal with Collapsible Margins?",
        "url": "https://bitsofco.de/collapsible-margins/",
        "description": "After unexpected results of a twitter poll asking a question about collapsible margins, Ire Aderinokun, goes through what they are and why people get so confused about how they work.",
        "imageUrl": "./7bbe5ee642e2493b449e56a408b287e79ccb678bf2300bcd735f7a8c62500856.png",
        "featured": false
      },
      {
        "title": "Rocket: Web Framework for Rust",
        "url": "https://rocket.rs/",
        "description": "Rocket is a web framework for the Rust programming language that makes it simple to write fast web applications without sacrificing flexibility or type safety.",
        "imageUrl": "./f89ae2aa5aa5a24d998003fd9dcc5ec4d43bb4c8376e92d499d8e0393e790457.png",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2 Cookbook",
      "author": "Matt Frisbie",
      "description": "This book covers all the most complicated Angular concepts and at the same time introduces the best practices with which to wield these powerful tools. It also covers in detail all the concepts you'll need to get you building applications faster. Often neglected topics such as testing and performance optimization are widely covered as well. A developer that reads through all the content in this book will have a broad and deep understanding of all the major topics in the Angular 2 universe.",
      "coverImageUrl": "./b6885ee25caf4d2b67b01862d2a10f60300e0c6c69537686826de54524ca4ac3.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01JLBMC86/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01JLBMC86/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 18,
    "title": "The Perfect Paragraph—A Web Typography Learning Game",
    "slug": "2017-07-10-018-the-perfect-paragraph-a-web-typography-learning-game",
    "date": "2017-07-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #27, 2017",
    "quote": {
      "text": "The function of good software is to make the complex appear to be simple",
      "author": "Grady Booch",
      "authorTitle": "Software engineer",
      "authorUrl": "https://en.wikipedia.org/wiki/Grady_Booch"
    },
    "links": [
      {
        "title": "The Perfect Paragraph—A Web Typography Learning Game",
        "url": "http://betterwebtype.com/triangle",
        "description": "Learn how to set a typographically perfect paragraph by adjusting font-size, line-height and line length in this cool learning game.",
        "imageUrl": "./26541c6d72423e9ba3c7487288aaa1dd08f69b8ae81f50636659992f070f9235.jpg",
        "featured": true
      },
      {
        "title": "How to build a simple neural network in 9 lines of Python code",
        "url": "https://medium.com/technology-invention-and-more/how-to-build-a-simple-neural-network-in-9-lines-of-python-code-cc8f23647ca1",
        "description": "As part of my quest to learn about AI, I set myself the goal of building a simple neural network in Python.",
        "imageUrl": "./9aeab35063dd9ac3f7d315fa9ae486c75c9a82c9df56d98906a5ef0a24185148.jpg",
        "featured": false
      },
      {
        "title": "Creating truly universal React component systems",
        "url": "https://medium.com/styled-components/announcing-primitives-support-for-truly-universal-component-systems-5772c7d14bc7",
        "description": "Announcing styled-components/primitives, an experimental entry point combining styled-components and react-primitives",
        "imageUrl": "./cf763aebbfb6f96946221b99cee6d0a76d54b101a086a49678850364ea4ad55a.jpg",
        "featured": false
      },
      {
        "title": "JavaScript for Microcontrollers and IoT",
        "url": "https://auth0.com/blog/javascript-for-microcontrollers-and-iot-part-1",
        "description": "Learn about the different options for running JavaScript on microcontrollers and IoT platforms",
        "imageUrl": "./6a921527d26f5a50633ef112018b4c6eadd48da08facc087d78dcbb2c165d92b.jpg",
        "featured": false
      },
      {
        "title": "Why I'm Switching from React to Cycle.js",
        "url": "https://sitepoint.com/switching-from-react-to-cycle-js",
        "description": "Ivan Jovanovic introduces the basic concepts of reactive programming and explains why he's ditching React for Cycle.js, a functional reactive JS framework.",
        "imageUrl": "./fb625d4de7dfd0e0bfb5753f7213810c5cc83bbc3a4a387360c0a337abfa5eaf.jpg",
        "featured": false
      },
      {
        "title": "Building a sentiment analysis bot with IBM Watson and Raspberry Pi",
        "url": "https://medium.com/slack-developer-blog/building-a-sentiment-analysis-bot-with-ibm-watson-and-raspberry-pi-eeb399bb8803",
        "description": "Do you ever wonder how your teammates perceive your Slack chat messages? Maybe you sound heroic! Or unpleasant. Perhaps you project harsh…",
        "imageUrl": "./08004319dd42c55a54075055501514e86025d1def9f2d3d904dae5067ed472f7.jpg",
        "featured": false
      },
      {
        "title": "Explain like I’m 5: Kerberos",
        "url": "http://roguelynn.com/words/explain-like-im-5-kerberos",
        "description": "While Kerberos probably can not be explained to a 5-year-old and be understood, this is a great attempt at defragmenting documentation with some visual aids and digestible language.",
        "imageUrl": "./d74b19adaf6ca2a1431b0e041957e699bdf701ba5a77b63d88e4dadf60accc74.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "CSS Secrets: Better Solutions to Everyday Web Design Problems",
      "author": "Lea Verou",
      "description": "In this practical guide, CSS expert Lea Verou provides 47 undocumented techniques and tips to help intermediate-to advanced CSS developers devise elegant solutions to a wide range of everyday web design problems. Rather than focus on design, CSS Secrets shows you how to solve problems with code. You'll learn how to apply Lea's analytical approach to practically every CSS problem you face to attain DRY, maintainable, flexible, lightweight, and standards-compliant results.",
      "coverImageUrl": "./e20c35997e3e8a6a408d0165643e9832e92142192a5c4b89e0e684f372fe7735.jpg",
      "amazonUs": "https://www.amazon.com/dp/1449372635/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1449372635/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 17,
    "title": "Coding \"Snake\" in 4 min 30 sec",
    "slug": "2017-07-03-017-coding-snake-in-4-min-30-sec",
    "date": "2017-07-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #26, 2017",
    "quote": {
      "text": "That’s been one of my mantras — focus and simplicity. Simple can be harder than complex; you have to work hard to get your thinking clean to make it simple",
      "author": "Steve Jobs",
      "authorTitle": "Apple co-founder",
      "authorUrl": "https://en.wikipedia.org/wiki/Steve_Jobs"
    },
    "links": [
      {
        "title": "Coding \"Snake\" in 4 min 30 sec",
        "url": "https://youtube.com/watch?v=xGmXxpIj6vs",
        "description": "An incredibly quick walkthrough on how to build a snake game using only vanilla JavaScript and the browser canvas.",
        "imageUrl": "./2134d1c5553219c3127f4b5f9bdf9173ab4cfd20f182390aca4d955f2f4fe137.jpg",
        "featured": true
      },
      {
        "title": "React Express",
        "url": "http://react.express/",
        "description": "A new website that helps you learn React by coding interactive snippets of code.",
        "imageUrl": "./31dba71a6c0d923623065ca448f76edd6894d3bc0cceaf862544a0326da69f99.jpg",
        "featured": false
      },
      {
        "title": "typicode/json-server",
        "url": "https://github.com/typicode/json-server",
        "description": "Get a full fake REST API with zero coding in less than 30 seconds (seriously) using this simple Node.js package.",
        "imageUrl": "./2f847a5ab7409f0d360a711e63e12f1cbcdc2e4dd9f2a59ed27808d7636814c6.jpg",
        "featured": false
      },
      {
        "title": "Node.js Will Overtake Java Within a Year",
        "url": "https://thenewstack.io/open-source-profile-mikeal-rogers-node-js",
        "description": "Rogers spoke with The New Stack to talk about his experience getting started in the open source world, working at the Node.js Foundation and becoming an open source governance principals guru. Read why he thinks Node.js will supersede Java very soon.",
        "imageUrl": "./47a1e0ff97e1a790a48482b391d87f687c6395be5d067bf452ab789cc2de98a0.jpg",
        "featured": false
      },
      {
        "title": "Designing The Perfect Accordion",
        "url": "https://smashingmagazine.com/2017/06/designing-perfect-accordion-checklist",
        "description": "How do you design the perfect accordion? The choice and position of the icon matters, and so does interaction designs. A detailed run-down.",
        "imageUrl": "./9c4569a1b1d51cd32f0732284bc12bb363ebbeb1dc638cfd93bb1c53d58e1288.png",
        "featured": false
      },
      {
        "title": "Understanding Node.js Event-Driven Architecture",
        "url": "https://medium.freecodecamp.org/understanding-node-js-event-driven-architecture-223292fcbc2d",
        "description": "Most of Node’s objects — like HTTP requests, responses, and streams — implement the EventEmitter module so they can provide a way to emit data. Understand how this paradigm works and how you can take advantage of it.",
        "imageUrl": "./4b2a6db29c303b09c81a0f51c24d05478a98cf0e9c8187654dc908b606535472.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Graph Databases: New Opportunities for Connected Data",
      "author": "Ian Robinson",
      "description": "Discover how graph databases can help you manage and query highly connected data. With this practical book, you’ll learn how to design and implement a graph database that brings the power of graphs to bear on a broad range of problem domains. Whether you want to speed up your response to user queries or build a database that can adapt as your business evolves, this book shows you how to apply the schema-free graph model to real-world problems.",
      "coverImageUrl": "./5688bd18a6677e59e5b8c680c2848ab320dd4d4d28db65515d0e83fccec1d924.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491930896/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491930896/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 16,
    "title": "Webpack 3: Official Release!",
    "slug": "2017-06-26-016-webpack-3-official-release",
    "date": "2017-06-26",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #25, 2017",
    "quote": {
      "text": "There are two ways to write error-free programs; only the third one works",
      "author": "Alan J. Perlis",
      "authorTitle": "Computer scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/Alan_J._Perlis"
    },
    "links": [
      {
        "title": "Webpack 3: Official Release!",
        "url": "https://medium.com/webpack/webpack-3-official-release-15fd2dd8f07b",
        "description": "With a faster and more stable release cycle and a bunch of new exciting features (Scope Hoisting, “magic comments”, and more) the new major release of the most famous JavaScript bundle is here!",
        "imageUrl": "./1de7c7a30de6c8891d07d98bc368a9c13cd5fb92bc64a8634346d6fbacc24bb2.jpg",
        "featured": true
      },
      {
        "title": "19+ JavaScript Shorthand Coding Techniques",
        "url": "https://sitepoint.com/shorthand-javascript-techniques",
        "description": "Must read for any serious JavaScript developer. Regardless if you program in vanilla JavaScript or if you use a famous framework or library like React, Angular or jQuery this reference for learning shorthand JavaScript coding techniques will be a useful read.",
        "imageUrl": "./fb625d4de7dfd0e0bfb5753f7213810c5cc83bbc3a4a387360c0a337abfa5eaf.jpg",
        "featured": false
      },
      {
        "title": "Amplitude.js: The HTML Audio Player for the Modern Era",
        "url": "https://521dimensions.com/open-source/amplitudejs",
        "description": "Amplitude.js is the HTML5 audio player for the modern era. Using no dependencies, take control of the browser and design an audio player the way you want it to look. Available for free on Github.",
        "imageUrl": "./ed4a5c4c9b999e8f36078a30121349cc9e4850d14953b28f6e52841cfe364d56.jpg",
        "featured": false
      },
      {
        "title": "grab/front-end-guide",
        "url": "https://github.com/grab/front-end-guide",
        "description": "Study guide and introduction to the modern front end stack, tailored to large engineering teams. Open source guide, available on Github.",
        "imageUrl": "./20baef5d883f29d462da0a9dc49da6d4ca12b3c4d7f190c6cb8d72a5c8b88918.jpg",
        "featured": false
      },
      {
        "title": "Building Production-Ready CSS Grid Layouts Today",
        "url": "https://smashingmagazine.com/2017/06/building-production-ready-css-grid-layout",
        "description": "Find out which new layout opportunities and challenges the CSS Grid Layout brings to the web industry today, and what old problems it solves.",
        "imageUrl": "./036cb5777ed22d5f9f77b83b5127b11e389cbe94c57e8e3e057a8c13d8b691d7.jpg",
        "featured": false
      },
      {
        "title": "Build a Mini Netflix with React in 10 Minutes",
        "url": "http://scotch.io/tutorials/build-a-mini-netflix-with-react-in-10-minutes",
        "description": "In this goal-oriented tutorial, you will learn how to use React to build a Netflix clone. If you are a Netflix fan and a software developer I am sure you always wanted to try something like this!",
        "imageUrl": "./ec84c4430138df105a711fc481b17e5166695beb49ba2f5023f22176dd515d88.jpg",
        "featured": false
      },
      {
        "title": "Addy Osmani: The Browser Hackers Guide To Instantly Loading Everything",
        "url": "https://youtube.com/watch?v=7vUs5yOuv-o",
        "description": "Venture deep into the belly of the browser to uncover the secret incantations to instantly load anything. Learn how to use preload, prefetch, preconnect, HTTP/2 Server Push and Service Workers! Finally, you will also learn how the heck you can ship JavaScript bundles that don’t break the bank on mobile!",
        "imageUrl": "./11d7098aa2401adc7cd2e8d8d2b8b0eb941ea6ee151287bfa890381a219e6aaf.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Angular 2: From Theory To Practice",
      "author": "Asim Hussain",
      "description": "In this quickstart you'll get a 50,000 foot view of the major features of Angular 2 including: Typescript & ES6 Javascript, Components & Binding, Directives, Dependancy Injection & Services, Angular Modules & Bootstrapping your Angular application., SPAs & Routing, Angular CLI, Forms, Reactive Programming with RXJs, HTTP and finally Unit Testing.",
      "coverImageUrl": "./42ae68e2ba03e04a5972b7f48fcbb414c89e74b4747aae1715503d876e99f3df.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01N9S0CZN/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01N9S0CZN/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 15,
    "title": "Is it Pokemon or Big Data ?",
    "slug": "2017-06-19-015-is-it-pokemon-or-big-data",
    "date": "2017-06-19",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #24, 2017",
    "quote": {
      "text": "First learn computer science and all the theory.  Next develop a programming style.  Then forget all that and just hack",
      "author": "George Carrette",
      "authorTitle": "Computer Scientist",
      "authorUrl": "https://en.wikipedia.org/wiki/George_Charrette"
    },
    "links": [
      {
        "title": "Is it Pokemon or Big Data ?",
        "url": "http://pixelastic.github.io/pokemonorbigdata/",
        "description": "A very funny but challenging game for big-data aficionados. Did you ever ask yourself why the names of big-data technologies look like Pokemon names? Well, the authors of this game probably did... Are you ready to show off your big-data/Pokemon knowledge?",
        "imageUrl": "./499cc6f98c1a12d165614e3d54a76240a1d1a32883ebf9ec08aa60d05c5564dc.png",
        "featured": true
      },
      {
        "title": "A Complete Guide To Switching From HTTP To HTTPS",
        "url": "https://smashingmagazine.com/2017/06/guide-switching-http-https",
        "description": "HTTPS is a must for every website nowadays: Users are looking for the padlock when providing their details; Chrome and Firefox explicitly mark websites that provide forms on pages without HTTPS as being non-secure; it is an SEO ranking factor, and it has a serious impact on privacy in general.",
        "imageUrl": "./8fbc30d00d76855ec346a8ad1537dab5c299617680798ec8a8d1a1043b5ad9aa.jpg",
        "featured": false
      },
      {
        "title": "The State Of Advanced Website Builders",
        "url": "https://smashingmagazine.com/2017/06/advanced-website-builders",
        "description": "What are \"advanced website builders\" and everything else you need to know about them, including the state of the current website market.",
        "imageUrl": "./23b27f003d67e0906f23d793dbf202669657154e0269a1f6b222aa8f1a426d55.jpg",
        "featured": false
      },
      {
        "title": "Moving from Docker to rkt",
        "url": "https://medium.com/@adriaandejonge/moving-from-docker-to-rkt-310dc9aec938",
        "description": "Even the coolest products and services come with vendor lock-in. Docker makes no difference and it's good to start to explore some alternatives like rkt...",
        "imageUrl": "./861512b6d8abf708b8af4b00ec2229729a291d2189f13c282fa6d65e890dd0ef.jpg",
        "featured": false
      },
      {
        "title": "howler.js - JavaScript audio library for the modern web",
        "url": "https://howlerjs.com/",
        "description": "howler.js makes working with audio in JavaScript easy and reliable across all platforms.",
        "imageUrl": "./17cee7abeed233bca6dd5799c46a2a356dc737315bc6e5150da06c83f93784da.jpg",
        "featured": false
      },
      {
        "title": "WebAssembly 101: a developer's first steps",
        "url": "http://blog.openbloc.fr/webassembly-first-steps",
        "description": "This tutorial will guide you along the necessary steps to port a JavaScript library of the Conway's game of life to WebAssembly (wasm). This is a simple exercise that is perfect to start beyond a trivial Hello World. I recently got interested in WebAssembly and decided to take the leap",
        "imageUrl": "./5c9c63772b166c35043fdfe5b4efb279a58dfeb0ca604d5fb917763714425969.jpg",
        "featured": false
      },
      {
        "title": "Upgrading from Node 6 to Node 8: a real-world performance comparison",
        "url": "https://hackernoon.com/upgrading-from-node-6-to-node-8-a-real-world-performance-comparison-3dfe1fbc92a3",
        "description": "Node 8 is out, did you hear? And it’s faster, or so they say. In this article you will learn how much Node 8 can be faster than its predecessor by taking a look at the performance improvements of a real application.",
        "imageUrl": "./fd994f1c9a23fc1414586f72681f8c4331dfcdcd63d65363b1d9369b590a94ca.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Self-Taught Programmer: The Definitive Guide to Programming Professionally",
      "author": "Cory Althoff",
      "description": "This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, it also covers the rest of the things you need to know to program professionally that classes and books don't teach you.",
      "coverImageUrl": "./0d26611bf9dd58f18784b3d3fcf7f9dc3df28576b928cd220faae5debef9813e.jpg",
      "amazonUs": "https://www.amazon.com/dp/B01M01YDQA/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/B01M01YDQA/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 14,
    "title": "A Beginner’s Guide to Website Speed",
    "slug": "2017-06-12-014-a-beginner-s-guide-to-website-speed",
    "date": "2017-06-12",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #23, 2017",
    "quote": {
      "text": "Good programmers use their brains, but good guidelines save us having to think out every case",
      "author": null,
      "authorTitle": "Author",
      "authorUrl": null
    },
    "links": [
      {
        "title": "A Beginner’s Guide to Website Speed Optimization",
        "url": "https://kinsta.com/learn/page-speed",
        "description": "In-depth website speed optimization guide that shows you how important it is to have a snappy website. DIY instructions and tricks to improve load times.",
        "imageUrl": "./79072666a6952e4d9c9a1d5d41ad6eddaa1c147b7e83441087ab2d95c590f3a4.jpg",
        "featured": true
      },
      {
        "title": "Will PHP die out in 2017?",
        "url": "https://quora.com/Will-PHP-die-out-in-2017",
        "description": "Stack Overflow just published their Stack Overflow Developer Survey 2017 to see where the trends are leading. PHP is still holding a respectable slot. In this Quora question, you will have some opinion about the future of (still) the most common language on the web.",
        "imageUrl": "./3208f9e7c5f5089fc40c171f1ebbb3fe796d23db604f7dc52928875c19db5ce9.png",
        "featured": false
      },
      {
        "title": "Enough with the microservices",
        "url": "https://aadrake.com/posts/2017-05-20-enough-with-the-microservices.html",
        "description": "Don’t even consider microservices unless you have a system that’s too complex to manage as a monolith. The majority of software systems should be built as a single monolithic application. Do pay attention to good modularity within that monolith, but don’t try to separate it into separate services.",
        "imageUrl": "./c69adb16b9ab56e0710baad2415e7eebf09e20c119a8b0ec0d345c61bbb46747.jpg",
        "featured": false
      },
      {
        "title": "Best Practices For Hero Images",
        "url": "https://blogs.adobe.com/creativecloud/best-practices-for-hero-images/",
        "description": "When users come to your page, they’ll feel some kind of reaction. Whether it’s positive or negative, that reaction is determined in large part by what they see. A hero image is one of the fastest ways to grab the user’s attention. In this article, you'll learn few tips on using hero images effectively.",
        "imageUrl": "./7aa18ab49f3c7022228637462467b5445abaa694e24b759c44b53c5ec619f208.jpg",
        "featured": false
      },
      {
        "title": "Creating Better, Faster And More Optimized WordPress Websites",
        "url": "https://www.smashingmagazine.com/2017/06/better-faster-optimized-wordpress-websites/",
        "description": "A list of bad web practices and recommendations on what not to do on your Wordpress site. Some of these range from beginner mistakes to more complex issues. A lot of these can be the difference between having a successful WordPress site and a failure.",
        "imageUrl": "./f68d2ca7cd301b613ba1e9a2cf7338f745caca9510f9720b23733f65637d8e3b.png",
        "featured": false
      },
      {
        "title": "slap-editor/slap",
        "url": "https://github.com/slap-editor/slap",
        "description": "A new terminal text editor that aims to be as simple and friendly as Sublime. And there's more... It's written in JavaScript!",
        "imageUrl": "./034de390e4a3d1c89ec517c5df6a5bdcb84e30de651f37605f24a0cc4d5788fc.png",
        "featured": false
      },
      {
        "title": "The Modern Javascript Tutorial",
        "url": "http://javascript.info/",
        "description": "The modern JavaScript tutorial is a website that provides simple, but detailed explanations with examples and tasks, including: closures, document and events, object oriented programming and more.",
        "imageUrl": "./3b29fc200bfa7e89946c4b0b822be5c297975479528edfce4c6dc702ac624c9c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "Getting Started with hapi.js",
      "author": "John Brett",
      "description": "This book will introduce hapi.js and walk you through the creation of your first working application using the out-of-the-box features hapi.js provides. Packed with real-world problems and examples, this book introduces some of the basic concepts of hapi.js and Node.js and takes you through the typical journey you'll face when developing an application. Starting with easier concepts such as routing requests, building APIs serving JSON, using templates to build websites and applications, and connecting databases, we then move on to more complex problems such as authentication, model validation, caching, and techniques for structuring your codebase to scale gracefully.",
      "coverImageUrl": "./d31bcb4e84d816e5d5fcc91de57a73e2d10b8c811815001c4ed2997d6b526a79.jpg",
      "amazonUs": "https://www.amazon.com/dp/1785888188/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1785888188/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 13,
    "title": "Docker in Production E-books",
    "slug": "2017-06-05-013-docker-in-production-e-books",
    "date": "2017-06-05",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #22, 2017",
    "quote": {
      "text": "Software is like sex: It’s better when it’s free",
      "author": "Linus Torvalds",
      "authorTitle": "Software developer and inventor of Linux",
      "authorUrl": "https://en.wikipedia.org/wiki/Linus_Torvalds"
    },
    "links": [
      {
        "title": "Docker in production E-books",
        "url": "http://scaledocker.com/",
        "description": "Two free e-books about Docker from a site reliability engineer and Docker Captain: \"Docker fundamentals\" and \"Docker security\". Two precious resources if you are into Docker or want to learn more about it.",
        "imageUrl": "./11bc2936be9f3af466bce9ccae3245561cf2d6e7f9e0e84e4c5f7cfb4f24fe4c.png",
        "featured": true
      },
      {
        "title": "Node v8.0.0 released!",
        "url": "https://nodejs.org/en/blog/release/v8.0.0",
        "description": "The next major release of Node.js brings a range of significant changes and additions, far too many for us to cover adequately in a blog post such as this. This article contains a summary of the most significant changes and features.",
        "imageUrl": "./55dbba65821f8f8e74e69689fae29a04f15f0db05b9122db5ee7eeea8d199de3.png",
        "featured": false
      },
      {
        "title": "Marko",
        "url": "http://markojs.com/",
        "description": "A friendly (and fast!) UI library that makes building web apps fun. Marko uses a very concise yaml-like syntax to make building reactive web components or entire web applications a super quick and engaging experience.",
        "imageUrl": "./888b1448805d8be693919aa9c87c5c57a1e19372a27fcc151376908cb5ebd722.png",
        "featured": false
      },
      {
        "title": "Rearchitecting Airbnb’s Frontend",
        "url": "https://medium.com/airbnb-engineering/rearchitecting-airbnbs-frontend-5e213efc24d2",
        "description": "AirBnB recently rethought the architecture for the JavaScript side of their frontend codebase. This post will look at the product drivers that precipitated the changes, the steps taken to move away from the legacy Rails solutions, and some of the key pillars of the new stack.",
        "imageUrl": "./36f20d03eff56e9945a7a893acd5c906e1813613f44b65b3855b1fd7f63efd55.jpg",
        "featured": false
      },
      {
        "title": "A Unified Styling Language",
        "url": "https://medium.com/seek-blog/a-unified-styling-language-d0c208de2660",
        "description": "In this article we’re going to take a look at why writing your styles in JavaScript isn’t such a terrible idea after all, and why you should be keeping an eye on this rapidly evolving space.",
        "imageUrl": "./f9be7bb8a664aa9444e60f540709fe83d3d224b42414bc93e496408a77a958c9.jpg",
        "featured": false
      },
      {
        "title": "HTTPS on Stack Overflow",
        "url": "https://nickcraver.com/blog/2017/05/22/https-on-stack-overflow",
        "description": "Stack overflow finally supports HTTPS by default in all its websites. This is a very detailed story about how they got there and all the pitfalls they needed to face in order to achieve this result.",
        "imageUrl": "./8a04ff64b60de5184be8bb8293c64c5b786b66da1b467fe5c5abd3b9a39c84b2.png",
        "featured": false
      },
      {
        "title": "Better Form Design: One Thing Per Page",
        "url": "https://smashingmagazine.com/2017/05/better-form-design-one-thing-per-page",
        "description": "You can improve your form design with a simple pattern named \"One Thing Per Page\". Learn how to split up a complex process into multiple smaller pieces.",
        "imageUrl": "./5b47022be1dc3165bc7ae08e580773b38761c15ada9324ad08082ea25cdcc51c.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Mythical Man-Month: Essays on Software Engineering",
      "author": "Frederick P. Brooks Jr.",
      "description": "Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.",
      "coverImageUrl": "./f69ef92cce9e0ba56f14311a6fad691ee26f7ca2373cd8fe9049efc8accbb9c4.jpg",
      "amazonUs": "https://www.amazon.com/dp/0201835959/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0201835959/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 12,
    "title": "Helping One Million Developers Exit Vim",
    "slug": "2017-05-29-012-helping-one-million-developers-exit-vim",
    "date": "2017-05-29",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #21, 2017",
    "quote": {
      "text": "Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science",
      "author": "Ada Lovelace",
      "authorTitle": "Mathematician",
      "authorUrl": "https://en.wikipedia.org/wiki/Ada_Lovelace"
    },
    "links": [
      {
        "title": "Helping One Million Developers Exit Vim",
        "url": "https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim",
        "description": "In the five years since this question was asked, there have been over a million other developers who got stuck in Vim and couldn’t escape without a bit of help. Indeed, the difficulty of quitting the Vim editor is a common joke among developers.",
        "imageUrl": "./97bc8d323d5b2fd4de871aaffef45a487e289f2a3fba353a05ed80b197cbf919.jpg",
        "featured": true
      },
      {
        "title": "kamranahmedse/developer-roadmap",
        "url": "https://github.com/kamranahmedse/developer-roadmap",
        "description": "a set of charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a frontend, backend or a devops in 2017.",
        "imageUrl": "./841aed9f4a86dd3c84009e139053a1b17d70b51403fcd078de3cd2b04a614428.png",
        "featured": false
      },
      {
        "title": "Web Developer Security Checklist",
        "url": "https://simplesecurity.sensedeep.com/web-developer-security-checklist-f2e4f43c9c56",
        "description": "Developing secure, robust web applications in the cloud is hard, very hard. If you think it is easy, you are either a higher form of life…",
        "imageUrl": "./13ac016b2adeb349085d4ab4b2da3952be722d16a3cc1157617424d07a4549e5.jpg",
        "featured": false
      },
      {
        "title": "What's New in Create React App",
        "url": "https://facebook.github.io/react/blog/2017/05/18/whats-new-in-create-react-app.html",
        "description": "Less than a year ago, we introduced Create React App as an officially supported way to create apps with zero configuration. The project has since enjoyed tremendous growth, with over 950 commits by more than 250 contributors.",
        "imageUrl": "./eab28b4cb123d5a9b6ac4b48c908fe17fdd77002cdfa9b67248a632b13d28983.jpg",
        "featured": false
      },
      {
        "title": "Progressive Web Apps with React.js",
        "url": "https://medium.com/@addyosmani/progressive-web-apps-with-react-js-part-i-introduction-50679aef2b12",
        "description": "Progressive Web Apps take advantage of new technologies to bring the best of mobile sites & native apps to users. They’re reliable, fast…",
        "imageUrl": "./597194d29b71c9bbcc35dcb5a624b1d790bf12aaf2a6c547c026e4c7314e2871.jpg",
        "featured": false
      },
      {
        "title": "Improve the Performance of your JavaScript Web Application",
        "url": "https://scotch.io/tutorials/improve-the-performance-of-your-javascript-web-application",
        "description": "JavaScript is one if not the most popular programming language in the world. Found in web pages, software, mobile apps, console applications, etc. \n\nJavaScript is everywhere and it is definitely here to stay. The problem with this language is with its rise, a lot of applications that use it feel \"",
        "imageUrl": "./df7103a590a18ad325fdf60816b9f3fc97253afb66c65dd10e6aeeae5cb79911.jpg",
        "featured": false
      },
      {
        "title": "A dive into spatial search algorithms",
        "url": "https://medium.com/@agafonkin/a-dive-into-spatial-search-algorithms-ebd0c5e39d2a",
        "description": "Searching through millions of points in an instant",
        "imageUrl": "./664c6452e775c8ef01bf1e5ea33f3212a3310e7926f2f396f33ddbbe2efdaa94.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "You Don't Know JS: ES6 & Beyond",
      "author": "Kyle Simpson",
      "description": "As part of the \"You Don’t Know JS\" series, this compact guide focuses on new features available in ECMAScript 6 (ES6), the latest version of the standard upon which JavaScript is built. Learn new ES6 syntax that eases the pain points of common programming idioms. Organize code with iterators, generators, modules, and classes. Express async flow control with Promises combined with generators. Use collections to work more efficiently with data in structured waysLeverage new API helpers, including Array, Object, Math, Number, and String. Extend your program’s capabilities through meta programming.",
      "coverImageUrl": "./dc82d3e22d7d2516883c5adc587d3a8817d011c764cda892712040ff1b3ea3e1.jpg",
      "amazonUs": "https://www.amazon.com/dp/1491904240/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1491904240/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 11,
    "title": "Production PWA with JavaScript Frameworks",
    "slug": "2017-05-22-011-production-pwa-with-javascript-frameworks",
    "date": "2017-05-22",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #20, 2017",
    "quote": {
      "text": "The science of today is the technology of tomorrow",
      "author": "Edward Teller",
      "authorTitle": "Theoretical physicist",
      "authorUrl": "https://en.wikipedia.org/wiki/Edward_Teller"
    },
    "links": [
      {
        "title": "Production PWA with JavaScript Frameworks",
        "url": "https://www.youtube.com/watch?v=aCMbSyngXB4",
        "description": "Learn how the world’s largest brands ship Progressive Web Apps that instantly load on mobile hardware. We’ll look at how apps built using React, Preact, Vue, Angular & Polymer can be used to build instantly interactive, engaging & data-plan sensitive user experiences.",
        "imageUrl": "./f659dc0cf22cb3936ef7862864f4755d41fbe61701bc31dce69ec8e9c8879b1b.jpg",
        "featured": true
      },
      {
        "title": "Painting with React code",
        "url": "https://airbnb.design/painting-with-code",
        "description": "AirBnB built a tool to help bridge the gap between designers and engineers working on design systems at scale. Meet *React-**sketchapp*, an open-source library that allows you to write React components that render to Sketch documents.",
        "imageUrl": "./60eb35d9ff0e91df05218c9b4274cddd7f62777dc5e8ebcbe464da9b9d7a5c76.jpg",
        "featured": false
      },
      {
        "title": "Building a Visual Language at AirBnB",
        "url": "https://airbnb.design/building-a-visual-language",
        "description": "In an effort to redesign the user experience of the AirBnB platform, the company came up with a \"visual design language\". It enables product reviews to focus on the actual concepts and experiences of a design, rather than padding, colors and type choices.",
        "imageUrl": "./6988bb2693c9da3557decd5098df48fd6cb2bcd613ff24cf425a19f8f11aff36.png",
        "featured": false
      },
      {
        "title": "Prepack · Partial evaluator for JavaScript",
        "url": "https://prepack.io/",
        "description": "Prepack is a tool that optimizes JavaScript source code: Computations that can be done at compile-time instead of run-time get eliminated. It replaces the global code of a JavaScript bundle with equivalent code that is a simple and quick sequence of assignments.",
        "imageUrl": "./4e0e6edce36cdbba9f48a6145c64b076419dbb9024637e00d4815b371f04d112.jpg",
        "featured": false
      },
      {
        "title": "Debugging Node.js with Chrome DevTools",
        "url": "https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27",
        "description": "Support for Node.js debuggability landed in Node.js master in May 2016. You can see it in action in the DevTools 2016 Google I/O talk.",
        "imageUrl": "./36669853bc3a8dade8351110508e1f4d1863fa50b2c8c93c488a6c7d25102e44.jpg",
        "featured": false
      },
      {
        "title": "Asynchronous JavaScript with async/await",
        "url": "https://egghead.io/courses/asynchronous-javascript-with-async-await",
        "description": "In this free video course, we will learn how to use the ES2017 async and await keywords to write asynchronous code that is more readable and easier to follow than equivalent code based on long promise chains.",
        "imageUrl": "./ed0a23c06d3a26e65adb84b450cfcee0fb66f0ea56d99b9af3b41d76a17f3648.jpg",
        "featured": false
      },
      {
        "title": "Difference Between UI & UX",
        "url": "https://uxplanet.org/difference-between-ui-ux-6324fc7402ba",
        "description": "What is UI? What is UX? What is the difference between the two? Well there are many differences and it's really important to understand them to be able to embrace the two subjects effectively for the development of a product.",
        "imageUrl": "./627d2233f45f70becfe22c95737a9b94c2703632c94cd7b4742fbf77ae7668c0.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Pragmatic Programmer: From Journeyman to Master",
      "author": "Andrew Hunt",
      "description": "The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process-taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.",
      "coverImageUrl": "./2ffb12a41f490125695aeff2d4c3ea84a96f4f6c7298432191fdc3c1a104af4b.jpg",
      "amazonUs": "https://www.amazon.com/dp/020161622X/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/020161622X/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 10,
    "title": "The story of port 22: SSH",
    "slug": "2017-05-15-010-the-story-of-port-22-ssh",
    "date": "2017-05-15",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #19, 2017",
    "quote": {
      "text": "Science and technology revolutionize our lives, but memory, tradition and myth frame our response",
      "author": "Arthur Schlesinger",
      "authorTitle": "Historian",
      "authorUrl": "https://en.wikipedia.org/wiki/Arthur_Schlesinger"
    },
    "links": [
      {
        "title": "The story of port 22: SSH",
        "url": "https://ssh.com/ssh/port",
        "description": "SSH port is 22. This is the story of how I got port 22 for SSH. Never told before.",
        "imageUrl": "./64386c9b7c9e4c3a77c141e2c4ef3858053739c286fdd271ca3dfd9f6e203bc6.png",
        "featured": true
      },
      {
        "title": "The Twelve-Factor App",
        "url": "https://12factor.net/",
        "description": "A must-known methodology for building modern, scalable, maintainable software-as-a-service apps.",
        "imageUrl": "./fb706ecaf167146003922b98b0c2543690cd98250c47d38130eb5f3594047120.png",
        "featured": false
      },
      {
        "title": "Debugging Tips and Tricks",
        "url": "https://css-tricks.com/debugging-tips-tricks",
        "description": "Writing code for the browser is only one small piece of being a developer. In order to be efficient and capable at our jobs, we must also excel at debugging.",
        "imageUrl": "./4e37b9729bac0d2873115e18fef7c83317d9c1e0260dfdf6f8a8cae0b2336e90.jpg",
        "featured": false
      },
      {
        "title": "Yes, React is taking over front-end development. The question is why.",
        "url": "https://medium.freecodecamp.com/yes-react-is-taking-over-front-end-development-the-question-is-why-40837af8ab76",
        "description": "Here are a few reasons why React has become so popular so quickly.",
        "imageUrl": "./613808a1a0fba74d27211ac78540e0a3bc2e0d3a66bcbcfa906804890494aa42.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Patterns for 2017",
        "url": "https://youtube.com/watch?v=hO7mzO83N1Q",
        "description": "The JavaScript language and ecosystem have seen dramatic changes in the last 2 years. In this sessions we'll look at patterns for organizing code using modules, talk about some of the pros and cons of new language features, and look at the current state of build tools and build patterns.",
        "imageUrl": "./94409f1f689e55223c1ffa3a24bcff9e969a0ca5fdfc4efba95af899feb17d7b.jpg",
        "featured": false
      },
      {
        "title": "Generate CSV files from your Eloquent models",
        "url": "https://laravel-news.com/generate-csv-files-eloquent-models",
        "description": "LaraCSV is a new package from Muhammad Usman that allows you to fluently generate CSV files from your Eloquent Models.",
        "imageUrl": "./853147c6747ffc54d3c64b3ddce43e6b2556d873f25c3c7e5512bd44f0efc76f.jpg",
        "featured": false
      },
      {
        "title": "Writing reusable JS modules in ES6",
        "url": "https://smashingmagazine.com/2016/02/writing-next-generation-reusable-javascript-modules",
        "description": "A tutorial on how to create a JavaScript package written in ES6 that's usable with CommonJS, asynchronous module definition (AMD) or browser global modules.",
        "imageUrl": "./53ef9e75d07214efcb071cf84d39fa4829d1c2e72d9b5e343f260761f16e9b63.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Linux Command Line: A Complete Introduction",
      "author": "William E. Shotts Jr.",
      "description": "The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore.",
      "coverImageUrl": "./998e4e84a48a026be41c01888d1d2f1a0e2c087213f327ada5f8a0f3467f1202.jpg",
      "amazonUs": "https://www.amazon.com/dp/1593273894/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/1593273894/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 9,
    "title": "Reactide, IDE for React Web Applications",
    "slug": "2017-05-08-009-reactide-ide-for-react-web-applications",
    "date": "2017-05-08",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #18, 2017",
    "quote": {
      "text": "The art challenges the technology, and the technology inspires the art",
      "author": "John Lasseter",
      "authorTitle": "Director",
      "authorUrl": "https://en.wikipedia.org/wiki/John_Lasseter"
    },
    "links": [
      {
        "title": "Reactide",
        "url": "http://reactide.io/",
        "description": "The first dedicated IDE for React web application development.",
        "imageUrl": "./6da371c9bc1f5b1f497c931dba338d25bd1bfb54a6159eaf4db9bf0e2cc58fe1.png",
        "featured": true
      },
      {
        "title": "TypeScript at Slack",
        "url": "https://slack.engineering/typescript-at-slack-a81307fa288d",
        "description": "Or, How I Learned to Stop Worrying & Trust the Compiler",
        "imageUrl": "./9f2bcd1cb0978145910ac31e8ec55e030d7844563244835d1f333f6ecb84db38.jpg",
        "featured": false
      },
      {
        "title": "Semantic UI",
        "url": "https://semantic-ui.com/",
        "description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.",
        "imageUrl": "./92edd053e07137b3d69cf2876283d79b2ecbe2eba59bf7dac1484b468cf61b21.png",
        "featured": false
      },
      {
        "title": "Storybook - UI dev environment you'll love to use",
        "url": "https://getstorybook.io/",
        "description": "React Storybook is a UI development environment for your React components. With it, you can visualize different states of your UI components and develop them interactively.",
        "imageUrl": "./3070037cc39d89dcaf92e8231cb237d470f0d0689b955a4dd2f79b50684a12e2.png",
        "featured": false
      },
      {
        "title": "How To Secure Your Web App With HTTP Headers",
        "url": "https://smashingmagazine.com/2017/04/secure-web-app-http-headers",
        "description": "This article reviews key security-related HTTP headers and demonstrates their use in mitigating security vulnerabilities and cyber-attacks.",
        "imageUrl": "./7b854de283ff8c60b52cc9a5663ab1cf2b5b8ebb8456a77243eef83eda71fff6.jpg",
        "featured": false
      },
      {
        "title": "ProxySQL",
        "url": "http://proxysql.com/",
        "description": "ProxySQL: high-performance, GPL licensed MySQL proxy. It supports hundreds of thousands of concurrent connections and can be multiplexed to hundreds of servers.",
        "imageUrl": "./aa51c1f4456c8891b5463f96d026793dcf353ad9ff8f3614542e879807707283.jpg",
        "featured": false
      },
      {
        "title": "Popper.js",
        "url": "https://popper.js.org/",
        "description": "A kickass library used to manage poppers in web applicationsNow much more powerful!",
        "imageUrl": "./6175acbb6945b2a99945b78519ba188d7051e864f0e8a82231df86206a38c72a.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Go Programming Language",
      "author": "Alan A. A. Donovan",
      "description": "The Go Programming Language   is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++.",
      "coverImageUrl": "./be6ca3847c1c5e1bb60721ca2947bb788e506e371357a6e933bcac0b448d6a7a.jpg",
      "amazonUs": "https://www.amazon.com/dp/0134190440/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0134190440/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 8,
    "title": "Modern JavaScript for Ancient Web Developers",
    "slug": "2017-05-01-008-modern-javascript-for-ancient-web-developers",
    "date": "2017-05-01",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #17, 2017",
    "quote": {
      "text": "If we continue to develop our technology without wisdom or prudence, our servant may prove to be our executioner",
      "author": "Omar Bradley",
      "authorTitle": "US Army",
      "authorUrl": "https://en.wikipedia.org/wiki/Omar_Bradley"
    },
    "links": [
      {
        "title": "Modern JavaScript for Ancient Web Developers",
        "url": "https://trackchanges.postlight.com/modern-javascript-for-ancient-web-developers-58e7cae050f9",
        "description": "There’s a certain kind of old-school, backend web developer who, a long time ago, mastered things like Perl or Python or PHP or Java Server…",
        "imageUrl": "./3ac3149c97cfc0cbef75bee312f7f4c17af0745ae02d3151fea7570f133990e6.jpg",
        "featured": true
      },
      {
        "title": "Do YOU know how much your computer can do in a second?",
        "url": "http://computers-are-fast.github.io/",
        "description": "Let's find out how well you know computers! All of these programs have a variable NUMBER in them. Your mission: guess how big NUMBER needs to get before the program takes 1 second to run.",
        "imageUrl": "./1493e8b078dd7a145cdd36e5e4079a85e2ec725a4f8e4f2f80d51a323e0e7735.png",
        "featured": false
      },
      {
        "title": "What I learned from Stack Overflow’s massive survey of 64,000 developers",
        "url": "https://medium.freecodecamp.com/73-of-programmers-are-web-developers-and-other-insights-from-stack-overflows-massive-2017-survey-89a13b11e370",
        "description": "Today Stack Overflow released the results of their 2017 survey of more than 64,000 developers.",
        "imageUrl": "./8462d432a890027c3630e3d2ef9f16af36e8bb1e21493e0b95bade580c833f13.jpg",
        "featured": false
      },
      {
        "title": "6 Reasons Why JavaScript’s Async/Await Blows Promises Away",
        "url": "https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9",
        "description": "In case you missed it, Node now supports async/await out of the box since version 7.6. If you haven’t tried it yet, here are a bunch of…",
        "imageUrl": "./62a57057b84b53bbfdeb23e39c84869b98d54d9f231b0c5ce8d7e2483ba19b02.jpg",
        "featured": false
      },
      {
        "title": "8 CSS gotchas to start your morning off right",
        "url": "https://medium.com/@isaaclyman/8-css-gotchas-to-start-your-morning-off-right-c5daade0731d",
        "description": "In every community there’s a coming-of-age process, a rite of passage that every newcomer must experience before he or she can really be…",
        "imageUrl": "./31592da326d1c5aee89f2080cc6edb254b25e3a7db7ab7af82c4dcba77938de7.jpg",
        "featured": false
      },
      {
        "title": "How To Design Better Buttons",
        "url": "https://smashingmagazine.com/2016/11/a-quick-guide-for-designing-better-buttons",
        "description": "Buttons are a common element of interaction design. While they may seem like a very simple UI element, they are still one of the most important ones to create.    In today's article, we'll be covering the essential items you need to know in order to create effective controls that improve user experi…",
        "imageUrl": "./807a6da7a5e225f58870a612680a1ede6801b9dcaaaab313caf6b258bfd7b921.jpg",
        "featured": false
      },
      {
        "title": "Five Lessons from Scaling Pinterest",
        "url": "https://news.greylock.com/five-lessons-from-scaling-pinterest-6a699a889b08",
        "description": "I was involved with Pinterest from 5 employees through 650. Here’s what I learned.",
        "imageUrl": "./8997b187593d073c18b81fa1a5a8a4de717347fbaa1a30323430fc7d03de45d5.jpg",
        "featured": false
      }
    ],
    "book": {
      "title": "The Clean Coder: A Code of Conduct for Professional Programmers",
      "author": "Robert C. Martin",
      "description": "Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In this book, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship.",
      "coverImageUrl": "./1f5196ee832f3707ad69a4dc5cf0c9b3ff01467d98852062955ad942b2ef0732.jpg",
      "amazonUs": "https://www.amazon.com/dp/0137081073/?tag=fullstackbulletin-20",
      "amazonUk": "https://www.amazon.co.uk/dp/0137081073/?tag=fullstackbulletin-21"
    },
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 7,
    "title": "Why we moved from language X to language Y",
    "slug": "2017-04-24-007-why-we-moved-from-language-x-to-language-y",
    "date": "2017-04-24",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #16, 2017",
    "quote": {
      "text": "The real danger is not that computers will begin to think like men, but that men will begin to think like computers",
      "author": "Sydney Harris",
      "authorTitle": "Journalist",
      "authorUrl": "https://en.wikipedia.org/wiki/Sydney_Harris"
    },
    "links": [
      {
        "title": "Why we moved from language X to language Y",
        "url": "https://erikbern.com/2017/03/15/the-eigenvector-of-why-we-moved-from-language-x-to-language-y.html",
        "description": "In case you ever thought \"Someone should make a N*N contingency table of all engineering blog posts titled *Why we moved from X  to Y*\".",
        "imageUrl": "./f74f4c6e0db8234c16572c2e3a39d34933eefc3bdae247ecf30bcb994ae621ea.png",
        "featured": true
      },
      {
        "title": "Guetzli: A New Open Source JPEG Encoder",
        "url": "https://research.googleblog.com/2017/03/announcing-guetzli-new-open-source-jpeg.html",
        "description": "Introducing Guetzli, a new open source JPEG compressor that produces smaller image file sizes without sacrificing quality.",
        "imageUrl": "./3f07ec95f5d87fa344054278a2bf3c49e22c912f43cc317dc03468ae139ce262.jpg",
        "featured": false
      },
      {
        "title": "It's Time To Start Using CSS Custom Properties",
        "url": "https://smashingmagazine.com/2017/04/start-using-css-custom-properties",
        "description": "CSS custom properties are opening new horizons for web development. They look and work like CSS variables, and the way they work is reflected in their name.",
        "imageUrl": "./c3aad2c91e4b56eccd2606b6f015125a4465629ece3e1c561f805bb4ed1c6f2a.jpg",
        "featured": false
      },
      {
        "title": "The New Web Typography",
        "url": "https://robinrendle.com/essays/new-web-typography",
        "description": "How should we go about making typographic laws, rules and guidelines for the web?",
        "imageUrl": "./9893d4d2227f2468ddddb4ac0138902e3560b64e7fd5e7aa0a48d7c0a835c04f.png",
        "featured": false
      },
      {
        "title": "A Complete Guide to CSS Grid",
        "url": "https://tympanus.net/codrops/css_reference/grid",
        "description": "Learn everything about the CSS Grid Module in this illustrated guide with practical examples and demos. A Codrops CSS Reference entry by Hui Jing Chen.",
        "imageUrl": "./97ce23d740d0e1c590af57951bcc18ced33cfcc7652e4cc8e044785504b01391.jpg",
        "featured": false
      },
      {
        "title": "Which Responsive Design Framework Is Best?",
        "url": "https://smashingmagazine.com/2017/03/which-responsive-design-framework-is-best",
        "description": "Which framework should we be using, and why? Also, should we be using the whole framework or just parts of it? Find out in this article.",
        "imageUrl": "./34d3bad840045ce13e2ef39c7000c72295a75ae15278dc25bcc79d0b91540f8b.jpg",
        "featured": false
      },
      {
        "title": "The rules of responsive web typography",
        "url": "http://creativebloq.com/how-to/the-rules-of-responsive-web-typography",
        "description": "Discover the principles and systems you need to know to take the mystery out of responsive web typography.",
        "imageUrl": "./87d2dff22c7938cf9ce59873fca3852ecbb65fc50506f79e4a31e64ec8bb1ad0.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 6,
    "title": "Angular vs React — the DEAL BREAKER",
    "slug": "2017-04-17-006-angular-vs-react-the-deal-breaker",
    "date": "2017-04-17",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #15, 2017",
    "quote": {
      "text": "This is the whole point of technology.  It creates an appetite for immortality on the one hand.  It threatens universal extinction on the other. Technology is lust removed from nature",
      "author": "Don DeLillo",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Don_DeLillo"
    },
    "links": [
      {
        "title": "Angular vs React: the deal breaker",
        "url": "https://hackernoon.com/angular-vs-react-the-deal-breaker-7d76c04496bc",
        "description": "A REAL, EXTREME framework comparison",
        "imageUrl": "./74f39607962caace4ac104ef735012e45bc30b8170e775600d81e13a412d828c.jpg",
        "featured": true
      },
      {
        "title": "How to Learn ES6",
        "url": "https://medium.com/javascript-scene/how-to-learn-es6-47d9a1ac2620",
        "description": "We ran a survey at about the time the standard became official in June 2015 to see how many people were using ES6. Nearly half of…",
        "imageUrl": "./5257e4aa07d530051bee036fe5a09f6f6acfec7549b43b059070b0da2d455319.jpg",
        "featured": false
      },
      {
        "title": "Botpress - Create bots in JS",
        "url": "https://botpress.io/",
        "description": "An open-source ecosystem for developers to create, manage and extend bots written in Javascript. It is powered by a rich set of open-source modules built by the community.",
        "imageUrl": "./eab9e0e0a148415c38aa9e773d143c8b175fd0da8ee9ada749788d2e65f05e8c.jpg",
        "featured": false
      },
      {
        "title": "The magic of microcopy",
        "url": "https://uxdesign.cc/the-magic-of-microcopy-a56c5decbe1f",
        "description": "In design, one detail that often gets overlooked is microcopy — the little bits of text that guide us through an experience. In apps and websites, microcopy includes things like button labels, hint text, and error messages.",
        "imageUrl": "./05e03b1b0b6a2fa600160c1b075c090d65959aa01b08bc623abd1866f06da58c.jpg",
        "featured": false
      },
      {
        "title": "Functional setState is the future of React",
        "url": "https://medium.freecodecamp.com/functional-setstate-is-the-future-of-react-374f30401b6b",
        "description": "React has popularized functional programming in JavaScript. This has led to giant frameworks adopting the Component-based UI pattern that…",
        "imageUrl": "./dc7b101c8cee63965eb9d8e8f035b93007ef7d9439115965268ae9b49aa520dc.jpg",
        "featured": false
      },
      {
        "title": "I invented the web. Here are three things we need to change to save it",
        "url": "http://theguardian.com/technology/2017/mar/11/tim-berners-lee-web-inventor-save-internet",
        "description": "It has taken all of us to build the web we have, and now it is up to all of us to build the web we want – for everyone!",
        "imageUrl": "./3627926f72187c76518709db86e67ca20546b17db351ecec51949251d7601063.jpg",
        "featured": false
      },
      {
        "title": "Docker Compose v3.1 & Secrets Management",
        "url": "http://collabnix.com/archives/2565",
        "description": "Docker Engine 1.13.1 went GA last week and introduced one of the most awaited features called Secrets Management.",
        "imageUrl": "./62f9eb2efa5e519d674492fb2648ab810e45922b3bf1368cdac8917de0228232.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 5,
    "title": "How Google builds web frameworks",
    "slug": "2017-04-10-005-how-google-builds-web-frameworks",
    "date": "2017-04-10",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #14, 2017",
    "quote": {
      "text": "Technology made large populations possible; large populations now make technology indispensable",
      "author": "Joseph Krutch",
      "authorTitle": "Writer",
      "authorUrl": "https://en.wikipedia.org/wiki/Joseph_Krutch"
    },
    "links": [
      {
        "title": "How Google builds web frameworks",
        "url": "https://medium.freecodecamp.com/how-google-builds-a-web-framework-5eeddd691dea",
        "description": "It’s public knowledge that Google uses a single repository to share code — all 2 billion lines of it — and that it uses the trunk-based…",
        "imageUrl": "./78f62e51e0d0c5bf9013e4aef44a13880e4a1223b6fca316c8ff67cfe73f05df.jpg",
        "featured": true
      },
      {
        "title": "Cheat Sheet: All Facebook Messenger Bots Interactions",
        "url": "https://chatbotsmagazine.com/cheat-sheet-all-facebook-chatbot-interactions-4b14e4e00178",
        "description": "When designing a product for the web or mobile world, we usually operate within certain types of interactions and user interface elements …",
        "imageUrl": "./6c32df52eb7b437d70fec48aed2f42e5395f6817b351721fed83c364169c56fb.jpg",
        "featured": false
      },
      {
        "title": "kamranahmedse/design-patterns-for-humans",
        "url": "https://github.com/kamranahmedse/design-patterns-for-humans",
        "description": "design-patterns-for-humans - Design Patterns for Humans™ - An ultra-simplified explanation",
        "imageUrl": "./254a92d8577532bcbed9a5caa793650826bc704cdf36b8bcefe29c1e4ae0ff1c.jpg",
        "featured": false
      },
      {
        "title": "verekia/js-stack-from-scratch",
        "url": "https://github.com/verekia/js-stack-from-scratch",
        "description": "js-stack-from-scratch - 🎉 V2 release! 🎉 — Step-by-step tutorial to build a modern JavaScript stack.",
        "imageUrl": "./9e4f6928aa13a99d32375519cfc044c8fbf932f0e031c227a19c37417426200c.jpg",
        "featured": false
      },
      {
        "title": "Before you bury yourself in packages, learn the Node.js runtime itself",
        "url": "https://medium.freecodecamp.com/before-you-bury-yourself-in-packages-learn-the-node-js-runtime-itself-f9031fbd8b69",
        "description": "This article will challenge the very limits of your Node.js knowledge.",
        "imageUrl": "./5ef6a1d6f9e43d003b2d9fd188cd72d86f7f0c71cd56ce01fba4fb65bc1f3a28.jpg",
        "featured": false
      },
      {
        "title": "How I started drawing CSS Images",
        "url": "https://blog.prototypr.io/how-i-started-drawing-css-images-3fd878675c89",
        "description": "I am inspired by graphic, visual design, and cute things.",
        "imageUrl": "./a57eb0d06dab254f7911d3083f89eed4fcd9c26fb061eb242d74a6e1c8b0a7b5.jpg",
        "featured": false
      },
      {
        "title": "Announcing Doctrine 4 — Doctrine Project",
        "url": "http://doctrine-project.org/2017/04/01/announcing-doctrine-4.html",
        "description": "had been up to. Adding tens of megabytes of IRC logs of internal discussion we felt we owe you an update on where Doctrine is and where it’s heading to:",
        "imageUrl": "./1e1e90c7a4abbceffcda6300d1525eba8b6389b31ec75f23bdbd861c410266fa.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 4,
    "title": "HTML Reference",
    "slug": "2017-04-03-004-html-reference",
    "date": "2017-04-03",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #13, 2017",
    "quote": {
      "text": "We are stuck with technology when what we really want is just stuff that works",
      "author": "Douglas Adams",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Douglas_Adams"
    },
    "links": [
      {
        "title": "HTML Reference",
        "url": "http://htmlreference.io/",
        "description": "A free guide to all HTML elements and attributes.",
        "imageUrl": "./9ce2e37a2773bf57c650498e01bd8f95ac647d355289cc2de952deb8f9273a77.jpg",
        "featured": true
      },
      {
        "title": "Great Alternatives to Hamburger Menus",
        "url": "https://uxplanet.org/great-alternatives-to-hamburger-menus-d4c76d9414dd",
        "description": "How to make your navigation obvious and keep people engaged",
        "imageUrl": "./a7fc912f049ea2ea8c9bcd960f8fa120152aa4212b527e49360dd4e9372943dd.jpg",
        "featured": false
      },
      {
        "title": "Creating Non-Rectangular Headers | CSS-Tricks",
        "url": "https://css-tricks.com/creating-non-rectangular-headers",
        "description": "Over at Medium, Jon Moore recently identified \"non-rectangular headers\" as a tiny trend. A la: it's not crazy popular yet, but just you wait, kiddo.  We're talking about headers (or, more generally, any container element) that have a non-rectangular shape. Such as trapezoids, complex geometric shape…",
        "imageUrl": "./e0e8c90e36321e90f768aab39b193e6a13a748283194bc5c8574f5c0b47ad8d0.jpg",
        "featured": false
      },
      {
        "title": "Web Maker, an Offline, Browser-based CodePen Alternative",
        "url": "https://sitepoint.com/web-maker-an-offline-browser-based-codepen-alternative",
        "description": "Kushagra Gour introduces Web Maker, a browser extension for front-end developers needing a blazing-fast, offline web playground.",
        "imageUrl": "./fc5a5e81b2c8d03a21e94c1785eb87a3d947f80b640319b696e5ca4be321bbbd.jpg",
        "featured": false
      },
      {
        "title": "The Google Analytics Setup I Use on Every Site I Build — Philip Walton",
        "url": "https://philipwalton.com/articles/the-google-analytics-setup-i-use-on-every-site-i-build",
        "description": "Thoughts on web development, open source, software architecture, and the future.",
        "imageUrl": "./834c694babd5c9d434d5aa228ece5effe1ce61b4e91edfdb1eacb3e344b28767.jpg",
        "featured": false
      },
      {
        "title": "Evolution of Business Logic from Monoliths through Microservices, to Functions",
        "url": "https://read.acloud.guru/evolution-of-business-logic-from-monoliths-through-microservices-to-functions-ff464b95a44d",
        "description": "Underlying technology advancements are creating a shift to event driven functions and radical improvements in time to value",
        "imageUrl": "./c0fb4b3c3983d243da722cf963839ba91f69ed96305309e46d820e6116e37c6f.jpg",
        "featured": false
      },
      {
        "title": "Writing good code: how to reduce the cognitive load of your code",
        "url": "https://chrismm.com/blog/writing-good-code-reduce-the-cognitive-load",
        "description": "Low bug count, good performance, easy modification. Good code is high-impact, and is perhaps the main reason behind the existence of the proverbial 10x developer. And yet, despite it’s import…",
        "imageUrl": "./8f68f971cd5223c2293b107a5595e9154540b606adb13f25947c780a60fdd7da.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 3,
    "title": "Top mentioned books on stackoverflow.com",
    "slug": "2017-03-27-003-top-mentioned-books-on-stackoverflow-com",
    "date": "2017-03-27",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #12, 2017",
    "quote": {
      "text": "You cannot endow even the best machine with initiative; the jolliest steamroller will not plant flowers",
      "author": "Walter Lippmann",
      "authorTitle": "Author",
      "authorUrl": "https://en.wikipedia.org/wiki/Walter_Lippmann"
    },
    "links": [
      {
        "title": "Top mentioned books on stackoverflow.com",
        "url": "http://dev-books.com/",
        "description": "We analysed more than 40 000 000 questions and answers on stackoverflow.com to bring you the top of most mentioned books",
        "imageUrl": "./420214380bd5d1276049c1ba43da68bbb349979d209832e0931bd51a4c565070.jpg",
        "featured": true
      },
      {
        "title": "Here's What Happens When an 18 Year Old Buys a Mainframe",
        "url": "https://youtube.com/watch?v=45X4VP8CGtk",
        "description": "Connor Krukosky is an 18-year-old college student with a hobby of collecting vintage computers. One day, he decided to buy his own mainframe...an IBM z890. T...",
        "imageUrl": "./22674bb6c37f55797bdb5941067bf296b89e0e814418b66ae737a403c8d08252.jpg",
        "featured": false
      },
      {
        "title": "Create Scotch-Like Image Cards in Angular 2+ with Cloudinary",
        "url": "https://scotch.io/tutorials/create-scotch-like-image-cards-in-angular-2-with-cloudinary",
        "description": "When it comes to managing media files, we rely on Cloudinary for its ease and efficiency. The Cloudinary tool enables us to adeptly...",
        "imageUrl": "./68ce52aec73df93511cb2fba01d703e9b5ab400bd08fdca0ff3cf75adf134f94.jpg",
        "featured": false
      },
      {
        "title": "PHP 7.2: The First Programming Language to Add Modern Cryptography to its Standard Library",
        "url": "https://dev.to/paragonie/php-72-the-first-programming-language-to-add-modern-cryptography-to-its-standard-library",
        "description": "The PHP internals team voted 37 to 0 in favor of adopting libsodium as a core library. What does this mean for developers?",
        "imageUrl": "./cd148897c288ff0d9decf7f1c343fa3d99f9e271b722911255bc5f718088a418.jpg",
        "featured": false
      },
      {
        "title": "A Detailed Introduction To Webpack – Smashing Magazine",
        "url": "https://smashingmagazine.com/2017/02/a-detailed-introduction-to-webpack",
        "description": "Webpack is a powerful tool that bundles your app source code efficiently and loads that code from a server into a browser.",
        "imageUrl": "./6dac52d0153c28e9fd2a90bcdc15bb14d9097eae4c8c8f3b56167822cd9f94fb.jpg",
        "featured": false
      },
      {
        "title": "What Web Can Do Today",
        "url": "https://whatwebcando.today/",
        "description": "Can I rely on the Web Platform features to build my app? An overview of the device integration HTML5 APIs.",
        "imageUrl": "./6e14d3d7a8fb11b3938630e060a6d931b41cc202969809297719ef6e97f7bb30.jpg",
        "featured": false
      },
      {
        "title": "Preparing and Exporting SVG Icons in Sketch – Design + Sketch",
        "url": "https://medium.com/sketch-app-sources/preparing-and-exporting-svg-icons-in-sketch-1a3d65b239bb",
        "description": "This article is going to assume that you already understand the fundamentals of icon design. And focus on how to prepare and export them…",
        "imageUrl": "./9374f2424be71ccc3735e18680796d72c4dbd95a65fa6b681e74e0ff2f3d5c36.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 2,
    "title": "HTML & CSS Is Hard",
    "slug": "2017-03-20-002-html-css-is-hard",
    "date": "2017-03-20",
    "templateType": "old-mailchimp",
    "intro": "Best 7 links of week #11, 2017",
    "quote": {
      "text": "The great myth of our times is that technology is communication",
      "author": "Libby Larsen",
      "authorTitle": "Composer",
      "authorUrl": "https://en.wikipedia.org/wiki/Libby_Larsen"
    },
    "links": [
      {
        "title": "HTML & CSS Is Hard",
        "url": "https://internetingishard.com/html-and-css",
        "description": "A free web development tutorial for complete beginners",
        "imageUrl": "./d1b8d8df2661654967fcf391c91576382df8eaf43fddb296ff42ca29d11c0fb5.jpg",
        "featured": true
      },
      {
        "title": "React Native at Instagram",
        "url": "https://engineering.instagram.com/react-native-at-instagram-dd828a9a90c7",
        "description": "React Native has come a long way since it was open-sourced in 2015. Fewer than two years later, it’s being used not only in Facebook and…",
        "imageUrl": "./f2cc112ead2a112f9cb14b942254241de9c739c16b007569ad4ed9c3752d8499.jpg",
        "featured": false
      },
      {
        "title": "Annotation is now a web standard – Hypothesis",
        "url": "https://hypothes.is/blog/annotation-is-now-a-web-standard",
        "description": "to bring us web annotations. The lack of standards has been one of the key things holding these efforts back– a need we highlighted in the first of",
        "imageUrl": "./cd33576a7b32277d9c8cf06908a09b256877cdafb0e1e7b4d7b7bd99aa7cb39d.jpg",
        "featured": false
      },
      {
        "title": "Getting Started With VR Interface Design – Smashing Magazine",
        "url": "https://smashingmagazine.com/2017/02/getting-started-with-vr-interface-design",
        "description": "So you want to get started with VR interface design? This article has everything you need to know in order to achieve the best results.",
        "imageUrl": "./3d3daf3fff3e1e0f0905e4fc321cf18db60b44d90dcc3d12b1c8a4524a32ed3b.jpg",
        "featured": false
      },
      {
        "title": "JavaScript Without Loops",
        "url": "http://jrsinclair.com/articles/2017/javascript-without-loops/index.html",
        "description": "We've been talking about writing less complex JavaScript. We do this by choosing the right abstraction to solve a problem. But how do you know which abstraction to use? So far, we haven't looked at any concrete examples of how to do this. In this article we look at how to deal with JavaScript arrays…",
        "imageUrl": "./4bff058b403ba2e151a597e67ddf9d44243fb77869b398bfb1edd46e8b8c9ba4.jpg",
        "featured": false
      },
      {
        "title": "Between the Wires | MooTools",
        "url": "https://betweenthewires.org/between-the-wires-mootools-7ac80d4ca28f",
        "description": "If you were doing web development in 2009, MooTools might very well not need an introduction! MooTools was a well-known JavaScript utility library for building “powerful and flexible code with its elegant, well documented, and coherent APIs”. Its core contributing team was made up of a brilliant set of developers, and we’re lucky today to be speaking with three of them...",
        "imageUrl": "./5adacd96b83d3e597ec1c83295ad9da6c0a5482db858ac988b652ac333440749.jpg",
        "featured": false
      },
      {
        "title": "Introducing Docker Secrets Management - Docker Blog",
        "url": "https://blog.docker.com/2017/02/docker-secrets-management",
        "description": "Containers are changing how we view apps and infrastructure. Whether the code inside containers is big or small, container architecture introduces a change to how that code behaves with hardware – it fundamentally abstracts it from the infrastructure. Docker believes … Continued",
        "imageUrl": "./b5212a47ee81f452dfde409cf71adb7368199542edc5f6fd4d1935e92fb2626c.jpg",
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  },
  {
    "issueNumber": 1,
    "title": "Introducing Lottie – Airbnb Engineering & Data Science",
    "slug": "2017-03-13-001-introducing-lottie-airbnb-engineering-data-science",
    "date": "2017-03-13",
    "templateType": "old-mailchimp",
    "intro": null,
    "quote": null,
    "links": [
      {
        "title": "Introducing Lottie – Airbnb Engineering & Data Science",
        "url": "https://medium.com/airbnb-engineering/introducing-lottie-4ff4a0afac0e",
        "description": null,
        "imageUrl": null,
        "featured": true
      },
      {
        "title": "Setting up an Angular 2 Development Environment",
        "url": "https://ponyfoo.com/articles/setting-up-angular-2-development-environment",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "ryanmcdermott/clean-code-javascript",
        "url": "https://github.com/ryanmcdermott/clean-code-javascript",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "Observatory by Mozilla",
        "url": "https://observatory.mozilla.org/",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A million requests per second with Python",
        "url": "https://medium.freecodecamp.com/million-requests-per-second-with-python-95c137af319",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "RethinkDB joins The Linux Foundation - RethinkDB",
        "url": "https://rethinkdb.com/blog/rethinkdb-joins-linux-foundation",
        "description": null,
        "imageUrl": null,
        "featured": false
      },
      {
        "title": "A Comprehensive Guide to Building a Scalable Web App on Amazon Web Services - Part 1",
        "url": "https://airpair.com/aws/posts/building-a-scalable-web-app-on-amazon-web-services-p1",
        "description": null,
        "imageUrl": null,
        "featured": false
      }
    ],
    "book": null,
    "additionalLinks": null,
    "sponsor": null
  }
]