2,653 karma · joined September 22, 2013
andrew at $DOMAIN
For another comparison, Wikipedia gives an estimate of "Apollo 11 launched from Earth to orbit" at 495 million N s [1]. So this is a momentum that's order-of-magnitude comparable to space launches.
Funny. After years of use, Emacs is my creature comfort!
prog/libs/foo┃/src/CMakeList.txt Start with one path
prog/libs/some┃/src/CMakeList.txt Edit the middle part
prog/libs/somelongname/src/CMakeList.txt┃ Press tab, completes middle and jumps to end
I was also thrilled when I noticed zsh contextually skipping some potential completions that I'd already had on my command line. E.g., if I have files `aaa` and `aab` in a directory, then hitting tab on git add aaa a┃
will do the right thing and immediately complete to `aab` without further prompting. (Better yet, it also does that if I'd added `aaa` with a previous command!)https://trenchbroom.github.io/manual/latest/#game_configurat...
The difference is that they have large printed signs advertising the discounted prices and the times they apply (2p-5p). The posted prices are dependable as long as one checks a clock.
As someone who always carries a pen in my pocket when I leave the house, I've come to find this one surprisingly important. Retractable pens have a habit of accidentally engaging and scribbling over the pocket fabric. I exclusively use capped pens for my daily carries now.
> left handers typically want the fastest drying ink.
Heck yes!
- Canvas Ity (https://github.com/a-e-k/canvas_ity)
It's a tiny single-header C++ library in the style of the STB libraries. My aim was to make it dirt simple to be able to drop into almost any project and get high-quality rendering while providing an API comfortable to those used to <canvas>.
I've been checking out Blend2D every now and then. It seems like a very nice option for the bigger, but faster and more fully-featured end of the spectrum.
(Though for what it's worth, while raw performance isn't my priority, my little library still can hit about 70fps rendering the Postscript Tiger to 733x757 res with a single thread on my 7950x. :-)
def parseAddExpr():
parseMultExpr()
while peekToken in ["+", "-"]:
consumeToken()
parseMultExpr()
Honestly, I really like recursive-descent parsing, even for expressions. It's very straightforward once you've learn a few simple patterns like that.Decently large precedence hierarchies (15-20) don't bother me; I'll typically just number the levels rather than use names like "term", "factor", "additive", or "multiplicative". It can get a little verbose, yes, but it's easy to write and skim through. (Golang-like from what I've read, though I'm not a user of Golang.)
But I also find it scales better once you start adding things like ternary expressions, function calls, and type casts -- things that aren't just simple binary operators. Handling those feels a lot less clean to me with Pratt, precedence climbing, shunting yard, etc.
One main downside that I'll admit to recursive descent though is that it's a bit harder to have a language with user-defined operators. I don't like those much, though, so that's not much of a loss to me.
(defun find-non-ascii ()
"Find and show all of the non-ascii characters."
(interactive)
(occur "[[:nonascii:]]"))
It has proved quite useful on occasion.(Yes, I could just invoke Occur directly, but I can never quite remember the regexp character class and syntax here.)
Back in my younger days, I had admin privileges on a UT2k4 server. There was usually a nice group of regulars around. If I was playing and one of the regulars reported someone suspicious I could go into spectator mode, watch through their point-of-view to make sure, record it to a demo file for evidence, and then immediately ban them.
Beyond the community of regulars on our own server, we had good contacts with admins on other servers that catered to a similar gamestyle. We'd regularly exchange ban-lists with them. (I.e., there was kind of a meta community of server operators.)
I realize that that doesn't scale the same way as modern approaches, but the modern approaches also feel like they're trying to use technical means to solve a social problem.
The core implementation of the TTF parsing and drawing is in L1526-L1846 with another small bit at L3205-L3274 of src/canvas_ity.hpp.
It's something of a toy implementation that only supports western left-to-right text, and doesn't do any hinting at all, nor kerning, nor shaping. But it's enough to draw a basic "Hello world!" using any typical TTF file.
The test suite in test/test.cpp L84-304 embeds a few custom Base64-encoded TTF files. They're small and only have a few glyphs but they do exercise a number of interesting edge cases in the OpenType TTF spec [2]. Have a look at the HTML5 port of the test suite at test/test.html in different browsers to see how their canvas implementations render those fonts.
[0] https://github.com/a-e-k/canvas_ity
[1] https://www.w3.org/TR/2015/REC-2dcontext-20151119/
[2] https://standards.iso.org/ittf/PubliclyAvailableStandards/c0...
[0] https://play.google.com/store/apps/details?id=org.akop.cross...
G-3PO: A protocol droid for Ghidra, or GPT-3 for reverse-engineering - https://news.ycombinator.com/item?id=34250872 - Jan 2023 (44 comments)
With SMRPG, you can at least still block while asleep/mushroomed/scarecrowed.
And repeated box filters asymptotically approach a Gaussian filter, though in practice it converges very quickly. A single box filter can be thought of as a piece-wise constant approximation of a Gaussian filter. Two passes of box filters produce a piece-wise linear approximation (the tent). And three passes of box filters produce a piece-wise quadratic approximation. Four passes for a cubic approximation, etc. Usually, just the three box filters are used since they are close enough.
I'd need to look at the math in detail here, but I suspect that it's ultimately just cleverly interleaving the running sums for the two box filter to perform them in a single pass.
If so, it might be an interesting challenge to see if the idea can be extended to compute the higher quality three box filter approximation in a single pass.
[0] http://eastfarthing.com/luculent/
[1] https://fontlibrary.org/en/font/luculent (live example in browser)
> We fit a bigger battery into the case, and the OLED display draws less power.
But ultimately the "Whose soul was sad, and whose glance was glum," line in I have a song to sing O! and its reprise in the finale was what led me to pick that song to quote here. (Plus that song and the music is probably my favorite among the G&S canon. :-)
Point:
Oh, thoughtless crew!
Ye know not what ye do!
Attend to me, and shed a tear or two —
For I have a song to sing, O!
All:
Sing me your song, O!
Point:
It is sung to the moon
By a love-lorn loon,
Who fled from the mocking throng, O!
It's a song of a merryman, moping mum,
Whose soul was sad, and whose glance was glum,
Who sipped no sup, and who craved no crumb,
As he sighed for the love of a ladye.
[0] https://youtu.be/1WDlri5ACNg?t=1801Think of someone lingering on a punned word to emphasize the joke, for example.
In some cases, an NP may have more current experience with figuring out the routine stuff than an MD who's a bit more removed from that kind of practice now.
I gave it a few months, but I'm now back to good old Firefox.
(And I'm getting ready to give up on {New,} Outlook and go back to Thunderbird too. I'm sick of the paper cuts and I've wasted so much time fighting it to do what I want.)