<?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: Bob Bass</title>
    <description>The latest articles on Forem by Bob Bass (@bobdotjs).</description>
    <link>https://forem.com/bobdotjs</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%2F301013%2Ffcc9e84e-a5af-477b-8895-825e3a6c7097.jpg</url>
      <title>Forem: Bob Bass</title>
      <link>https://forem.com/bobdotjs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bobdotjs"/>
    <language>en</language>
    <item>
      <title>I solved the local database problem, so I built a tool</title>
      <dc:creator>Bob Bass</dc:creator>
      <pubDate>Sat, 27 Dec 2025 03:34:48 +0000</pubDate>
      <link>https://forem.com/bobdotjs/the-easiest-way-to-spin-up-a-local-database-5k1</link>
      <guid>https://forem.com/bobdotjs/the-easiest-way-to-spin-up-a-local-database-5k1</guid>
      <description>&lt;p&gt;I hit a massive pain point in my day-to-day work—and once I solved it for myself, I couldn’t not share it.&lt;/p&gt;

&lt;p&gt;That pain point?&lt;/p&gt;

&lt;p&gt;Local development databases.&lt;/p&gt;

&lt;p&gt;The State of Local Databases (a.k.a. Choose Your Poison)&lt;/p&gt;

&lt;p&gt;If you’re a working developer, you’ve probably rotated through some combination of these:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;br&gt;
Powerful, yes—but often slow, bloated, frustrating, and wildly overkill when all you want is a database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XAMPP on Windows&lt;/strong&gt;&lt;br&gt;
If you’re still doing this, I respect your resilience… but also, it’s not 2000 anymore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Postgres.app / DBngin (Mac-only)&lt;/strong&gt;&lt;br&gt;
Nice UX, but usually limited to one database at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neon / Supabase / PlanetScale&lt;/strong&gt;&lt;br&gt;
Great products—if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you don’t deal with migrations much&lt;/li&gt;
&lt;li&gt;you’re solo&lt;/li&gt;
&lt;li&gt;you’re always online&lt;/li&gt;
&lt;li&gt;you don’t need to quickly replicate production 
or staging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let’s talk about real-world complexity.&lt;/p&gt;

&lt;p&gt;Real Life Is Messy&lt;/p&gt;

&lt;p&gt;What if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You use Postgres on one project and MySQL on another&lt;/li&gt;
&lt;li&gt;You also rely on SQLite for mobile or embedded apps&lt;/li&gt;
&lt;li&gt;You work offline&lt;/li&gt;
&lt;li&gt;You use Windows during the day and macOS at night&lt;/li&gt;
&lt;li&gt;You need multiple versions of the same database engine running at once&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here’s the big one:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A PM shows you a bug that only appears on staging.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your local database is a Frankensteined mess that looks nothing like staging—or production. Debugging turns into guesswork, tribal knowledge, and prayer.&lt;/p&gt;

&lt;p&gt;Wouldn’t it be nice if you could just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clone a real database locally&lt;/li&gt;
&lt;li&gt;spin it up instantly&lt;/li&gt;
&lt;li&gt;run multiple engines and versions side by side&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...all of it from a simple CLI, an interactive CLI which doubles as a scriptable library&lt;/p&gt;

&lt;p&gt;That’s Why I Built SpinDB&lt;/p&gt;

&lt;p&gt;Just run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx spindb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or better:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pnpx spindb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or best of all:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pnpm i -g spindb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And then simply:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;spindb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;SpinDB is a cross-platform CLI that lets you spin up local databases—fast—without Docker.&lt;/p&gt;

&lt;p&gt;It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;downloads database engines automatically&lt;/li&gt;
&lt;li&gt;runs them in lightweight “pseudo-containers”&lt;/li&gt;
&lt;li&gt;supports multiple versions at once&lt;/li&gt;
&lt;li&gt;works across Windows, macOS, and Linux&lt;/li&gt;
&lt;li&gt;is scriptable, so you can spin up databases programmatically for tests or tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m already using it professionally.&lt;/p&gt;

&lt;p&gt;What It Can Do Today&lt;/p&gt;

