HNHacker News
TopNewBestAskShowJobs

qrohlf

1,578 karma · joined May 28, 2013

qr@qrohlf.com
submissionscomments
qrohlf··on AirJet – Solid-state chip for active device cooling
Responding to the (surprisingly passionate?) comments below – this word choice was poor, I should have probably said something along the lines of "this is one of the products on the market that is least subject to major thermal throttling issues, relative to any other laptop that they could have chosen for this demo video."

The main point being, out of all the laptops out there, I thought it was entertaining that they picked the one high-performance laptop brand I am familiar with that does not get hot when I use it.

qrohlf··on AirJet – Solid-state chip for active device cooling
Funny that they clearly use a macbook as their "generic spinning laptop" image in the product video since this is sort of the one category of general computing device in which thermals seem to be more or less a solved problem due to the characteristics of the Apple Silicon chips.
qrohlf··on Wobbly clock
Off-topic, but what do you use for your "geographical address book"? I would love to have something that showed all my contacts on a map, but haven't run into any software that does this ever.
qrohlf··on Breaking up with JavaScript front ends
I both agree and disagree with this take.

I started out hand-coding static html pages, graduated to Drupal and Wordpress php stuff circa 2009 (glad that's over!), then worked on a largely server-rendered Rails SAAS in the APM space that I guarantee you've interacted with if you've been in the web game for more than a couple years. These days, I may sling React for my 9-5 but a lot of my personal projects and internal tools are vanilla express apps with very little client-side code.

It's true that a lot of newer devs really don't have a great deal of context for why React & company became the de facto default for building websites and how much we used to get done with largely server-based architectures. I wish we did a better job of teaching fundamentals here rather than bootcamping everyone straight into building SPAs.

However, it's also true that the baseline expectation for web experiences is a lot higher in 2022 than it was in 2009 in terms of the level of responsiveness, interactivity, and overall "app-like-ness", to the point where I think that even with the massive improvements in bandwidth, latency, and web protocols, we still need to accept that there are many cases where just shoving full HTML documents over the wire isn't enough to satisfy user & stakeholder expectations. That's where stuff like LiveView, htmx, and Web Components become interesting to me. The web has evolved, and finally the server-side-application paradigm feels like it's starting to evolve along with it, and these evolutions do feel like they're novel & useful enough to deserve being called "new ideas".

qrohlf··on Breaking up with JavaScript front ends
Seems like a half-baked agency-built version of htmx[1], no?

I'm actually very intrigued by the whole "let's take a step back and move a lot of our logic back to the server" approach to modern dev, but IMO when you need more than statically rendered pages, it should look a lot more like htmx or Phoenix LiveView (if you're using a framework) or something ultra-minimal like Slimvoice[2] if you want to go the bespoke route. Not this.

[1] https://htmx.org/.

[2] https://javascript.works-hub.com/learn/a-javascript-free-fro.... https://slimvoice.co/

qrohlf··on Trianglify.io – Low Poly Pattern Generator
One thing that folks may find interesting about this project on a technical level is that it's fully stateless including the backend that's responsible for interacting with Stripe Checkout, processing payments, and sending emails with receipts and links to re-download patterns.

The thing that makes that possible is that I'm using a seedable PRNG for the pattern generation and have a custom serialization format for all of the possible pattern parameters. This means that any pattern can be represented by a single short string like `w:1440!h:900!x:random!v:0.63!c:0.06!s:9gjk5s!f:sp!i:0.30` and reproduced with 100% accuracy.

That means instead of a database, I can just store the entire purchased pattern directly within the Stripe transaction within the `client_id` field using this compressed representation. Then it's just a matter of reading it back from the Stripe API when I get the "purchase completed" webhooks in order to build the correct attachments and send the customer their assets via email. This keeps my own service totally stateless & database-free, and also has the very nice property of allowing me to quickly and easily access the pattern by copy-pasting the client-id from the Stripe dashboard if I ever need to grab it for customer service reasons!

qrohlf··on Trianglify.io – Low Poly Pattern Generator
Author here - interesting to see this pop up on HN again!

Since there are a lot of questions in the comments that might be answered by prior writing/discussions, here are a couple relevant links:

0. Trianglify.io is a GUI for my GPL-licensed node library of the same name, which is available for use in OSS projects for free: https://qrohlf.com/trianglify/

1. Trianglify (the library) first became popular because of an HN post eight years ago. Discussion here: https://news.ycombinator.com/item?id=7578002

2. I've written a short Medium article on why Trianglify.io exists and how I arrived at the current freemium/micropayments model for monetizing it: https://medium.com/@qrohlf/i-sell-triangles-on-the-internet-...

qrohlf··on Trianglify.io – Low Poly Pattern Generator
Basically, yes! Since the fundamental functionality is powered by my (free) open-source library, trianglify.io is a time-saving tool for those who want a quick GUI instead of having to download and learn the npm library.

It's part of a series of experiments that I've run on monetizing open source, which you can read about in the article I wrote a while back here: https://medium.com/@qrohlf/i-sell-triangles-on-the-internet-...

That said, right-click > save as image is supposed to be disabled on that particular DOM element, but I'm guessing you probably have an extension or user-script that re-enables it. Which is fine, you're probably not the target audience for this! Trianglify.io is mostly used by designers working on professional projects for whom $8 to save 20-30min of tedious work in Illustrator is a very good value proposition.

qrohlf··on I regret my website redesign
As a small business owner myself, this resonates. I would love to be in a position to be able to confidently pay money to other professionals to make problems go away.

Unfortunately, my overall experience has been that hiring any “expert” in a field that I am not also an expert in has a 50% chance of working, and a 50% chance of blowing up in my face and creating more problems.

I recently attempted to get a new accountant to help me handle some business growth. It was a person from a well regarded local firm, initial meetings were good, and then they proceeded to deliver none of the agreed-upon work, take 2-3 weeks to respond to emails (multiple times, I had to call their office and schedule an in-person meeting just to get a response), and then de-prioritize my business relative to other clients so badly that I wasn’t able to submit my taxes until June.

If anyone can successfully build a service that lets me reliably pick professional-services providers with the same level of confidence that I pick an AirBnb (not 100%, but pretty good, with an expectation for reasonable mediation and fallback coverage if the offering is radically different than what’s described), I would happily pay a 20% premium on those services versus the existing “ask friends for referrals and cross your fingers” status quo.

qrohlf··on Show HN: 3D live tracking two climbers attempting a Sierra Nevada record
Appreciate the response.

One thing I've struggled with in threejs is what coordinate system to use when pulling in data sources. Obviously UTM and lat/lon are inappropriate when you're dealing with a slice of terrain in 3d like this, and from my experience using the 1x1 unit tile dimensions of something like a web maps tile coordinate system does not play nice with ThreeJS at all.

Do you just project to Mercator/Web Mercator and then arbitrarily pick something like 1km = 1000 units to work with the data in ThreeJS space, or is there some kind of an established coordinate transform that is commonly used when bringing geospatial data into a non-projected xyz coordinate system?

qrohlf··on Show HN: 3D live tracking two climbers attempting a Sierra Nevada record
I was actually just sharing this site with some coworkers last week as an impressive example of 3d activity visualization done right!

Map nerd and FKTer here working in a very similar space, I have a ton of questions!

I'd love to hear a little bit about how the camera positioning works. It seems like there is some fairly clever stuff happening under the hood to (1) maximize the amount of trackline in view so that that it is not obscured by terrain and (2) smooth out the camera path so that it doesn't jitter around even when the gps track is irregular.

Is this a completely bespoke rendering implementation? From the look of things, you're definitely not using mapbox-gl-js or leaflet. Are you even using ThreeJS, or is it just all raw webGL under the hood?

Finally, where are you sourcing your DEMs? AWS Terrain?

(small nit: It seems like you may be missing imagery/data attribution on your map, or do you have a license that allows for un-attributed use?)

qrohlf··on Why not hire part-time developers?
I experienced this in the extreme recently. I'm a very experienced dev in a very in-demand field. Money is not a huge priority for me in my career. Flexibility is. I have a proven track record of success in part-time roles after converting to part time at my previous company (after 2 years of full-time, of course). I spent 3+ months trying to get part-time engagements, and was willing to consider both consulting and W-2 arrangements. I got interviewed and then ghosted by two companies, was offered a laughably low rate by a third, and a fourth showed interest but then basically told me that I'd need to work a 40-hour week. I know that a vocal minority has success in part-time consulting, but it's quite difficult to accomplish if you live outside of a tech hub (I'm based in Central Oregon) and don't have SV connections.

