<?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: David</title>
    <description>The latest articles on Forem by David (@hubedav).</description>
    <link>https://forem.com/hubedav</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%2F32510%2F9475d921-580c-4ded-9f50-a8fa1f6d58a3.png</url>
      <title>Forem: David</title>
      <link>https://forem.com/hubedav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hubedav"/>
    <language>en</language>
    <item>
      <title>After 6 months, I might have to shut down my API</title>
      <dc:creator>David</dc:creator>
      <pubDate>Sat, 11 Apr 2026 00:42:30 +0000</pubDate>
      <link>https://forem.com/hubedav/after-6-months-i-might-have-to-shut-down-my-api-1664</link>
      <guid>https://forem.com/hubedav/after-6-months-i-might-have-to-shut-down-my-api-1664</guid>
      <description>&lt;p&gt;Someone expressed interest in something I built and launched months back.  I figured more people might be interested and maybe someone might be interested in using it - saving it.&lt;/p&gt;

&lt;p&gt;I'm going to keep this pretty high-level and abstract here, but if anyone wants more details just drop a comment.  I would love a chance to talk more about the technical aspects.&lt;/p&gt;

&lt;h3&gt;
  
  
  The thing
&lt;/h3&gt;

&lt;p&gt;I won't bury the lead.  I built a software health trend monitoring solution aimed at legacy systems.  I called it BOCH (pronounced "botch"), which stands for &lt;strong&gt;B&lt;/strong&gt;ill &lt;strong&gt;O&lt;/strong&gt;f &lt;strong&gt;C&lt;/strong&gt;lean &lt;strong&gt;H&lt;/strong&gt;ealth.  So users could get a bill of clean health on their legacy system (🤓).  Having worked in several legacy systems, I noticed I always found myself wanting more trend-data on a system's health.&lt;/p&gt;

&lt;h3&gt;
  
  
  The beginning
&lt;/h3&gt;

&lt;p&gt;I finished a contract in early October last year that had me under an IP ownership clause.  After the contract I had this idea and got to work - launching soon after.  I've been working on marketing it and looking for feedback since.&lt;/p&gt;

&lt;h3&gt;
  
  
  The weeds, let's get lost in them
&lt;/h3&gt;

&lt;p&gt;BOCH is built in C# .Net 8 and PostgreSQL.  It's hosted by a cloud provider and interfaces with RapidApi as the users' 'entrypoint'.  My core stack is in C# .Net, so that made sense.  The DB was pretty simple, too.  I wanted a relational DB and wanted more experience with Postgres.&lt;/p&gt;

&lt;p&gt;I built BOCH in a way that didn't require &lt;em&gt;any&lt;/em&gt; integration steps in the code.  It only required a GET endpoint that could be hit from BOCH to start.  For some reason it took me a few &lt;em&gt;weeks&lt;/em&gt; of marketing to realize that things were set up for such a simple/easy onboarding. 😅&lt;/p&gt;

