<?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: Jonathan Devis</title>
    <description>The latest articles on DEV Community by Jonathan Devis (@jonathan_dev13).</description>
    <link>https://dev.to/jonathan_dev13</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%2F3557532%2F56e80351-ca37-4081-b53f-6c089bf05c9f.png</url>
      <title>DEV Community: Jonathan Devis</title>
      <link>https://dev.to/jonathan_dev13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathan_dev13"/>
    <language>en</language>
    <item>
      <title>Freelance Developers: Your Invoicing Workflow Deserves the Same Care as Your Code</title>
      <dc:creator>Jonathan Devis</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:39:42 +0000</pubDate>
      <link>https://dev.to/jonathan_dev13/freelance-developers-your-invoicing-workflow-deserves-the-same-care-as-your-code-3gi8</link>
      <guid>https://dev.to/jonathan_dev13/freelance-developers-your-invoicing-workflow-deserves-the-same-care-as-your-code-3gi8</guid>
      <description>&lt;p&gt;You finish the project, push the final changes, and send the handover email. After days of debugging and client feedback, the work is finally done.&lt;/p&gt;

&lt;p&gt;Then comes the task you have been putting off: sending the invoice.&lt;/p&gt;

&lt;p&gt;For freelance developers, invoicing can feel like a small administrative chore. But an unclear invoice creates another round of questions, interrupts your next project, and leaves you wondering when payment will arrive.&lt;/p&gt;

&lt;p&gt;The solution does not need to be complicated. A repeatable workflow can make the business side of freelancing easier to manage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Before You Write the First Line of Code
&lt;/h2&gt;

&lt;p&gt;A smoother invoicing process begins with the project agreement.&lt;/p&gt;

&lt;p&gt;Before development starts, confirm the scope, payment schedule, billing contact, and payment method. If you charge hourly, explain how you will record time. If you charge a fixed amount, define what that amount covers.&lt;/p&gt;

&lt;p&gt;Imagine building a landing page for a client. Does the price include copywriting? How many revision rounds are included? Is deployment part of the project?&lt;/p&gt;

&lt;p&gt;These details matter because an invoice should reflect an agreement that already exists. It should never be the first place a client discovers an additional charge.&lt;/p&gt;

&lt;p&gt;For larger projects, consider agreeing on milestones so both sides know when each invoice will be sent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Describe Work in Language Clients Understand
&lt;/h2&gt;

&lt;p&gt;Developers naturally think in components, endpoints, and pull requests. Clients often think in outcomes.&lt;/p&gt;

&lt;p&gt;An invoice item labelled "development work" gives very little context. At the other extreme, a list of internal function names probably will not help the person approving payment.&lt;/p&gt;

&lt;p&gt;Aim for descriptions that connect technical work to the agreed deliverable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive landing page implementation&lt;/li&gt;
&lt;li&gt;Checkout integration and testing&lt;/li&gt;
&lt;li&gt;Website performance improvements&lt;/li&gt;
&lt;li&gt;Monthly maintenance and bug fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you bill hourly, include the hours and rate alongside each relevant item.&lt;/p&gt;

&lt;p&gt;The goal is simple: someone who did not attend your project meetings should still understand what the invoice covers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the Next Step Obvious
&lt;/h2&gt;

&lt;p&gt;A client should not have to search through an email thread to work out how to pay you.&lt;/p&gt;

&lt;p&gt;Use a consistent invoice number, identify both parties clearly, and include the issue date, due date, currency, itemised charges, and total amount. Add the agreed payment instructions where they are easy to find.&lt;/p&gt;

&lt;p&gt;Write an actual due date instead of relying only on wording such as "payment due in two weeks."&lt;/p&gt;

&lt;p&gt;Before sending, check the recipient details. Your usual project contact may not be the person who processes invoices. Asking for the correct billing address early can prevent an avoidable handoff later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a Workflow You Can Repeat
&lt;/h2&gt;

&lt;p&gt;Creating every invoice from a blank document introduces unnecessary decisions.&lt;/p&gt;

&lt;p&gt;Choose a standard layout and follow the same sequence each time: gather approved work, check the amounts, review client details, send the invoice, and record its status.&lt;/p&gt;

&lt;p&gt;Keep a simple register showing what has been drafted, sent, paid, or needs attention. A spreadsheet may be enough when you have a few clients.&lt;/p&gt;

&lt;p&gt;When evaluating tools, focus on the steps that take up your time. Check how easily you can prepare an invoice, correct a mistake, and keep your records organised.&lt;/p&gt;