&lt;p&gt;Right now, SpinDB lets you do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run Postgres 14 on port 5432&lt;/li&gt;
&lt;li&gt;Run Postgres 17 on port 5433&lt;/li&gt;
&lt;li&gt;Run MySQL 5.7 on port 3306&lt;/li&gt;
&lt;li&gt;Run MySQL 8 on port 3307&lt;/li&gt;
&lt;li&gt;Manage SQLite databases directly inside project folders&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All at the same time. No Docker. No VM gymnastics.&lt;/p&gt;

&lt;p&gt;Docs live here: 👉 &lt;a href="https://github.com/robertjbass/spindb" rel="noopener noreferrer"&gt;SpinDB&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I bet this idea sounds a little bit crazy to you. But it works, and it works really well. &lt;/p&gt;

&lt;p&gt;As of today, SpinDB supports Windows, in addition to macOS and Linux (which it already supported).&lt;/p&gt;

&lt;p&gt;What’s Coming Next&lt;/p&gt;

&lt;p&gt;Planned additions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more quality-of-life improvements as it approaches v1.0.&lt;/p&gt;

&lt;p&gt;A Quick Reality Check&lt;/p&gt;

&lt;p&gt;I completely understand why most tools don’t support Windows, macOS, and Linux simultaneously.&lt;/p&gt;

&lt;p&gt;This is a hard problem—especially when you’re juggling filesystem differences, process management, networking, and platform quirks.&lt;/p&gt;

&lt;p&gt;That said… I wanted it badly enough that I decided to solve it anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This has been a labor of love. I’ve been chipping away at it for a while, and I’m genuinely excited to see if it helps other people the way it’s helped me.&lt;/p&gt;

&lt;p&gt;If you think it’s neat&lt;/p&gt;

&lt;p&gt;⭐ star the repo&lt;/p&gt;

&lt;p&gt;If you think it’s dumb&lt;/p&gt;

&lt;p&gt;💬 tell me why (politely or not)&lt;/p&gt;

&lt;p&gt;Either way—thanks for entertaining my silly little side project.&lt;/p&gt;

&lt;p&gt;Happy hacking.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>mysql</category>
      <category>sqlite</category>
      <category>database</category>
    </item>
    <item>
      <title>Becoming the person that I needed when I started</title>
      <dc:creator>Bob Bass</dc:creator>
      <pubDate>Thu, 08 Jul 2021 20:49:47 +0000</pubDate>
      <link>https://forem.com/bobdotjs/becoming-the-person-that-i-needed-when-i-started-29jn</link>
      <guid>https://forem.com/bobdotjs/becoming-the-person-that-i-needed-when-i-started-29jn</guid>
      <description>&lt;p&gt;The title is confusing so allow me to elaborate. &lt;/p&gt;

&lt;p&gt;When I first started taking software development seriously, I didn't have a mentor. We could go into the psychology of why established developers aren't always friendly with beginners - but it doesn't seem necessary. It is a well-known punchline that Stack Overflow has discouraged more than a handful of beginners. &lt;/p&gt;

&lt;p&gt;When I was just getting started I would often pay a random experienced developer I found on LinkedIn somewhere in the ballpark of $100 to talk through a problem I was stuck on. The call might last 15 minutes or 45 minutes but needless to say I exhausted all of my options before doing this. &lt;/p&gt;

&lt;p&gt;Now that I am reasonably competent, it seems that I'm in a position to really make someone's day. I have found that if you tell a beginner that they are welcome to reach out to you if they get stuck, they almost always will. If you jump on a video call with a beginner, usually they are trying to accomplish something very simple. You may have spared 15 minutes out of your day to help a perfect stranger, but that 15 minutes may have prevented them from wasting a month moving in the wrong direction. &lt;/p&gt;

&lt;p&gt;I can provide a list of anecdotal information but instead I would like to encourage the more experienced developers to think back to a time when you were stuck on something very simple just because you were missing a small piece of context. Maybe you took a course and the instructor took something for granted that you really needed explained. &lt;/p&gt;

&lt;p&gt;I have found that the small investment of time that I put into helping the occasional stranger seems to have a disproportionately positive effect on them. No matter where I value my time, 15 minutes of it is an order of magnitude more valuable to a newbie developer than most other people.&lt;/p&gt;

