3,458,190 events, 1,882,910 push events, 2,815,019 commit messages, 207,569,111 characters
Update booklist.json
{ "reviewer": "Gem Arthur", "title": "Annie on my mind", "author": "Nancy Garden", "finishDate": "11/1/2021", "stars":4 , "rating": "13+", "triggers": "Homophobia", "review": "Being a lesbian is simultaneously the easiest and hardest part of my life. It's natural, it's beautiful, it's something I'll always be proud of, but so much of the world still hates that part of me and wants me to hate it too, and this book captured that feeling so perfectly-- that feeling of knowing that who you are is okay, that the love you feel is not ugly or immoral or abnormal; it's beautiful and it should be treated as such. This book teaches girls like me that you should never be ashamed of who you are, and no matter how hard a person might try to make you feel unworthy of love and respect, you can't let that influence what you already know to be true. People may hate you or look down upon you, but you cannot let that change the love you feel for yourself, no matter how hard blocking them out may be. This book teaches young gay readers to love themselves in spite of the hatred we face and I am so happy to have read it. I've never read a book that put my thoughts into words so clearly and lightly, and I hope that everyone takes the time to read this book, regardless of their gender or sexuality. It made me feel warm, and happy, and validated--and it reminded me that I am worthy of respect and love and contentment." },
Project02.02
I want to make clear, this isn't a Hardware description language. It's analogous to a hardware description language. A real HDL would functionality supporting logic things like loops or some sort of statement, all this possesses is the ability to declare items and this may look fucking ugly and like a crime against god but this is the best this language can do. Just Hardcode after Hardcode after Hardcode. It is not my fault, do not judge me based off of this just be amazed that it works.
[modular] big borg code improvements and fixes (#9701)
-
big borg code improvements and fixes
-
I missed a modular comment
-
fuck you linters
-
yis
-
converts skyrat versions to better
-
annnnnd that should fix it
fix: sysmenu compatibility /w rofi 1.7
Long overdue fix, didn't feel like it, rofis documentation is more scattered than my thoughts at 4am, and I didn't even remember how the menu looked before anymore.
Satisfied with the result, but found some other sick designs I might try in the future
Painful, complicated and an annoyance.
GET MINDFUCKED
Merge pull request #140 from ninito-ph/feature/more-balancing-fuck-you
Purple planet is now harder than the red planet
Core/Commands: Fix .cheat god command letting you die
Port From (https://github.com/TrinityCore/TrinityCore/commit/519e3c9ab718ce50dbaf66a50d15f5ead2dc9885)
Update README.md
Figure Fantasy Hack mod Gift Code Diamonds (Working)
https://getmodbash.com/figure-fantasy/
Figure Fantasy is a 3D figurine-themed idle mobile game by Komoe Technology limited. If you are looking for Figure Fantasy Codes that you can redeem for some free in-game rewards/gifts, this is the list you are looking for. Hello gamers! In front of you is best Figure Fantasy Cheat generator that you can find online right now! Finally we can proudly present you this awesome generator tool which can help you to get many Free Diamonds. I know this sounds ridicilous but after so many hours of developing working tool finally we are able to enjoy in this cheat for Figure Fantasy Press button bellow and you will be redirected to cheat page. Follow steps on generator page or read whole blog post bellow to find out how to hack Figure Fantasy and get Diamonds! If you are still reading then you want to get some quick info on how to use this hack so I will try to describe your process in few words. It’s never been easier to get some Diamonds. This process is so simple even five year child can complete whole steps in few minutes and now I will let you know how to do it. Your first step is already done. You are finally on best site for Figure Fantasy Hack and now you can simply relax and enjoy because it is really hard to find working hack tools nowdays! As you know this new Figure Fantasy Hack Cheat is ready to be used on your device and if you decide to benefit from this one you’ll have all the advantages added. You will notice in an instant that you’ll like it so please continue reading the next few lines to find out more. First things first, you’ll have an insight into the features of this game then you’ll get to find out everything there is to know regarding the game.Figure Fantasy is Android App that available on our Store. You could download all versions, including latest version . Figure Fantasy or com.komoe.fsgp is app that has more than 100,000+ installs. If You going to install Figure Fantasy on your device, it should have 14M space available, also your android device need to have 4.4 and up and up Android OS version or higher. Figure Fantasy was created by developer in genre of Role Playing. Android Top is Providing all versions of Figure Fantasy and you can download it directly to your phone or any android device For That you should scroll your screen below, where you could see many links to download app.
Day4
Is using a parser combinator library and combination parsers overkill for an AoC problem? Well, yes, yes it is. But that didn't stop me, now did it? :) I thought it was kind of a fun exercise to do parsing and input validation "in one go". The code is not completely unreadable, though I suppose doing this in two steps (though perhaps still only exposing the final result to the user) is still nicer in general.
I have to say I thought it was pretty obvious that we would have to do something else with the input for the second question (i.e. not just "is this okay?") but, alas, that wasn't the caes. The record might then seem even more overkill than the use of a parser library for something that's always just a simple Boolean answer. One could argue that it's more fun this way, so I'm going with that :)
Also yes, it's full of hacks; but that's the advent of code Christmas spirit!
more
Resharper
Separate Examples
fixed
lc
Shader dependencies
Organizing
Shadow Data
Moved Noise Texture MGMT
moved some shaders
Directory Name fixes
Update Painter_Data_Demo_MoveToResources.asset
cfg2
picker
scene
fixes
shader fix
things
fixes
- god mode
Blurred Screen
SDF from Alpha
cleanup
pix art
small change
asdsad
void Inspect
ывыв
Namespace Fixes
God Mode
Refucktoring
asd
Editor
light caster
IsEntered
Bumped
Shaders
Bevel Shader stuff
more stuff
things
Inspector rework No change MGMT
isFoldout
Update TutorialScene.unity
Perf tex fix
PP_
Old Light Casters removed
Using Refactory
Inspector changed
- OVerride
Lerp
PEGI_Override
Versioning
Moved to painter
Good stuff
Grand Renaming
saving loading
even more stuffs
moved some folders
data
Buildable
compile_local
Some materials
- meta
stuff
Moved Out Procedural UI
stuff
K words
asd
ex
asd
asd
qwe
ChangesToken
TextToken
TextToken
asd
asd
ignore rm -rf errors in make short_test (fuck you macos)
Develop > main (#14)
-
Hamburger menu + mobile fix added some more animation shit Fixed comparing lastfm renamed ScraperService.php > LyricsScraperService.php changed some css
-
Fixed issue if both users have 0 scrobbles
-
Readded name to widget
-
Added way to remember navbar state on mobile and desktop seperately
-
quick fix
-
Fixed no valid username + empty username in friendsfeed
-
Fixed lastfm double artist + albums and tracks next to each other
Co-authored-by: Piet [email protected]
FI-FUCKING-NALLY I FUCKING FIXED THE FUCKING BUG FUCK YEAH! AND GUESS WHAT? IT WAS BECAUSE OF THAT STUPID FUCKING ;. I FUCKING FORGOT A ; DONT YOU HATE ;? FUCK YOU ;. FUCK EVERYONE ;. FUCK YEAH. now time to just figure out whats wrong with the for loop. the export/import is all fine now.
Make server socket implementations graalvm friendly
The jna and graalvm native-image tool do not play nicely together. Reflection is used extensively by the jna in a way that is difficult, where possible, to get to work with native-image (posix I was able to get working with some, but not all versions of the native-image tool, windows I didn't even try because of the way it used proxy classes). In order to support using ipcsocket in a native client for sbt, it is necessary to provide jni implementations of the client and server sockets for both posix and windows platforms.
In the case of the unix domain sockets, it was not that difficult to extract an interface out of UnixDomainSocketLibrary that could be provided both by the jna and jni because there few jna provided structs that needed to be passed around. This was not the case with windows, where there were more instances of things like SecurityAttributes and OVERLAPPED structs floating around as well as numerous constants that were used in the regular java code. The necessary refactoring was more extensive and it was significantly more difficult to extract the shared interface. Nevertheless, this was done for both.
The native libraries that provide the jni implementations are provided in a platform specific location in the library's resources. Building is done entirely within sbt and does not rely on make or another third party build tool. The library is quite small for windows and linux < 20K each, but, unfortunately, is somewhat bloated at ~350K for windows. I think it should be possible to get the sized down to around 20K for windows as well but I had problems building a freestanding executable with mingw*. The native libraries are also built on appveyor and uploaded as artifacts, making it possible to update all of the native libraries without relying on building on a developer's machine or vm. Getting a compilation toolchain working on windows can be a pain, so the library can be cross-compiled for windows using mingw on either osx or linux (the cross-compilation is done using linux in ci).
Each of the server and client class constructors now has an addition useJNI parameter that can be used to select the implementation at runtime. When JNI is used, the library will extract the appropriate shared library into a temporary directory that is configurable via system property. After loading the library, it spawns a background thread to delete any old temporary shared librarys in the temporary directory to try and avoid filling the user's hard drive. I didn't bother with a shutdown hook because it doesn't really work with windows since you can't delete a file that is being used which would require that the shutdown hook close the classloader for the native library which could cause another shutdown hook to fail. This approach avoids that issue but does introduce an issue with posix systems where it would be possible for concurrent processes to delete their respective copies of the shared library. I avoid this by writing a pid file to a corresponding file to the temporary shared library itself. We only try to delete the shared libraries in the directory if the corresponding pid is not alive. On windows, there is no need for a pid file because the os won't let us delete the file if it is open anyway.
I consolidated the unix and windows tests into a single SocketTest that selects the correct implementation based on the runtime platform.
There are unfortunately some formatting changes that got incorporated into this commit when I ran javafmt but it isn't worth the effort to extract them into a separate commit.
- Much of the native infrastructure was adapted from https://github.com/swoval/swoval. For that library, I was able to build a freestanding library with mingw that was roughly 10K but, for reasons I don't understand, it didn't work with this project and I opted not to spend a ton of time reducing the size of the binary.
"10:20am. I am up. I managed to clear 3 whole floors yesterday in Ruina. Just a bit more and I'll be done with the game. Let me chill a bit and then I will start.
10:55am. I hadn't quite drawn the right lesson from my high school days after all. I thought I changed after I put down my pride and started learning from others, but that is not it. If it is just programming puzzles, the plan would have worked, but of course I'd run into trouble if I tried learning what nobody else has. I need to acknowledge my own limits and consider more carefully what it is I am trying to learn. The things I want to learn are well hidden away from nature.
If I am going to steal from the best, I need to better plan out my heist.
11am. I am completely humiliated by the ES algorithm. It has so many good properties. Had I known about this from the start and had the right hardware I would not have bothered with backprop based methods.
But now I know that the order is wrong. I need to get the hardware and the money before I can do ML. Not the other way around. It is just like with trading, I need my starting capital base. In the part the reason why I failed at both is because I underestimated that.
In both cases I thought that I could make some great innovative leap over the competition that did not work. I thought that what I would need to win would just come to me if I put in enough effort.
11:05am. One can work hard, but one cannot force inspiration. Therefore, I should get rid of inspiration-based plans until I can automate them via ML. Whether it is trading systems or learning systems, I need the kind of hardware that could push me through the kinds of innovation bottlenecks I keep facing.
I can't really work hard at innovation because there is not much work in such an activity. I either have the algos or I don't.
11:05am. The experience of the past 7 years has cemented one singular thought as an iron law - the best way to get better is to study an algorithm up front. An algorithm is something you can play around and go over in your mind.
I need to put my belief in that. The worst way to move forward is to try to grope my way through the darkness towards the right algorithm. You are never sure what the magnitude of the challenge is. In the 60s they thought they would solve intelligence over the summer.
11:10am. That is why deep down I do not want to get a job. I do not want to keep groping for the right thing. It is suffering and misery. To find the right algorithm you need a machine. It is my own job to find an interpretation for what exists.
Right now the main machine of innovation is the ML community. In the future, machine themselves should take the role of learning to learn.
I failed developing the path, but I haven't actually failed at understanding any of the algorithms that I've studied. CFR gave me difficulty for some time, but I got through that. One day the conditions to properly cultivate ML will manifest themselves.
I thought that since we are close to the Singularity the destiny of that would help me, but I am going to forget about those considerations in the future. So far, the only ones the winds are pushing forward are the guys at the big labs.
11:25am. Let me start sculpting. I'll start with watching how Flycat does retopo.
https://youtu.be/VzMAh66ofq0?t=785
Let me start from here.
https://youtu.be/VzMAh66ofq0?t=787
Oh here is a good sideways shot.
https://youtu.be/VzMAh66ofq0?t=841
Let me pause here. This is a really good shot of the eyeball.
11:30am. My hunch that it was too to the right was not wrong. That is a natural curve to how the brow and the nose relate to the eye.
11:35am. Huh, where is that sideways shot? That link I put is not right. Don't tell me he shows it so briefly that I do not even notice it?
Damn it, let me it watch it from the start in slow mo.
11:40am. Right it was exactly where I put it. He is on that point for maybe half a second so it is no wonder I skipped over it. Now, I see that my main problem is that the head shape is wrong. The forehead is too up front.
This is quite complicated. These are such slight differences. It is hard to get the curve right.
Ok, have an inkling what is wrong. But let me watch some head sculpting tutorials I intended two days ago.
https://youtu.be/HTgUyEHnKso Blender beginner to pro head sculpting tutorial Part 1 ( Shaping head )
This one is by DevilPeace. Let me start with it.
https://youtu.be/HTgUyEHnKso?t=128
I did this before, but I never really succeeded at breaking the head down to its constituent parts. That is why I am having trouble right now. The head is just one complex shape for me much like the ear was previously.
He is recommending some drawing tutorials because they are faster at teaching me the anatomy and proportion of the head.
https://youtu.be/HTgUyEHnKso?t=282
He says that the end of the skull is wider than the front. I did not realize that.
https://youtu.be/7Msx7gEO6wQ Blender beginner to pro head sculpting tutorial Part 2 ( Nose )
Let me watch them all in turn and then I'll watch another one.
https://youtu.be/7Msx7gEO6wQ?t=364
Hmmm, really? I'll have to keep this in mind.
https://youtu.be/jsB21_A3BL0 Blender beginner to pro head sculpting tutorial Part 3 ( Eyes)
Let me watch this next. Focus me, focus. Right now I am thinking how combine ES with counterfactual reasoning to get variance reduction, but forget that.
12:20pm. No actually, it is more like I figured it out. It is not hard at all. You need an example trajectory, and then you need to condition on it while mutating the net. Then you get the credit based on that.
The way it works currently would have significant variance.
12:30pm. Had to take a break. Yeah, it is really not hard to adapt ES for offline learning if you understand counterfactual reasoning. And actually this exercise is giving me insight about CFR itself. I see an angle I couldn't see before. Well, let me just watch the eyes video and then I will have breakfast and do the chores.
I think I am finally in the swing of things and have stopped wandering around.
https://youtu.be/jsB21_A3BL0?t=43
I should get the shape right, the nose right, and then position the eyes in the sideways view and then the regular view. Then I should work on putting in the rest based on that.
https://youtu.be/jsB21_A3BL0?t=69
This by itself does not look too bad. I need to keep it in mind as a reference point.
https://youtu.be/jsB21_A3BL0?t=155
He is using the draw brush much like I have. It occured to me that the draw brush works well for tihs purpose as well.
https://youtu.be/jsB21_A3BL0?t=263
On asian people the lower eyelid goes in further than the upper one? I never realized this.
https://youtu.be/jsB21_A3BL0?t=284
I do not understand this remark. Ah, why he said the above, he meant just the corners of the eye.
https://youtu.be/jsB21_A3BL0?t=431
I am a bit confused when I reference this with my mental model of the eye should be. Should there be 3 angles. That is the palne between the brow and base, between the base and the eyelid an then comes the eyelied itself.
I've been struggling with this. I've been mentally trying to model it like that, but I always feel the suffocating feeling of there not being enough space.
12:55pm. https://www.youtube.com/watch?v=TmHPKrWkY_w Blender beginner to pro head sculpting tutorial Part 4 ( Mouth / Lips )
Let me pause here.
1:40pm. Let me deal with the chores. Right now I am reading Mental Out. Ex-Arm really hasn't been scanlated in a while. I have no idea which series I am even following at this point.
2:20pm. Let me resume.
https://youtu.be/7VBKLH3oDuw GECCO2021 - tut104 - Advanced Tutorials - CMA-ES and Advanced Adaptation Mechanisms
Let me watch this for a bit and then I'll get back to studying the face. Right now I am obsessed about this whole credit assignment thing.
2:50pm. I'll leave this for later. I can't spend any more time on studying this. Let me get back to sculpting otherwise I'll spend the entire day on it as well.
https://www.youtube.com/watch?v=wSWBk0LFvPc A (somewhat) new paradigm for mathematics and physics | Diffusion Symmetry | N J Wildberger
This vid on the sidebar caught my eye as well. I'll leave it for later.
https://www.youtube.com/watch?v=TmHPKrWkY_w Blender beginner to pro head sculpting tutorial Part 4 ( Mouth / Lips )
Let me get back to studying this.
https://youtu.be/TmHPKrWkY_w?t=309
Don't forget it oval shape.
https://youtu.be/TmHPKrWkY_w?t=843
Interesting, this is different from how I did it. How will he thicken the ear edges? Inflate?
https://youtu.be/d3n-ERqrMMA Blender beginner to pro head sculpting tutorial Part 5 ( Face muscles / Bones )
3:30pm. https://youtu.be/QJvtIJMB6gM Blender beginner to pro head sculpting tutorial Part 6 ( Finishing the Eyes)
Time for part 6.
https://youtu.be/QJvtIJMB6gM?t=212
So the top needs to be higher than the bottom. Does this differ between races?
https://youtu.be/QJvtIJMB6gM?t=493
Ah, this is why I had the impression of there being 3 planes. I mistook this crease for as a separator.
https://youtu.be/QJvtIJMB6gM?t=643
He is complaining about Blender not having good crevice drawing tools, but I think that multiplane scrap with a large angle and the sharp clay thumb would do the trick. The clay thumb has special functionality with the Ctrl where it digs in. Combining that with sharpen might do the trick. But I think the regular draw brush woudl be good as well. I see nothing wrong with it.
https://youtu.be/aAVddziclPk Blender beginner to pro head sculpting tutorial Part 7 ( Lips and Mouth)
3:55pm. He says that making beautiful female heads is very hard.
https://youtu.be/aAVddziclPk?t=651
The lip shape is very hard to do the way you want.
I noticed that when I worked on it last month.
https://youtu.be/aAVddziclPk?t=821
It might have been better for him to try the blob brush here.
4:05pm. https://www.youtube.com/watch?v=hpF6HqeOOm4 Blender beginner to pro head sculpting tutorial Part FINAL
Here is the last part.
4:25pm. Let me take a break.
4:45pm. Let me get an apple. I've really focused on watching DP sculpt his head. As a result I feel like I've really internalized the subject. Let me study how Flycat does it again. I need to correlate his work with DPs. After that I'll do it on my own. The head should not be particularly hard to do. I should be able to deal with it easily enough. I had particular trouble with the feet mostly because of the remesher fumbling. But now that I understand the eyes I should be able to fit the rest into place.
5pm. Let me watch him from where he starts work on the head. I'll go all the way from start to finish including the retopo. After this I should be able to internalize it completely.
Actually before I start work on my own thing I should also get some head anatomy studying. DP recommended watching some drawing tutorials and that is what I should do. Though I feel like I already have a feeling for it now, I should go an extra step to make sure it all settles.
https://youtu.be/VzMAh66ofq0?t=681
He actually moves the eyes further in here.
https://youtu.be/VzMAh66ofq0?t=704
I see that Flycat has that nose gap which I'd missed. It is good that DP pointed it out to me.
https://youtu.be/VzMAh66ofq0?t=873
You know what, I'll skip the retopo phase and go straight to drawing once I am done.
5:25pm. It feels like my sanity is slowly returning to me. I've been insane for the past 3 months. Sigh, money. I do not need it and never had it, but my attempts to pursue it sure made me suffer. I think I'll forget money and just do art, and then watch it start rolling in evetually. I won't have any expectation for this particular aspect.
I do not know. Will I be good at art and music? Am I even good at programming?
Who cares. Doing things properly will cure me of my depression. I won't let my hapiness hinge on the approval of others. When I thought I would make that agent, I was pretty happy. When I made that desperate ML-sub post, I was pretty unhappy. Never again. I'll make my next work have intrinsic appeal and be sellable in a store. I knew that a language has no appeal by itself. I thought that great destiny required great effort, but I do not want that anymore. Rather I'll draw out the beaty and cruelty of reality.
I hope the Heaven's Key makes the world a worse place as a result.
Programming is the basis for everything that will happen in the future, but art is fundamentally mind control, and I need to put some exp points in that.
5:35pm. Technical excellence, impact, novelty. Heaven's Key will have all 3 of them. So I am not worried about it hitting some minimal success targets.
So far my learning cure for art has been proceeding much like for programming.
5:40pm. https://youtu.be/VzMAh66ofq0?t=921
Now that I am watching this carefully this is actually pretty boring. But let me watch it all with a nuanced eye at least once. 28m more won't kill me. I'll call it a day after that.
https://youtu.be/VzMAh66ofq0?t=1044
What is he doing here. Is he using the smooth tool? Yep.
https://youtu.be/VzMAh66ofq0?t=1047
This low poly view is really a good way to grasp the overall curvature. It is a good shot. The high poly version is too smooth which makes it harder.
https://youtu.be/VzMAh66ofq0?t=1052
What is he doing here? Isn't the body already finished?
Ah, he is working a bit more on the body. Ah, he did not just boolean it. I see. He is connecting the pieces.
https://youtu.be/VzMAh66ofq0?t=1158
Oh, I forgot this model had fine detail.
https://youtu.be/VzMAh66ofq0?t=1187
Is he using a cylinder in place of teeth?
https://youtu.be/VzMAh66ofq0?t=1214
Huh, but now he has ngons. What is he doing?
Ah, eyebrows.
This is probably a separate object, but I just did not notice it.
https://youtu.be/VzMAh66ofq0?t=1235
This is a nice shot of the eye. Between the brow and the eye I can really think of it as one plane. There isn't anything between the eyelid and the arc that is flat. This erroneous assumption is what caused a lot of friction for me.
https://youtu.be/VzMAh66ofq0?t=1251
Here is him working on the nails.
6:25pm. https://youtu.be/DbGN7d6EiUA?list=PLUbwDmfm85hHYQFZICj1zHbQikJ93lz3h Knight girl modeling Blender time-lapse Part 1
I am wondering how he does all this hard surface stuff, so this might be worth watching. Just not right now. It has 3 parts. No, as interesting as it would be I do not feel like watching it. I am going to finish the face, post what I have in the /beg/ thread and then move on to drawing. If I can draw this body properly I'll be able to draw anything.
I'll do the face tomorrow, I do not feel like it anymore. Maybe I'll watch more of the CMA video now.
6:45pm. The PL sub thread still is not up. Let me close here."
tweaked leveling up system so that it actually bloody works and also made some of the values less hardcoded and easier to play with, added leveling up at the end of the turn and level actually having something to do with your stats, moved all the database shit into a seperate file, still can't get it to change the enemy?? bruh and that's it yeah also added a bunch of new commands to test out the xp etc...
name-rev: prefer shorter names over following merges
name-rev has a MERGE_TRAVERSAL_WEIGHT to say that traversing a second or later parent of a merge should be 65535 times more expensive than a first-parent traversal, as per ac076c29ae8d (name-rev: Fix non-shortest description, 2007-08-27). The point of this weight is to prefer names like
v2.32.0~1471^2
over names like
v2.32.0~43^2~15^2~11^2~20^2~31^2
which are two equally valid names in git.git for the same commit. Note that the first follows 1472 parent traversals compared to a mere 125 for the second. Weighting all traversals equally would clearly prefer the second name since it has fewer parent traversals, but humans aren't going to be traversing commits and they tend to have an easier time digesting names with fewer segments. The fact that the former only has two segments (~1471, ^2) makes it much simpler than the latter which has six segments (~43, ^2, ~15, etc.). Since name-rev is meant to "find symbolic names suitable for human digestion", we prefer fewer segments.
However, the particular rule implemented in name-rev would actually prefer
v2.33.0-rc0~11^2~1
over
v2.33.0-rc0~20^2
because both have precisely one second parent traversal, and it gives the tie breaker to shortest number of total parent traversals. Fewer segments is more important for human consumption than number of hops, so we'd rather see the latter which has one fewer segment.
Include the generation in is_better_name() and use a new effective_distance() calculation so that we prefer fewer segments in the printed name over fewer total parent traversals performed to get the answer.
== Side-note on tie-breakers ==
When there are the same number of segments for two different names, we
actually use the name of an ancestor commit as a tie-breaker as well.
For example, for the commit cbdca289fb in the git.git repository, we
prefer the name v2.33.0-rc0112^21 over v2.33.0-rc057^25. This is
because:
- cbdca289fb is the parent of 25e65b6dd5, which implies the name for cbdca289fb should be the first parent of the preferred name for 25e65b6dd5
- 25e65b6dd5 could be named either v2.33.0-rc0
112^2 or v2.33.0-rc057^2~4, but the former is preferred over the latter due to fewer segments - combine the two previous facts, and the name we get for cbdca289fb
is "v2.33.0-rc0
112^21" rather than "v2.33.0-rc057^25".
Technically, we get this for free out of the implementation since we only keep track of one name for each commit as we walk history (and re-add parents to the queue if we find a better name for those parents), but the first bullet point above ensures users get results that feel more consistent.
== Alternative Ideas and Meanings Discussed ==
One suggestion that came up during review was that shortest
string-length might be easiest for users to consume. However, such a
scheme would be rather computationally expensive (we'd have to track all
names for each commit as we traversed the graph) and would additionally
come with the possibly perplexing result that on a linear segment of
history we could rapidly swap back and forth on names:
MYTAG3^2 would be preferred over MYTAG9998
MYTAG3^21 would NOT be preferred over MYTAG9999
MYTAG3^22 might be preferred over MYTAG10000
Another item that came up was possible auxiliary semantic meanings for name-rev results either before or after this patch. The basic answer was that the previous implementation had no known useful auxiliary semantics, but that for many repositories (most in my experience), the new scheme does. In particular, the new name-rev output can often be used to answer the question, "How or when did this commit get merged?" Since that usefulness depends on how merges happen within the repository and thus isn't universally applicable, details are omitted here but you can see them at [1].
[1] https://lore.kernel.org/git/CABPp-BEeUM+3NLKDVdak90_UUeNghYCx=Dgir6=8ixvYmvyq3Q@mail.gmail.com/
Finally, it was noted that the algorithm could be improved by just explicitly tracking the number of segments and using both it and distance in the comparison, instead of giving a magic number that tries to blend the two (and which therefore might give suboptimal results in repositories with really huge numbers of commits that periodically merge older code). However, "[this patch] seems to give us a much better results than the current code, so let's take it and leave further futzing outside the scope."
Signed-off-by: Elijah Newren [email protected] Acked-by: Ævar Arnfjörð Bjarmason [email protected] Acked-by: Johannes Schindelin [email protected]
Update: Project Finished
Everything that we could do in a span of one year is done.
It brings me joy to know how much we learned over such small time, and I don't think that we will stop any time soon.
This is our first unity project.
Thanks to all our teachers and friends who all gave us support and help to continue the project.
Git is awesome [read my message]
Do you love what we do enough to spend time writing a personal commit message? Have you ever thought about how incredible git is? I don't mean from a professional position. I mean it from a time and version history system. I confess I'm guilty of flippantly typing 'git init' so many times that I don't full appreciate what's happening. Git is willing to become a highly detailed journal of life and times. It almost makes me wonder if non-coders would appreciate these tools as much as we programmers do. As you can see in this post, I'm writing for myself, future self, and (sorta) you. Plus, my vim/git color theme is so fresh I like spending time here. (These are the kinds of things I can say when I can speak freely without friction - even if they are nonsense to you. Don't forget this is my journal, not a memoir!)