<?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>DEV Community: ArtisanJack (っ◔◡◔)っ</title>
    <description>The latest articles on DEV Community by ArtisanJack (っ◔◡◔)っ (@jvbalcita).</description>
    <link>https://dev.to/jvbalcita</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1484861%2F068aaa58-f2fd-4e6c-9095-19957f8ea0da.jpeg</url>
      <title>DEV Community: ArtisanJack (っ◔◡◔)っ</title>
      <link>https://dev.to/jvbalcita</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jvbalcita"/>
    <language>en</language>
    <item>
      <title>I built a verified launch registry for Laravel. Here's why.</title>
      <dc:creator>ArtisanJack (っ◔◡◔)っ</dc:creator>
      <pubDate>Sat, 29 Aug 2026 15:01:55 +0000</pubDate>
      <link>https://dev.to/jvbalcita/i-built-a-verified-launch-registry-for-laravel-heres-why-5f9j</link>
      <guid>https://dev.to/jvbalcita/i-built-a-verified-launch-registry-for-laravel-heres-why-5f9j</guid>
      <description>&lt;p&gt;Every launch directory I've ever used had the same problem: I couldn't tell which projects were still alive.&lt;/p&gt;

&lt;p&gt;Product Hunt, GitHub trending, the dozens of "awesome lists" — they all have their place. But when I wanted to see what indie Laravel developers were actually shipping, I kept hitting the same wall: beautiful cards linking to apps that no longer exist. Directories rot because listing something dead costs nothing.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Shipped&lt;/strong&gt; — a launch registry for Laravel projects where every entry is verified to be actually running. It's free, and it lives at &lt;a href="https://larashipped.laravel.cloud" rel="noopener noreferrer"&gt;larashipped.laravel.cloud&lt;/a&gt;.&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjwuodmadyagcfhbaw21.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjwuodmadyagcfhbaw21.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The idea is simple. You record your project, write a short release story, and point Shipped at your live &lt;code&gt;*.laravel.cloud&lt;/code&gt; URL. Before anything goes public, Shipped checks that the app is genuinely up: it resolves DNS, probes the origin without credentials, refuses off-origin redirects, and matches the Cloud slug against the live hostname. If the check passes, you get a publishable launch page — and a &lt;strong&gt;"LIVE ON CLOUD"&lt;/strong&gt; badge you can drop into your README.&lt;/p&gt;

&lt;p&gt;Then verification doesn't stop. Shipped rechecks every launch daily. If your app goes down, your card goes private — automatically.&lt;/p&gt;

&lt;p&gt;That last part is deliberate. A registry full of dead links is worse than no registry at all. I'd rather your launch page disappear than mislead someone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do
&lt;/h2&gt;