&lt;p&gt;Of course there's a caveat to that. Time is your most valuable asset and you should never write that off. I also believe that what I'm proposing isn't completely selfless. &lt;/p&gt;

&lt;p&gt;When I help a beginner, I like to think that it's an opportunity for me to reinforce my knowledge, network, and make someone's day all at once. It feels good. &lt;/p&gt;

&lt;p&gt;I would like to encourage anyone who stumbles across this post to think back to a time when you've wasted days, weeks, or even months working on solving the wrong problem. Think back to the last time something clicked for you in a really meaningful way that caused you to start over instead of refactoring. &lt;/p&gt;

&lt;p&gt;I remember what I needed when I got started. I needed an experienced developer that was willing to spend 15 minutes talking through a problem with me. I needed someone with a real world perspective to gently nudge me back on track. I needed to feel like I wasn't massively inconveniencing every developer that I spoke with, simply because I was lacking some insight. &lt;/p&gt;

&lt;p&gt;I've been making an active effort to be that mentor to other people. It's not surprising that people are incredibly grateful when you spend a few minutes helping them out, the part that is however surprising - is that I think I've experienced more growth since I've opened myself up to do this.&lt;/p&gt;

&lt;p&gt;I hope to see the culture shift to be less critical towards the beginners who are often already uncomfortable asking for help. &lt;/p&gt;

</description>
      <category>leadership</category>
      <category>codenewbie</category>
      <category>culture</category>
    </item>
    <item>
      <title>Project NextApp (beta) needs some testers</title>
      <dc:creator>Bob Bass</dc:creator>
      <pubDate>Mon, 14 Dec 2020 11:52:21 +0000</pubDate>
      <link>https://forem.com/bobdotjs/project-nextapp-beta-needs-some-testers-3fm6</link>
      <guid>https://forem.com/bobdotjs/project-nextapp-beta-needs-some-testers-3fm6</guid>
      <description>&lt;p&gt;I built a platform that I think can be very useful for people to learn new technologies. To be honest, I built it for myself because I couldn't find it anywhere else. &lt;/p&gt;

&lt;p&gt;I have a theory that the best way to learn new technologies is by building a small project with it with no real expectations. It also helps when there's a community to consult with. &lt;/p&gt;

&lt;p&gt;2 years ago, I never thought I would be a professional developer. I started dabbling with software for my business and realized that I enjoyed it much more than I enjoyed owning a call center. I started building small projects and it was a very effective learning tool that greatly exceeded anything that tutorials did for me.&lt;/p&gt;

&lt;p&gt;I joined a startup accelerator to try to make a career out of my software. Now I'm at a crossroads where my software that I've been building long-term is getting really boring but I have a long waiting list and I can't abandon it. To prevent burnout, I've been looking for small weekly hackathons. Since I've been unable to find this. I created it. &lt;/p&gt;

&lt;p&gt;ProjectNext.app is a community built around learning new technologies with small projects. Let's say that I want to learn to publish an NPM package. maybe I want to set myself a goal of one week to publish an NPM package that initializes TypeScript inside of a legacy Vue.js app. I can set that as a vague goal and set it to 1 week. &lt;br&gt;
Over the course of that week, it might turn out that instead - I want to build an NPM package with a small standard library of functions that I always seem to be writing. I might modify the project to be a two-week project and update the goal. &lt;br&gt;
The Monday following the project completion date will have a community zoom call hosted where I get to present what I built, what I learned, and what I plan on doing next. Other people from the community can share their thoughts with me and maybe point me in the right direction if they see that I'm stuck on a concept. Maybe, during the call I share that my next project is going to be a GoLang REST API, and user123, also on the zoom call happens to be a go enthusiast. They might want to comment on a really good udemy class that they took and recommend. &lt;/p&gt;

&lt;p&gt;Meanwhile, you're building up a profile that will track which technologies you learn over time. It's possible that in the future I can use this platform to generate resumes. I would like for this platform to be incredibly friendly to beginners but also I wanted to be a rewarding experience for all of us developers who are constantly building side projects and learning new technologies. &lt;/p&gt;

&lt;p&gt;Learning new technologies is 50% of the "mission" while the other 50% is helping developers find a spark for a long-term idea by providing a framework to iterate quickly and get feedback until they find something more permanent. &lt;/p&gt;

