<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chris Quinn</title>
    <description>The latest articles on Forem by Chris Quinn (@chrisquinnr).</description>
    <link>https://forem.com/chrisquinnr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F236325%2Fdacc964f-dde5-47a7-882e-40bf0b4c9886.jpg</url>
      <title>Forem: Chris Quinn</title>
      <link>https://forem.com/chrisquinnr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chrisquinnr"/>
    <language>en</language>
    <item>
      <title>You're Fixing the Wrong Bugs</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Sat, 20 Dec 2025 09:06:07 +0000</pubDate>
      <link>https://forem.com/cazon/youre-fixing-the-wrong-bugs-2mnh</link>
      <guid>https://forem.com/cazon/youre-fixing-the-wrong-bugs-2mnh</guid>
      <description>&lt;p&gt;Your bug tracker has 47 open errors, but which one is breaking checkout? Which affects just one user? Which is getting worse this week? Most teams debug randomly instead of strategically, wasting time on low-impact bugs while critical issues affect revenue. Without impact scoring and trend analysis, bug backlogs become undifferentiated noise where revenue-critical errors sit alongside cosmetic annoyances.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is Post 1 of our &lt;a href="http://cazon.dev/" rel="noopener noreferrer"&gt;Cazon&lt;/a&gt; launch series on error intelligence. Follow along as we unpack the problem, introduce solutions, and show you how &lt;a href="http://cazon.dev/" rel="noopener noreferrer"&gt;Cazon&lt;/a&gt; is building the missing intelligence layer between production errors and AI coding assistants. You can also read along at &lt;a href="https://blog.cazon.dev/" rel="noopener noreferrer"&gt;https://blog.cazon.dev/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;It's Monday morning. We open the bug tracker and see 47 open issues. Our manager asks: &lt;em&gt;"Which bug should we fix first?"&lt;/em&gt;, so we scan the list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TypeError: Cannot read property 'user' of undefined (opened 3 weeks ago)
API timeout in payment processing (opened yesterday)  
Button misaligned on mobile Safari (opened 2 months ago)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which one matters? We check timestamps, read descriptions, look for labels. Nothing tells us which bug is breaking the business and which one is just noise. So we do what every engineering team does: &lt;strong&gt;we fix the newest one&lt;/strong&gt;. Or the loudest one. Or whichever one the CEO just complained about in Slack.&lt;/p&gt;

&lt;p&gt;This is the hidden cost of undifferentiated bug backlogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of Random Debugging
&lt;/h2&gt;

&lt;p&gt;Here's what most engineering teams don't talk about: &lt;strong&gt;40% of developer time goes to debugging&lt;/strong&gt;. That's not controversial; everyone knows debugging takes time. But here's the part that hurts: &lt;strong&gt;60% of that debugging time is spent on the wrong bugs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the face of it, it's easy, right? Oh, the checkout flow has a bug affecting 27 users this week with a revenue impact of $1,000. The admin panel has a typo in a rarely-used modal with a revenue impact of $0. Both are "open bugs" in the same list but surely we tackle the checkout flow first... right? Hands up if your team has ever fixed the admin panel issue first. &lt;/p&gt;

&lt;p&gt;The typical mid-size engineering team has 30-50 open bugs at any time. Without impact scoring, we're debugging blind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "Newest" Doesn't Mean "Most Important"
&lt;/h2&gt;

&lt;p&gt;The default sort order in most bug trackers is &lt;strong&gt;created date (newest first)&lt;/strong&gt;. This makes sense for support tickets but makes zero sense for engineering priorities.&lt;/p&gt;

&lt;p&gt;Consider these three bugs, all opened in the same week:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug A: Payment API throwing 500 errors&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Started last Tuesday, affecting 5% of transactions. Trending UP from 4 errors/hour to 20 errors/hour. &lt;strong&gt;Revenue impact: Medium-High.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug B: Search results sometimes empty&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Started Wednesday, affects 1 user so far. Not trending. &lt;strong&gt;Revenue impact: The CEO saw it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug C: Dashboard loading slowly&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Started Monday, affects all users. Trending DOWN (we added a CDN). &lt;strong&gt;Revenue impact: Low&lt;/strong&gt; (UX annoyance, not a blocker).&lt;/p&gt;

