HNHacker News
TopNewBestAskShowJobs

mjgoeke

131 karma · joined June 20, 2013

submissionscomments
mjgoeke··on Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger?
With all the talk about "does the software support fractional bpm" wouldn't you just create it at say 124bpm and then scale down to 123.45 (or whatever) by taking the total length and scaling it by that percentage (e.g. 0.99561926612903225806451612903226). You don't even need to scale it trying to keep the pitch correct. You just speed it up < half a percent, the pitch rises slightly, and you have your perfect bpm.
mjgoeke··on Don't watermark your legal PDFs with purple dragons in suits
That's not a "watermark", keep it to 5% opacity. This is around 13% and very distracting.
mjgoeke··on Images trapped in a feedback loop and analog fractals create each other
I remember seeing a simple setup very similar to this, but the operator adjusted the camera (and a single screen was used for feedback) but the effect felt like a zoom-in / flyover of terrain. I can't find that video any more, could someone point me to it?

edit: here's something from, wow, 15 years ago. It was like this but more landscape-like in the flyover. https://www.youtube.com/watch?v=eD9rr0gTLSU

mjgoeke··on Bare: Run JavaScript Everywhere
Mobile? afaik node.js doesn't run on mobile. If that's the case the 'copy' doesn't do a good job of highlighting the big value prop.
mjgoeke··on Show HN: Simulating 20M Particles in JavaScript
You might check if chrome://tracing helps give more insights: I came across it here

https://youtu.be/easvMCCBFkQ?t=114

mjgoeke··on Show HN: Running TempleOS in user space without virtualization
I'm guessing something along the lines of 1 Samuel 13:13 ;-)

https://www.bible.com/bible/114/1SA.13.13

mjgoeke··on AI-generated sad girl with piano performs the text of the MIT License
We're already there! Impose some structure in the textual representation of the song and it'll respect the structure musically:

example - "I only ate 3 cheeseburgers"

https://suno.com/song/c15f0251-fbac-4a30-a3e1-002dbc78cb79/

edit: yes, I agree this example amusingly reinforces the rest of what parent is saying

mjgoeke··on Ask HN: Who wants to be hired? (April 2024)
Location: Oregon

Remote: yes

Willing to relocate: no

Technologies:

Typescript/Javascript, C#, HTML/CSS, Vue, SQL, noSQL, Bootstrap, Azure Devops/Github Actions, Kubernetes, Docker, Node.js, functional programming, CQRS, unit and automated testing

Résumé/CV: upon request via email

Email: michael[dot]goeke[plus]yc[at]gmail[dot]com

Laser focused Principal Software Engineer adept at delivering best in class solutions on time, on budget, while building a kick ass team in stride. Fearless and empathetic communication - break down walls, find and create alignment, empower those around me. Technical genius. Polymath and autodidact. Clear and concise communicator.

mjgoeke··on Hell Yeah or No (2020)
I've appreciated a lot of parts of this book and was wondering if I could share it with others in some way.

I like to see the actual content of a book before I buy it to know if it resonates with me.

I found the book's table of content with links to the content is available, so I linked that here. Hopefully you get something out of it, and buy either the digital or paper copy if it speaks to you.

mjgoeke··on Half of vinyl buyers in the U.S. don’t have a record player: study
My first thought is, are they differentiating between people who buy vinyls for themselves vs someone who has a record player?

Seems like they may be jumping to conclusions here.

mjgoeke··on Help I have a JavaScript Lib that blows away competition but nobody knows of it
I have a very different set of problems/concerns in my current project and when I walk through the website most of it isn't mapping into my current problem+solution space.

The problem this is solving may be obvious from your perspective, but it isn't from mine, and maybe others.

I don't know I need your solution unless I see I have a problem.

Perhaps there are a few simple, general problem cases this solves. If so you could characterize those in context+problem+solution brief narratives. That could help others get on the same page as your solution.

mjgoeke··on Tell HN: I'm nervous and don't know where else to go
This.

And this is true for reasons I didn't understand when I was soley technical and younger.

At the end of the day people - _teams_ - want people they can trust in. That doesn't mean you handle things flawlessly, or that your boss can necessarily "set it and forget it" with you. Being trustworthy and responsible means acting out of good intent. Take a breath, keep your head on straight, look at the slightly bigger picture, and make reasonable choices. Communicate. Act as if the world isn't on your shoulders - because it isn't.

Take a step back, realize that we're all people, trying to make good decisions, and we're responsible to work with the outcomes and address problems as they arise.

I've found I grow by leaps and bounds when I embrace this.

mjgoeke··on Show HN: I Made a Playwright Recorder
I'm actively developing this, here's my list of next things:

  * make the tool author new page-object-model files
  * workflow to append to page-object-model files
  * support nested page-object-models better (scope selector)
  * make playwright selectors work both ways (only work one-way right now, generating, not executing)
  * page-object-model patterns flexibility - embellish recorder rules with method parameters
  * add an animated gif to the top of the readme showing usage
  * clean up ui
    * margins/alignment
    * add toggle to show/hide
