News for hackers. Stuff that matters.

winstonrc

Re:10 Years of Pomological Watercolors on Friday June 27, 2025 @05:51PM (#44400568)
Thanks to your collection, I had an absolute blast going down a silly rabbit hole of compression.

https://www.winstoncooke.com/blog/rotation-based-compression...

Re:Ask HN: Who wants to be hired? (January 2025) on Thursday January 02, 2025 @11:08AM (#42575637)

  Location: Texas, USA / New York, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, Rust, TypeScript, JavaScript, HTML, CSS, SQL, noSQL, htmx, Svelte, Temporal  
  Résumé/CV: Available on request  
  Email: contact [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
Hi, I'm Winston! I'm a backend software engineer and Certified Public Accountant (CPA) with a background in fintech, and I specialize in bridging the gap between financial systems and code.

Before transitioning into software engineering, I started my career in big 4 public accounting at EY, auditing major financial services firms and consulting on IT systems to ensure SOX compliance for IPO readiness[0]. These experiences taught me how companies waste millions fixing mistakes in their financial systems that could have been avoided with a software engineer who deeply understands accounting.

In my most recent role, I was the lead developer for the fintech team at a logistics company, where I built a scalable invoicing service that processed thousands of parcels per day. Within six months, I was promoted to lead engineer, managing two junior developers and designing the architecture for the next-generation service.

My unique blend of technical and accounting expertise enables me to translate complex US GAAP requirements into scalable, compliant software systems, helping growing companies avoid costly errors and stay ahead of their competitors.

I race cars for fun and have survived multiple accounting busy seasons, so I thrive under pressure. I hold a master's degree and passed all four sections of the CPA exam on my first attempt (8% pass rate), so I also know how to tackle tough challenges.

No one has ever been fired for hiring a CPA to work on accounting-related problems. Accounting is complicated, and you don't have the time to teach another software engineer 10+ years of formal study and experience. Don't overthink it! Let's talk about how I can improve your company's financial systems and make your life easier to focus on earning more money.

[0]: https://www.ey.com/en_us/insights/consulting/why-sox-prepara...

Re:Ask HN: Who wants to be hired? (December 2024) on Monday December 02, 2024 @01:45PM (#42299030)

  Location: Texas, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, Rust, TypeScript, JavaScript, HTML, CSS, SQL, noSQL, htmx, Svelte  
  Résumé/CV: Available on request  
  Email: contact [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
How often do you get the opportunity to hire a developer and get included access to a CPA as well?

Hi, I'm Winston! I'm a software engineer (backend / fullstack) & Certified Public Accountant (CPA) with a background in fintech.

I'm a consistently high performer with a talent for delivering maintainable, high-quality code. I try to avoid trend-chasing and instead focus on solving complex problems with the most effective solutions. I'm highly driven and am eager to work my tail off in order to thrive at my next job. I race cars for fun and worked in big 4 accounting, so I can quickly make successful decisions under pressure. I also have a master's degree, so I like to think I have the academic chops to take on most problems.

Dev + CPA? It's a no-brainer. Let's talk!

--

Note: Please do not reach out to me pretending you want to interview me in order to extract free advice on your accounting-related startup. I am seeking a job as a software engineer. Any accounting advice can be set up to be billed hourly.

Re:Ask HN: Who wants to be hired? (November 2024) on Friday November 01, 2024 @06:42PM (#42022275)

  Location: Texas, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, Rust, TypeScript, JavaScript, HTML, CSS, SQL, noSQL, htmx, Svelte, React  
  Résumé/CV: Available on request  
  Email: contact+hn [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
New York preferred!

How often do you get the opportunity to hire a developer and get included access to a CPA as well?

Hi, I'm Winston! I'm a software engineer (backend / fullstack) & Certified Public Accountant (CPA) with a background in fintech.

I'm a consistently high performer with a talent for delivering maintainable, high-quality code. I try to avoid trend-chasing and instead focus on solving complex problems with the most effective solutions. I'm highly driven and am eager to work my tail off in order to thrive at my next job. I race cars for fun and worked in big 4 accounting, so I can quickly make successful decisions under pressure. I also have a master's degree, so I like to think I have the academic chops to take on most problems.

Dev + CPA? It's a no-brainer. Let's talk!

--

Note: Please do not reach out to me pretending you want to interview me in order to extract free advice on your accounting-related startup. I am seeking a job as a software engineer. Any accounting advice can be set up to be billed hourly.

Re:Ask HN: Who wants to be hired? (October 2024) on Tuesday October 01, 2024 @03:44PM (#41713283)

  Location: Texas, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, Rust, TypeScript, JavaScript, HTML, CSS, SQL, noSQL, htmx, Svelte, React  
  Résumé/CV: Available on request  
  Email: contact+hn [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
Note: NYC preferred.

How often do you get the opportunity to hire a developer and get included access to a CPA as well?

Hi, I'm Winston! I'm a software engineer (backend / fullstack) & Certified Public Accountant (CPA) with a background in fintech.

I just finished a 12-week batch at the Recurse Center where I shipped 3 rust crates for poker hand ranking with thousands of users and also published a game for the Playdate with multiple sales. I'm a consistently high performer with a talent for delivering maintainable, high-quality code. I race cars for fun and previously worked in big 4 accounting, so I can quickly make successful decisions under pressure.

Re:Medieval on Wednesday August 07, 2024 @08:48AM (#41180843)
Does anyone have recommendations for a more practical, entry-level device for making small songs? I’m making a survival-horror game for the Playdate and need some music that fits the vibe.

The reason I’ve been eyeing hardware is because I spend all my time writing code and drawing pixel art, so it would be nice to have something away from the computer to work with.

Re:Ask HN: Who wants to be hired? (May 2024) on Thursday May 02, 2024 @04:40PM (#40241135)

  Location: Texas, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, Rust, TypeScript, JavaScript, HTML, CSS, SQL, noSQL, htmx, Svelte, React  
  Résumé/CV: Available on request  
  Email: contact+hn [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
How often do you get the opportunity to hire a developer and get included access to a CPA as well?

Hi, I'm Winston! I'm a software engineer (backend / fullstack) & Certified Public Accountant (CPA) with a background in fintech.

I'm a consistently high performer with a talent for delivering maintainable, high-quality code. I try to avoid trend-chasing and instead focus on solving complex problems with the most effective solutions. I'm highly driven and am eager to work my tail off in order to thrive at my next job. I race cars for fun and worked in big 4 accounting, so I can quickly make successful decisions under pressure.

Dev + CPA? It's a no-brainer. Let's talk!

--

Note: My CPA license is active as of the time of this post, but it may not be active when this post is archived in the future. Nothing in this post constitutes professional advice.

Re:Double-Entry Bookkeeping as a Directed Graph on Wednesday April 10, 2024 @02:44PM (#39994271)
I’m biased, but I hope my explanation[0] is more intuitive coming from a CPA.

[0]: https://www.winstoncooke.com/blog/a-basic-introduction-to-ac...

Re:Ask HN: Who wants to be hired? (February 2024) on Thursday February 01, 2024 @02:46PM (#39220344)

  Location: Texas, USA  
  Remote: yes  
  Willing to relocate: yes  
  Technologies: Python, TypeScript, JavaScript, Rust, HTML, CSS, SQL, noSQL, htmx, Svelte, React, Express, Node, Three.js, Google Cloud (GCP)  
  Résumé/CV: Available on request  
  Email: contact+hn [at] winstoncooke [d0t] com  
  Website: https://www.winstoncooke.com/  
  LinkedIn: https://www.linkedin.com/in/winstoncooke/  
Hi, I'm Winston! I'm a software developer (backend / full-stack) and a non-practicing Certified Public Accountant (CPA).

I have a background in FinTech and experience working with Fortune 25 companies from my time at EY. I most recently worked as the lead developer on the FinTech team at my employer and wrote the internal invoicing service from zero to production in six weeks, saving the company $55K/month.

I am passionate about writing software that enhances people's lives and am talented at writing maintainable code, avoiding bloat, and collaborating with others to bring out their best.

--

Note: My CPA license is active as of the time of this post, but it may not be active when this post is archived in the future. Nothing in this post constitutes professional advice.

I'm really excited by the current appreciation of CRTs. There is something so nostalgic about them that matches the warmth of listening to my favorite vinyl. I have had much more fun playing SNES and Genesis via my MiSTer on a PVM than I have had playing most modern games on an OLED display (although OLED is unquestionably beautiful, and I'm looking forward to the OLED Steam Deck).

My biggest concern with my current setup is what will happen when my PVM dies? Will there be anyone around to fix it? Will I trust myself to safely open it up and fix it? The PVM I have isn't _too_ large, but it's certainly more heavy and inconvenient than a modern display. I'm really excited by the excellent work towards recreating how good CRTs look to preserve this bit of history and also provide another artistic option for future games to consider.

Re:Write Your Own Terminal on Friday November 10, 2023 @03:50PM (#38224343)
I built a fake terminal on my website[0]. I've been planning on building an actual one that is compiled to WASM, but it was fun building the little features such as a memory of entered commands that can be navigated by pressing up and down with the arrow keys. This looks like a great resource for me to take it to the next level. Are there any concerns I should be aware of if I were to deploy a working terminal on a website?

[0] https://www.winstoncooke.com/terminal

Re:The Negative Impact of Mobile-First Web Design on Desktop on Thursday October 26, 2023 @09:13PM (#38033603)
Yeah I only run into the issue when using an iPhone mini with an increased font size. But it’s ready to go if I add more routes. If the list grew to be too large, I would switch to a two-column layout on my homepage for the primary points of interest.

I’m a big fan of collapsible table of contents. That design paradigm allows for the higher level to use a word to indicate what it contains and then can open up to a list. But it does really depend on the type of information conveyed. I can currently get away with always avoiding hamburger menus but that might be tougher for something like a banking app to avoid.

Re:The Negative Impact of Mobile-First Web Design on Desktop on Thursday October 26, 2023 @01:31PM (#38028887)
I built the nav bar at the top of my website[0] to be scrollable if the content doesn’t fit horizontally. I’m slightly concerned about users not realizing there are more options to scroll over, but I prefer it to a hamburger menu that has to open and cover the content since you can see every option and read the corresponding word. No need for any of that when visiting on a desktop however.

[0] https://www.winstoncooke.com/

Re:GnuCash Tutorial and Concepts Guide on Friday October 20, 2023 @11:25AM (#37957431)
If it helps anyone, I wrote a blog post[0] (based on this comment[1]) explaining how double-entry accounting works.

I have recently been thinking about building my own program that implements double-entry accounting in a more approachable form for individuals. I’m not sure if pure accounting concepts are ideal for the average person for keeping track of their budget like how they are essential for businesses. My bias says yes, but perhaps a greater amount could be handled in the background to present a more intuitive interaction for those unfamiliar with accounting concepts. Currently, I prefer using ledger[2] to GnuCash, but I appreciate that both exist.

[0] https://www.winstoncooke.com/blog/2023-10-20-a-basic-introdu...

[1] https://news.ycombinator.com/item?id=37955637

[2] https://ledger-cli.org/

Re:Accounting for Computer Scientists on Friday October 20, 2023 @09:24AM (#37955637)
Double-entry accounting at its simplest is the accounting equation:

  Assets = Liabilities + Equity
Accounts are created that fall under one of these three categories. Each account has its own ledger to book transactions, and each ledger flows into a general ledger that keeps track of the account balances at a higher level.

Every transaction that is booked in a ledger must balance by issuing a debit and a credit.

Take Cash as an example. Cash is normally considered an asset account. Suppose you receive $10 in Cash temporarily from financing but you have an obligation to pay it back in the future. That obligation can be represented by a liability account called Accounts Payable. When receiving the cash, the following entry should be booked:

  Cash $10
    Accounts Payable $10
Here we have debited $10 to the Cash account and credited $10 to the Accounts Payable account. Both accounts balance. Revisiting the accounting equation, we can see how it still balances:

  Assets = Liabilities + Equity
  10 = 10 + 0
Now if we dive into the Cash account at a deeper level, we can represent it with a t-chart:

     Cash   
  ---------
   10 |
Similarly for Accounts Payable (A/P)

     A/P   
  ---------
     | 10 
Both Cash and Accounts Payable carry a balance of $10. Since Cash is an asset account that carries a debit balance, we represent it in t-chart form by adding 10 to the left side of the t-chart (matching up with assets being on the left side of the accounting equation). Accounts Payable carries a credit balance since it is a liability account, so we represent it by adding the 10 to the right side of the account (matching up with liabilities being on the right side of the accounting equation).

Next, lets look at what happens when we pay back $5 of our obligation. First, we book the following entry:

  Accounts Payable $5
    Cash $5
Now we have debited Accounts Payable and credited Cash, which is the opposite of their account types. This reduces the balance of the accounts, as demonstrated by their t-charts:

     Cash   
  ---------
   10 |
      |  5

     A/P   
  ---------
     | 10 
   5 |
The accounting equation is now:

  Assets = Liabilities + Equity
  5 = 5 + 0
Finally, let's look at an equity account. Suppose when the business was formed, we gave it $10 of widgets (Inventory asset account) in exchange for equity in the business:

  Inventory $10
    Equity $10

  Inventory   
  ---------
   10 |

    Equity   
  ---------
     | 10
Pretending that the founding equity has now been introduced (because it would have normally been the first entry in the company's books), the accounting equation is updated as so:

  Assets = Liabilities + Equity
  15 = 5 + 10
Now suppose we receive $20 in cash from the sale of all of our widgets valued at $10. Our business was formed to sell these widgets, so the sale is revenue. Revenue is an equity account. The sale would be booked with the following entry:

  Cash $20
    Inventory $10
    Revenue   $10
Since Revenue is an equity account, we have increased its balance by crediting it $10, which is the difference between the cash received and the value of the widgets we sold. The t-charts for the account balances in the transaction are the following:

     Cash   
  ---------
   10 |
      |  5
   20 |

  Inventory   
  ---------
   10 |
      | 10

   Revenue
  ---------
      | 10
What do you think the accounting equation looks like at this point? Think on it for a second.

Let's close out our accounts before answering that question.

     Cash   
  ---------
   10 |
      |  5
   20 |
  ---------
   30 |  5
  ---------
        $25
  ---------
  ---------

  Inventory   
  ---------
   10 |
      | 10
  ---------
         $0
  ---------
  ---------

     A/P   
  ---------
     | 10 
   5 |
  ---------
         $5
  ---------
  ---------

   Revenue
  ---------
      | 10
  ---------
        $10
  ---------
  ---------

    Equity
  ---------
      | 10
  ---------
        $10
  ---------
  ---------
At this point, the accounting equation remains perfectly balanced still:

  Assets = Liabilities + Equity
  25 = 5 + 20
From here, we could create a Balance Sheet (B/S), which is a look at the balances of our accounts at a point in time. The B/S would show Cash has a balance of $8,

  ---------------
   Balance Sheet
  ---------------
  Assets:
  
  Cash         25
  Inventory     0
  ---------------
  Total       $25
  ---------------
  Liabilities:
  
  A/P           5
  ---------------
  Total        $5
  ---------------
  Net assets: $20
  ---------------
  Equity:
  
  Equity       10
  R/E          10
  ---------------
  Total       $20
We can see a shift of the accounting equation on the B/S with the net assets equaling the equity (Assets - Liabilities = Equity).

Hold on. Where did R/E come from? That stands for Retained Earnings and represents the net profit as the end of the period measure by the Income Statement (I/S). Similarly, the movement of Cash would be measured during the period in the Statement of Cash Flows (C/F) with the ending cash position flowing into the Cash balance on the B/S.

Accounting is more complex in reality of course, but I hope this provides a demonstration of how double-entry accounting works and how accountants think when performing bookkeeping functions. It's really sort of a fun practice in a geeky way. It's all about the flow of balancing things. Everything is accounted for, and these practices demonstrate how business resources are used.

Any questions?

Exactly. The convex display allows for an impression of the intended image whereas a flat LCD is more of a “soulless” pixel-by-pixel translation of the visual data. A flat display will inherently always be off due to this.
It looks so much better in person too! I had a difficult time accurately capturing the CRT screen with an iPhone. Perhaps I could borrow a DSLR with a tripod to take a better photo one of these days.
I wrote a brief article discussing my thoughts on playing 240p games on a CRT compared to a modern display[0]. It’s hard to perfectly convey, but the picture really does look exceptional and so much better than on a modern display and is something worth seeing in person.

The MiSTer FPGA does an excellent job with filters to recreate that experience but isn’t 100% there yet. The Analogue Pocket also does a great job recreating the look of GB, GBC, and GBA games. I’m very impressed by the people that have developed these filters and am optimistic about their implementation in the future. I’m not always going to have a CRT, so filters are the next best thing to capturing the original look.

[0] https://www.winstoncooke.com/blog/2023-08-26-appreciating-24...

Re:Ask HN: How do you manage photos, philosophically? on Wednesday September 27, 2023 @09:04AM (#37674057)
I have two places I store photos: a gallery[0] of curated photos on my personal website, and a larger stream of photos backed up to my NAS.

The photos on my NAS replicate what I capture with my phone. I actively delete photos of the mundane such as a random snap of food I cooked. I let the iOS photos app automatically create albums of people and places and display those as a widget on my home screen. I go through it every now and then to clean it up from bad photos that accidentally got uploaded. This collection has survived a transfer from Android to iOS since it is platform agnostic.

My gallery on my website is for hosting things I want to be shared and has a higher standard for what I select. I also don’t have social media, so when people ask where they can view photos of my trip, I point them to my website. Right now it has photos from vacation trips that were mostly shot on film. It’s more artistic in nature and features landscapes rather than humans. The idea is to capture the essence of the photo albums of the past that my older family members have. I can always go to my website and view photos from a trip. Shooting those photos on film makes the shots more deliberate and more limited in nature. I could always get them printed physically to place into a photo album, but I’m happy with storing them digitally for now to reduce clutter. The gallery feature itself is something I really enjoyed building.

I like the balance of viewing subjectively more interesting photos in my gallery but also being able to see the behind the scenes photos with my family in my digital collection. I’m waiting for a way in the future to more conveniently display my photos locally on a digital photo album such as a docked iPad.

[0] https://www.winstoncooke.com/gallery