Contrast that with when I gave up and decided to make myself available for full-time (remote) work. In the span of about 5 weeks, I got over 200 recruiter emails, interviewed at 10 companies, and received 10 offers, mostly in the upper end of the $200k-400k range.

I firmly believe that this is a cultural block, rather than one that's rooted in rational/pragmatic concerns. Tech companies want to feel like they're getting your full intellectual output, even if that's demonstrably false in the status quo. There's also this issue that gets brought up of "if Bob is gone half the time, isn't that going to breed resentment with his full-time coworkers?" (answer: only if you have a shitty "butts in seats" management culture).

I honestly don't think we're going to see meaningful change in this area for a while. The 40-hour work week is something that's heavily ingrained in tech culture, to the point where certain companies' "perks" are heavily tuned towards incentivizing you to stay at the office longer and frequently turn that 40 hours into 60. I think it will take an external disruptive event on the scale of COVID-19 in order to change this aspect of tech culture.

qrohlf··on Growing a mango tree from seed – one year time lapse [video]
There’s a really good podcast about why you can’t get middle eastern mangoes in the USA, and the resulting smuggling operations that have sprung up to serve this niche - “Underground Aams Trade”. Highly recommended.

https://podcasts.apple.com/us/podcast/underground-aams-trade...

qrohlf··on Over-reliance on CGI in movies
My favorite example of this is the fact that in the film "Knives Out", the looming oil painting of Harlan (the murdered patriarch) was actually just a green square all throughout filming - the oil painting itself was digitally comped in during post.