&lt;p&gt;It integrates with GitHub so there's a lot of room for a lot of cool features down the line. &lt;/p&gt;

&lt;p&gt;ProjectNext.app was its own first submission. It was a proof of concept. I wanted to see if I could build it in one week and learn some new technologies in the process. I did. I also went through a life-changing career change at 30 years old and I want to help other developers do the same. I'm very interested in mentoring some beginners and I think that this platform can help me scout out some beginner developers who might need that added little bit of direction. &lt;/p&gt;

&lt;p&gt;The concept is very early on right now. I have a slack channel that is going to act as a hub for casual conversation until I build a community right into the website. &lt;br&gt;
I have a handful of other developers who are also in the same accelerator as myself who are also willing to help beginners, while simultaneously interested in using this platform to hone their own skills. &lt;/p&gt;

&lt;p&gt;A few features are missing right now. It doesn't yet have the ability to post and update. That functionality will be finished later this week. The same is true of following projects and creating teams. &lt;/p&gt;

&lt;p&gt;I have had at least two companies express interest in sponsoring prizes for small hackathons. It's something I'm definitely going to explore a bit deeper.&lt;/p&gt;

&lt;p&gt;I will share a proper release on here once all of the features are finished being implemented, but I would really love a few people to join early if only to help me replace some of the placeholder projects with real ones.&lt;/p&gt;

&lt;p&gt;If you are a beginner and you're interested in this, I'm also happy to provide a little bit of mentorship to help you get going if you choose to join. I'm looking for a community feedback to help me figure out a direction to take this thing. It's not aimed at becoming a viable business model, I'm just creating a platform that I personally wish existed and have been unable to find so far. &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%2Fi%2F1wun5zoab9rrgqs6jwhs.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%2F1wun5zoab9rrgqs6jwhs.png" alt="Alt Text" width="800" height="1644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please let me know your thoughts. Does this sound interesting? Are you interested in being an early tester? What turns you off from this idea? What excites you about it? This whole thing is very new. I also recorded the process of building the app from start to finish and I'm going to host that video so that it's embedded on the project page. If it goes over well, I'm going to make that a permanent feature so that others can do the same thing. &lt;/p&gt;

&lt;p&gt;I'm looking forward to getting some feedback and helping some developers of all skill levels to level up their skills. &lt;/p&gt;

&lt;p&gt;Does ProjectNext.app have a place in the 2021 developer ecosystem? You tell me!&lt;/p&gt;

</description>
      <category>firstyearincode</category>
      <category>beginners</category>
      <category>help</category>
      <category>vue</category>
    </item>
    <item>
      <title>Leaving stability to bootstrap a SaaS startup</title>
      <dc:creator>Bob Bass</dc:creator>
      <pubDate>Fri, 04 Sep 2020 08:30:30 +0000</pubDate>
      <link>https://forem.com/bobdotjs/leaving-stability-to-bootstrap-a-saas-startup-175p</link>
      <guid>https://forem.com/bobdotjs/leaving-stability-to-bootstrap-a-saas-startup-175p</guid>
      <description>&lt;p&gt;I have been with some people may have referred to as a bottom feeder in the past. Almost 10 years ago I opened a debt collection agency and it has been fairly stable and moderately successful but I sold it in November of 2019 so that I could pursue automation full-time. &lt;/p&gt;

&lt;p&gt;I won't bore you with the details of how I ended up starting a small business automation agency but pivoting entirely to bootstrapping a startup aimed at creating cutting-edge software for the debt collection industry, but I will mention that over the years I created software for my agency using C# and .NET. Did that collection industry is notoriously 20 years behind the rest of the world when it comes to technology and I understand why that is. &lt;/p&gt;

&lt;p&gt;Nobody likes to be involved with the debt collection industry. There are bad actors who give the industry a bad name, consumer lawsuits are rampant, laws are unclear, outdated, and ambiguous, but most importantly - nobody has seen the need to fix a system that many people won't acknowledge is broken. &lt;/p&gt;