&lt;p&gt;There are two important atomic terms for BOCH:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;watch&lt;/code&gt; is used to describe and reason about &lt;em&gt;what&lt;/em&gt; is being...watched.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;history&lt;/code&gt; is the record of a single execution/hit of a watched URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;watch&lt;/code&gt;&lt;br&gt;
Setting up a single &lt;code&gt;watch&lt;/code&gt; is all that's needed to get started in observing a URL.  Sending a single request to the &lt;code&gt;AddWatch&lt;/code&gt; endpoint only requires this data to be filled in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;watch name&lt;/code&gt;: a user friendly name to refer to the particular &lt;code&gt;watch&lt;/code&gt; item going forward.  These are unique per user.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fully qualified URL&lt;/code&gt;: The full URL of the GET endpoint (including the &lt;code&gt;http/s://&lt;/code&gt;) to be observed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;interval in minutes&lt;/code&gt;: How frequently should the endpoint be observed.  Limited by the customer-tier of a user.  The system is set up for observing at most once per minute.&lt;/li&gt;
&lt;li&gt;(optionally) &lt;code&gt;custom headers&lt;/code&gt;: Custom headers are offered for anyone wanting them to be sent with the REST request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;history&lt;/code&gt;&lt;br&gt;
After BOCH runs a bit, the user can see the resulting &lt;code&gt;history&lt;/code&gt; data.  Each time BOCH reaches out and 'ping's a watched URL, the datapoints below are recorded and available from a single request.  All &lt;code&gt;history&lt;/code&gt; objects are stored and made available for 7 days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;datetime&lt;/code&gt;: The date and time the request/ping was made.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status code&lt;/code&gt;: Resulting status code returned from the watched URL.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;response time ms&lt;/code&gt;: How long the total watch-ping time took.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;peek response content&lt;/code&gt;:  64 characters of the response body.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since I built and launched it while entering the job market, I took the ubiquitous request for AI experience to heart.  I vibe coded a dashboard as a companion to my main offering - the API.  I also made it opensource (MIT license) so that anyone could use it as a useful starting point for their own needs.  The image I choose for this post is one of the screenshots of the dashboard.&lt;/p&gt;

&lt;p&gt;I also made sure to centralize several aspects in a config file.  So many aspects were configurable with this.  The 'rounding' of the graph-data (P95, P99, P90, etc.), forced green-yellow-red for specific response codes, and even which filter duration to use/show.  My favorite is the mechanism where clicking on a datapoint copies the atomic data behind it to the user's clipboard.&lt;/p&gt;

&lt;p&gt;This &lt;code&gt;dashboard&lt;/code&gt; really opened up what users can do with BOCH.  Something about being able to view, filter, configure, and zoom in on the data just made things click.&lt;/p&gt;

&lt;h3&gt;
  
  
  The end
&lt;/h3&gt;

&lt;p&gt;I said sometime shortly after launching that I'd keep it going as long as I can financially manage to.&lt;/p&gt;

&lt;p&gt;That time appears to be up.  Unless I get at least one paying user, I'm planning on shutting the service down towards the end of next week.  It just costs too much with no income on my part to justify it now.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons
&lt;/h3&gt;

&lt;p&gt;I don't know that I'd be able to fully list all of the things I've learned along this journey.  I was really looking forward to seeing what off-the-walls stuff this might get used for.  I built it for better health metrics in legacy systems, but I know how these things go.&lt;/p&gt;

&lt;p&gt;This was my first product launch after years of "working on side projects".  It's an amazing feeling to actually launch something.&lt;/p&gt;

&lt;p&gt;If anyone is interest in some sort of postmortem or retrospective, I can make a post around that.&lt;/p&gt;

</description>
      <category>api</category>
      <category>entrepreneurship</category>
      <category>observability</category>
    </item>
    <item>
      <title>I launched my first product 6 months ago</title>
      <dc:creator>David</dc:creator>
      <pubDate>Sat, 11 Apr 2026 00:42:30 +0000</pubDate>
      <link>https://forem.com/hubedav/after-6-months-i-might-have-to-shut-down-my-api-4bln</link>
      <guid>https://forem.com/hubedav/after-6-months-i-might-have-to-shut-down-my-api-4bln</guid>
      <description>&lt;p&gt;Someone expressed interest in something I built and launched months back.  I figured more people might be interested and maybe someone might be interested in using it.&lt;/p&gt;

&lt;p&gt;I'm going to keep this pretty high-level and abstract here, but if anyone wants more details just drop a comment.  I would love a chance to talk more about the technical aspects.&lt;/p&gt;

&lt;h3&gt;
  
  
  The thing
&lt;/h3&gt;

