HNHacker News
TopNewBestAskShowJobs

news_to_me

1,347 karma · joined October 5, 2013

I'm Zack, a freelance full-stack web developer in Seattle. I've worked with clients on several Elixir web projects ranging from geography-based census data analytics to processing state COVID test results. I've designed web APIs, integrated with many third-party APIs, and restructured application architectures.

In 2023, as a side project, I created a small functional language called Cassette <https://cassette-lang.com>.

https://zjm.me | z@zjm.me

submissionscomments
news_to_me··on Why Working from Home Will Stick [pdf]
> But I still see the need for brick and mortar work for certain....job types

Maybe you wanted to say "certain people"? Working from home is definitely more difficult for some people's work style than others, plus a ton of other factors like how well one's home is suited to working in, how much skill a person has working in that environment, etc.

Time theft is a bummer, especially on the team-level where you just want to get things done. I wonder what causes it? Off the top of my head I can think of:

- People are naturally lazy (I really disagree with this, but it feels like the default "robber baron" answer)

- People are having trouble adjusting to different and various work environments (probably a good amount of this)

- The nature of how we work in America is fundamentally unnatural for many people, and the lack of supervision allows people to assume a better work/life balance

#3 is maybe just my experience in the workplace, but it feels pretty true — I wonder how widespread that experience is.

In any case, I'm glad the pandemic forced many people to reevaluate what "going to work" looks like, and hopefully we settle on something closer to how we'd each like to work.

news_to_me··on 10 years-ish of Elixir
Congrats to José and the team! Elixir was a wonderful discovery for me a year or two ago — it's the closest I've found to my "ideal" language. You can tell, from the documentation and by using the language, how much thought went into each design choice.

Good luck on the next ten :)

news_to_me··on Computer Graphics from Scratch (2017)
I didn't know any computer graphics or linear algebra beforehand. I bought a copy of this book[0], which is a bit dated, but goes through the basics really well. I also got a lot out of this lecture series[1].

I ended up doing a lot more math than I expected to understand the fundamentals of projection, basically teaching myself linear algebra, but that was pretty fun in itself.

My goal was to build a minimum-viable software rasterizer for embedded situations (STM32-F7). I still haven't gotten around to getting lighting to work efficiently, or to leverage SIMD, but I intend to whenever I get back to the project.

The source is here if you're curious: https://git.sr.ht/~zjm/Moon3D. There's also some screenshots/progress updates on my Twitter: https://twitter.com/zackmichener

[0]: https://www.pearson.com/us/higher-education/product/Foley-Co...

[1]: https://www.youtube.com/watch?v=01YSK5gIEYQ&list=PL_w_qWAQZt...

news_to_me··on Computer Graphics from Scratch (2017)
This looks really cool! Earlier this year I built a software rasterizer from scratch, and it was one of the most fun/challenging projects I've done. I learned a ton about efficient memory layout, and the linear-algebra concepts behind projection are very fun.
news_to_me··on Java is better than C++ for high speed trading systems
I'm curious, what role did Common Lisp play in the original version of your trading system?
news_to_me··on Progress bars still lie
I think there's two issues here that are often wrapped up together: 1. what is the status of my task, and 2. did the computer get stuck

If we could be sure the computer wouldn't get stuck (which is just a bug), then progress bars and spinners would be fine. If the task is as granular as you suggest, progress bars would be a great visual indicator, much better than text.

But since computers do get stuck, additional indicators should help with that. A spinner is supposed to show that a process isn't stuck, but those are fallible too. A textual representation ("bytes currently downloaded") sounds like a great addition to a progress bar. I've seen this a lot on linux distro installers, where you can click "details" below the progress bar to see the console output.

news_to_me··on Progress bars still lie
Yeah, I think I remember those! If it were me, I would turn the segmented bar into a checklist, since you can add a description and I think it looks nicer. But the approach was a good one imo.
news_to_me··on Progress bars still lie
A progress bar is only appropriate to show one metric changing between two known points over time.

- A progress bar should not measure multiple tasks, unless each task is of the same type (e.g. converting a batch of files, _not_ system booting)

- A progress bar should not measure "time left" unless it is literally tied to the value of a timer (i.e. _not_ "time left to download big file")

- A progress bar does not show "busy state" — a spinner does that. A progress bar can stop if e.g. it measures bytes of a file downloaded and the network connection drops; a spinner will still spin.

- A progress bar should include a label to explicitly state what it is measuring (otherwise users will assume it means "time left")

People like to see progress bars because they want to know "progress is being made", but a progress bar is not always appropriate, depending on the situation. Instead, consider using:

- Spinners show activity is happening. Use when there isn't a single metric to report, or the "bounds" of the metric aren't known.

- A checklist can show different tasks completed in sequence. Can be combined with a spinner on the "current" task

- A segmented progress bar can replace a checklist when each task could be represented by a progress bar

Just my opinions, I guess, and obviously we don't live in the world where the above is applied, but it feels good to have it sorted in my own head. Curious what others think of this scheme.

news_to_me··on Progress bars still lie
Yeah, you might be right about that. Still, that's not using a progress bar correctly if it's measuring multiple tasks — they should be measured individually, with spinners or a segmented progress bar.
news_to_me··on Progress bars still lie
This seems a little funny to me, since the purpose of the spinner is so that you know the computer isn't caught in a loop — it's "busy". It's true, though, that the computer could still be stuck even though it updates the spinner. This is a hard problem to solve.

Abusing progress bars are not a good response to this, though. I would rather trust progress bars for what they are meant to show rather than as an indication of true activity. After all, you still can't tell whether the progress bar kept moving, but the process is stuck in a loop.