mjgoeke··on Live Coding in Playwright
Yes exactly! Our behemoth of a web app was taking 25s initial load time (much faster when cached so it just wasn’t a priority to fix performance). Average test run time for a workflow test is 2 minutes. That means when authoring them and I’m trying to get selectors and crap right it takes me 5 tries for the next line of the test, waiting for 60-90s between each try. The result is it takes 3-4 hours to author a single medium complexity test. And my brain is mush for the rest of the day. I hated that and would subconsciously avoid writing tests.

What I’ve developed allows me immediate feedback every step of the way. It makes it _fun_ again so I can keep my head in the game and finish a test in 15-20 minutes and feel accomplished instead of burnt out. I’ve also taken an approach where the tooling (especially the recorder, and soon the page object model support) brings you 80-90% off the way there, but _always_ plays well with user created code - it has some loose basic expectations of the interface, but it doesn’t need to own the generated code - that’s just a starting point for you to improve it.

Super excited. My company already has a precedent for open sourcing projects so I’m hoping this won’t take more than a week or two to get it there. I’m on vacation for a week but plan to finish the page object model story when I get back.

mjgoeke··on Live Coding in Playwright
Hi!

I created a library at work that I'm pushing to get open sourced now. It provides live coding functionality for Playwright tests.

It also has an extremely powerful user configurable recorder.

I'm looking to add support to make it page-object-model aware next.

It took 2 weeks to make so far, is < 100 lines code in playwright test side and < 100 lines code in the browser side to do the entire thing.

Everything kept folding down smoothly and (almost) perfectly.

I'm very proud of it :-)

mjgoeke··on Ask HN: I'm So Lonely
I have wrestled with my own demons, some similar to yours. What I found was I was missing authentic friendship and connection with people. This was a long process, but the first step was to find safe trustworthy and interested people.

For you, some actionable steps: Finding a good counselor is an excellent step. I won’t try to advise how to go about that, others have done a much better job than I could. One key would be to take action (and keep taking action). Also don’t just settle with the first counselor you find. Try several and choose which one helps you move in the right direction most.

Secondly I have personally found Headspace’s mediations on Loneliness and on Anxiety very helpful on a physiological level.

Everything else I have is less actionable.

Our hearts and emotions matter. Compassion matters. People being compassionate toward you, and you toward yourself. Being seen for who you are matters.

Your history indicates deep wounds. When our wounding comes within the context of relationships, healing also ends up needing to come from relationships. This will take time. You will have to find people you can trust.

Life is more than getting by. Find yourself, and find people who love you and respect you, as different as you may be. This is a wake up call, who you are is signaling that you need more.

mjgoeke··on Worst practices should be hard (2016)
I have mixed feelings about this.

I suspect Haskell has enough base-level complexity to be productive in it that it gets in the way of its adoption.

Contrast that to say writing something to serve http requests in Go. The number of complex concepts or idioms in related library pieces is comparatively very low. [0]

I’ve found the complexity of the solution should match the complexity of the problem being solved. If the solution has equivalent number of moving pieces and choices as the problem space requires, then it’s been made “as simple as possible, not simpler”. This is where some languages (tools) are better suited to a problem than others. Don’t reach for imperative patterns when css declaratively does what you want and has matured enough to have boiled down the very good ways of doing it.

I like Joe Armstrong’s approach of writing and then iterating a solution (a method, part of a feature, whole feature) until the extra dead material falls off.

So like I said, I have mixed feelings about this. It’s a shame to have to add artificial complexity.

[0]: Go and it’s libraries are admittedly not a perfect example. I find Go leans a little past the edge in trying to make things simpler than they actually are. But it’s not too far off.

mjgoeke··on $2,500 Ethernet Switch Effectively Isolates Audiophiles from Cash
I can’t speak for the entire spectrum available. But I have two data points and am shocked at the difference, since I expect none. At home I have a rancilio rocky grinder, bought used, newly replaced burrs. It’s “stepped” so I don’t have much fine tuned flexibility - I’m basically choosing between only two or three steps for espresso.

My friend has a Pharos manual grinder. I’ve come over to help his wife adjust the grind several times. I bring the same beans I’ve been using that week as a reference point. I’m always shocked how much better theirs tastes - even far-out-of-optimal shots - ones that are very fast or very slow. On my machine the unpleasant overextracted flavors creep in quickly. I chalk it up to consistency of the grind - and that’s observable. You can pinch grinds up and “smear” them across a white sheet of paper to observe size, and to a lesser extent, variability.

I’m still surprised that the grinder affects the espresso more than the espresso machine.

Note: the Pharos is a beast and I don’t recommend it unless you like armwrestling as part of you coffee prep every time.

mjgoeke··on Movie dialogue has gotten more difficult to understand
upvoted - and MPC-HC isn't really available anymore - MPC-BC is a good replacement
mjgoeke··on Movie dialogue has gotten more difficult to understand
In 5.1/7.1 audio mixes, the center channel is the magic channel with the dialogue.

It gives plenty of control. It's pretty great in practice.

mjgoeke··on Movie dialogue has gotten more difficult to understand
The fix for me has been surround sound.