&lt;p&gt;I won't bury the lead.  I built a software health trend monitoring solution aimed at legacy systems.  I called it BOCH (pronounced "botch"), which stands for &lt;strong&gt;B&lt;/strong&gt;ill &lt;strong&gt;O&lt;/strong&gt;f &lt;strong&gt;C&lt;/strong&gt;lean &lt;strong&gt;H&lt;/strong&gt;ealth.  So users could get a bill of clean health on their legacy system (🤓).&lt;/p&gt;

&lt;h3&gt;
  
  
  The beginning
&lt;/h3&gt;

&lt;p&gt;I finished a contract in early October last year that had me under an IP ownership clause.  After the contract I had this idea and got to work - launching soon after.  I've been working on marketing it and looking for feedback since.&lt;/p&gt;

&lt;h3&gt;
  
  
  The weeds, let's get lost in them
&lt;/h3&gt;

&lt;p&gt;BOCH is built in C# .Net 8 and PostgreSQL.  It's hosted by a cloud provider and interfaces with RapidApi as the users' 'entrypoint'.  My core stack is in C# .Net, so that made sense.  The DB was pretty simple, too.  I wanted a relational DB and wanted more experience with Postgres.&lt;/p&gt;

&lt;p&gt;I built BOCH in a way that didn't require &lt;em&gt;any&lt;/em&gt; integration steps in the code.  It only required a GET endpoint that could be hit from BOCH to start.  For some reason it took me a few &lt;em&gt;weeks&lt;/em&gt; of marketing to realize that things were set up for such a simple/easy onboarding. 😅&lt;/p&gt;

&lt;p&gt;There are two important atomic terms for BOCH:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;watch&lt;/code&gt; is used to describe and reason about &lt;em&gt;what&lt;/em&gt; is being...watched.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;history&lt;/code&gt; is the record of a single execution/hit of a watched URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;watch&lt;/code&gt;&lt;br&gt;
Setting up a single &lt;code&gt;watch&lt;/code&gt; is all that's needed to get started in observing a URL.  Sending a single request to the &lt;code&gt;AddWatch&lt;/code&gt; endpoint only requires this data to be filled in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;watch name&lt;/code&gt;: a user friendly name to refer to the particular &lt;code&gt;watch&lt;/code&gt; item going forward.  These are unique per user.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fully qualified URL&lt;/code&gt;: The full URL of the GET endpoint (including the &lt;code&gt;http/s://&lt;/code&gt;) to be observed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;interval in minutes&lt;/code&gt;: How frequently should the endpoint be observed.  Limited by the customer-tier of a user.  The system is set up for observing at most once per minute.&lt;/li&gt;
&lt;li&gt;(optionally) &lt;code&gt;custom headers&lt;/code&gt;: Custom headers are offered for anyone wanting them to be sent with the REST request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;history&lt;/code&gt;&lt;br&gt;
After BOCH runs a bit, the user can see the resulting &lt;code&gt;history&lt;/code&gt; data.  Each time BOCH reaches out and 'ping's a watched URL, the datapoints below are recorded and available from a single request.  All &lt;code&gt;history&lt;/code&gt; objects are stored and made available for 7 days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;datetime&lt;/code&gt;: The date and time the request/ping was made.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;status code&lt;/code&gt;: Resulting status code returned from the watched URL.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;response time ms&lt;/code&gt;: How long the total watch-ping time took.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;peek response content&lt;/code&gt;:  64 characters of the response body.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since I built and launched it while entering the job market, I took the ubiquitous request for AI experience to heart.  I vibe coded a dashboard as a companion to my main offering - the API.  I also made it opensource (MIT license) so that anyone could use it as a useful starting point for their own needs.  The image I choose for this post is one of the screenshots of the dashboard.&lt;/p&gt;

&lt;p&gt;I also made sure to centralize several aspects in a config file.  So many aspects were configurable with this.  The 'rounding' of the graph-data (P95, P99, P90, etc.), forced green-yellow-red for specific response codes, and even which filter duration to use/show.  My favorite is the mechanism where clicking on a datapoint copies the atomic data behind it to the user's clipboard.&lt;/p&gt;