&lt;p&gt;My website, &lt;a href="https://invoiceo.app/" rel="noopener noreferrer"&gt;Invoiceo&lt;/a&gt;, is another resource you can explore while putting together your invoicing workflow. Whatever approach you choose, test it against a realistic client scenario before making it part of your routine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat Follow-Ups as Routine Communication
&lt;/h2&gt;

&lt;p&gt;Following up on payment can feel awkward, especially when you enjoy working with the client.&lt;/p&gt;

&lt;p&gt;Prepare a short, polite message in advance. Reference the invoice number, amount, and due date, then ask whether anything is needed to process payment.&lt;/p&gt;

&lt;p&gt;Avoid assuming that a delay is intentional. An invoice might be waiting for approval or have reached the wrong inbox.&lt;/p&gt;

&lt;p&gt;A calm follow-up gives the client a clear action without turning an administrative issue into a personal disagreement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give Your Business Process Some Attention
&lt;/h2&gt;

&lt;p&gt;You do not need a complex finance system to work professionally.&lt;/p&gt;

&lt;p&gt;You need clear agreements, understandable invoices, reliable records, and consistent communication.&lt;/p&gt;

&lt;p&gt;Review your process after your next project. Notice where you had to repeat yourself or search for missing information, then fix that step.&lt;/p&gt;

&lt;p&gt;Your next invoice should be easier to send than your last one.&lt;/p&gt;

</description>
      <category>career</category>
      <category>freelance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a Free Online Video Compressor in 1 Week</title>
      <dc:creator>Jonathan Devis</dc:creator>
      <pubDate>Tue, 13 Oct 2026 09:59:07 +0000</pubDate>
      <link>https://dev.to/jonathan_dev13/i-built-a-free-online-video-compressor-in-1-week-b8d</link>
      <guid>https://dev.to/jonathan_dev13/i-built-a-free-online-video-compressor-in-1-week-b8d</guid>
      <description>&lt;p&gt;Hi everyone!&lt;br&gt;
In the last two weeks, I've worked on a tiny side project Video Compress&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fast, free, and simple online video compressor with no watermarks or limits on use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;You've got a ton of free &lt;a href="https://shrinkvideos.com/" rel="noopener noreferrer"&gt;online video compressors&lt;/a&gt; to choose from, though most of those services will throw a lot of frustrating restrictions on you watermarks, file size limits, and hidden paywalls.&lt;br&gt;
I was looking for something simple: upload, compress, download -no unnecessary things, no tricks.&lt;/p&gt;

&lt;p&gt;The Tech Stack&lt;/p&gt;

&lt;p&gt;The project is developed with:&lt;/p&gt;

&lt;p&gt;Frontend: Next JS, static site generation and an ultra-fast UI.&lt;br&gt;
Backend: Node JS, for handling API requests.&lt;br&gt;
FFmpeg, on server to make compression more efficient.&lt;br&gt;
The Next app is all static - served out on a CDN for near-instant access all over the world – while all the real work happens on the server with the backend API.&lt;/p&gt;

&lt;p&gt;Reasons for Moving Compression to the Backend&lt;/p&gt;

&lt;p&gt;First, I added compression to the frontend through Web Assembly builds of FFmpeg.&lt;br&gt;
It worked, but performance was not good - CPU load was low and compressing large files took forever.&lt;/p&gt;

&lt;p&gt;This allowed me to shift the compression to the server side so that I could take advantage of full CPU and I/O performance of the machine.&lt;br&gt;
And that resulted in faster compression-especially if you were working with a longer video or a higher resolution file (like 1080p or 4K).&lt;/p&gt;

&lt;p&gt;It also gave me more flexibility to:&lt;/p&gt;

&lt;p&gt;Optimize compression presets dynamically&lt;/p&gt;

&lt;p&gt;Manage bigger uploads&lt;/p&gt;

&lt;p&gt;Compatibility to various video formats, like MP4, MOV, AVI, etc.&lt;/p&gt;

&lt;p&gt;Lessons Learned&lt;/p&gt;

&lt;p&gt;Sure, frontend compression sounds neat and all, but when you got some serious grind to do, ain't worth the effort.&lt;br&gt;
No comparison to the quality/size ratio of FFmpeg.&lt;br&gt;
Keep the UI as simple as it can get - users are only interested in getting results, not navigating through loads of settings.&lt;br&gt;
Static building with Next JS + Node JS backend is a power combo for projects like this - quick to build, deploy easily and scalable.&lt;/p&gt;

&lt;p&gt;Test It&lt;/p&gt;

&lt;p&gt;Get it now or try it here:&lt;/p&gt;

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

&lt;p&gt;It's totally free, no watermarks, no hidden limits.&lt;br&gt;
Would appreciate your comments or suggestions of improvement!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
