Are you over 18 and want to see adult content?
More Annotations
Интернет-магазин инструментов с доставкой в город Екатеринбург | Prorab96.ru
Are you over 18 and want to see adult content?
A complete backup of islamtoday.co.za
Are you over 18 and want to see adult content?
Ηλεκτρονικά Μαρκίδης - Βιομηχανικό ηλεκτρολογικό και ηλεκτρονικό υλικό
Are you over 18 and want to see adult content?
ScaleOut Software – In-Memory Computing for Operational Intelligence
Are you over 18 and want to see adult content?
Affiliate Tracking Software for marketers and media buyers | AdsBridge
Are you over 18 and want to see adult content?
Profesjonalny sprzęt sportowy - przyrządy do ćwiczeń - TopSlim.pl
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of https://ille-sur-tet.com
Are you over 18 and want to see adult content?
A complete backup of https://vectorvault.com
Are you over 18 and want to see adult content?
A complete backup of https://in-pocasi.cz
Are you over 18 and want to see adult content?
A complete backup of https://covershield.co.uk
Are you over 18 and want to see adult content?
A complete backup of https://hwg-lu.de
Are you over 18 and want to see adult content?
A complete backup of https://mediarif.com
Are you over 18 and want to see adult content?
A complete backup of https://userfarm.com
Are you over 18 and want to see adult content?
A complete backup of https://edensherbals.com
Are you over 18 and want to see adult content?
A complete backup of https://reviagra.com
Are you over 18 and want to see adult content?
A complete backup of https://pennekamppark.com
Are you over 18 and want to see adult content?
A complete backup of https://justmorocco.com
Are you over 18 and want to see adult content?
A complete backup of https://bestinvestor.ru
Are you over 18 and want to see adult content?
Text
PROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. THE PROBLEMS WITH UNIFORM INITIALIZATION C++11 made the {} syntax for initializing aggregates more widely usable. You can now also use it to call constructors and to initialize with a std::initializer_list. It also allows you to drop the type name in some circumstances. The general recommendation seems to be that you use it as much as possible. But when I A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in FUNCTIONAL PROGRAMMING IS NOT POPULAR BECAUSE IT IS WEIRD Functional programming is just a bit too weird. To talk about functional programming let’s bake a cake. Taking a recipe from here, this is how you bake an imperative cake: Preheat oven to 175 degrees C. Grease and flour 2 – 8 inch round pans. In a small A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
PROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. THE PROBLEMS WITH UNIFORM INITIALIZATION C++11 made the {} syntax for initializing aggregates more widely usable. You can now also use it to call constructors and to initialize with a std::initializer_list. It also allows you to drop the type name in some circumstances. The general recommendation seems to be that you use it as much as possible. But when I A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in FUNCTIONAL PROGRAMMING IS NOT POPULAR BECAUSE IT IS WEIRD Functional programming is just a bit too weird. To talk about functional programming let’s bake a cake. Taking a recipe from here, this is how you bake an imperative cake: Preheat oven to 175 degrees C. Grease and flour 2 – 8 inch round pans. In a small A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
JANUARY | 2021 | PROBABLY DANCE Currently in the US, something like 26 million people have tested positive for SARS-CoV2, and roughly 440,000 people have died of COVID19. I’m using these terms to make a distinction: Not everyone who gets the virus will get sick, and not everyone who gets sick will die. Let’s be generous and assume that 100 million people got thevirus so
UNDERSTANDING WHY THE CDC GIVES THE GUIDELINES THAT IT The CDC has minimized the number of people who are upset at it. At a certain point last spring, lots of people were getting upset that the CDC still hadn’t recommended face masks, so they changed their policy. Sure, then there were the expected large amount of people who were mad at it for issuing the new guidelines, but the CDC could seethe
31 | AUGUST | 2020 | PROBABLY DANCE The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writing code that could really benefit from using a heap (as most code can) but I needed to be able to pop items from both ends. LOOKING FOR VOTER FRAUD (IN OLD ELECTIONS) WITH DATA The 2020 US election is finally over, and all the election excitement of the last week reminded me of something I had been meaning to look into: Sergey Shpilkin's data visualizations that clearly show fraud in Russian elections. I generated the same visualizations for all US presidential elections from 2000 to 2016. The result is USING TLA+ IN THE REAL WORLD TO UNDERSTAND A GLIBC BUG TLA+ is a formal specification language that you can use to verify programs. It's different from other formal verification systems in that it's very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. You can write assertions and if they're not true for any possible FINDING FLOATING POINT NUMBERS FOR EXACT MATH Let’s say we pick a cost of 1 to go north, east, west or south, and we pick a cost of 1.41 to go diagonally. (the real cost is sqrt (2), but 1.41 should be close enough) Then the first path adds up to 1.41 + 1.41 + 1 = 3.82, and the second path adds up to 1 + 1.41 + 1.41 = 3.82. Except since these are floating point numbers, they don’t addPARTIAL SCALING
Programmers have a habit of over-generalizing things, and so it happened that I found myself writing more generalized versions of rotation, translation and scaling, the three most common operations that you'd want to do to 3D objects. These were more generalized in that they had a parameter for how much you want to do a A NEW ALGORITHM FOR CONTROLLED RANDOMNESS Now the new first object is B because it’s at 0.1. To move that further along the line we pick a random number to add from 0 to 0.2, and lets say we roll 0.11 and end up at 0.21, then A is the first object again. We pick A up again and move it to a randomly chosen FIBONACCI HASHING: THE OPTIMIZATION THAT THE WORLD FORGOT Oh just realized you briefly mentioned it. IMO you’re not giving it enough credit.. neither fibonacci or fastrange will work as a hash function alone, you need a decent hash function to start with, and the benefits of fastrange is that it allows you to use non-pow-of-2 sizes (if you do use power of two sizes it’s true that it’s exactly equivalent to just throwing away the lower bits). THE IMPORTANCE OF STD::FUNCTION In C++11 there is a new class in the standard library called std::function. It allows you to store anything that is callable. For example Prints "Hello World!" as you would expect. The assignment to and storage of the two different types is handled internally by the std::function. The amazing thing is that calling a std::functionPROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. JANUARY | 2021 | PROBABLY DANCE Currently in the US, something like 26 million people have tested positive for SARS-CoV2, and roughly 440,000 people have died of COVID19. I’m using these terms to make a distinction: Not everyone who gets the virus will get sick, and not everyone who gets sick will die. Let’s be generous and assume that 100 million people got thevirus so
WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could WHY VIDEO GAME AI DOES NOT USE MACHINE LEARNING The classical algorithm then trusts the machine learning part and only looks at the “important” moves when trying to determine which move is best. Anyway with the introductions out of the way, here are the main reasons why video game AI does not use machine learning: 1. Machine Learning is Hard and Far From Solved for Game Playing. A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
PROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. JANUARY | 2021 | PROBABLY DANCE Currently in the US, something like 26 million people have tested positive for SARS-CoV2, and roughly 440,000 people have died of COVID19. I’m using these terms to make a distinction: Not everyone who gets the virus will get sick, and not everyone who gets sick will die. Let’s be generous and assume that 100 million people got thevirus so
WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could MAY | 2020 | PROBABLY DANCE Currently much of the country is shut down to stop the spread of the coronavirus and there is very active debate about how soon we should open up again. Some people say as soon as possible, others are saying immediately. Those might sound like similar viewpoints, but “as soon as possible” might be anything from two weeks to two months JULY | 2020 | PROBABLY DANCE Partial Scaling – How to do Half a Multiplication. Programmers have a habit of over-generalizing things, and so it happened that I found myself writing more generalized versions of rotation, translation and scaling, the three most common operations that you’d want to do to 3D objects. These were more generalized in that they had a parameter NOVEMBER | 2020 | PROBABLY DANCE The 2020 US election is finally over, and all the election excitement of the last week reminded me of something I had been meaning to look into: Sergey Shpilkin’s data visualizations that clearly show fraud in Russian elections. I generated the same visualizations for all US presidential elections from 2000 to 2016. OCTOBER | 2020 | PROBABLY DANCE 1 post published by Malte Skarupke during October 2020. TLA+ is a formal specification language that you can use to verify programs. MARCH | 2020 | PROBABLY DANCE A New Strategy Genre Grows Up: Survival Chaos, my New Favorite Game. I’ve had an obsession recently with a mod for Warcraft 3. It’s called Survival Chaos. I want to talk about it because it’s part of a genre of strategy games that hasn’t had a big success yet, andthis
APRIL | 2020 | PROBABLY DANCE The consensus forecast generated by the individual responses indicates that we should expect roughly 19,000 reported cases by March 29. To be fair, they thought that the curve would behave similar as in other countries. They didn’t expect the US government to mess up its response this badly. UNDERSTANDING WHY THE CDC GIVES THE GUIDELINES THAT IT The CDC has minimized the number of people who are upset at it. At a certain point last spring, lots of people were getting upset that the CDC still hadn’t recommended face masks, so they changed their policy. Sure, then there were the expected large amount of people who were mad at it for issuing the new guidelines, but the CDC could seethe
FINDING FLOATING POINT NUMBERS FOR EXACT MATH Let’s say we pick a cost of 1 to go north, east, west or south, and we pick a cost of 1.41 to go diagonally. (the real cost is sqrt (2), but 1.41 should be close enough) Then the first path adds up to 1.41 + 1.41 + 1 = 3.82, and the second path adds up to 1 + 1.41 + 1.41 = 3.82. Except since these are floating point numbers, they don’t add HANDMADE COROUTINES FOR WINDOWS In a previous post I implemented coroutines using the ucontext.h header. In this post I will show a replacement that should be much faster. I will also provide a Windows implementation. I like to start off with some code, so here is the complete code for switching the stack in Linux: All code in this FUNCTIONAL PROGRAMMING IS NOT POPULAR BECAUSE IT IS WEIRD Functional programming is just a bit too weird. To talk about functional programming let’s bake a cake. Taking a recipe from here, this is how you bake an imperative cake: Preheat oven to 175 degrees C. Grease and flour 2 – 8 inch round pans. In a small THE PROBLEMS WITH UNIFORM INITIALIZATION C++11 made the {} syntax for initializing aggregates more widely usable. You can now also use it to call constructors and to initialize with a std::initializer_list. It also allows you to drop the type name in some circumstances. The general recommendation seems to be that you use it as much as possible. But when I ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thingPROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could WHY VIDEO GAME AI DOES NOT USE MACHINE LEARNING The classical algorithm then trusts the machine learning part and only looks at the “important” moves when trying to determine which move is best. Anyway with the introductions out of the way, here are the main reasons why video game AI does not use machine learning: 1. Machine Learning is Hard and Far From Solved for Game Playing. WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
PROBABLY DANCE
Using TLA+ in the Real World to Understand a Glibc Bug. TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. JANUARY | 2021 | PROBABLY DANCE Currently in the US, something like 26 million people have tested positive for SARS-CoV2, and roughly 440,000 people have died of COVID19. I’m using these terms to make a distinction: Not everyone who gets the virus will get sick, and not everyone who gets sick will die. Let’s be generous and assume that 100 million people got thevirus so
WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE The main point of this is to prove the point that the RTS genre really did splinter into many different directions and subgenres: Ensemble Studios made Halo Wars for consoles and then died. There was also a free-to-play version of Age of Empires made by Gas Powered Games. Some ex-Ensemble people founded Robot Entertainment. MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since A FASTER IMPLEMENTATION OF STD::FUNCTION My implementation beats std::function in all categories, and it beats a virtual function call in optimized builds. In debug builds it is roughly 50% slower than a virtual function call. Which is not ideal, but it is better than other implementations. I think I can live with this. The benefits of std::function still far outweigh the downsides ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could WHY VIDEO GAME AI DOES NOT USE MACHINE LEARNING The classical algorithm then trusts the machine learning part and only looks at the “important” moves when trying to determine which move is best. Anyway with the introductions out of the way, here are the main reasons why video game AI does not use machine learning: 1. Machine Learning is Hard and Far From Solved for Game Playing. A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
FIBONACCI HASHING: THE OPTIMIZATION THAT THE WORLD FORGOT Oh just realized you briefly mentioned it. IMO you’re not giving it enough credit.. neither fibonacci or fastrange will work as a hash function alone, you need a decent hash function to start with, and the benefits of fastrange is that it allows you to use non-pow-of-2 sizes (if you do use power of two sizes it’s true that it’s exactly equivalent to just throwing away the lower bits). FUNCTIONAL PROGRAMMING IS NOT POPULAR BECAUSE IT IS WEIRD Functional programming is just a bit too weird. To talk about functional programming let’s bake a cake. Taking a recipe from here, this is how you bake an imperative cake: Preheat oven to 175 degrees C. Grease and flour 2 – 8 inch round pans. In a small UNDERSTANDING WHY THE CDC GIVES THE GUIDELINES THAT IT The CDC has minimized the number of people who are upset at it. At a certain point last spring, lots of people were getting upset that the CDC still hadn’t recommended face masks, so they changed their policy. Sure, then there were the expected large amount of people who were mad at it for issuing the new guidelines, but the CDC could seethe
C++11 COMPLETED RAII, MAKING COMPOSITION EASIER The addition of move semantics in C++11 is not just a performance and safety improvement. It's also the feature that completed RAII. And as of C++11 I believe that RAII is absolutely necessary to make object composition easy in the language. To illustrate let's look at how objects were composed before C++11, what problems we THE IMPORTANCE OF STD::FUNCTION In C++11 there is a new class in the standard library called std::function. It allows you to store anything that is callable. For example Prints "Hello World!" as you would expect. The assignment to and storage of the two different types is handled internally by the std::function. The amazing thing is that calling a std::function FINDING FLOATING POINT NUMBERS FOR EXACT MATH Let’s say we pick a cost of 1 to go north, east, west or south, and we pick a cost of 1.41 to go diagonally. (the real cost is sqrt (2), but 1.41 should be close enough) Then the first path adds up to 1.41 + 1.41 + 1 = 3.82, and the second path adds up to 1 + 1.41 + 1.41 = 3.82. Except since these are floating point numbers, they don’t addPARTIAL SCALING
Programmers have a habit of over-generalizing things, and so it happened that I found myself writing more generalized versions of rotation, translation and scaling, the three most common operations that you'd want to do to 3D objects. These were more generalized in that they had a parameter for how much you want to do a MARCH | 2020 | PROBABLY DANCE A New Strategy Genre Grows Up: Survival Chaos, my New Favorite Game. I’ve had an obsession recently with a mod for Warcraft 3. It’s called Survival Chaos. I want to talk about it because it’s part of a genre of strategy games that hasn’t had a big success yet, andthis
APRIL | 2020 | PROBABLY DANCE The consensus forecast generated by the individual responses indicates that we should expect roughly 19,000 reported cases by March 29. To be fair, they thought that the curve would behave similar as in other countries. They didn’t expect the US government to mess up its response this badly. MAY | 2020 | PROBABLY DANCE Currently much of the country is shut down to stop the spread of the coronavirus and there is very active debate about how soon we should open up again. Some people say as soon as possible, others are saying immediately. Those might sound like similar viewpoints, but “as soon as possible” might be anything from two weeks to two monthsPROBABLY DANCE
The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writing code that could really benefit from using a heap (as most code can) but I needed to be able to pop items from both ends. MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE I replayed Warcraft III recently and was looking for other games I could play in the same genre. Turns out that outside of StarCraft 2, there are no recent games that are anywhere near as good. What happened? This blog post was actually prompted by me watching a recommended video on Youtube about exactly this IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since A FASTER IMPLEMENTATION OF STD::FUNCTION As I wrote in my last post, I consider std::function to be a very important class that will change how you design your code, because it means that you have to use inheritance less often.In that post I was very impressed with the performance of std::function when compiled with optimizations. Unfortunately std::function can be far slower than a virtual function call in debug. I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could THE IMPORTANCE OF STD::FUNCTION In C++11 there is a new class in the standard library called std::function. It allows you to store anything that is callable. For example Prints "Hello World!" as you would expect. The assignment to and storage of the two different types is handled internally by the std::function. The amazing thing is that calling a std::function FIBONACCI HASHING: THE OPTIMIZATION THAT THE WORLD FORGOTSEE MORE ONPROBABLYDANCE.COM
ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
PROBABLY DANCE
The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writing code that could really benefit from using a heap (as most code can) but I needed to be able to pop items from both ends. MEASURING MUTEXES, SPINLOCKS AND HOW BAD THE LINUX This blog post is one of those things that just blew up. From a tiny observation at work about odd behaviors of spinlocks I spent months trying to find good benchmarks, (still not entirely successful) writing my own spinlocks, mutexes and condition variables and even contributing a patch to the Linux kernel. The main thing WHAT HAPPENED TO THE REAL TIME STRATEGY GENRE I replayed Warcraft III recently and was looking for other games I could play in the same genre. Turns out that outside of StarCraft 2, there are no recent games that are anywhere near as good. What happened? This blog post was actually prompted by me watching a recommended video on Youtube about exactly this IDEAS FOR A PROGRAMMING LANGUAGE I've been simmering ideas for a programming language for a while. I'll probably get around to actually writing one in a year or so. But Jonathan Blow is writing a new language right now and there is some overlap between his ideas and my ideas, so I kinda feel compelled to write about mine. Since A FASTER IMPLEMENTATION OF STD::FUNCTION As I wrote in my last post, I consider std::function to be a very important class that will change how you design your code, because it means that you have to use inheritance less often.In that post I was very impressed with the performance of std::function when compiled with optimizations. Unfortunately std::function can be far slower than a virtual function call in debug. I WROTE THE FASTEST HASHTABLE I had to get there eventually. I had a blog post called “I Wrote a Fast Hashtable” and another blog post called “I Wrote a Faster Hashtable.”Now I finally wrote the fastest hashtable. And by that I mean that I have the fastest lookups of any hashtable I could THE IMPORTANCE OF STD::FUNCTION In C++11 there is a new class in the standard library called std::function. It allows you to store anything that is callable. For example Prints "Hello World!" as you would expect. The assignment to and storage of the two different types is handled internally by the std::function. The amazing thing is that calling a std::function FIBONACCI HASHING: THE OPTIMIZATION THAT THE WORLD FORGOTSEE MORE ONPROBABLYDANCE.COM
ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in A NEW FAST HASH TABLE IN RESPONSE TO GOOGLE’S NEW FAST Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked me to give a talk. My problem was that Google had also announced a new fast hash table last year, and I wasn’t sure if mine would compare wellagainst theirs.
JUNE | 2020 | PROBABLY DANCE 1 post published by Malte Skarupke during June 2020. An unforeseen disaster is never the consequence of a single factor, but rather is like a whirlwind, a point of cyclonic depression in the consciousness of the world, towards which a whole multiplicity of converging causalities have conspired MAY | 2020 | PROBABLY DANCE 1 post published by Malte Skarupke during May 2020. Currently much of the country is shut down to stop the spread of the coronavirus and there is very active debate about how soon we should open up again. JANUARY | 2021 | PROBABLY DANCE 1 post published by Malte Skarupke during January 2021. The CDC continues to issue very puzzling guidelines about the coronavirus. APRIL | 2020 | PROBABLY DANCE 1 post published by Malte Skarupke during April 2020. You have to write these things down while you still remember them. I was already beginning to forget that there was a toilet paper shortage. AUGUST | 2020 | PROBABLY DANCE The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writing code that could really benefit from using a heap (as most code can) but POLITICS AND ECONOMICS You have to write these things down while you still remember them. I was already beginning to forget that there was a toilet paper shortage. Similarly right now the popular thing is to point out that this was predictable and we should have listened to the experts. FINDING FLOATING POINT NUMBERS FOR EXACT MATH For the second time in my career, I ran into a problem where it's actually useful to know how floating point numbers work. (first time was here) The problem is that sometimes you want floating point numbers that add well. So that you have the associativity guarantee that (a + b) + c == a ANOTHER OPINION ON “ALMOST ALWAYS AUTO” Herb Sutter has been promoting his almost always auto style again, and I think it is harmful. I would agree with "almost always auto" in Scala. I disagree with it in C++. And that's because there is a slight difference in syntax for type inference between the two languages. Here's type deduction in FUNCTIONAL PROGRAMMING IS NOT POPULAR BECAUSE IT IS WEIRD I've seen people be genuinely puzzled about why functional programming is not more popular. For example I'm currently reading "Out of the Tar Pit" where after arguing for functional programming the authors say Still, the fact remains that such arguments have been insufficient to result in widespread adoption of functional programming. We musttherefore conclude
JUNE | 2011 | PROBABLY DANCE 2 posts published by Malte Skarupke during June 2011. Spore did a neat thing where they stored the creature information in a .png file that was a picture taken of the creature.PROBABLY DANCE
I can program and like gamesAPRIL 3, 2021
HAPPY EASTER! I HID AN EASTER EGG IN JUST CAUSE 4 FOR YOU One of my favorite things to have worked on was the Getting Over It easter egg in Just Cause 4. It was quitepopular
.
Since I love Getting Over It, I decided to make three more easter eggs, one for each DLC. Turns out that was impossibly ambitious, but I did manage to get one out. One of the DLCs contains a second Getting Over It easter egg that nobody has found yet: I already did a subtle leak of this a while ago, so you can find the coordinates for this on some websites. But I must have been too subtle… Last easter didn’t feel right to do this bigger reveal (I had only recently left Avalanche, plus everyone’s brain was kinda fried thinking about covid) so this easter seems more appropriate. So find the coordinates online, or go looking based on the video. Happyeaster egg hunting!
Read the rest of this entry »Leave a comment
JANUARY 30, 2021
UNDERSTANDING WHY THE CDC GIVES THE GUIDELINES THAT IT DOES The CDC continues to issue very puzzling guidelines about the coronavirus. The most recent strange recommendation is that even if you already had covid, you should still get the vaccine.
Which… makes no sense? Let’s assume our goal is to reduce the number of deaths. Currently in the US, something like 26 million people have tested positive for SARS-CoV2, and roughly 440,000 people have died of COVID19. I’m using these terms to make a distinction: Not everyone who gets the virus will get sick, and not everyone who gets sick will die. Let’s be generous and assume that 100 million people got the virus so far, then mortality rate is 0.44%. What do those same numbers look like for people who already had the virus before? Obviously the first number, the chance of getting the virus, should be roughly the same. But your body has fought this virus (or a very similar virus) before, so your chance of getting sick is much lower. For a long time it was uncertain whether you can get sick a second time at all, but now there are enough confirmed cases. How many of those have died? At least one, who was
on chemotherapy at the time. Let’s estimate the number at 10, which would get us to a mortality rate of 10/26,000,000 = 0.000038%. Should we really be giving people with that second risk the vaccine when not everyone in the first group has had a vaccine yet? Either the CDC worked with different numbers that are ten thousand times bigger, or their goal is not to reduce the number of deaths. What could thatother goal be?
Read the rest of this entry »3 Comments
NOVEMBER 8, 2020
LOOKING FOR VOTER FRAUD (IN OLD ELECTIONS) WITH DATA VISUALIZATION The 2020 US election is finally over, and all the election excitement of the last week reminded me of something I had been meaning to look into: Sergey Shpilkin’s data visualizations that clearly show fraud in Russian elections. I generated the same visualizations for all US presidential elections from 2000 to 2016. The result is that I can’t find any evidence of fraud in any of those elections. But the visualizations show clear evidence of voter suppression of democrat voters. On closer inspection that turns out to be the effects of the electoral college system, which leads to a very interesting conclusion: You might already know that if the president was elected by popular vote, the US would only have had four years of republican presidencies from 1992 to 2024, with the rest being democrat. But these visualizations suggest that just looking at the popular vote actually underestimates the distortion of the electoral college. It also acts akin to voter suppression of democrats, without which national politics would swing even stronger to the left than the popular vote suggests. But lets start by looking at Sergey Shpilkin’s work: Read the rest of this entry »25 Comments
OCTOBER 31, 2020
USING TLA+ IN THE REAL WORLD TO UNDERSTAND A GLIBC BUG TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs, it works using the simple method of running all possible executions of a program. You can write assertions and if they’re not true for any possible execution, it tells you the shortest path through your program that breaks your assertion. In fact it’s so pragmatic that it even allows you to write your code in a language that looks similar to C. I recently heard of a bugin the glibc
condition variable implementation and since I had used TLA+ before to verify my own mutexes and condition variables, I thought I would investigate. Can you use it to find this bug in real-world complex code? Yes you can, barely, and it wasn’t easy, but it gives me hope that program verification is getting really good and is already able to deal with big and messy code: Read the rest of this entry »15 Comments
AUGUST 31, 2020
ON MODERN HARDWARE THE MIN-MAX HEAP BEATS A BINARY HEAP The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writing code that could really benefit from using a heap (as most code can) but I needed to be able to pop items from both ends. So I read up on double-endedpriority queues
and how to
implement them. These are rare, but the most common implementation is the “Interval Heap” that can be explained quickly, has clean code and is only slightly slower than a binary heap. But there is an alternative called the “Min-Max Heap” that doesn’t have pretty code, but it has shorter dependency chains, which is important on modern hardware. As a result it often ends up faster than a binary heap, even though it allows you to pop from both ends. Which means there might be no reason to ever use a binary heap again. Read the rest of this entry »21 Comments
JULY 23, 2020
PARTIAL SCALING – HOW TO DO HALF A MULTIPLICATION Programmers have a habit of over-generalizing things, and so it happened that I found myself writing more generalized versions of rotation, translation and scaling, the three most common operations that you’d want to do to 3D objects. These were more generalized in that they had a parameter for how much you want to do a certain operation. Like “translate by (10, 0, 0), but only apply the operation 20%”. This is easy to do for translation: Just multiply by the percentage and only translate by (2, 0, 0). Rotations are also easy in many representations: If the angles are explicit, like in Euler angles, you can just multiply those by the percentage; if you’re using quaternions, you can slerp. But scaling is more complicated. Internally scaling is just multiplication, but how do you do half a multiplication? What does it mean to say “multiply by 4, but only apply the operation 50%”? My first approach was to multiply by the power, so you’d get “multiply by ” (or if you only want to apply 10% of the operation) and that seems to work when you’re close to 1, but the further away you are from 1, the more wrong it gets. The answer ends up being to take the median of multiplication, division and exponentiation, but let me further explain the problem first: Read the rest of this entry »4 Comments
JUNE 7, 2020
CONCEPTS FOR THE CURRENT US MESS > An unforeseen disaster is never the consequence of a single factor, > but rather is like a whirlwind, a point of cyclonic depression in > the consciousness of the world, towards which a whole multiplicity > of converging causalities have conspired>
> – Carlo Emilio Gadda (in That Awful Mess on the Via Merulana) It’s hard for me to write a focused blog post at the moment because there just seem to be too many active problems. I could have written a focused blog post about a programming topic, but that feels tone-deaf. So instead this will be a scatter-shot blog post about ways of thinking that could help us out of this mess. Also, since I usually write about programming, I will try to feed the lessons back toprogramming.
For context (if you’re reading this in the future or from another country) the US has had a really bad year. We nearly started a war with Iran, we impeached our president but couldn’t get him out of office, and then we completely failed our response to the global pandemic. After initially doing nothing and hoping it would just go away, the US decided to react in the most costly way possible, causing mass unemployment while still proving mostly impotent in fighting the virus. Now, after that huge sunk cost, we have mostly given up on fighting the coronavirus, just in time for a new problem to arise: Massive amounts of protests all over the country, some of which even turned into riots. The immediate cause is that the police killed another unarmed black man because he was briefly resisting them. But of course it’s pent-up anger from years of police brutality. And of course it couldn’t have come at a worse time with mass-unemployment and a pandemic still raging through the country. All of this didn’t have to be, so here are some helpful tools ofthought:
Read the rest of this entry »2 Comments
MAY 3, 2020
THE COVID-SHUTDOWNS ARE ACTUALLY A GREAT CIVICS LESSON Currently much of the country is shut down to stop the spread of the coronavirus and there is very active debate about how soon we should open up again. Some people say as soon as possible, others are saying immediately. Those might sound like similar viewpoints, but “as soon as possible” might be anything from two weeks to two months, depending on who you ask. There’s also a lot of debate about how deadly a second wave would actually be if we opened up the country with few or no restrictions. What percentage would get the virus? How many of those would die? Uncertainty about all of those numbers is slowly decreasing and it seems like the reopening will happen sooner rather than later. But I want to frame the debate about how it’s actually a great civics lesson. It shows how the government is really of the people, by the people and for the people, and how it can only do things that the people allow it to do. It also neatly shows how we need the government to do things that everyone wants to happen, but that they can’t make happen on their own. Read the rest of this entry »Leave a comment
APRIL 12, 2020
A NEW YORK HISTORY OF COVID-19, WRITTEN AT THE HALF-WAY POINT You have to write these things down while you still remember them. I was already beginning to forget that there was a toilet paper shortage. Similarly right now the popular thing is to point out that this was predictable and we should have listened to the experts. But the experts were predicting that this would be much less bad:
> The consensus forecast generated by the individual responses > indicates that we should expect roughly 19,000 reported cases by> March 29
To be fair, they thought that the curve would behave similar as in other countries. They didn’t expect the US government to mess up its response this badly. Another thing that people are already forgetting is what “flatten the curve” meant. It was supposed to be a strategy to avoid the quarantine lockdown that we all now live in. Western countries didn’t want to do what China did, and “flattening the curve” was the appealing alternative. A lot of these things can only be understood in context, because things are changing so incredibly quickly that it feels like we’re living in a whole new world every couple weeks, and we forget. So lets start at the beginning while westill remember:
Read the rest of this entry »2 Comments
MARCH 28, 2020
A NEW STRATEGY GENRE GROWS UP: SURVIVAL CHAOS, MY NEW FAVORITE GAME I’ve had an obsession recently with a mod for Warcraft 3. It’s called Survival Chaos. I want to talk
about it because it’s part of a genre of strategy games that hasn’t had a big success yet, and this feels like a big evolution, maybe even a breakthrough. It’s rare to see a new video game genre emerge like this, and nobody ever writes about this while it’s happening. The history of Auto Chess, the other recent genre to come out of Warcraft 3, is almost completely lost. (I was able to find a very similar map called “Pokemon Defense” from 2010
, but that’s about it…) I am not sure if the genre has a good name yet since it’s never been big. In StarCraft 2 it’s called “Tug Of War” so I’ll go with that. The basic idea is to make a RTS where you don’t control your units. You just build buildings, the buildings automatically make units, and you watch the units fight automatically. You mostly make decisions about the macro: When to invest in your economy, what units you should invest in, what upgrades you should get. Before we go any further though, let’s just watch a video of someone playing thegame:
Read the rest of this entry »3 Comments
Older
Older posts
Search for:
RECENT POSTS
* Happy Easter! I hid an Easter Egg in Just Cause 4 for You * Understanding why the CDC Gives the Guidelines that it Does * Looking for Voter Fraud (in old elections) withData Visualization
* Using TLA+ in the Real World to Understand a Glibc Bug * On Modern Hardware the Min-Max Heap beats a Binary HeapARCHIVES
* April 2021
* January 2021
* November 2020
* October 2020
* August 2020
* July 2020
* June 2020
* May 2020
* April 2020
* March 2020
* January 2020
* December 2019
* September 2019
* August 2019
* June 2019
* April 2019
* March 2019
* June 2018
* May 2018
* April 2018
* January 2018
* December 2017
* November 2017
* October 2017
* September 2017
* August 2017
* February 2017
* January 2017
* December 2016
* November 2016
* June 2016
* April 2016
* March 2016
* February 2016
* December 2015
* September 2015
* July 2015
* June 2015
* May 2015
* February 2015
* January 2015
* December 2014
* November 2014
* October 2014
* September 2014
* August 2014
* June 2014
* May 2014
* April 2014
* March 2014
* February 2014
* January 2014
* October 2013
* September 2013
* August 2013
* May 2013
* February 2013
* January 2013
* December 2012
* November 2012
* October 2012
* August 2012
* July 2012
* April 2012
* March 2012
* February 2012
* January 2012
* October 2011
* September 2011
* August 2011
* July 2011
* June 2011
* May 2011
CATEGORIES
* Games
* Links
* Politics and Economics* Programming
* Uncategorized
META
* Register
* Log in
* Entries feed
* Comments feed
* WordPress.com
Blog at WordPress.com.Write a Comment...
Email (Required) Name (Required) WebsiteLoading Comments...
Comment
×
* FollowFollowing
* Probably Dance
*
Already have a WordPress.com account? Log in now.*
* Probably Dance
* Customize
* FollowFollowing
* Sign up
* Log in
* Report this content * Manage subscriptions* Collapse this bar
Details
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0