&lt;p&gt;This &lt;code&gt;dashboard&lt;/code&gt; really opened up what users can do with BOCH.  Something about being able to view, filter, configure, and zoom in on the data just made things click.&lt;/p&gt;

&lt;h3&gt;
  
  
  The end
&lt;/h3&gt;

&lt;p&gt;I said sometime shortly after launching that I'd keep it going as long as I can financially manage to.&lt;/p&gt;

&lt;p&gt;That time appears to be up.  Unless I get at least one paying user, I'm planning on shutting the service down before the end of the month.  It just costs too much with no income on my part to justify it now.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons
&lt;/h3&gt;

&lt;p&gt;I don't know that I'd be able to fully list all of the things I've learned along this journey.  I was really looking forward to seeing what off-the-walls stuff this might get used for.  I built it for better health metrics in legacy systems, but I know how these things go.&lt;/p&gt;

&lt;p&gt;This was my first product launch after years of "working on side projects".  It's an amazing feeling to actually launch something.&lt;/p&gt;

&lt;p&gt;If anyone is interest in some sort of postmortem or retrospective, I can make a post around that.  Additionally, I'd love to answer any questions around it.  I'm sure I've left some things out.&lt;/p&gt;

</description>
      <category>api</category>
      <category>entrepreneurship</category>
      <category>observability</category>
    </item>
    <item>
      <title>I'm a bit lost.</title>
      <dc:creator>David</dc:creator>
      <pubDate>Fri, 10 Apr 2026 15:42:25 +0000</pubDate>
      <link>https://forem.com/hubedav/im-a-bit-lost-2dko</link>
      <guid>https://forem.com/hubedav/im-a-bit-lost-2dko</guid>
      <description>&lt;p&gt;Not sure this is an 'appropriate' place for this, but I figure I'm a dev and this place is for dev related topics.&lt;/p&gt;




&lt;h2&gt;
  
  
  Like so many others, I've been in the job market for months.  However, unlike others (I hope) I've been running into countless instances of illegal behavior.
&lt;/h2&gt;




&lt;p&gt;I haven't dared say these things on my 'regular' platforms for reasons I'll get into later.&lt;/p&gt;

&lt;h3&gt;
  
  
  I guess a bit of relevant backstory first
&lt;/h3&gt;

&lt;p&gt;I've been coding for over 20 and across several industries, all while "figuring it out".  I've seen a great many things, built and fixed a great many others, and led and mentored other devs across time zones.  It was tough in the moment, but I'm better for the struggle.&lt;/p&gt;

&lt;p&gt;A little over 4 years ago I almost died from brain cancer and again from the surgery to remove it.  I spent a month in the hospital recovering.  Relearning how to walk, talk, and even swallow.  I'm not sure when, but my amazing wife got something to click in my messed up head and light a fire under me that I've continued to stoke.  That flame (determination) got me out of the hospital far faster than my medical team expected.&lt;/p&gt;

&lt;p&gt;The next five-ish months I had a walker to get around and went through weeks of radiation, PT, and OT.  I don't remember when I was capable of walking down my stairs to my office again, but I suspect it was after I graduated to only needing a cane.&lt;/p&gt;

&lt;p&gt;I was able to come back to work before long-term disability kicked in, but had to come back slowly and with some accommodations.  This was still mid-covid-lockdown, so I was able to be remote this whole time.  My direct manager at this point was unfortunately promoted to the role 2 weeks before my leave.  I have some management experience, so I felt bad for the position my situation put them in.  At least until they started trying to write me up for things I had accommodations written for.  When layoffs came around I was the only one on my team let go.  I'm not saying I was let go because of my disability...just that it doesn't look good.&lt;/p&gt;

&lt;p&gt;I had been at this company so long the severance was actually good.  I don't hold any ill-will towards the company despite getting laid off.&lt;/p&gt;