&lt;p&gt;If you are using dev.to, it's probably fair to assume that you are technologically inclined. That isn't the case for people in the debt collection world. Some agencies are processing $1 million monthly while using physical desk phones and Windows XP desktop. That isn't an exaggeration, it's not even an edge case. &lt;/p&gt;

&lt;p&gt;There has been one platform that tried to create a serverless debt collection platform (as opposed to the current standard of having a physical server in your office), and this company clearly didn't have experience collecting delinquent accounts. The software is verbose and complicated. it's very hard to be productive when the people who design the software don't really understand the industry. I've also noticed that the debt collection industry is very resistant to change and when I release my app, I have my doubts about whether or not people are going to give it a shot even though I will feel confident making the claim that their revenue should increase significantly if they are using a well-organized, reliable, and streamlined platform design specifically for their day-to-day operations. I am building the software that I had always wished existed when I ran my agency. &lt;/p&gt;

&lt;p&gt;When I started this project, I intended to build it using asp.net and my JavaScript skills were limited because I had spent most of my time and energy learning C#. I believe it was fortunate that my brother who was living in Silicon Valley at the time pushed me to dive into single-page applications with JavaScript. I brushed up on my JavaScript and learned to React pretty quickly but I didn't fall in love with it. I then built a small app with VueJS after watching The Honeypot.io documentary about Vue. It's fair to say that the MVC-like structure clicked with me in a way that I could only describe as 'common sense web design'. &lt;/p&gt;

&lt;p&gt;At the time I'm writing this, I have put in over 2,000 hours coding this platform. I have hired a part-time developer in Nigeria who is incredibly hard-working and skilled considering he's fresh out of a boot camp, and I have even relied on him to teach me best practices for team-based version control which I never had to learn since I've always built solo projects. &lt;/p&gt;

&lt;p&gt;At this point I've joined a startup accelerator and I really enjoy it. It helps keep me motivated and it keeps me hopeful about doors that it may open for me. All of this isn't without its downsides.&lt;/p&gt;

&lt;p&gt;The money that I made selling my agency has been almost completely exhausted covering development expenses such as server hosting and developer commissions. I'm technically unemployed since I choose to focus on this startup which is not yet making money and I'm putting a lot of faith into the idea that I know this industry very intimately and that my platform will be groundbreaking enough that people will be interested in trying it out. &lt;/p&gt;

&lt;p&gt;So - for better or worse, I've decided to sell my house to provide me with additional runway. The papers are signed and the sale will go through any day now so there's no turning back. I'm passionate about this and I believe in myself. &lt;/p&gt;

&lt;p&gt;The worst case scenario is that the app crashes and burns which I don't think is incredibly likely but if that happens, at least I will have gained invaluable experience building out an entire CRM and automation platform from scratch. I've learned Node, Vue, Firebase/Firestore/Cloud Functions, MySQL architecture, custom API integration, and version control in a team setting.&lt;/p&gt;

&lt;p&gt;Hypothetically, if this startup fails - I'm not leaving empty-handed. I've learned a valuable lesson about how passionate I am when it comes to software development and I would feel confident joining a remote team working with a similar stack. I've also proven to myself that I can learn and implement new skills quickly and efficiently. I'm much more competent than I was when I started down this path and I even find myself refactoring old code to prevent technical debt further ahead into the future. &lt;/p&gt;

&lt;p&gt;There's a lot of uncertainty right now, much of it stems back to my inexperience with marketing and sales, but I'm determined to push on and I will be sure to update here once there are some meaningful developments. I would be lying if I said that I wasn't terrified, or if I didn't admit that I feel like I'm making reckless decisions. &lt;/p&gt;

&lt;p&gt;Today is my 30th birthday and I don't have the stability that I've gotten so used to over the past decade because I'm risking quite a bit to pursue a dream which has long been on the back burner. &lt;/p&gt;

&lt;p&gt;I hope that someone who may be interested in doing the same can possibly gain some perspective from my experience so far, likewise - I would be thrilled to get some feedback from anybody who's been through a major career pivot from something stable to something uncertain for the sake of passion. &lt;/p&gt;

&lt;p&gt;As I've done for quite a long time now, I will continue to share my experiences as I go down this reckless path of entrepreneurship. &lt;/p&gt;

</description>
      <category>startup</category>
      <category>career</category>
      <category>vue</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