I have the center channel bumped several steps louder than the others on my receiver. This makes a world of difference over stereo mixes. (I will admit the voice sound can be more uneven - wind noise etc starts to show through)

Hmm, thinking out loud - I bet a multichannel mix could be calibrated on your system to bump the center channel, even if outputting to 2 speaker

mjgoeke··on Fantasy Map Generator (2018)
Oh gosh, me too. I recall calling a number in the back of a magazine to buy VistaPro 3. I was a dirt-poor kid at the time. I asked for the upgrade, and was worried because I didn't own v2, just the first version. They laughed and said it would work fine.

It came and was the full install, they were just giving a discount if you owned the previous version. It came with two additional CDs filled with DEMs. One with DEMs in the US, the other across the world.

Fun times, getting lost in the madness of creating.

mjgoeke··on Chaining, or why you should stop returning void (2012)
I work in C# but have come to a similar conclusion to his note at the top of his article.

C# supports extension methods, so if you want you can augment the original 3rd party class with your own (chaining in this case) methods. Or author your own “fluent interface” on your own classes, as he’s done here.

I’m the end, most of the time I found I was wanting a function ‘forward composition’ operator (like F#’s |> ). And the only place the chaining methods really made sense was factory classes/methods for complex declarative configuration.

The only ones that stuck for us were ORM mapping declarations, and factories for setting up complex domain specific data setup in tests.

mjgoeke··on Tesla Autopilot Hits a Deer [video]
Sorry, no strong point. I was just pondering that the issue is inattention, and imagining google, who spends the most money, ever, on capturing human attention, taking the next dystopian step.
mjgoeke··on Tesla Autopilot Hits a Deer [video]
Oh gosh no. I can see it now, google self driving car with built in “captcha” where it checks your response time to the “fire drill” alert tone to take over driving. That’ll train us. Probably the perfect time to show an advert too. Our attention is pulled, and the adrenaline is pumping…

Or would that just train us to ignore the ‘take over tone’?

mjgoeke··on Show HN: Self-Parking Car Evolution
Manual Parking: Space to brake behaves... erratically.
mjgoeke··on I loved jQuery, and still do (2019)
I had a similar jarring experience moving from C# dev to web apps. I knew I wanted to use building blocks available via npm. I went to download npm, and found the way you get npm is via installing node.js

Node js and the the package manager are inextricably tied together. Node js provides a local js runtime environment for the e.g. dev time packages to execute. It's also the api for interacting with the filesystem. Somewhere down there, yes, Node js is a web server, but it's kind of 'the' javascript execution environment for building local packages ("plugins"?) against.

The whole ecosystem is built up on javascript. If you're running grunt or gulp or webpack, it's all javascript. When you install packages globally they're put in a global folder. There are exceptions (I'm looking at you Cypress) that have native assemblies instead of js, but by and large there it's js, and it's stored locally. There are some pretty simple conventions (e.g. the 'node_modules' folder and the hidden '.bin' folder inside that) When running npm it feels like passing a one-liner javascript command into node's javascript repl/environment. The .bin commands are ambiently available.

It makes a lot of sense how it's grown organically... why there haven't been efforts to separate the constituent parts... I don't know. At some point maintaining the 'working thing' with <large degree of> complexity is easier than following a more rigorous, provable set of tools. I think it's a culture thing. Probably the same reason most of the problems are fixed by deleting node_modules and re running `npm i`

mjgoeke··on Nvidia Canvas
Hmm slightly disappointed. I thought I'd make a mashup video game short with generated art.

The output resolution is locked at 512x512. The "target style images" seem to be locked to that handful that come with the application. The brush materials don't include anything man-made.

Am I doing it wrong?

mjgoeke··on The Magic Kernel
Previous discussion (2015) https://news.ycombinator.com/item?id=10404517

He's updated it since then several times

mjgoeke··on Show HN: I built a 4kb alternative to React, Vue, etc for building web UIs.
I really like this project, especially when going through the docs. Nearly all the abstractions are very clean in their approach, the only outlier being the hack of using `#each` `/each` comments to indicate looping. I suppose the HTML specs don't have anything for this yet, so one has to adapt in some way.

I like the docs because, having come from a different dev environment, and seeing web/html as a vast sprawling landscape of surface area to learn, littered with defunt, old, broken, and janky throwaway bits everywhere - the documentation implicitly points out the core path of what's needed to understand how to bind and work with data in a web page.

Bravo!

I'm convinced this clarity comes from you distilling down what exactly _are_ the core pieces, and only implementing them first.

some rambling questions:

I wonder how this (synergyjs) works for a webapp type situation? Would one extract .js scripts as modules to reuse custom components? or is that trying to bring this into a more complex setup than is the sweet spot for this lib? e.g. is this better suited for a page at a time?

Also, maybe I'm dense, but does this approach lend itself to single page apps? My understanding is it shines when you have single pages with some logic behind them. If you need to jump to another page, the "passed data" would be encoded in the url, yes?

(I seem to recall the html 5 standards were looking to add something (was it 'proxy'?) that was something like frames, but involved web components, and maybe even passing of data through slots... is that a thing?)

Page 1 of 2Next →