&lt;p&gt;"Ok, so don't let anyone know what I'm dealing with."&lt;/p&gt;

&lt;p&gt;I spent 2 years at the next company moving between roles and even being moved pretty quickly to a lead role.  No one knew about any of my issues or why I took whole days off for appointments (scan days bork my mental health).  I still talk to my PM from there and finally just spilled the beans.  Didn't change a thing between us - amazing.  Two years in and the company gets acquired - all of us contractors are unemployed over night.&lt;/p&gt;

&lt;p&gt;There were a couple of other contracts I was able to find since then, but I've been looking for my next role for months now.&lt;/p&gt;

&lt;p&gt;FWIW - I'm still not able to drive safely or walk a straight line.  Turning my head causes me to get vertigo (to over simplify things).&lt;/p&gt;

&lt;h3&gt;
  
  
  Welcome to the struggle bus!
&lt;/h3&gt;

&lt;p&gt;Since finishing my last contract in early October I've been hit with one large life event after another.  Like one or two per week - it's stupid.  I can get into it in the comments, but not the point here.  Just pointing it out for the context.&lt;/p&gt;

&lt;p&gt;As I'm sure every dev who's in the job market these days is aware, just about everyone has switched to on-site or some form of hybrid.  I used to have a 1+ hour commute every day, so I'm &lt;em&gt;willing&lt;/em&gt; to do that.  My body, on the other hand, says "no way".&lt;/p&gt;

&lt;p&gt;In the last 6 months of being in the job market I've had a single experience where my inability/disability even &lt;em&gt;felt&lt;/em&gt; handled humanely or with empathy.  All other cases I've had the metaphorical door slammed in my face.  Including a local company built on a religion that states followers should take care of the sick, disenfranchised, etc..&lt;/p&gt;

&lt;h3&gt;
  
  
  My frustration
&lt;/h3&gt;

&lt;p&gt;I keep getting a "we really want this candidate to come into the office X days per week.  Sorry."&lt;/p&gt;

&lt;p&gt;I tell them I understand their position, which is true, and thank them for their time.  I figure I don't want to work at a company that is this ignorant and unwilling to even consider &lt;strong&gt;reasonable accomodations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Thinking back to all of these sorts of statements I find myself thinking something like "Well that's all fine, &lt;strong&gt;but I don't get a choice&lt;/strong&gt;."&lt;/p&gt;

&lt;p&gt;I don't know that I'm capable of articulating the level of frustration and feeling of helplessness from this situation in a way that the mods here will find acceptable.  I'm being turned down because of my disability (inability to safely drive) and can't do anything about it.&lt;/p&gt;

&lt;p&gt;I worry about saying anything on my 'regular' platforms for any sort of 'backlash'.  Being a dev is essentially a purely cognitive role.  My concern about posting about it is the concern from potential future employers thinking I'm not capable due to having brain damage.&lt;/p&gt;

&lt;p&gt;I might actually be &lt;em&gt;more&lt;/em&gt; capable since my surgery.  I find that I'm able to think more clearly these days.&lt;/p&gt;

&lt;p&gt;4 years ago I had weaponized my neurodivergence.  I'm working on doing the same with my brain cancer stuff.&lt;/p&gt;

&lt;p&gt;For that matter, I launched my own SaaS a bit after my last contract finished, if anyone's interested in a post on that. 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;Basically everyone I talk to employment-wise breaks federal (US) ADA and anti-discrimination laws and I don't know how to handle it.&lt;/p&gt;

&lt;p&gt;It's disgusting that I'm even in this situation and my heart goes out to those in similar and worse situations.  It's incredibly frustrating and demoralizing and I feel like I'm at the end of my rope.&lt;/p&gt;

&lt;p&gt;I guess I'm really looking for ways to help me navigate this issue after venting a bit.&lt;/p&gt;

</description>
      <category>jobs</category>
      <category>career</category>
      <category>jobmarket</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