Is Knives Out still a good movie? Yes. Would it have been possibly, perceptibly better if the actors had a real eyeline to work with on that painting, or the camera work was done with the cinematographer being able to see the real painting through the lens? Maybe.

qrohlf··on Ask HN: Those making $500/month on side projects in 2022 – Show and tell
I run a design asset generator based on my open source library, Trianglify:

https://trianglify.io/

It currently does about $500/mo from a combination of asset purchases and ethical (Carbon Ads) non-tracking advertising.

qrohlf··on Reverse engineering Wordle
This is an unusual thing to find myself typing in a HN thread, but this could use a spoiler tag, as I did not expect to have tomorrow’s challenge ruined for me by a technical blog post.
qrohlf··on $2,500 Ethernet Switch Effectively Isolates Audiophiles from Cash
This particular rabbit-hole of irrationality goes deep; some audiophiles go as far as to have a private power grid connection to improve the "quality" of their music (paywalled WSJ link): https://www.wsj.com/articles/a-gift-for-music-lovers-who-hav...
qrohlf··on Takeaways from looking for a new senior role in tech
> Recruiters love phone calls and don’t like doing things over email or text. This means that it is very easy to get overwhelmed by the number of recruiters trying to call you, and we will explore time management a little further down the text.

This has been my experience as well, and while I understand the desire for introductory "sales mode" type calls, I think it's progressed past that point to something nearly pathological.

