https://evmar.github.io/retrowin32/run.html?exe=sol.exe&dir=...
6,887 karma · joined June 7, 2011
evan.martin@gmail.com
My posts on HN: https://news.ycombinator.com/from?site=neugierig.org
https://evmar.github.io/retrowin32/run.html?exe=sol.exe&dir=...
There's definitely a "the bear is sticky with honey" confusion of discussion over whether it's dead or not. It would be nice for interested strangers like me if they could make some sort of clear statement on it.
To my knowledge, the state of the art in tooth removal still is basically pliers and a lot of force. The difference today is a trained professional knows the technique and has practiced it a lot. (And anesthetic.)
Here's a random video of it from a quick search on YouTube: https://www.youtube.com/watch?v=vydv7aomV20
https://github.com/csmith-project/creduce/blob/31e855e290970...
You can see the pass implementation in files on the left.
A friend from early in my career went on to become a fancy tech executive. They invited me to a party at their house in SF that included some of their fancy tech executive friends. At some point I inserted myself into a conversation they were having about buying homes in Big Sur: "But isn't it quite a long drive from here?"
They answered: "Oh, it's not so long if you take a helicopter."
The lives of the fancy are beyond my imagination!
It appears the "remove_header" call is this one: https://docs.rs/pingora-http/0.3.0/src/pingora_http/lib.rs.h... which calls .remove() on two other data structures, both of which bottom out in this mountain of code: https://docs.rs/http/latest/src/http/header/map.rs.html#1550
https://cs.chromium.org is the easy URL to remember ("cs" for "code search")
However, when I later revisited the design of Ninja I found that removing the separate planning phase better reflected the dynamic nature of how builds end up working out, where you discover information during the build that impacts what work you have planned. See the "Single pass" discussion in my design notes[2], which includes some negatives of the change.
If the author reads this, in [2] I made a Rust-based Ninja rewrite that has some similar data structures to those in the blog post, you might find it interesting!
[1] https://github.com/ninja-build/ninja/blob/dcefb838534a56b262... [2] https://neugierig.org/software/blog/2022/03/n2.html
And what I expected of llm is for the template file to (optionally) contain an array of prompt/response pairs. You could even imagine the --save flag constructing one from an ongoing conversation of llm -c maybe.
I looked at llm but it doesn't appear to have a mechanism for multi-shot prompting, where you provide both prompts and responses within your query. (Ref https://platform.openai.com/docs/guides/prompt-engineering/t... .) Maybe take this as a feature request?
It feels like the 'template' system in llm might be able to encompass this but the docs don't appear to provide a reference for the yaml format, only examples. I guess that is another feature request, sorry!
(BTW if you haven't seen https://docs.divio.com/documentation-system/ it really changed how I think about documentation)
Is this not true of Rust? I use lldb via terminal and VSCode with Rust, I am not sure what I'm missing.
It would be less curious if the post was saying something around like "I object to fandom monetizing at all", but also that also probably feels like a less sensible thing to say.
https://www.georgefairbanks.com/ieee-software-v37-n3-may-202...
https://evmar.github.io/retrowin32/ , midway down the page
In contrast to the above, the x86 emulator and win32 API implementation is a little over a meg of WebAssembly, hah!
If I wanted to root cause this, the real problem is right there. Implementing protocols correctly is hard and bugs like in the post are common. A properly implemented SMTP client library, like one you would pull off the shelf, would accept text and encode it properly per the SMTP protocol, regardless of where the periods were in the input. The templating layer shouldn't be worrying about SMTP.
e^x
= e^(a+b+c+d) (where abcd are the bytes of x)
= e^a * e^b * e^d * e*d
and then you make a lookup table for each of those e^a, e^b values.
(I fudged "a" here, where it's really more like "high byte << 24", but I think you just make your lookup table for e^a be a map from a => e^(a<<24), and similar for the other bytes.)
- almost no cost in the non-erroring path
- no extra data structures to manage
- a lot less code
I think the post would benefit from a better analysis of why this doesn't work for them.
[I am not a fan of patents, but to the extent they have any positives they in principle serve to share knowledge about how inventions work. Also I am not a lawyer but I think patents last 20 years from filing date and these were filed ~20 years ago maybe?]
I bookmarked their Mac workaround around here: https://github.com/wine-mirror/wine/blob/b2a099b3ceec6fef05c... which involves rearranging the zero page and creating a big WINE_RESERVE section.
On Linux it appears they use a -Ttext linker flag to reposition the code location, but I haven't read it too carefully: https://github.com/wine-mirror/wine/blob/b2a099b3ceec6fef05c...
But also I glanced at some MIPS docs and it seems there there could be additional instructions that modify these registers as outputs, which the code doesn't address. Maybe they just don't occur in practice?
I worked on Linux Chrome and over the course of doing so became pretty disillusioned about this problem in particular. In a very real sense, all a distribution does for software like this is apply patches that are not tested/supported by upstream. In other words, either the distro can ship upstream or it chooses to ship some less-tested variant.
In an ideal world upstream would be able to support all these configurations, but supporting Linux at all is already a tiny fraction of the total userbase and different Linux variants are fractions of that fraction; it's simply not realistic to expect the disproportionate effort required.