|
They'd better remove glasses from the courtroom, too.
Don't want anyone having access to artificial image enhancement.
|
|
|
|
|
I expect that an "expert witness" who is qualified to zoom would be required.
|
|
|
|
|
As it should be - easily resolved.
An attorney not knowing the correct word for algorithm doesn't really bother me. Sitting on a jury for 3 weeks while working nights to cover my time and then having the case tossed bothers me. There are very specific processes that occur in a court room, and movies really don't convey it. When you are talking about sending people to jail, it gets serious real fast. Ignore the media clowns.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
Eye Of Nix - Concealing Waters[^]
I've been listening to Eye Of Nix for a few weeks now.
Just like Vexed, from a few weeks back, this album got great reviews, but it didn't really stick with me.
And then I recently gave it another go and it just sort of clicked.
The front-woman uses both growling vocals and clean vocals and the music goes from metal to more relaxed as well.
Encyclopaedia Metallum describes their genre as avant-garde doom/post-black metal, so it's not your every day metal band.
Great album, great song.
|
|
|
|
|
Here's the sound of the forest, with the wind in the leaves, and fall setting in. And the sound of snowfall. And a bunch of more wonderful sounds: Eydís Evensen (KEXP)
|
|
|
|
|
I did not expect this, it's beautiful.
Favorited on Spotify too, for later listening
|
|
|
|
|
|
What ... but I was warned, indeed unrelated. Cheers ...
|
|
|
|
|
Yeah, it was meant for Sander.
|
|
|
|
|
I read an interview and some guy said "I don't do it for the t-shirt."
I call BS, he's totally in it for the t-shirt
|
|
|
|
|
A good one ... , upvoted. And, lately I found this nice track from Hypocrisy
Hypocrisy - Destroyed - YouTube - From Catch 22 V.2.0 ...
Wonderful old school, but their new work will also be very interesting.
|
|
|
|
|
Nice!
That reminded me to finally check out their new singles and bookmark them in Spotify so I can keep an eye out on the new album
|
|
|
|
|
Determined place to not eat (9)
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
Nice one! It should go quickly.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I liked it
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
OK, I'll take it ...
Determined
place STEAD
to not eat FAST
STEADFAST
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
YAUM
"Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
The way it works is it takes a series of tokens/lexemes from an input stream and uses pattern matching to discern whether they match various rules like:
Foobar -> "foo" "bar"
Such that when it sees "foo" followed by "bar" in the input stream it knows the result is a Foobar
The upside of this is it's got a whole lot more recognizing power than starting from the point of Foobar and then checking the input stream for "foo" followed by "bar" (basically the reverse of the aforementioned process)
The downside is it means the tree is built from leaves to the root, meaning bottom up, meaning your recursive tree building is effectively "inside out", building the children first.
That's not normally a problem but it has some important ramifications, like if there's an error token in the tree it can't readily resolve the rest of the tree once encountered.
The other issue is it's more confusing from the standpoint of the end user of the parser. Sure once it's in the tree, it's all the same, but if you're using a pull parser rather than loading everything into an in memory tree, the pull parser for a bottom up parser is just weird to use.
And then the primary issue I have with them is that the algorithms to construct the parse tables are incomprehensible. I've written them before and I still hesitate to say I understand them. I have code that does it that I won't touch because of it. It's not the fault of the code - it's the algorithm that's ugly. The math is atrocious - it feels as though designed while drunk except that it's so bloody clever - too clever to understand by mere mortals.
I don't like it. Unfortunately it's a very practical way to parse, so it can't really be overlooked.
Real programmers use butterflies
|
|
|
|
|
That's why this[^] uses a recursive descent parser. It's not as efficient as bottom-up, but it's decent enough if the possibilities are tried in probabilistic order, especially in this day and age of code that uses CPU time and memory frivolously. The code is the grammar and is usually easy to fix when a bug is found. No need to get the grammar close to right from the outset, and no need for an inscrutable algorithm to generate parse tables. Skipping over errors can still be difficult, but it depends where they occur.
|
|
|
|
|
You get most of those same advantages using LL(1).
Besides, if your grammar language is easy enough, grammars aren't so bad.
Here's one for JSON:
Json<start>= Object | Array;
Object= "{" [ Field { "," Field } ] "}";
Field= String ":" Value;
Array= "[" [ Value { "," Value } ] "]";
Value<collapsed>= String |
Number |
Object |
Array |
Boolean |
Null ;
Number= '\-?(0|[1-9][0-9]*)(\.[0-9]+)?([Ee][\+\-]?[0-9]+)?';
String = '"([^\0-\x1F"\\]|\\([\\/bfnrt]|u[a-fA-F0-9]{4}))*"';
Boolean = 'true|false';
Null="null";
Lbracket<collapsed>="[";
Rbracket<collapsed>="]";
Lbrace<collapsed>="{";
Rbrace<collapsed>="}";
Colon<collapsed>=":";
Comma<collapsed>=",";
Whitespace<hidden>='[ \t\r\n\f\v]+';
See? no thing. All the attributes in there are just to prune the parse tree. "collapsed" removes items from the parse tree once they are parsed so you don't have to deal with them in your code.
Real programmers use butterflies
|
|
|
|
|
I'd never seen a JSON grammar, so thanks for that.
But the one I'm dealing with is C++, which is surely a dog's breakfast.
|
|
|
|
|
Yeah, for C++ for a number of reasons it's best to use a hand written parser.
Real programmers use butterflies
|
|
|
|
|
|
That one is definitely going on my to watch list.
// TODO: Insert something here Top ten reasons why I'm lazy
1.
|
|
|
|
|
Oh my, I had no idea they made a live-action adaptation of that anime
|
|
|
|