As an example, I recently had a recruiter that I was previously in contact with over email cold-call me while I was skiing, trying to schedule a meeting with a hiring manager (I picked up the call because I thought it might be one of the people in my group that I didn't have in my contacts). When I requested she please send me an email to schedule the meeting, as I was out of the office, I got an email where she sent an email to schedule the phone call, to then schedule the meeting over the phone. It was 100% the least efficient way to do this, and only happened because of this illogically strong preference for phone calls that recruiters seem to have...

qrohlf··on Stealth bomber in flight on Google Maps
Interesting how you can see the chromatic aberration on the bomber but not the ground. I guess that this implies that the optical and/or software correction that they're doing only works within a _very_ narrow focal plane, given the relative proximity of the bomber to the ground.

This is kind of surprising, because if the tolerances for avoiding chromatic aberration are that small, whatever is collecting this data would have to be constantly adjusting its optics or software based on the topography.

EDIT: it's not chromatic aberration, it's pixel misalignment caused by the object being in motion: https://news.ycombinator.com/item?id=29627917

qrohlf··on Show HN: 4K Desktop Wallpaper Generator
Not entirely dissimilar to my own pattern generation tool, https://trianglify.io/

How are you doing the color palettes? Is it fully random or using some kind of picker algorithm?

qrohlf··on Ask HN: What are the best-designed things you've ever used?
They changed it, you get a total before ordering now
qrohlf··on Tune Your PID Controller
Oh man. I wish I had the pages of manual PID tuning notes from when I was doing work with autonomous quadrotors in university to show what this thing replaces. Something like this would have saved me a massive amount of time, thanks for making it and thanks especially for wrapping it up into a nice interface.
qrohlf··on The tragic history of the only diet pill that worked
Matt Levine’s Bloomberg column applies a similar savvy dry humor to finance topics, I don’t actually care much for finance but I read it because it’s great writing and illustrates how to make dense and uninteresting topics approachable and engaging.
qrohlf··on Groundhog: Addressing the Threat That R Poses to Reproducible Research
I’ve had some brief run-ins with R, and it doesn’t surprise me that it doesn’t have a versioning story for packages, and that the patched-in system described here is based on dates rather than something like a SHA or version number...

My favorite description of the language comes from http://arrgh.tim-smith.us/:

> R is a shockingly dreadful language for an exceptionally useful data analysis environment.

I feel like this is just one more data point to support that statement.

qrohlf··on Show HN: I have found the world's greatest landing page
I was a very happy Codekit user way back in my undergrad days when I hand coded html landing pages as a side hustle. Glad to see Bryan is still making useful, well-marketed apps
qrohlf··on How I got to $9.99 MRR after 7 years
This is obviously marketing disguised as satire, but in the interest of maybe providing some info that's useful to someone in the comments section I'm going to jump in here with a middle-of-the road story. I make ~$500/mo off my side project. It's nice money that I can use to explore more side projects. I'm not going to quit my day job with it. You don't have to make $5k MRR for a side project to be profitable/useful, and you can successfully scale a small idea without pouring 40hrs/wk into it.

The above TLDR is really all you need to know but if you're interested in more I wrote a longer article about how this all happened here: https://medium.com/@qrohlf/i-sell-triangles-on-the-internet-...

qrohlf··on The Tech Stack of a One-Man SaaS
A lot of people here are recommending stacks that have worked for them, or cautioning against over-engineered stacks that didn't. All of that is useful, but I'd boil a lot of this down to one simple axiom:

If you're a professional engineer and you're starting a tech side project with the goal of shipping - use what you know.

I do a lot of work with node, cloudfront, s3, and React for my day job. All of my side projects are built on node, cloudfront, s3, and React. This works well for me because my goal with side projects right now is to be productive, not to learn new tech.

An important clarification is that I use the tech that I use in my day-to-day, not what my company uses. Just because I have coworkers who know kubernetes back-to-front doesn't mean I do!

Also, there's nothing wrong with doing side projects with totally crazy/new tech stacks as a way to explore and learn new tech. I just think it's good to be really intentional with whether the goals of a project are educational/process-oriented or results-oriented.

qrohlf··on Show HN: I Made JavaScript Color Conversion Library for LCH/Lab/XYZ/RGB/Hex/HSL
This is actually pretty interesting to me, as I maintain a popular JS library [1] that depends on Chroma.js (similar lib to yours), and that dependency outweighs my first party code more than 3:1.

Do you have any plans to add interpolation functionality to ac-colors?

[1] https://github.com/qrohlf/trianglify

qrohlf··on Notion encourages busy-work
This isn't a new phenomenon - my favorite past example of this is the FileMaker series of applications.

The biggest hurdle to building most great tools isn't the coding, it's the process of carefully thinking about the problem and designing something that fits without being overly complicated or too basic. Incidentally, learning to code often gives you some basic understanding of this issue.

No-code tools like Notion or Filemaker throw users straight into the deep end of designing their own solutions, and because of the data-agnostic nature of the tool it's difficult to build in guardrails to stop the user from over-complicating their solution.

qrohlf··on Ask HN: Who wants to be hired? (May 2020)
Location: Boulder, CO

Remote: Yes

Willing to relocate: Yes, but not to the Bay Area

Technologies: React, Node, RoR, Postgres, Dokku/Heroku

GitHub: https://github.com/qrohlf/

CV: https://www.linkedin.com/in/qrohlf/

Email: qr@qrohlf.com

---

A good fit would be a product-driven organization in need of a senior-level engineer. I mostly work in client-side JS, but I've built up multiple backends from scratch and am not afraid to get my hands dirty when it comes to working with databases, building microservices to support new functionality, and generally working at whatever level makes the most sense for the problem I need to solve.

← PreviousPage 2 of 4Next →