2,338,156 events, 1,425,709 push events, 1,891,218 commit messages, 109,592,733 characters
Find Traps fix... woof
This is a goddamn messy hack. Find Traps worked by pulsing an op 150, then delay casting a subspell every round. The problem is that the op 146 for the delayed casting forces the original caster to interrupt and go through casting motions every round, rendering them more or less useless for the 30-round duration. So, we instead have Find Traps change the caster's SPECIFICS to a special value for the duration; traps will detect this value and force a custom Find Traps to reveal themselves. Unfortunately, this means every door/region trap has to use a unique script so that they can set unique area variables since there's no other way to prevent an infinite loop of revelation. It's ugly internally, but works beautifully in game.
Consolidate Zinit invocation
Attempt to consolidate Zinit invocation into a more concise block using
the Zinit for
syntax, but really, who the hell knows.
I removed the light-mode
argument everywhere I was previously using
it. Light-mode would exclude reporting functionality. According to the
Zinit wiki, there is a negligible impact on performance by enable
reporting when running in turbo mode, which I'm pretty sure I'm using.
This seems accurate based on my rough benchmarks. Running time zsh -i -c exit
with light-mode on and off doesn't reveal any difference in
performance.
As of this commit, I have my shell startup time down to roughly 75-80 ms. Zinit may be the most ridiculous "package manager" for Zshell ever, but damn if it isn't insanely fast.
modpost: file2alias: go back to simple devtable lookup
commit ec91e78d378cc5d4b43805a1227d8e04e5dfa17d upstream.
Commit e49ce14150c6 ("modpost: use linker section to generate table.") was not so cool as we had expected first; it ended up with ugly section hacks when commit dd2a3acaecd7 ("mod/file2alias: make modpost compile on darwin again") came in.
Given a certain degree of unknowledge about the link stage of host programs, I really want to see simple, stupid table lookup so that this works in the same way regardless of the underlying executable format.
Signed-off-by: Masahiro Yamada [email protected] Acked-by: Mathieu Malaterre [email protected] [nc: Omit rpmsg, sdw, tbsvc, and typec as they do not exist here] Signed-off-by: Nathan Chancellor [email protected] Signed-off-by: Sasha Levin [email protected] Signed-off-by: repinger [email protected]
EBDX and Disable Klien Tiles it kinda broken ahahha
ebdx default in but klein tiles go fucky wucky so i disable them sorry
Challenge #7 - It’s a bird! It’s a plane!
“Great job on completing the last six tasks!” your supervisor congratulates you.
Feeling a sense of accomplishment from having come this far and a sense of relief that the day (or week) is almost over, you thank your supervisor for their support. Before you leave for the day, however, you’ve got one final task to address, it's about managing the information on current weather conditions.
Bidding you a good night and good luck, your supervisor leaves the room, once again rattling the presumably out-of-power robot in the corner. This time, the urge to investigate is too strong and you march over to the little duck in the corner, grab its power cable and plug it in.
For a moment, nothing happens, but then, the sound of whirring fans and humming circuitry begin to envelop the room. Examining the console on the back of the robot, you see hundreds of lines of code racing across the screen. As the boot up processes finish, the robot jerks its head straight up and rotates 180 degrees left to right before turning to look straight at you, LED eyes aflare.
“Personnel identified, SPELL emergency operations programmer [REDACTED]” the robot proclaims. “Employment Status: Probationary pending full-time assignment. Job Status: Task in-progress” it continues with a rhythmic opening and closing of its bill. Introducing yourself, the robot pauses for a moment, then continues “Greetings [REDACTED] I am Language Aware Repair Robot Upsilon. But you may call me LARRY.”
You observe the robot waddling on its yellow fins, slowly scanning its new environment. At one point, it stumbles against a box and almost tips over but catches itself with the flapping of its seemingly-decorative wings.
Checking the clock, you realize you’re crunched for time and ask Larry how to convert from Fahrenheit to Celsius and from miles per hour to meters per second to complete your last task of the week.
Picking its head up from the floor where it was tapping its bill against its reflection, Larry responds. Stunned by the speed and accuracy of its response, you reply with a quick word of thanks and get to work.
24.5. Doing Crazy things with Foundry & Fixtures
In the fixtures, each time a Question is created, it executes this callback. So it's executed 20 times. But then, when the 1 to 5 QuestionTag object are created, TagFactory::random() is only called once... meaning that the same Tag is used for each of the 1 to 5 question tags.
Yup, this is the same problem we've seen multiple times before... I'm trying to make this mistake a ton of times in this tutorial, so that you never experience it.
Refactor this to use a callback.
Then, reload the fixtures:
symfony console doctrine:fixtures:load
And check the question_tag table:
symfony console doctrine:query:sql 'SELECT * FROM question_tag'
Yes! These last 2 have the same question id... but they have different tag ids. Mission accomplished! And... this is probably the most insane thing that you'll ever do with Foundry. This says:
Create 20 questions. For each question, the questionTags property should be set to 1 to 5 new QuestionTag objects... except where the question attribute is overridden and set to the new Question object. Then, for each QuestionTag, select a random Tag.
Congratulations, you now have a PhD in Foundry!
"10:15am. I got up this early despite lounging in bed for a while. Ok, first let me take care of the thread for yesterday. My battle plan should be to just ignore the thread and not get emotionally involved if the reaction is negative or ambivalent. If it is positive, that would be great, but otherwise I should exercise my discipline.
Now let's see what cards I got dealt. After that I should chill a bit and go back to sculpting.
///
Hey, I saw your post in r/MachineLearning and just wanted to offer some words of encouragement. I am very involved in bringing Machine Learning to Elixir and the BEAM (sort of niche, but well-established with success stories in large production settings). I know how futile it can feel catching up with the non-stop pace of ML development. And fighting against the complacency of the majority in ML and data science who don't want to change their ways or learn anything new. Spiral looks like an amazing project, and I am hoping myself and the other contributors in the Elixir community can use it to learn from some of your design decisions. Anyway, I'm not in a position to be able to offer you sponsorship, but I thought I'd at least offer you some kind words :)
If you ever want to chat with other FP enthusiasts also interested in machine learning and moving away from Python, feel free to join us at the Erlang Ecosystem Foundation:
https://erlef.org/ https://github.com/elixir-nx/nx
- Sean
///
Got this PM and thanked the guy. I am not interested in socializing though.
11:20am. https://www.reddit.com/r/MachineLearning/comments/r3g7kd/d_looking_for_a_sponsor_for_a_functional/
Did some quick posting in that thread to cement my case. At any rate, the sentiment is ambivalent at best. It is all just a matter of luck of getting noticed by somebody significant, though the thread is likely to be buried soon enough.
11:30am. Ok, let me chill, I do not feel like starting sculpting right away.
12pm. Let me also check mail. No nothing. Yeah, as expected, the winds really aren't in favor of any newcomer right now. I can't make this work. Ideally I'd have companies barging down my door, but dreams are one thing and reality another.
With this I wash my hands clear of programming. I've done my duty towards Spiral.
If I get money through programming it going to be a conventional path. I am unlikely to ever travel it.
Right now I should dedicate myself to the path of illusionist. Art can be many things, but to me it is an act of manipulation.
At this point it simply cannot be helped - if I want resources, I can only get it through moving other people towards my desired ends. The strongest way of doing that are the correct visuals and sounds. So that is what I should do.
2:05pm. The way the saga of Spiral ended is so disappointing. It really is difficult to win at what you want to win. It is amazing how little the ML sub people care about the actual libraries they are using. Some differentiable rendering stuff got 1k upvotes while my own work languishes in obscurity. Is there no way to get away from the vagaries of luck?
Well, poker teaches that the way to make that happen is to just play many hands. That will average out the variance. The trouble is that I only get dealt so many hands in life. I only have a limited amount of 5 year projects left in me.
Was it wrong for me to want to win in a particular way?
If I were wrong somewhere that would be...
That I haven't really learned anything from my failures in ML itself. I try an algorithm, it fails, I move on to the next thing. But those failed experiments do not lead me closer to the truth.
ML is the answer, but maybe I've been taking it too seriously. I've thought a bit about it and I saw a vision. If neuroscience can get all the low level details down correctly then evolutionary algorithms should be a ble to recover the high level aspects of intelligence which would allow us to study it.
If I am afraid of something that would be letting other people get a lead on this. The way the Singularity works is that the first mover has a large advantage. Should I really not just swallow my pride and focus on building up money? Or should I think that I am so special that I will succeed at the self improvement loop itself where others have failed? Or should I couldn't on the solipsism effect saving the day. This last one is the thinking style of a weakling. Part of me thinks it is true, but I can't really test it, and I want to give it my all in the reality I am in.
2:15pm. I don't know. I do not know, in life you either serve other people or you serve yourself. I am not really fan of the cope that by serving other people you are really serving yourself.
2:25pm. Programming is such a cursed thing. I can't really show off my technical expertise and awe other people by the strength of my programming. This is one thing that never happens to anybody.
Let me think a bit here. If I am going to live, I should compete. I should compete based on the strength of the world I create.
2:30pm. It is easy to forget. Programming is just a means to an end. I feel so little connection to game the normies play. If I did I would have studied programming in order to break in from the start. it almost feels like all those shitty HR filters are to keep people like me out and make me question my purpose.
I could get a job and make money, but I do not want my reward for getting money to just be the chance to do even more unpaid work.
2:50pm. What died for me 3 months ago is the belief that I only had to implement things and that I would at least get something good for poker given all the hype around deep learning. I mean I managed to get it to work on Leduc and Flop, so it isn't too much to imagine that working on Holdem would get me through eventually. But instead my ideas got all cut down until I've been left is barebones RL and no way to make further progress.
Holdem is complex, but it has all the features of what would presumably make it within the reach of current day algorithms.
But I was naive. If I were trying something like Go or Chess, I would definitely think that I'd need Deepmind level resources to tackle that. So that is how it should be for poker. But I believed that I could do it until very last moment.
I gave it time. I did not trust deep learning specifically, but I trusted that building it all up from the ground up would give me some special powers to allow me to win later. I got those special powers, but they aren't enough. Nothing is enough to make up for lacking a computing cluster to train these things.
2:55pm. But if I had piles of cash to train these things, I would not need to train them to begin with.
3:20pm. What did I write in that post?
///
- Since the current algorithms are trash, try to evolve something better with the aid of these chips. Right now I would not even think of trying this on the GPU, but novel hardware might make this kind of brutish research tractable. I am too dumb to go beyond backprop directly, but I might be able to figure out the principles if I were given the algorithm up front.
///
I think I am completely justified on throwing in the towel on deep learning. But is there really no way to get a halfway decent player on full Hodlem? My feeling was that if I set things up correctly, I should get a player on a decent level even with as much as few minutes of training.
I feel that I might have made the same mistake bad aritsts do when drawing. They do not start with the bounding boxes and simple shapes. They do not break things down.
I simply assumed that I had to make deep learning work. I had a GPU so I had to put it to use. I was skeptical, but as ironic as it has been, I did buy into the hype.
3:25pm. The way to make a good paining is the same as to make a good program. Plan things out in advance and take measured realiable steps to get to the end result. Trying to make deep learning work was the opposite. It was like taking a car with 3 wheels and hoping to find some way of driving it reliably through sheer skill.
3:30pm. I've been a failure as a scientist. I did things wrong.
If I got the AI chip right now, the main priority should be to evolve a memory system. I thought I had to be the best at implementing libraries, but that is not it. It is not deep learning that I need, but what I need is a creativity booster. I need the computer to generate different conjectures and test them out. Then I could study the dominant approaches.
Hardware is necessary, but the scientific approach to data science and RL would not have been the way I've done it. I should be lifting things from Bayesian inference, discrete optimization and evolutionary computation fields.
I should do a nested evolutionary + CFR system for poker if I am really serious about it.
And that kind of thing will prepare me for when I get the chip, so I can get some insight as to how to push it to its limits.
3:40pm. I remember that RL paper lambasting deep RL using randomized search. I scoffed at that, but maybe I should not have.
Ultimately, what AI chips really offer is just massive parallelism + matrix multication capabilities. I should find an use for the later that is not related to backprop. Definitely.
3:45pm. There is a higher realm of skill that I can step into if I only bother to tread off the beaten path.
I'll think about it seriously. But I should also get good at art while I am it. Maybe it is just fortune, but I am getting better at this so I should put in some effort to bring up these skills.
3:45pm. Let me load up Blender. I do not feel like diving into evocompo papers right now. I'll give these thoughts some time to germinate.
4pm. Spread out t
4:05pm. Let me watch how he does the head.
https://youtu.be/VzMAh66ofq0?t=624
Here is him starting work on it.
https://youtu.be/VzMAh66ofq0?t=685
The way he approaches the head is quite like a regular sculpting workflow.
https://youtu.be/VzMAh66ofq0?t=751
He is quite detailed with the ear here.
https://youtu.be/VzMAh66ofq0?t=789
Oh is he done already? It seems he is starting retopo here.
4:20pm. Let me do the head without much fuss. I do not really feel like it, since I got a ibt hope for programming now. All this sick detail in sculpting is not my cup of tea. Hopefully drawing will be less intense.
4:35pm. Yesterday I had inkling of just how the clay brush differs from the regular draw brush, and now I am really experiencing it. Some how I ended up working on the ear. I botched beginning quite a bit.
4:50pm. I thought it was just an accident that I managed to make the thumb with the clay brush yesterday. I meant to select the draw brush and used the clay one by accident, but the result was good and it was what allowed me to rotate the thumb. The clay brush is really good at digging into the topology. It does not at all act as a draw brush.
In fact, it acts as if it adds and takes away clay. Once again Blender's brush naming is really apt.
Damn it, the reference I have it too blurry. Let me set the video directly.
https://www.google.com/search?q=topology+of+the+ear
I had to google it. I am just having such a hard time understanding what Flycat is doing even though I am look at it.
6:05pm. Lunch time.
6:25pm. I am back. I did the ear, but it ugly and flat.
https://youtu.be/VzMAh66ofq0?t=758
It does not look much like the one here. Though I do feel the process is a lot smother than last time.
6:50pm. Worked on it a bit more.
Sigh, it does not look much like the one in the reference but it does have an organic feel. I look at the reference and do what feels right. The hyper detailed ear really looks out of place next to the face though.
I have to do the face next, but I am starting to hear thunder outside. I'd rather just turn off for the day.
7pm. Yeah, let me turn off, I have a lot to think about. I am not really motivated to sculpt even though I've improved. I want to finish the face next and go to drawing. Working on individual pieces for so long is a pain in the ass."
7-pieces Syzygy tablebase support
This is the first patch teaching Stockfish how to use the 7-pieces Syzygy tablebase currently calculated by Bujun Guo (@noobpwnftw) and Ronald de Man (@syzygy1). The 7-pieces database are so big that they required a change in the internal format of the files (technically, some DTZ values are 16 bits long, so this had to be stored as wide integers in the Huffman tree).
Here are the estimated file size for the 7-pieces Syzygy files, compared to the 151G of the 6-pieces Syzygy:
7.1T ./7men_testing/4v3_pawnful (ongoing, 120 of 325 sets remaining)
2.4T ./7men_testing/4v3_pawnless
2.3T ./7men_testing/5v2_pawnful
660G ./7men_testing/5v2_pawnless
117G ./7men_testing/6v1_pawnful
87G ./7men_testing/6v1_pawnless
Some pointers to download or recalculate the tables:
Location of original files, by Bujun Guo: ftp://ftp.chessdb.cn/pub/syzygy/
Mirrors: http://tablebase.sesse.net/ (partial) http://tablebase.lichess.ovh/tables/standard/7/
Generator code: https://github.com/syzygy1/tb/
Closes official-stockfish/Stockfish#1707
Bench: 5591925 (No functional change if SyzygyTB is not used)
Comment by Leonardo Ljubičić (@DragonMist)
This is an amazing achievement, generating and being able to use 7 men syzygy on the fly. Thank you for your efforts @noobpwnftw !! Looking forward how this will work in real life, and expecting some trade off between gaining perfect play and slow disc Access, but once the disc speed and space is not a problem, I expect 7 men to yield something like 30 elo at least.
Comment by Michael Byrne (@MichaelB7)
This definitely has a bright future. I turned off the 50 move rule (ala ICCF
new rules) for the following position: [d]8/8/1b6/8/4N2r/1k6/7B/R1K5 w - - 0 1
This position is a 451 ply win for white (sans the 50 move rule, this position
was identified by the generator as the longest cursed win for white in KRBN v KRB).
Now Stockfish finds it instantly (as it should), nice work 👊👍 .
dep score nodes time
7 +132.79 4339 0:00.00 Rb1+ Kc4 Nd6+ Kc5 Bg1+ Kxd6 Rxb6+ Kc7 Be3 Rh2 Bd4
6 +132.79 1652 0:00.00 Rb1+ Kc4 Nd2+ Kd5 Rxb6 Rxh2 Nf3 Rf2
5 +132.79 589 0:00.00 Rb1+ Kc4 Rxb6 Rxh2 Nf6 Rh1+ Kb2
4 +132.79 308 0:00.00 Rb1+ Kc4 Nd6+ Kc3 Rxb6 Rxh2
3 +132.79 88 0:00.00 Rb1+ Ka4 Nc3+ Ka5 Ra1+ Kb4 Ra4+ Kxc3 Rxh4
2 +132.79 54 0:00.00 Rb1+ Ka4 Nc3+ Ka5 Ra1+ Kb4
1 +132.7
Compete in AtCoder ABC 229
standings: 1440/5911 (6070 competing) on p. 72/378
-> PERCENTILE >75% ( >76%) :-/ ^^
rank: 1439/6070 [top-third rank ^^]
-> PERCENTILE >76% :-/ ^_^
rating: +13 -> 1107 [5 KYU] Highest!
- above 1100 now! performance as 1211 - cyan [top-third performance ^_^]
- Sleepy/groggy & slightly slow round.
- but otherwise very successful personally!
- Very tight arrival.
- no Brush Teeth, finishing breakfast 2-3 min before
- I came ~30 s late. :-/
- first 2 problems in <15 min
- first 3 problems in <27 min
- first 4 problems in <53 min ^_^
- 5/5 ACs
- only flashes! ^_^
- 1st time 5 problems!!! ^_^
- easier problems? -> check Kenkoo
A:
- hesitations
- are there really only 2 case for "No"
- at least 2 '#' in grid => TAKE YOUR TIME WHILE THINKING ABOUT CASES/SCENARIOS
- are there really only 2 case for "No"
- slowdowns
- how to type out all cases?
- "#." && ".#"
- ".#" && "#." => USE STRING COMPARISION WHENEVER YOU CAN, BETTER THAN COMPARING BY CHARS!!
- how to type out all cases?
B:
- hesitations:
- reverse string or loop backwards?
- loop bwds -> presubmit bug (see below) => PREFER REVERSING STRING/VECTOR OVER BWD INDEXING!
- reverse string or loop backwards?
- presubmit bugs:
- last char of string is '\0'! => REMEMBER: LAST CHAR OF STRING IS '\0'!
- digits are right-aligned!
- when looping bwds, we're comparing wrong powers against each other => REMEMBER: REVERSE STRING/DIGITS TO COMPARE SOME ORDERS/POWERS!
C:
- hesitations:
- seen no pattern initially: DP or greedy?
- understood/realized it's greedy after reading sample cases => ALWAYS READ SAMPLE CASES BEFORE TRYING TO FIGURE OUT PATTERNS/ALGO!!!
- seen no pattern initially: DP or greedy?
- slowdowns
- trying to overload operator>> for pairs
=> NEVER UPDATE TEMPLATES DURING THE CONTEST!!!
- ESP. FOR I/O OPERATOR, SINCE YOU CAN READ INPUT/PARSE MANUALLY!
- typed additional variable for curW
- although not needed, modify W directly
=> THINK ABOUT NECESSITY OF VARIABLE BEFORE CREATING IT/TYPING IT!
- LOOK INTO ITS RELATIONS W/ OTHER VARIABLES!
- although not needed, modify W directly
=> THINK ABOUT NECESSITY OF VARIABLE BEFORE CREATING IT/TYPING IT!
- trying to overload operator>> for pairs
=> NEVER UPDATE TEMPLATES DURING THE CONTEST!!!
D:
- hesitations:
- how exactly to implement 2-ptr method
- i.e. implementation details for conditions and while loops => RECALL CP HANDBOOK IMPLEMENTATION, WHEN UNSURE! => FOR 2-PTR METHOD: OUTER-LOOP OVER RIGHT POINTER BY += 1!! => FOR 2-PTR METHOD: INNER-LOOP (WHILE) OVER LEFT POINTER UNTIL CONDITION/INVARIANT IS VALID AGAIN!!!
- should l represent last invalid or first valid left position? => THINK CAREFULLY/HARD ABOUT MEANING OF VARIABLES/INDICES/POSITIONS!!
- how exactly to implement 2-ptr method
E:
- finally solved E in-contest!! ^_^
- 1st time 5 problems!!! ^_^
- but easy: 1929 ACs / 2195 submissions => REMEMBER THE COMMON PRACTICE FOR QUERY PROBLEMS: “PROCESS QUERIES IN THE REVERSE ORDER.”!!!!!
- hesitations:
- how to query nComp before adding/removing a vertex?
- i.e. in "pre-operation" manner? <- validly initialized nComp <- push back to results first, update afterwards
- how to allow only for valid edges at that time?
- i. e. only to greater-index neighbors?
- graph_ord with erase?
- not needed: only store directed edges (A,B) where A<B! => THINK A BIT MORE HOW TO IMPLEMENT SPECIAL NEEDS/CONDITIONS IN PROBLEMS!!
- union: update links of (at,ne) directly, or of their component roots (u,v)? => MODIFY ONLY ROOTS IN THE UNION OPERATION OF UNION-FIND!!
- how to update nComp?
- increment when joining?
-> no, decrement
- increment when adding new vertex
- i.e. removing in inverted time
- increment when adding new vertex
- increment when joining?
-> no, decrement
- how to query nComp before adding/removing a vertex?
- slowdowns:
cout << vector of result
produces space-separated not newline-separated output! => BE MINDFUL OF SPACE- VS. NEWLINE-SEPARATED OUTPUT!
F:
- unsolved
- hard-core graph theory
- maximum weight matching?
- max flow/min cut?
- bipartitness?
- only when 2-colorable
- red middle
- connected to black outer rim -> how to optimize over all possible subset/choices?
- only when 2-colorable
- only 438 ACs / 891 submissions
- out of my reach?
- editorial: https://atcoder.jp/contests/abc229/editorial/2988
- dp!
- very interesting! -> to upsolve!
- dp!
Signed-off-by: Karel Ha [email protected]
Don't exit 0 from ASM but return to C code instead.
Now why the fuck is this shit segfaulting. God fucking damnit.
Signed-off-by: Stijn Tintel [email protected]
consolidated prompt in 1 file instead of 10. (fuck you random internet dude whose config i stole)
made basic peer to connect to a single rpc node, no hacks. thinking of a name like libdisgustingbullshit .