&lt;p&gt;It doesn't verify that you own the Cloud organization, and it doesn't score your code. URL-backed verification answers exactly one question honestly: &lt;em&gt;"is this thing actually live right now?"&lt;/em&gt; That tradeoff is the product. (I wrote about the security details of that decision in a separate post.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I care about this
&lt;/h2&gt;

&lt;p&gt;Shipping side projects is lonely. Half the motivation dies in the gap between "deployed" and "anyone noticed." A verified registry gives launches a home people can trust, and gives the rest of us a reason to click.&lt;/p&gt;

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

&lt;p&gt;Scheduled release notes, follows, and a private activity feed are already in the works — the roadmap is driven by early users, so they get heard first.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ask
&lt;/h2&gt;

&lt;p&gt;If you've shipped anything on Laravel Cloud — a SaaS, a tool, a weekend experiment — &lt;a href="https://larashipped.laravel.cloud" rel="noopener noreferrer"&gt;add your launch&lt;/a&gt; and grab the badge. It's open source, too: &lt;a href="https://github.com/jvbalcita/shipped" rel="noopener noreferrer"&gt;github.com/jvbalcita/shipped&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And if you haven't shipped on Cloud yet, I'd still love your take:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would you trust a registry that rechecks launches daily and unpublishes dead ones? What would make you submit your own project — or what would stop you?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I stopped asking for Laravel Cloud API tokens</title>
      <dc:creator>ArtisanJack (っ◔◡◔)っ</dc:creator>
      <pubDate>Fri, 21 Aug 2026 10:50:03 +0000</pubDate>
      <link>https://dev.to/jvbalcita/i-stopped-asking-for-laravel-cloud-api-tokens-4731</link>
      <guid>https://dev.to/jvbalcita/i-stopped-asking-for-laravel-cloud-api-tokens-4731</guid>
      <description>&lt;p&gt;I originally verified LaraShipped launches with a Laravel Cloud API token.&lt;/p&gt;

&lt;p&gt;Creators pasted a token. I stored it encrypted, never showed it again, and used it to inspect environments. On paper that proved the app lived in their Cloud account.&lt;/p&gt;

&lt;p&gt;In practice, people didn't want to give me a token. I wouldn't either.&lt;/p&gt;

&lt;p&gt;So I changed the contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we check now
&lt;/h2&gt;

&lt;p&gt;You paste an HTTPS &lt;code&gt;*.laravel.cloud&lt;/code&gt; URL. That's it.&lt;/p&gt;

&lt;p&gt;Then we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resolve DNS and refuse anything that isn't a public address&lt;/li&gt;
&lt;li&gt;probe the origin without cookies or credentials&lt;/li&gt;
&lt;li&gt;refuse off-origin redirects (a &lt;code&gt;/&lt;/code&gt; → &lt;code&gt;/login&lt;/code&gt; on the same host counts as reachable; we don't follow it)&lt;/li&gt;
&lt;li&gt;compare the Cloud slug against the project's live hostname, including custom domains&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;artisanbizops.com&lt;/code&gt; can match &lt;code&gt;artisan-bizops-x1233.laravel.cloud&lt;/code&gt; after we strip separators from the first label. That's a consistency check, not proof that you own the Cloud org.&lt;/p&gt;

&lt;p&gt;If the names don't match, we fail &lt;strong&gt;before&lt;/strong&gt; the outbound probe. No point hitting the network for a URL that can't belong to this project.&lt;/p&gt;

&lt;p&gt;A successful probe never publishes the project. You still have to hit publish.&lt;/p&gt;

&lt;p&gt;A failed or stale daily recheck makes it private. We don't auto-republish later. Showcase lists go stale when a card stays pretty after the app dies. I'd rather the page disappear.&lt;/p&gt;

&lt;p&gt;The probe is read-only. It doesn't trigger deploys, restart environments, or buffer an unbounded response. If HEAD comes back &lt;code&gt;405&lt;/code&gt; or &lt;code&gt;501&lt;/code&gt;, we may fall back to a streamed GET, but the body is capped at 64KB and then closed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is not
&lt;/h2&gt;

&lt;p&gt;Someone could still point a &lt;code&gt;*.laravel.cloud&lt;/code&gt; URL at an app that isn't theirs if they guessed a slug and the live hostname lined up. Token-backed verification was stronger on &lt;strong&gt;ownership&lt;/strong&gt;. URL-backed verification is stronger on &lt;strong&gt;is this actually up&lt;/strong&gt;, and on not holding a secret I don't need.&lt;/p&gt;

&lt;p&gt;That tradeoff is the product. LaraShipped is a verified Laravel Cloud registry, not a general launch directory.&lt;/p&gt;

&lt;p&gt;If you've shipped something on Cloud and you're tired of directories that never check, the door is open: &lt;a href="https://larashipped.laravel.cloud" rel="noopener noreferrer"&gt;larashipped.laravel.cloud&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to Track Coding Time Using GitHub Commits (Without Manual Timers)</title>
      <dc:creator>ArtisanJack (っ◔◡◔)っ</dc:creator>
      <pubDate>Tue, 24 Feb 2026 01:06:34 +0000</pubDate>
      <link>https://dev.to/jvbalcita/why-developers-still-struggle-to-track-their-actual-coding-time-23pm</link>
      <guid>https://dev.to/jvbalcita/why-developers-still-struggle-to-track-their-actual-coding-time-23pm</guid>
      <description>&lt;p&gt;Developers measure everything.&lt;/p&gt;

&lt;p&gt;Performance metrics.&lt;br&gt;&lt;br&gt;
Test coverage.&lt;br&gt;&lt;br&gt;
CI pipelines.&lt;br&gt;&lt;br&gt;
Deployment frequency.  &lt;/p&gt;

&lt;p&gt;But one thing many developers still struggle with?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accurately tracking coding time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whether you're a freelancer, consultant, or full-time engineer, understanding where your development hours go isn’t always straightforward.&lt;/p&gt;

&lt;p&gt;Let’s talk about why.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Traditional Developer Time Tracking
&lt;/h2&gt;

&lt;p&gt;Most developer time tracking methods fall into one of these categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual timers
&lt;/li&gt;
&lt;li&gt;Timesheet spreadsheets
&lt;/li&gt;
&lt;li&gt;Calendar reconstruction
&lt;/li&gt;
&lt;li&gt;End-of-week estimation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The issue?&lt;/p&gt;

&lt;p&gt;Development work doesn’t happen in clean, uninterrupted blocks.&lt;/p&gt;

&lt;p&gt;You:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch branches
&lt;/li&gt;
&lt;li&gt;Review pull requests
&lt;/li&gt;
&lt;li&gt;Debug production issues
&lt;/li&gt;
&lt;li&gt;Fix “quick” bugs
&lt;/li&gt;
&lt;li&gt;Jump between repositories
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of the week, trying to answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How many hours did this feature actually take?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Becomes a memory exercise.&lt;/p&gt;

&lt;p&gt;And memory is unreliable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Manual Time Tracking Tools Often Fail Developers
&lt;/h2&gt;

&lt;p&gt;Traditional time tracking tools assume this workflow:&lt;/p&gt;

&lt;p&gt;Start timer → Work → Stop timer.&lt;/p&gt;

&lt;p&gt;But real coding sessions look more like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slack interruption
&lt;/li&gt;
&lt;li&gt;Context switch
&lt;/li&gt;
&lt;li&gt;Emergency fix
&lt;/li&gt;
&lt;li&gt;Back to main feature
&lt;/li&gt;
&lt;li&gt;Small refactor
&lt;/li&gt;
&lt;li&gt;Another context switch
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers forget to start timers.&lt;br&gt;&lt;br&gt;
Developers forget to stop timers.&lt;br&gt;&lt;br&gt;
Developers forget to switch tasks.&lt;/p&gt;

&lt;p&gt;That’s not laziness — it’s how development naturally flows.&lt;/p&gt;

&lt;p&gt;Manual developer time tracking requires discipline.&lt;br&gt;&lt;br&gt;
And discipline-based systems break under context switching.&lt;/p&gt;




&lt;h2&gt;
  
  
  What If GitHub Is the Source of Truth?
&lt;/h2&gt;

&lt;p&gt;Every meaningful coding session leaves data behind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Commit timestamps
&lt;/li&gt;
&lt;li&gt;Branch activity
&lt;/li&gt;
&lt;li&gt;Pull requests
&lt;/li&gt;
&lt;li&gt;Push frequency
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your GitHub activity already forms a timeline.&lt;/p&gt;

&lt;p&gt;So instead of asking developers to manually track time…&lt;/p&gt;

&lt;p&gt;What if we used commit activity to approximate coding time?&lt;/p&gt;

&lt;p&gt;This is the idea behind &lt;strong&gt;GitHub time tracking using commits&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not perfect precision.&lt;/p&gt;

&lt;p&gt;But structured visibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Can You Track Coding Time Using Commits?
&lt;/h2&gt;

&lt;p&gt;Let’s address the obvious question:&lt;/p&gt;

&lt;p&gt;Are commits accurate enough to represent development time?&lt;/p&gt;

&lt;p&gt;Not perfectly.&lt;/p&gt;

&lt;p&gt;Some work happens before a commit.&lt;br&gt;&lt;br&gt;
Some commits are tiny.&lt;br&gt;&lt;br&gt;
Some long sessions produce few commits.  &lt;/p&gt;

&lt;p&gt;But commit-based tracking can still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reveal workload distribution
&lt;/li&gt;
&lt;li&gt;Show time spent per repository
&lt;/li&gt;
&lt;li&gt;Surface development patterns
&lt;/li&gt;
&lt;li&gt;Reduce end-of-week guesswork
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It won’t give you second-by-second precision.&lt;/p&gt;

&lt;p&gt;But it can dramatically improve clarity over pure estimation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Exploring Commit-Based Developer Time Tracking
&lt;/h2&gt;

&lt;p&gt;I started experimenting with a commit-based developer time tracking approach that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connects to GitHub
&lt;/li&gt;
&lt;li&gt;Pulls commit activity
&lt;/li&gt;
&lt;li&gt;Groups commits into time blocks
&lt;/li&gt;
&lt;li&gt;Generates a development timeline
&lt;/li&gt;
&lt;li&gt;Breaks down activity per repository
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How long did I work?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can start asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What does my GitHub activity show about how I worked?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For freelancers, this could support clearer billing transparency.&lt;/p&gt;

&lt;p&gt;For full-time engineers, it can provide personal productivity insights.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing LogBytes (Early Beta)
&lt;/h2&gt;

&lt;p&gt;That exploration turned into a small SaaS project called &lt;strong&gt;LogBytes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;LogBytes connects to GitHub and generates a timeline view of your development activity so you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track coding time using commit data
&lt;/li&gt;
&lt;li&gt;Visualize time distribution across repositories
&lt;/li&gt;
&lt;li&gt;Reduce manual timesheet effort
&lt;/li&gt;
&lt;li&gt;Improve developer time awareness
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s currently in early beta while I refine the commit-based tracking model.&lt;/p&gt;

&lt;p&gt;I’m not claiming it replaces human judgment.&lt;/p&gt;

&lt;p&gt;I’m building it to reduce blind spots in developer time tracking.&lt;/p&gt;




&lt;h2&gt;
  
  
  I’d Love Your Feedback
&lt;/h2&gt;

&lt;p&gt;If you’re a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Freelance developer
&lt;/li&gt;
&lt;li&gt;Consultant
&lt;/li&gt;
&lt;li&gt;Agency engineer
&lt;/li&gt;
&lt;li&gt;Or someone who tracks billable hours
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d genuinely love your perspective.&lt;/p&gt;

&lt;p&gt;Would you trust GitHub-based time tracking?&lt;/p&gt;

&lt;p&gt;What would make commit-based tracking reliable enough for billing?&lt;/p&gt;

&lt;p&gt;You can check out LogBytes here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://logbytes.work" rel="noopener noreferrer"&gt;LOGBYTES&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%2F8lcqefv8ps1v48w8g7l6.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%2F8lcqefv8ps1v48w8g7l6.png" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>productivity</category>
      <category>sideprojects</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