&lt;p&gt;If we sort by date, we fix &lt;strong&gt;Bug A last&lt;/strong&gt; because it's the oldest. But it's the only one that's actively getting worse and costing money. This is why "newest first" is dangerous. It rewards recency, not urgency.&lt;/p&gt;

&lt;p&gt;If we sort by perceived priority, then take a guess at which one we're fixing first. &lt;/p&gt;

&lt;h2&gt;
  
  
  The "Gut Feeling" Approach Doesn't Scale
&lt;/h2&gt;

&lt;p&gt;Small teams can debug by feel. With 5-10 bugs, someone on the team knows which ones matter. We discuss them in standup and have context. But the moment we hit 15-20 open bugs, gut feeling breaks down.&lt;/p&gt;

&lt;p&gt;Why? &lt;strong&gt;Cross-project bugs&lt;/strong&gt; mean different teams don't know each other's context. &lt;strong&gt;New team members&lt;/strong&gt; can't distinguish critical from noise. &lt;strong&gt;Distributed teams&lt;/strong&gt; lack shared standups to build tribal knowledge. &lt;strong&gt;Technical debt&lt;/strong&gt; means old bugs become invisible background radiation.&lt;/p&gt;

&lt;p&gt;At 30+ bugs, the backlog becomes write-only. Bugs go in. Nobody reads them. They accumulate until someone does a "bug bankruptcy" and closes everything older than 90 days. We've all done this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Traditional Bug Trackers Don't Solve This
&lt;/h2&gt;

&lt;p&gt;Let's be honest: &lt;strong&gt;Jira, Linear, GitHub Issues&lt;/strong&gt; don't actually &lt;em&gt;triage&lt;/em&gt; bugs. They organize them. They let us add labels and priorities. They sort by arbitrary fields. But they don't tell us which bug affects the most users, which bug is trending worse this week, which bug blocks revenue versus which is cosmetic, or which bug is a known pattern with a 5-minute fix.&lt;/p&gt;

&lt;p&gt;We have to manually research every bug to figure out its impact, and we have to do this over and over as new bugs arrive. Most teams don't. Instead, they use proxies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Fix bugs with 'P0' label first"&lt;/strong&gt; – But who sets the priority? Gut feeling. Or the CEO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Fix bugs affecting premium customers first"&lt;/strong&gt; – But how do we know which users are affected? Manual correlation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Fix bugs with the most comments first"&lt;/strong&gt; – So the loudest bug wins? Great.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional bug trackers are &lt;strong&gt;error organizers&lt;/strong&gt;, not &lt;strong&gt;error intelligence&lt;/strong&gt;. They're filing cabinets, not assistants.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem: Lack of Context
&lt;/h2&gt;