news_to_me··on Progress bars still lie
A progress bar should not indicate progress over multiple tasks — a segmented progress bar is better, or a series of spinners, or just a single spinner for the whole set. A progress bar should measure exactly one metric, where the total is known.
news_to_me··on Progress bars still lie
A progress bar is a chart, nothing more, nothing less. And as any data scientist will tell you, charts without labels are bad charts.

A progress bar should measure exactly one dimension, where a total is known, and a label should show what the dimension is. Usually progress bars implicitly measure "time left", but the total isn't known in that case, so progress bars are inapproprate.

For most "loading" scenarios, a spinner is a more appropriate element.

news_to_me··on C Programming on System 6 – Intro [video]
If you can find a physical copy of Vol I-III on eBay or elsewhere, I highly recommend it. It's much easier to flip through (even though it's a big tome) than searching through PDFs in my experience.
news_to_me··on C Programming on System 6 – Intro [video]
I routinely search "site:preserve.mactech.com $query" — there's a lot of interesting and helpful tech tips there.
news_to_me··on C Programming on System 6 – Intro [video]
This is awesome! I've also been doing development on an old Mac 512k (upgraded to 2MB). It's pretty wild and super fun.

Until recently I was using Think C, which was great, but recently I've switched to Think Pascal. It's true what you read on the old forums, Think Pascal had more love put into it. The editor is better, the errors more helpful, and little things like remembering which files you had open in a project make a big difference.

Shout out to the Mac 512k Blog[0], which has some great content as well.

(Edit) Also for anyone else looking for helpful online resources (beyond tutorial books and Inside Macintosh, which are essential), preserve.mactech.com has tons of great old articles.

[0]: https://macgui.com/news/showcat.php?id=8

news_to_me··on Amtrak’s Empire Builder: The Train That Deserves Better
Sad to hear this. I rode the Empire Builder from Chicago to Seattle in 2013 with all my things after college — it was a big moment for me and that line will always be special to me.
news_to_me··on The software engineering lifecycle: How we built the new Dropbox Plus
Seeing a lot of negativity here re: "Dropbox should just sync files." Personally I'm stoked about Dropbox branching out to help with more aspects of digital organization, and I think they're well-positioned to do it. All that remains is whether or not they can execute that well.

Good luck, Dropbox!

news_to_me··on How to Build a State
I don't think Seattle's CHOP (née CHAZ) is very relevant here — it was a protest occupation, more in common with Occupy Wall Street than a serious attempt of any kind of secession. (Of course, participants' own ideas for what it should be were varied.)
news_to_me··on Show HN: Muse – Tool for Thought on iPad
Just downloaded this, looking forward to fitting it into my workflow!

It's a bit of a bummer that it only really supports landscape mode, though — I strongly prefer portrait mode when working on the iPad. What was the design decision to only (primarily) support one mode?

news_to_me··on Black silicon photodetector breaks the 100% efficiency limit
Great explanation — although only a week or so ago I wouldn't have understood a lot of it. Knowing how transistors work helps a lot: https://www.youtube.com/watch?v=DXvAlwMAxiA
news_to_me··on Handles Are the Better Pointers (2018)
> the system process was free to clean up the heap and manipulate your pointers b/c your app would only yield at specific points where you aren't holding onto a dereferenced handle.

True, but it was also your job as a developer to not be holding onto those pointers when the memory manager ran.

news_to_me··on Building Kind Social Networks (2018)
Evil people are allowed to have communities. In an evil community, it's probably the "good" user who is usually a troll, so it makes sense for them to be unwelcome.

What's interesting about Reddit is, to what extent is a subreddit its own community vs part of the Reddit community? Probably better for evil people to set up their own forums, or preferably to not be evil at all.

news_to_me··on Why shaving dulls even the sharpest of razors
If you like single-blade disposable razors, you'll love a safety razor ;)
news_to_me··on Satellite images of the Beirut explosion site – before and after
Those are grain silos, apparently:

> Satellite images comparing the area before and after the explosion show the complete destruction of Beirut's port. The grain silos that were next to the site of the explosion are still partially upright, although it's believed that up to 85 percent of the country's grain stocks have been lost. (Lebanon imports 80 percent of its food supply, and Beirut normally handles 60 percent of the country's total imports.)

https://arstechnica.com/science/2020/08/what-we-know-about-t...

news_to_me··on Repository for Old Macintosh Software
What's unethical about distributing abandonware? I don't see any harm in finding use of something that would otherwise be wasted.
news_to_me··on Repository for Old Macintosh Software
https://macgui.com/ has a lot that neither of those do. Plus the 512k blog is honestly invaluable.
news_to_me··on Repository for Old Macintosh Software
I've had the most luck with Mini vMac. Shoot me an email if you need a bootable image, I have one for System 6 and System 7.
news_to_me··on DIY Video Hosting
I used MPEG-DASH to build a netflix-party clone when the pandemic started, mostly following this tutorial: https://www.isrv.pw/html5-live-streaming-with-mpeg-dash. It could easily be adapted to on-demand video streaming.

My solution was pretty janky, but it's an interesting problem space to explore.

news_to_me··on Ask HN: How and when did you decide and start your startup?
That’s fair, and I assume it worked out ok for you in the end. I imagine people who are able to pull that off know who they are. Definitely understand the trade off.

I just think as general advice for young programmers, “work 60+ hour weeks” is very much the wrong message. Stay healthy and let your passion drive your work.

news_to_me··on Ask HN: How and when did you decide and start your startup?
I’d extremely not recommend this. Everyone is different of course, but there’s no way you can work a full time job, stay healthy, and dedicate enough time to a serious new endeavor. Don’t listen to the hustle bullshit. If you want to do a startup, just quit and jump into it.
← PreviousPage 4 of 14Next →