&lt;p&gt;Here's what we actually need to know to triage a bug:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Impact:&lt;/strong&gt; How many users are affected?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend:&lt;/strong&gt; Is this getting better or worse?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Severity:&lt;/strong&gt; Does it block functionality or just annoy?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recurrence:&lt;/strong&gt; Is this a new bug or the same one we've seen before?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern:&lt;/strong&gt; Do we have a known fix for this class of error?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most bug trackers give us none of this. We get a stack trace (if we're lucky), a description (often incomplete), a timestamp, and maybe some labels (inconsistently applied).&lt;/p&gt;

&lt;p&gt;So we waste engineering time doing forensics. We search logs to see how many times it occurred. We correlate error IDs to user accounts. We check if this matches a previous bug. We Google the error message for the 47th time. By the time we've gathered context on 5 bugs, &lt;strong&gt;an hour has passed&lt;/strong&gt; and we still haven't fixed anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;p&gt;Five years ago, this was just "the cost of doing business." Debugging was manual. Triage was manual. We hired more engineers and hoped for the best.&lt;/p&gt;

&lt;p&gt;But something changed: &lt;strong&gt;AI coding assistants&lt;/strong&gt;. Claude, Copilot, Cursor are incredible at &lt;em&gt;fixing&lt;/em&gt; bugs once we tell them what to fix. But they can't tell us &lt;em&gt;which bug to fix first&lt;/em&gt;. They have no context about production errors, user impact, or business priorities.&lt;/p&gt;

&lt;p&gt;We're giving AI tools the keys to the codebase, but they're debugging blind just like we are. This is why the problem is more urgent than ever. &lt;strong&gt;AI makes code easier to write but doesn't make bugs easier to triage.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;If you're a senior engineer or engineering manager, you've lived this problem. You've spent Monday mornings staring at that bug list, wondering what to fix.&lt;/p&gt;

&lt;p&gt;The problem isn't volume. It's &lt;strong&gt;lack of intelligence&lt;/strong&gt;. You don't need more bug tracking. You need error &lt;em&gt;intelligence&lt;/em&gt;: context, impact scores, patterns, and prioritization.&lt;/p&gt;

&lt;p&gt;Next time, we'll explore why AI coding assistants make this problem worse, not better, and what needs to change.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>errors</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Picking up Rust(y) habits: learning Rust as a JS developer</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Thu, 04 May 2023 04:16:35 +0000</pubDate>
      <link>https://forem.com/salted-bytes/picking-up-rusty-habits-learning-rust-as-a-js-developer-2dnj</link>
      <guid>https://forem.com/salted-bytes/picking-up-rusty-habits-learning-rust-as-a-js-developer-2dnj</guid>
      <description>&lt;p&gt;Do you work with Javascript? I do: let's first pour one out for all the idiosyncrasies of the language we know and love and acknowledge that for all its faults, the JS/TS ecosystem is &lt;em&gt;thriving&lt;/em&gt;: &lt;a href="https://2022.stateofjs.com/en-US/conclusion/" rel="noopener noreferrer"&gt;https://2022.stateofjs.com/en-US/conclusion/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While there's plenty of frameworks, micro-frontends and full-stack toolchains to master, there's something to be said for broadening your horizons. You may be wondering what other programming languages are worth learning, not least to expand your skills and improve your career prospects. &lt;/p&gt;

&lt;p&gt;I'm here to pitch one to you: &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;. Rust has gained a lot of popularity in recent years, let's explore why Rust is a good choice for Javascript developers to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Rust?
&lt;/h2&gt;

&lt;p&gt;Rust is a systems programming language, originally developed at Mozilla as a personal project in 2006 by &lt;a href="https://twitter.com/graydon_pub" rel="noopener noreferrer"&gt;Graydon Hoare&lt;/a&gt;. It's designed to be a safe, fast, and concurrent language that can be used for a wide range of applications. Rust is particularly popular for developing low-level software, such as operating systems, device drivers, and web browsers. &lt;/p&gt;

&lt;p&gt;Yeah, that all sounds kinda dry, but how about this: Rust was named after a &lt;a href="https://en.wikipedia.org/wiki/Rust_(fungus)" rel="noopener noreferrer"&gt;hardy fungus&lt;/a&gt;, due to one of its primary strengths being the &lt;a href="https://en.wikipedia.org/wiki/Memory_safety" rel="noopener noreferrer"&gt;enforcement of memory safety&lt;/a&gt;. This is a key strength of the language, we'll come back to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should I learn Rust?
&lt;/h2&gt;

&lt;p&gt;Here are five reasons why Rust is a good choice for you to learn right now in 2023:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Performance and Safety
&lt;/h3&gt;

&lt;p&gt;One of Rust's primary advantages is its speed and safety. Rust is a compiled language, which means that code written in Rust is transformed into machine code that can be executed directly by a computer's CPU. This makes Rust much faster than interpreted languages like Javascript. Additionally, Rust has built-in memory safety features that prevent common programming errors, such as null or dangling pointer errors, which can cause crashes or security vulnerabilities. &lt;/p&gt;

&lt;p&gt;Hot take incoming: &lt;em&gt;This means that Rust code is much less likely to cause bugs or security vulnerabilities than Javascript.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Compatibility with WebAssembly
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://webassembly.org/" rel="noopener noreferrer"&gt;WebAssembly (WASM)&lt;/a&gt; is a low-level, portable bytecode format that is designed to be executed in web browsers. WASM allows developers to write high-performance code in languages other than Javascript and run them in the browser. Rust is an excellent language for writing code that can be compiled to WASM, meaning that you can write Rust code that can run directly in the browser, alongside or instead of Javascript. Check out this guide for the how and why: &lt;a href="https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Learning Rust can improve your Javascript skills
&lt;/h3&gt;

&lt;p&gt;Rust and Javascript are very different languages, but learning Rust can (albeit indirectly) improve your Javascript skills. Rust emphasizes the importance of code organization, strict typing and modularity - for me personally, I enjoyed being shaken out of my comfort zone by developing in Rust and making small, simple projects that allowed me to learn (and fail) and iterate quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Rust's growing popularity
&lt;/h3&gt;

&lt;p&gt;Rust is a relatively new language, but it has been rapidly growing in popularity over the past few years. Many large companies, such as Microsoft, Amazon, and Mozilla, have adopted Rust for in-house projects. Learning Rust now can put you in a good position to take advantage of the growing demand for Rust developers in the future. There are some projects that track programming language popularity such as the &lt;a href="https://www.tiobe.com/tiobe-index/" rel="noopener noreferrer"&gt;Tiobe index&lt;/a&gt;, which ranks Rust in the top 20 languages. &lt;/p&gt;

&lt;h3&gt;
  
  
  5. Have your cake and eat it
&lt;/h3&gt;

&lt;p&gt;OK, fine, you might not be ready to wholesale drop our beloved JS and jump ship entirely, I understand. But what if I told you that you can leverage all the power of Rust &lt;em&gt;within&lt;/em&gt; your Node projects? Let me introduce you to Neon: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://neon-bindings.com/" rel="noopener noreferrer"&gt;https://neon-bindings.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi7dujazkn4s1x8y2w53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi7dujazkn4s1x8y2w53.png" alt="Screenshot of the Neon Project homepage" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap up
&lt;/h2&gt;

&lt;p&gt;Rust is a powerful and versatile language: its speed, safety, compatibility with WebAssembly, and growing popularity make it an excellent choice for Javascript developers to learn. &lt;/p&gt;

&lt;p&gt;Whether you're looking to improve your skills, build high-performance web applications, or explore new career opportunities, Rust is definitely worth checking out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rust-lang.org/learn" rel="noopener noreferrer"&gt;https://www.rust-lang.org/learn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA" rel="noopener noreferrer"&gt;https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Meteor.js Bootstrap Project</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Mon, 08 Nov 2021 21:47:11 +0000</pubDate>
      <link>https://forem.com/salted-bytes/meteorjs-bootstrap-project-50eg</link>
      <guid>https://forem.com/salted-bytes/meteorjs-bootstrap-project-50eg</guid>
      <description>&lt;p&gt;Cover photo by &lt;a href="https://unsplash.com/@ozgomz?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Oziel Gómez&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/boot?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over at &lt;a href="https://github.com/chrisquinnr/meteor-bootstrap" rel="noopener noreferrer"&gt;https://github.com/chrisquinnr/meteor-bootstrap&lt;/a&gt; you can find a quickstart app to get you up and running with a few Meteor basics, including accounts, routing, collections and adding a UI library like Bootstrap. &lt;/p&gt;

&lt;p&gt;We're using good old Blaze in this example but a shiny new Svelte version will be coming soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quickstart
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get Meteor installed: &lt;a href="https://www.meteor.com/developers/install" rel="noopener noreferrer"&gt;https://www.meteor.com/developers/install&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Clone the &lt;a href="https://github.com/chrisquinnr/meteor-bootstrap" rel="noopener noreferrer"&gt;repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;meteor npm install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;meteor&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Meteor?
&lt;/h2&gt;

&lt;p&gt;Meteor has been making an awesome comeback over the past 18 months after the original development team moved on to new GraphQL-flavoured pastures. After being bought out by a VC firm, the project has picked up pace and as seen a renewed focus on addressing some of Meteor's roadmap.&lt;/p&gt;

&lt;p&gt;Meteor is full stack JS framework ideally suited to realtime applications. Its early advantages were zero-config websockets and ES6 that #justWorked, but now I find that it's a great tool for prototyping and building MVPs, since we not only get to leverage the wonders of NPM but also the framework lets you bring your own frontend. Blaze, React, Angular and now Svelte are all options.&lt;/p&gt;

&lt;p&gt;Like any framework, Meteor's benefits come at a price, in that you need to buy in to Meteor's highly opinionated structure and concepts. Fortunately these aren't too crazy and most of the rules can be broken if you want, but there are plenty of gotchas that will trip first time users up.&lt;/p&gt;

&lt;p&gt;Hopefully that's where this bootstrap project can help, getting you from zero to... something a little faster. I'm not suggesting this is a gold standard, and I'd recommend the resources below for the authoratative take on things like application structure and best practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;In suggested order of reading for anyone new to the framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://guide.meteor.com/" rel="noopener noreferrer"&gt;Meteor Guide&lt;/a&gt; - Read this first!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.meteor.com/developers/tutorials" rel="noopener noreferrer"&gt;Official Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.meteor.com/#/full/" rel="noopener noreferrer"&gt;Meteor API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you're up and running, why not check out the following?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://forums.meteor.com/" rel="noopener noreferrer"&gt;Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/meteor-devtools-evolved/ibniinmoafhgbifjojidlagmggecmpgf?hl=en" rel="noopener noreferrer"&gt;Meteor Devtools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://impact.meteor.com/" rel="noopener noreferrer"&gt;2021 Meteor Impact conference&lt;/a&gt;, with some great talks from the community and previews of upcoming features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you're hungry for more packages, examples and great community content, check these out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/urigo/awesome-meteor" rel="noopener noreferrer"&gt;Awesome Meteor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/arggh/awesome-blaze" rel="noopener noreferrer"&gt;Awesome Blaze&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Packages
&lt;/h2&gt;

&lt;p&gt;Over and above anything I've written below, you should check out the &lt;a href="https://github.com/Meteor-Community-Packages" rel="noopener noreferrer"&gt;Meteor Community Packages repo&lt;/a&gt;. This is a welcome new endeavour to bring awesome community-created modules under one roof.&lt;/p&gt;

&lt;h3&gt;
  
  
  Styling
&lt;/h3&gt;

&lt;p&gt;Ironically the first batch of packages this project depends on aren't Meteor specific, so won't be found in &lt;code&gt;.meteor/packages&lt;/code&gt;. We use &lt;code&gt;meteor npm install&lt;/code&gt; to add &lt;a href="https://getbootstrap.com/docs/5.1/getting-started/introduction/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; and associated dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Utility, Subscriptions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;underscore&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Currently only used for a simple randomise function, but I use it in most projects. Of course, you can replace this with [lodash] or any number of other helper libraries. Consider only importing the functions you use to avoid loading in the whole library (see &lt;a href="https://javascript.info/import-export" rel="noopener noreferrer"&gt;tree-shaking&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;meteorhacks:subs-manager&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;A very useful package for controlling how your application behaves based on when subscriptions are ready. I've used this package on several enterprise projects and it's well worth it.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;simple:reactive-method&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Meteor helpers are powerful, they allow you to reactively update your UI based on data mutations over the wire. Sometimes though, you need to listen for the result of a server-side operation. Meteor.call is not inherently reactive, meaning you'd need to continously poll the server for the result you want. Enter Reactive Methods, a neat solution to this issue. A reactive method can call any Meteor.method you've defined on the server and, if used in a Template helper, will update reactively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Routing &amp;amp; Templates
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;ostrio:flow-router-extra&lt;/em&gt; &amp;amp;&amp;amp; &lt;em&gt;mealsunite:flow-routing-extra&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;You'd be forgiven for being a little confused about the state of routing in Meteor. I know I was. The catch-all community-created solution for many years was Flow Router, which was thankfully picked up by Veliov Group (&lt;a href="https://github.com/veliovgroup" rel="noopener noreferrer"&gt;https://github.com/veliovgroup&lt;/a&gt;). It remains my choice too, but needs a little help from sibling packages to play nice with blaze layout below.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;kadira:blaze-layout&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;A neat way to declare and control layouts in conjunction with your routing solution, obviously for Blaze.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accounts
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;useraccounts:core&lt;/em&gt; / &lt;em&gt;&lt;a href="mailto:accounts-password@2.2.0"&gt;accounts-password@2.2.0&lt;/a&gt;&lt;/em&gt; / &lt;em&gt;useraccounts:bootstrap&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The combination of these packages gives us user accounts, authentication and more straight out of the box! Awesome right! It's even extensible with other packages to add oAuth login providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Login splash screen
&lt;/h3&gt;

&lt;p&gt;I've added an artifical loading screen, just because, by delaying the result of a subscriptions listener, you can find this in &lt;code&gt;client/main.js&lt;/code&gt;. Usually logging in is pretty much instantaneous. On that note, the &lt;code&gt;accounts-password&lt;/code&gt; / &lt;code&gt;useraccounts:core&lt;/code&gt; packages are great, and completely extensible including social media login.&lt;/p&gt;

&lt;h3&gt;
  
  
  Twilio
&lt;/h3&gt;

&lt;p&gt;If you dig a little deeper I've added instructions for an SMS-based login handler using Twilio (this was the main motivation for building this project in the first place). You need to set up Twilio as noted in the comments in &lt;code&gt;/imports/api/apimethods/methods.js&lt;/code&gt; and then trigger the SMS using the provided Meteor method e.g. &lt;code&gt;Meteor.call("smsLogin");&lt;/code&gt;&lt;/p&gt;

</description>
      <category>meteor</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>bootstrap</category>
    </item>
    <item>
      <title>Landmrk &amp; Serverless: innovation nirvana</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Tue, 02 Jun 2020 13:37:34 +0000</pubDate>
      <link>https://forem.com/chrisquinnr/landmrk-serverless-innovation-nirvana-13ck</link>
      <guid>https://forem.com/chrisquinnr/landmrk-serverless-innovation-nirvana-13ck</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9oaa87l8bztp1zexu94t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9oaa87l8bztp1zexu94t.png" alt="Big Beat Campaign, powered by Landmrk" width="800" height="421"&gt;&lt;/a&gt;&lt;br&gt;
The Landmrk Platform is our battle-tested, ultra-scalable platform for deploying web based, location-focussed digital experiences. During a recent campaign, our API gateway handled half a million requests in the space of 3 minutes with average CPU usage only touching 8% across a very lean autoscaling group. Landmrk campaigns typically experience huge traffic spikes in very short timeframes as our clients release new content, previously unseen artwork and tracks and compelling digital content. Fans are hyper-engaged, and we typically see high session lengths, low bounce rates and repeated engagements. Using a web-based campaign means nothing to install and no insidious permissions requests or continuous updates.&lt;/p&gt;

&lt;p&gt;Our platform is ultra-efficient, but with this efficiency comes the need to carefully steward the continued development, innovation and maintenance of this frankly awesome product. Adding new features rightly takes careful consideration, specification and delivery with full test suites and documentation - all of which takes a reasonable amount of time.&lt;/p&gt;

&lt;p&gt;Landmrk are, first and foremost about innovation, using cutting edge web technologies to deliver those compelling experiences that keep users coming back. So, my challenge as CTO is how to balance the stewardship of the platform versus our need to innovate &amp;amp; delight. &lt;/p&gt;

&lt;p&gt;I've recently been using the &lt;a href="https://serverless.com/framework/docs/" rel="noopener noreferrer"&gt;Serverless framework&lt;/a&gt; (uppercase for the framework, lowercase for the concept) to generate quick, one-shot backend services that offload discrete campaign logic to completely isolated environments. Our stack is based on AWS and being able to use a node runtime for Lambda services means we have the wealth and breadth of the npm registry to draw from in conjuring creative ways to work with location data &amp;amp; more. &lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://bigbeatspace.com/" rel="noopener noreferrer"&gt;recent campaign with Big Beat&lt;/a&gt; used a serverless function that took the user's location and calculated the distance from the user to the current position of the International space station, as well as the weather at their location - all of which we stamped onto a bespoke digital collectible the user could download and share. &lt;/p&gt;

&lt;p&gt;Naturally, none of this functionality would have been possible on-platform without significant time &amp;amp; investment. However, by mixing the flexibility of serverless endpoints with the robust, deterministic capabilities of the Landmrk platform, we were able to reach innovation nirvana with a digital collectible product that expanded a campaign's capabilities without compromising the platform codebase in any way.&lt;/p&gt;

&lt;p&gt;One concern about serverless functions is the so-called "cold start" problem wherein lambda functions may need time to "spin up" on first execution. However, given the nature of Landmrk campaigns (rapid, intense surges in traffic) once an instance is active it can remain so for around an hour afterwards, wherein the execution time can begin immediately, which suits us just fine. We are also able to leverage AWS provisioned concurrency options, which keep a certain number of instance "ready-to-go" to avoid this issue entirely. &lt;/p&gt;

&lt;p&gt;With the Landmrk platform and the Serverless framework at our side I'm excited at the possibility of bringing even bigger and bolder web campaigns to fans around the world. &lt;/p&gt;

&lt;p&gt;If you'd like to know more about what we get up to at Landmrk, check out our website below, or reach out to us on &lt;a href="https://twitter.com/landmrk" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.linkedin.com/company/landmrk/" rel="noopener noreferrer"&gt;Linked In&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'm Chris Quinn, CTO of Landmrk and you can catch up with me &lt;a href="https://twitter.com/chrisquinnr" rel="noopener noreferrer"&gt;@chrisquinnr&lt;/a&gt; on Twitter or ping a note to &lt;a href="mailto:hello@landmrk.it"&gt;hello@landmrk.it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://landmrk.it" rel="noopener noreferrer"&gt;https://landmrk.it&lt;/a&gt;&lt;br&gt;
&lt;a href="https://serverless.com" rel="noopener noreferrer"&gt;https://serverless.com&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Rise of No-Code (dude, where's my code)</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Mon, 02 Mar 2020 20:49:12 +0000</pubDate>
      <link>https://forem.com/salted-bytes/the-rise-of-no-code-dude-where-s-my-code-5c7b</link>
      <guid>https://forem.com/salted-bytes/the-rise-of-no-code-dude-where-s-my-code-5c7b</guid>
      <description>&lt;p&gt;On the latest episode of Salted Bytes, James and I tore into a veritable buffet of no-code web development platforms. &lt;/p&gt;

&lt;p&gt;From Wix and Squarespace to Zapier via Google Sheets (did we just invent a new startup?), we talk about how no-code platforms provide much-needed glue between the myriad SaaS behemoths slugging it out for your time, attention and subscription dollars. But not everything is as rosy as some no-code proponents would say - we discuss some of the pitfalls of going all-in on no-code: anyone for some of that sweet vendor lock-in? &lt;/p&gt;

&lt;p&gt;No-code is a polarising topic and super popular here on dev.to (check out &lt;a href="https://dev.to/search?q=no-code"&gt;https://dev.to/search?q=no-code&lt;/a&gt;), but contrary to some of the views we've seen James &amp;amp; I think no-code has it's place in a thriving digital marketplace and actually empowers business / product owners to either raise their game or push for that little bit of extra innovation (as a treat).&lt;/p&gt;

&lt;p&gt;In researching this episode we found a whole bunch of super-salty takes on no-code from devs across the Twitterverse, from the thoughtful and considered to the downright savage - and we include them here for your pleasure. Enjoy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Holy Salt!
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fih39r5f0bkud0og697hu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fih39r5f0bkud0og697hu.png" alt="Alt Text" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How could you say something so brave and so true
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyeamjxlw51jz1h0q3e7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyeamjxlw51jz1h0q3e7h.png" alt="How could you say something so brave and so true" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dadjoke.gif
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs8sdbm5rd3l495qowh3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs8sdbm5rd3l495qowh3v.png" alt="Dadjoke.gif" width="800" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  It is like cloud
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6xn2s75g5syemsitxo64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6xn2s75g5syemsitxo64.png" alt="It is like cloud" width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Low-effort Twitter screencaps aside, we're really interested to see what the NextBigThing&lt;sup&gt;TM&lt;/sup&gt; in no-code is, and even more interested to see if no-code continues to be such a polarising topic... or whether one day it'll sink into the doldrums of every day office life, like Clippy and and that guy who writes Excel macros.&lt;/p&gt;

&lt;p&gt;James &amp;amp; I think no-code is a valuable part of the web dev ecosystem, and here to stay - what do you think? Why not check out our latest episode at the links below and let us know in the comments!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/salted-bytes-podcast"&gt;https://dev.to/salted-bytes-podcast&lt;/a&gt;&lt;br&gt;
&lt;a href="https://saltedbytes.rocks" rel="noopener noreferrer"&gt;https://saltedbytes.rocks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till next time&lt;/p&gt;

&lt;p&gt;Chris&lt;/p&gt;

</description>
      <category>nocode</category>
      <category>podcast</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What (not?) to do in your new tech role</title>
      <dc:creator>Chris Quinn</dc:creator>
      <pubDate>Fri, 07 Feb 2020 17:59:23 +0000</pubDate>
      <link>https://forem.com/salted-bytes/what-not-to-do-in-your-new-tech-role-1lgi</link>
      <guid>https://forem.com/salted-bytes/what-not-to-do-in-your-new-tech-role-1lgi</guid>
      <description>&lt;p&gt;Recently on the Salted Bytes podcast we discussed what to do (and NOT) to do in your first few days at a new dev role. &lt;/p&gt;

&lt;p&gt;Some of this advice was very applicable to most jobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Get to know people"&lt;/li&gt;
&lt;li&gt;"Always join in the first few social events after you start"&lt;/li&gt;
&lt;li&gt;"Find and cherish your mentors"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers though, whether in your first role or your twentieth, we had  some very industry-specific tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't cling dogmatically to your old tooling or coding style&lt;/strong&gt; - it may be familiar but you need to learn the way things are done in your new place of work - it's very likely they've arrived at their stack for compelling reasons, which are worth hearing out, and respecting. One you've done that, if you still feel duty bound to evangelise your new colleagues on your perspective on tabs v space, go right ahead. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get to know people outside of your immediate team.&lt;/strong&gt; This can give you invaluable insight into your new role, either from top level strategy and culture or from the low to ground must know info like how the holiday calendar works and how to claim expenses. (most companies should absolutely cover this in your orientation, but let's be honest, it's not always thorough).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be curious, and ask the obvious question.&lt;/strong&gt; There's a great deal of pride, and conversely, imposter syndrome permeating software development. Don't be afraid to ask even the most humbling of questions: better now than 5 months down the line. There are myriad paths into development careers, not all of them computer-science based, and sometimes you'll encounter knowledge gaps that you didn't even know existed. Swallow that pride and ask the obvious question - clarity trumps assumption every day of the week. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;James &amp;amp; I covered more tips &amp;amp; tricks on the Salted Bytes podcast. Why not go check it out?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/salted-bytes-podcast"&gt;https://dev.to/salted-bytes-podcast&lt;/a&gt;&lt;br&gt;
&lt;a href="https://saltedbytes.rocks" rel="noopener noreferrer"&gt;https://saltedbytes.rocks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till next time&lt;/p&gt;

&lt;p&gt;Chris&lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
