there were a lot of events recorded by gharchive.org of which 1,537,677 were push events containing 1,979,111 commit messages that amount to 122,295,170 characters filtered with words.py@e23d022007... to these 43 messages:
[MIRROR] Biogen Refactor and Code Cleanup, Faster Biomass Conversion and No More Biomass Cap! [MDB IGNORE] (#17828)
- Biogen Refactor and Code Cleanup, Faster Biomass Conversion and No More Biomass Cap! (#71563)
So, I looked at the Biogenerator code and there was just, so much old and undocumented code, that I just spazzed out and started documenting and refactoring everything. There's now a lot less usage of contents lookups and for loops, and almost everything is documented, now, too.
As for the changes, as you can see in the title, I made biomass conversion faster. How much faster, you ask? 5 times faster with default parts, up to 20 times faster with the best parts. It was painfully slow, and that's not fun for anyone.
I also lifted the biomass cap. It wasn't useful, it wasn't fun, and Melbert didn't really agree with it either. However, I enjoyed the look of the biomass going up, so I gave it a max visual amount of 5000, so you get to see it gradually filling up as you put your first 5000 biomass in. After that, you do you, chief. Watch the funny numbers go up all you want.
I also improved the maths so that it wasn't just rounding stuff constantly, and also gave a little bit more insight on how much biomass everything would cost you, down to two decimals. If there's no decimals, it won't show them, however.
Here's what that looks like now:
That's one screenshot per different decimal places, there's no trailing zeros because I think we can all universally agree that those look bad in this kind of setting.There's now also more information displayed when you examine the biogen, namely, how many items it has stored, and how many it can hold. I also fixed the formatting a bit, so it looks ever so slightly cleaner.
Other than that, I just improved the code everywhere I saw it to be fitting, there shouldn't be any single-letter variables in there anymore, and the code should be more spaced out. Honestly, at this point, I wrote most of this code six hours ago so I don't remember all of it, and I'm too lazy to go through and check what I've changed again. Diff and changelog are there for that.
So, I'll be honest, there were two big reasons that motivated me to do this. First of all, the biomass cap. That was a little silly, anyone that has spent more than one shift in Hydroponics knows that you usually only put Watermelons in the biomass generator as they're usually the thing that nets you the most biomass. Botanists will generally stock the fridges first, and if they have a lot of excess, they'll put it in the generator if they want, but that's rarely what was done. I've talked with @ MrMelbert about it and he gave me the go-ahead, as can be seen here:
The other reason was the excruciatingly slow processing speed, which I've fixed. So we're good now. :)
🆑 GoldenAlpharex refactor: Went through and refactored a lot of the old code of the biogenerator, and made multiple improvements to its logic, which should hopefully make it behave more consistently. Nearly all of it is now also fully documented, so as to make it easier for anyone else that has to sift through it in the future. qol: The biogenerator now processes items five times faster, up to 20 times faster if properly upgraded! qol: The biogenerator is no longer capped on biomass. Its visuals will change up until 5000 biomass, but you're free to go as high as you'd like with it! Sky's the limit! fix: Fixed the logic of the biogenerator that would make it so the amount of biomass used for recipes was wildly inconsistent. Now, there's no more back-end rounding up, it's all on the front end when it needs to be, so there's no loss or gain of biomass when there shouldn't be. spellcheck: Fixed a capitalization issue with the seaweed sheets in the biogenerator recipes. spellcheck: Fixed multiple inconsistencies between the messages sent to your chat by the biogenerator. /🆑
- Biogen Refactor and Code Cleanup, Faster Biomass Conversion and No More Biomass Cap!
Co-authored-by: GoldenAlpharex [email protected]
potted plants; our friends
potted plants; our friends
potted plants; our friends
potted plants; our friends
potted plants; fixing our friends (on their away maps)
potted plants; our (poorly indentated) friends
for the love of god stop failing checks
potted plants; our friends (dreammaker is not a friend)
fuck you, old-lab 2
green's replacement
potted plants; our friends (against whitespace)
there are no honorable discoveries in the darkest depths.
Perk List Overhaul
Contained within this commit is an encompassing overhaul onto several different parts of the Perk List, including the merging of several perks, adding additional levels to denote previously hidden effects and implementing updating effect % counters to applicable perks. To clarify, no changes to the functionality of the perks were made, only to the presentation of said perks. The full list of changes are as follows, in the order they appear in the code:
Merging in Midas' Windfall and Industrial Daily Codes into 2 levels of XYZ. Minor formatting change for Unlimited Growth. Improved readability of Not so challenging description and uppercased its name. Merged A Particular Improvement into Automation Upgrades, also added an extra level to denote the previously hidden effect of keeping w2x10. Revamped the descriptions for Automation Upgrades to improve readability and internal consistency with labeled effects. Combined Blessed by the Spirits, Advanced Runes Autobuyer, and Autobuy Talisman Resources into a new perk: Automagical Runes. Combined Better Cube Opening and Automation Cubes into a new perk: Cool QoL Cubes. Combined Real Time Auto Ascend and Auto Ascension Challenge Sweep into a new perk: Eternal Ascensions. Updated descriptions for "Ant God's Cornucopia" for readability/spelling. Swapped the descriptions of Golden Revolution 1 and 2 (Keeping it in line with the effect ordering of GQ 1/2/3 themselves.) Golden Revolution 1/2/3, PL-AT Σ, and skrauQ now all update to display their current % effect. Combined Metacogenesis and Metatrigenesis into a new perk: Octeract Metagenesis. Immaculate Alchemy now updates its description per level instead of having 1 description for all 3 levels.
sexy69
مــــــــــرحبٱ انا شاب من سوريا لاجئ في الاردن عمري 32 سنة اعيش لوحدي هنا وانا بحاجة إلى عمل في اي مجال انا اعشق ممارسة الجنس واحب لحس المهبل ولحس الشرج اموت بلعق المهبل والطيز واحب ان امارس الجنس مع مجموعة بنات يسيطرن علي واكون عبدا وخادما لهم الحس لهم الكس والطيز وفتحة الشرج واحب ان التقي بمجموعة من البنات ويقومون بالهيمنة علي والجلوس على وجهي والتبول في فمي اههههه كم اعشق ان تجلس بنت على وجهي وكسها على فمي الحس لها وفتحة طيزها على انفي واشم رائحة شرجها واتنفس منه احب ان اكون عبدا وخادما في ممارسة الجنس واعشق كل شيئ في الجنس واحب ممارسة الجنس مع خنثى ومتحول جنسي واحب الممارسة مع مجموعة من الشباب واعمل لهم مايحبون وابسطهم ويبسطونني من ترغب او من يرغب في التعرف علي وممارسة الجنس معي الرجاءالتواصل معي عبر البريدالالكتروني الخاص بي [email protected] وفي اي دولة في العالم انا مستعد للسفر الى اي مكان في العالم التواصل معي عبر الايميل الخاص بي [email protected] Hello, I am a young man from Syria, a refugee in Jordan. I am 32 years old. I live alone here and I need a job in any field. I love sex and I love vaginal licking and anal licking. I die by licking the vagina and ass. And the ass and the anus, and I like to meet a group of girls, and they dominate me and sit on my face and urinate in my mouth, ahhh, how I love a girl to sit on my face and put her on my mouth, feel her and open her ass on my nose, and smell her anus and breathe from it. Something about sex, and I like having sex with a shemale and transgender, and I like having sex with a group of young men, and I do for them what they like and simplify and simplify me. Whoever wants or who wants to get to know me and have sex with me, please contact me via my e-mail or And in any country in the world I am ready to travel anywhere in the world Contact me via my email [email protected] مرحبا انا شاب من سوريا لاجئ في الأردن عمري 32 عاما واعيش لوحدي في الأردن ولا يوجد لي أحد هنا وأنا بحاجة إلى السفر والعمل خارج الأردن وأنا مستعد أن اعمل في أي مجال كان وفي أي مكان في العالم اروجوكم ساعدوني في موضوعي هذا أنا أعيش حياة مأساوية هنا وضعي المعيشي والمادي سيئ للغاية وأنا بحاجة للهجرة إلى أي دولة في العالم وأن اعمل بها وأنا جاهز ومستعد أن أعمل في أي مجال وأي وظيفة تطلب مني بدون تردد الرجاء منكم أن تتواصلو معي على البريد الإلكتروني الخاص بي هذا [email protected]
post I enjoyed this movie, so I kind of want to give it four hearts. The visuals were interesting, it tackled important themes, and I appreciated its board game love and its leaning in to pulp sci-fi weirdness and just not caring. The more I think about it, though, the more I remember its clunkiness, the way it often moved too quickly, and the lazy bits. I liked it, and I'm glad we watched it as a family, but I doubt it would hold up over time.
Dogs use the Pet Command system (#72045)
About The Pull Request
Chiefly this refactors dogs to use the newer component/datum system for "pet which follows instructions". It also refactors it a little bit because I had better ideas while working on this than I had last week. Specifically, instead of passing around keys we just stick a weakref to our currently active behaviour in the blackboard. Basically the same but skipping an unecessary step.
Additionally it adds a component for the previous "befriending a mob by clicking it repeatedly" behaviour which hopefully we won't use too much because it's not very exciting (I am planning on replacing it for dogs some time after Christmas). The biggest effort in here was making the Fetch command more generic, which includes multiple behaviours (which might be used on their own?) and another component (for holding an item without hands).
Additionally I noticed that dogs would keep following my instructions after they died. This seems unideal, and would be unideal for virtually any AI controller, so I added it as an AI_flag just in case there's some circumstance where you do want to process AI on a dead mob.
Finally this should replicate all behaviour Ian already had plus "follow" (from rats) and a new bonus easter egg reaction, however I noticed that the fetch command is supposed to have Ian eat any food that you try to get him to fetch. This has been broken for some time and I will be away from my desk for a couple weeks pretty soon, so I wrote the behaviour for this but left it unused. I will come back to this in the future, once I figure out a way to implement it which does not require adding the "you can hit this" flag to every edible item.
Also I had to refit the recent addition of dogs barking at felinids to fit into this, with a side effect that now dogs won't get mad at a Felinid they are friends with. This... feels like intended behaviour anyway? Why It's Good For The Game
It's good for these to work the same way instead of reimplementing the same behaviour in multiple files. Being able to have Ian (or other dogs) follow you around the station is both fun and cute, and also makes him significantly more vulnerable to being murdered. Changelog
cl add: Ian has learned some new tricks, tell him what a good boy he is! add: Ian will come on a walk with you, if you are his friend. refactor: Ian's tricks work the same way as some other mobs' tricks and should be extendable to future mobs. fix: Dogs no longer run at the maximum possible speed for a mob at all times. add: When Ian gets old, he also slows down. Poor little guy. add: Dogs will no longer dislike the presence of Felinids who have taken the time to befriend them. /cl
[MIRROR] [MDB IGNORE] converts contraband file into poster file, makes holiday posters work (kind of) (#3821)
- converts contraband file into poster file, makes holiday posters work (kind of) (#72131)
The first part of this is just something that bothered me when I was messing around with something that I will PR in the new year, contraband.dm and dmi is ONLY posters. There's nothing else in there and there are plenty of official posters, and if with #71717 we will also add holiday posters to the mix then I think that its time to retire contraband and make it poster.
Some small things I did while messing with it was change some variables that were single letters into actual variable names, but overall this part of the pr is not a player facing change.
That said, speaking of #71717 I think that it didn't work? Or didn't work the way that it was supposed to? All of the spawned posters aren't instances of festive posters, they are instances of normal posters, so the code on initialize was not doing anything and the only reason the holiday_none poster was showing up was because of the proc in randomize spawning the posters in as those other posters. Because it didn't actually become poster/official/festive it never could do the proc that turns it into a poster for the holiday that is actually occurring.
But then when I made it work and it turned into the generic posters I decided that it would be better if instead of 30% of all posters being a half finished mess, that if there wasn't a holiday poster it just wouldn't replace them at all. I have poster Ideas and Dreams so I will try to help with adding to more holiday posters but not in this PR.
What IS in this PR though, is a new traitor poster that appears during the holidays.
This is a generic evil holiday poster that will replace normal evil posters in the evil poster objective, because I agree with #72003 that it should be a feature.
Contraband file is just posters already, this is easier for people to find the posters. I like holiday posters and think that we should have them and add more, it is a fun easy thing to add to a lot of the microholidays to make them more visible in addition to the name generation, but I don't want to see the unfinished holiday poster so I do think that it's better to only have them spawn if the holiday actually has a poster. Looking forward to febuary!
🆑 add: during holidays the spread syndicate propaganda through posters objective has a chance of spawning evil holiday poster fix: framework for holiday posters is more functional and modular code: contraband.dm file and contraband.dmi file are both now poster.dm and poster.dmi /🆑
- converts contraband file into poster file, makes holiday posters work (kind of)
Co-authored-by: Sol N [email protected]
[MIRROR] [MDB IGNORE] Adds the Sandstorm random event, directional meteor functionality, space sand. (#3829)
- Adds the Sandstorm random event, directional meteor functionality, space sand. (#71802)
Hey guys, it's your boy. Back at it again with another meteor-adjacent event PR.
Adds the Sandstorm random event, inspired by the long-unused admin only one. It picks a direction to approach from, alerts the crew of its imminent arrival, and after a little over a minute of preparatory time, sends waves of sand and dust to grind down everything in that direction.
To accomplish this, some minor adjustments had to be made to meteor generation code. They can now be passed an optional arg for a direction to be thrown from, and will pick a random one if no direction is given.
Also introduces the newest addition to our cast of meteors -- space sand! It's even weaker than space dust, and shows up exclusively in this event. Space sand is ineffective against rwalls, and will not damage the arrivals area's high-tech sand-resistant glass. This is to prevent this event from venting one of the most dust-vulnerable areas on the station, and to make sure new players aren't shafted into firelock hell when the right angle is picked.
I did a lot of testing and tweaking of numbers to get the damage to average at about the level I'm comfortable with. This is meant to be a high-impact event that isn't as destructive (or unavoidable) as a meteor wave. Speaking of avoidance, let's talk about mitigation:
You get an early warning and a direction the sand will come from. You have time to grab repair supplies, move to safety, get a MODsuit. You can make worthwhile repairs as the sand comes in from inside (or outside, if you're brave enough) with nothing more than a welder and iron sheets. If you're feeling particularly spicy, you can leverage your prep time setting up shield generators, which spawn in engineering and have been added to the maintenance machines loot pool. Anyone can contribute, so do your part as a good crewmate and help out!
All that being said, the event can't be prevented entirely. Shit's going to get shredded, especially on the outside of the station. Damage will vary heavily based on the station and direction, ranging from inconsequential to threatening. It should happen late enough into the round that, at the bare minimum, the crew shouldn't be caught unprepared.
For those of you who are worried, the ORIGINAL sandstorm admin event is still with us too. It's been moved from the space dust file into the Sandstorm event file. This PR also makes a very minor change to the naming of the space dust events, for better menuing.
So, to sum it all up: Sand hits grinds down one side of the station, you get a minute of warning, shield generators now spawn in maintenance. Be a good crewmate and help where you can.
More event variety is good, and events that give the players agency on how bad the impact will be is even better.
🆑 Rhials add: Sandstorm random event! A random side of the station is pummeled by an onslaught of sand and dust. If you hear that one is approaching, grab a welder and some iron to help with repairs! add: Space sand! It's weak and doesn't hurt reinforced walls, but shouldn't be underestimated in high quantities. code: You can now pass a start direction to the spawn_meteors/spawn_meteor global procs. /🆑
-
Adds the Sandstorm random event, directional meteor functionality, space sand.
-
fix
Co-authored-by: Rhials [email protected] Co-authored-by: Jolly-66 [email protected]
colour and links
added some links, added colour, fuck you.
Mr. Mime is a thing, unfortunately.
Mild clean, some more Cherish set handling attempts.
Exclude set MetDate from mystery gifts.
Fix daycare enum parsing.
Check for no result in case $qc was used or some other weird thing happens.
Remove FixOT and TradeCord as routine types (FlexTrade handles both).
Try to apply trainer info for Mystery gifts.
Re-add fixed met date if not GO origin.
Update DenBot distribution data, minor fixes.
Fix Yamask-Galar in daycare, some more oopsies.
-Add DenBot - a seed lookup and day skipper bot for raids.
-Change AutoRoll's behavior to make use of some of DenBot's functionality.
Minor clean.
Revise TradeCord "traded" check, remove potential user path straggler entries because paranoia, some minor fixes.
TradeCord fixes (shocker, I know).
Extract Json serializer.
Minor clean and fixes.
Minor fixes.
Fix Milcery when an Alcremie variant is a parent.
Update to latest Core and ALM dependencies.
Handle non-shiny events in a better way.
Work around a race condition?
Simplify and de-bugify trade completion check.
Fix indexing, improve chance for Melmetal-Gmax because it's nigh impossible to get.
Rework TradeCord internals, add new functionality:
-Migrate user data from ".txt" files to a serialized Json (migration for a large amount of users will take a few minutes, be patient).
-Make TradeCord configurable, add its own settings category.
-Add some template events with an optional end timer (YYYY/MM/DD 8PM as an example, though any local time format should work).
-Add barebones Pokedex (counter, flavor text).
-Can check dex completion by typing $dex
, check missing entries by typing $dex missing
.
-Completing the Pokedex will slightly improve shiny rate.
-Can now mass release cherish event Pokemon and shinies ($massrelease shiny/cherish).
-Various tweaks, improvements, and bugfixes.
Slightly change FixOT's behavior: -If a shown Pokemon is illegal and an event, attempt to find a match within the MGDB first. -Try to force users to trade away the shown Pokemon, log attempt to change shown Pokemon. Add consideration for easter eggs being enabled in settings, fix Suicune Change species rng for TradeCord, some bugfixes (I really need to rewrite this mess) Add check if we're using ListUtil for Giveaway instead of TradeCord. Amend commit since I'm squashing and force-pushing while bringing the fork in line with the main branch Add Giveaway module to Discord bot (#22)
Thanks, rigrassm. Co-authored-by: Koi-3088 [email protected] Specify USB port instead of adding the first result (can be found via Device Manager). Re-add boolean check because we don't want to fix everything FixOT will attempt to regenerate illegal Pokémon. Apply trash bytes for reasons. Minor TradeCord fixes and adjustments. Minor clean for C#9 Use "GetValidPreEvolutions()" instead of "GetPreEvolutions()". Index forms correctly. Fix the fixed and re-introduced empty daycare index error. an Ultra Ball. Add EvoTree breeding for TradeCord. Remove unnecessary value declarations for pinging on encounter match. Mildly beautify EncounterBot mark output. Integrate Anubis' system update prevention into Soft Reset and Regigigas Encounter Modes. Rename "Regi" Encounter Mode to "Soft Reset". Speed up "A" clicks for Regigigas and Soft Reset modes. Add Mark logging output for EncounterBot. Fix oops (re-order logic, remove unnecessary lines). Add optional species and form specification for $massrelease Use an obscure string splitter because people like symbols in their names. Fix things that broke after rebasing to the latest main repo commit. Use a less unfortunate field name and value splitter...again. Fix Marowak-Alola always generating as an NPC trade. Add filters for "$list " to narrow down results. Fix Cherish Pichu and Octillery Stop making dumb mistakes, me (implying the rest of it isn't a dumb mistake). Can't breed antiques. Use a less unfortunate embed name and value splitter Add Melmetal-Gmax to TradeCord. Add ability to search by caught ball. Have MassRelease ignore events. Add specific regional form breeding. Revise egg rate and egg shiny chance. Have trade evolutions hold an Everstone. Add an extra right click when navigating to settings for AutoRoll. Add reworked encounter/egg/fossil logs. Minor clean. Minor clean. Get rid of EncounterBot, FossilBot, EggFetch text logs until I properly rework them. Break on an empty page due to aggressive rounding Add multi-page lists for Tradecord. More random bugfixes. Fix some bugs before major clean Add Language parameter for TradeCord. Change trainer info input format for TradeCord. Move focus on Showdown set instead of randomizing a pkm file. Allow user to enter whatever they want for $list, handle edge cases like Kommo-o Add "$list all" to show non-duplicate caught species. Automatically remove from favorites if trading or gifting (small QOL thing). Change how favorites are removed from user file. Revert base egg shiny chance nerf. Fix daycare Add favorites command to TradeCord. Slightly nerf eggs. Fix TradeCord list for shinies Add TradeCord (my dumbest and messiest project so far, Archit pls don't hate the mess). Add Showdown output for Star/Square shinies and OTGender. Add optional link code input for FixOT. Change how OTName, TID, SID is displayed. Add Regigigas SR bot. Add SoJ Camp SR bot. Ribbons now work with EggTrade (remove ribbons if egg). Remove EggRoll. Add another filter for FixOT Fix.. FixOT Update offsets for EncounterBot catching. Slightly change StrongSpawn to work with Regi SR and make it its own mode. Make SpinTrade only available for USB-Botbase Update valid eggs for CT winforms: resize icon.ico to fix crash at startup on unix using mono Rework Spin, read initial in-game coordinates in order to correct drift Add TID, SID, Language output for Showdown Remove obsolete OT and Language parsing Very minor clean until I have time for a proper one. Detach controller when stopping USB bot. Actually set LastUsedBall for EncounterBot (missed when bringing in line with main repo) Move extra RaidBot timings following the official commit Remove PKHeX Discord invite from Readme.md
Maybe fewer people will pester devs now about my unofficial fork? Update for latest main repo EncounterBot commits. Update README.md Add back best commit: Red's SpinTrade. Add egg trades, foreign Dittos and OT for Twitch. If ItemMule is enabled, also display the item a user is receiving. Add periodic time sync toggle for all methods of hosting (except for non-soft locked AutoRoll) to (hopefully) prevent den rollover during extended hosts.
Add routine to exit a lobby for SoftLock if no players are ready in time (to preserve soft lock).
Add a routine to recover from disbanded lobbies (when someone disconnects unexpectedly) for SoftLock.
Add a routine to restart game if all else fails and we're stuck in a raid.
Add a routine for adding and deleting friends if we're soft locked and raids go empty.
Slightly reorganize settings, extract methods, minor clean. Don't use such a generic file name for stream assets. Check USB port index for running bots. Should fix adding additional USB bots when no config is saved. Add fixed met date for FixOT. How do I boolean Change airplane mode logic, tweak timings and routine for soft lock lobby exit Rework EggRoll cooldown (static list in favor of a txt file). Start clean up and refactor Add setting to increase delay after pressing "Home" after a date skip. Use USB port index for blocking and sprite pngs if connection type is USB Add option for airplane host (usb-botbase required) Add option to softlock on selected species for AutoRoll Add automatic compatibility for all console languages when date skipping (have to set ConsoleLanguage under ScreenDetection) Attempt to fix multiple USB device add and connect...again Minor clean Fix oops? Handle add/remove of bots Distinguish between multiple USB devices, tweak BotRemoteControl for USB, other various fixes Add SpA modifier for foreign Dittos Add alpha USB-Botbase support Fix DateTime parsing for European format for EggRoll Set fixed EggMetDate and MetDate for EggRoll More FixOT filters Remove Beheeyem. Oops. Split EggRoll into its own routine and trade type, only output "Receiving: Mysterious Egg" if routine is EggRoll, other minor tweaks and fixes Make FixOT its own queue with roles and counts Add a couple more OTs to $fix Parsing for EggRaffle auto-clear and $clearcooldown Adjust timings and split Watt collecting clicks for AutoRoll Fix oops with file attachments for Ditto Further improvements for OT, memes for invalid pokemon (disable EasterEggs) Add spaces, digits for OT Randomize memes, cut down bloat Fix miscellaneous bots after Anubis' recent QOL additions -Ignore events for OT because headache. -Add overlooked "$convert " input for OT. -Move $clearcooldown to SudoModule -Clear timer automatically if NoTrainerFound -More reliable Dittos -Foreign Dittos for $convert -Command to clear cooldown for EggRaffle in case trade gets disconnected -Fix "Trade finished" line to keep result secret -EggRaffle as a toggle, option to specify channels -Seed Check output to both DMs and Channel (apparently some want it) -Randomly generated egg raffle via a "$roll" command with a configurable cooldown -FixAdOT reworked, has its own command "$fix" and no longer overrides $clone -Ball: output for Showdown sets -Fix oversight -Option to output Seed Check results to Discord channel with a User mention -Showdown set output for OT name and eggs -Basic "OT: " option without Showdown set output -Initial $convert support for EggTrade -Egg moves for EggTrade test attempt -Minor update -EggTrade (by nicknaming a Pokémon "Egg" using $trade) -Failsafe for memes if enabled but field left blank or incomplete -Niche breedable Ditto trade mode. Add minimize button EggFetch text logs StrongSpawn mode for EncounterBot Re-add EncounterBot Master Ball catching More parsing for FixAdOTs Park Ball as held item instead of string Actually remove the offset instead of saying I did Initial DLC commit Faster code entry Removed catching for EncounterBot (need a new offset) CloneBot mode to fix Nickname and OT if adverts detected
omg. the interrupt status is correct in 10.8. FULL tim cook had yet to permeate
check it out! the interrupt status is nonzero oh my god.
and it's stable. i was fucking with the volume control and stuff, no issue!! i have to test it for volume and clipping of course, but this is fucking unreal.
piece of shit idiot tim cook. leave the company you fucking goof. it's almost like your drive for profits were directly at the expense of the operating system.
I CAN'T BELIEVE THE INTERRUPT STATUS IS NON ZERO WOW
NO RAP I GOTTA GO TO BED BYE
[MIRROR] *hand, or That /One/ Emote You Always Felt Was Missing [MDB IGNORE] (#18200)
- *hand, or That /One/ Emote You Always Felt Was Missing (#71600)
It's happened to me repeatedly that I'd see someone down on the floor, and wanted to just, give them a hand, so they could take it and get up that way, without just, directly clicking on them, since that's a little bland. I've also wanted to just, offer my hand to someone so they could grab it, so that I could pull them alongside me, rather than just targeting one of their arms and ctrl-clicking them.
I've had this idea for a long time, and only just decided to do this today.
Now, I know what you might say. "Golden, that's a lot of code for
something this simple!" You're not wrong. However. I decided to go
along and to give some more love to the /datum/status_effect/offering
status effect and the offering-related alerts, to make them a lot more
versatile and a lot less hardcoded. Hence the whole "refactoring" part
of this.
Of course, when I add something, I don't do it half-way. So, the way the
emote works is much like the *slap
emote, except that:
- When you click on someone, it does the exact same as if you were offering the item to them, except that it's targeted (much like ctrl-shift-click).
- If there's nobody directly adjacent to you, it won't do anything.
- If there's at least one person lying down around you, you will offer them your help to get up. Should they take your hand and let you help them up, you will both receive a simple memory about being helped up (or helping up), as well as a 45-seconds-long small mood buff, because it feels nice to be on either end of such a friendly gesture. If they get up, they automatically get disqualified from being offered some help standing up, and likewise, if you lie down, that offer goes away as well.
- If there's at least one person around you, you will instead extend your hand in their direction, for them to grab onto it. Should they do so, you will then grab them by their arms and pull them.
I reworked the offering status effect to no longer have a hardcoded
can_hold_items()
check, so that kisses and the hand offering would no
longer need you to have free hands to complete. The logic here is that
you can still pull someone even with both hands filled, so I figured I'd
leave it this way.
Note: If anyone would like to give the item a better sprite, by all means, go ahead, that'd be amazing. I'm just not really a great spriter and couldn't be bothered to waste hours making a very meh hand.
It's fluff, and nice fluff at that. It makes it easier for people to be nice to one-another without having to necessarily spend so long writing up an emote that the person on the floor will already have gotten back up. I'm sure the MRP folks will like it, and I'm certain the HRP downstreams will love it too ;)
🆑 add: Added the *hand emote, which you can offer to someone standing up in order to give them the possibility to grab onto your hand and let you drag them away, or to someone lying down to help them back up, which always makes everyone involved a little happier! refactor: De-hardcoded and genericized a lot of the offering status effect and alert code, to make it require a lot less copy-paste to handle new cases. fix: Offering a kiss no longer requires the receiver to have free hands to accept said kiss! /🆑
- *hand, or That /One/ Emote You Always Felt Was Missing
Co-authored-by: GoldenAlpharex [email protected]
Adds three eye_blur pain overlay preferences. (#2039)
Adds three preference tiers for eye_blur()
0, the default, keeps the new and updated blur Stan ported from TG.
1 re-adds the weldervision impair, vision-block scaling depending on amount of blur.
2 brings back the ancient legacy eye blur, with various warnings that it is not recommended.
Some people report this hurting their eyes, so a preference to return to the old is a good thing.
Bringing back the legacy overlay will also let some boomers experience soul in cm again.
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 add: Added a preference for eye blurring. Can be defaut blur, vision impair, or the legacy blurring effect. /🆑
Co-authored-by: harryob [email protected]
sched/core: Fix ttwu() race
Paul reported rcutorture occasionally hitting a NULL deref:
sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM
Debugging showed that this only appears to happen when we take the new code-path from commit:
2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")
and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
this would've unconditionally hit:
smp_cond_load_acquire(&p->on_cpu, !VAL);
and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.
The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.
Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.
The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):
X->cpu = 1
rq(1)->curr = X
CPU0 CPU1 CPU2
// switch away from X
LOCK rq(1)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 9
switch_to(Z)
X->on_cpu = 0
UNLOCK rq(1)->lock
// migrate X to cpu 0
LOCK rq(1)->lock
dequeue_task(X)
set_task_cpu(X, 0)
X->cpu = 0
UNLOCK rq(1)->lock
LOCK rq(0)->lock
enqueue_task(X)
X->on_rq = 1
UNLOCK rq(0)->lock
// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
X->on_cpu = 1
UNLOCK rq(0)->lock
// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb(); // wake X
ttwu()
LOCK X->pi_lock
smp_mb__after_spinlock
if (p->state)
cpu = X->cpu; // =? 1
smp_rmb()
// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 0
if (p->on_rq)
smp_rmb();
if (p->on_cpu && ttwu_queue_wakelist(..)) [*]
smp_cond_load_acquire(&p->on_cpu, !VAL)
cpu = select_task_rq(X, X->wake_cpu, ...)
if (X->cpu != cpu)
switch_to(Y)
X->on_cpu = 0
UNLOCK rq(0)->lock
However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.
(Most of the previous ttwu() races were found on very large PowerPC)
Nevertheless, this fully explains the observed failure case.
Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.
Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected]
[MIRROR] Gatfruit will no longer drop from ice portals. [MDB IGNORE] (#18202)
- Gatfruit will no longer drop from ice portals. (#72048)
For some god-forsaken reason, somebody decided that ice portals should be able to drop one of the most disruptive items in the game. This PR amends this by removing it from the drop pool.
In 2013 gatfruit was introduced in the following PR #2000 . This was almost a decade ago at this point, repeatedly through the PR the creator states his belief that this item should only ever be obtainable through admin intervention due to its ridiculous capabilities. At the time everyone in the PR agreed it was a reasonable item to add as it was unobtainable without admin intervention. Over the years, it has crept its way to become more prevalent and openly obtainable, the most offensive of these options is the ice moon portal. As is, there is a 1 in 28 chance of obtaining the seeds, this sounds pretty inoffensive right? That's just 3.44% probability. Now, let us search the instances of the portal that spawns this.
That is a big number, a lot of chances to get that seed packet and other gamer looters. Now, let's take a look at the probability of being able to get these seeds, assuming you wipe out all of the portals.
92.8% chance to be able to get these seeds each shift if you focus entirely on gaming the portals. That's a pretty insane probability of being able to obtain the gatfruit seeds.
While I dislike people who sprint to the seed vault, there is at least the possibility of a pod person telling them to fuck off when they demand their free gamer seed. There is also the fact that the ruin isn't a guaranteed spawn every shift.
🆑 balance: Gatfruit seeds will no longer drop from ice portals. /🆑
- Gatfruit will no longer drop from ice portals.
Co-authored-by: carshalash [email protected]
Fix StringListSetting
No more shitty ugly separators (fuck you Snail)
Fixed entering APC being 0.1 seconds instead of 1 (#2117)
Fixed entering APC being 0.1 seconds instead of 0.5
It had '1' instead of '1 SECONDS'. This isn't intentional because of the outdated comment and as stated below
Sometimes bugs and oversights are elevated into features, this is effectively one but in practice it means that marines have way too much freedom of movement and versatility entering it, it's less like a clunky, bulky, cassettepunk APC and more like a Ferrari convertile. It also allows them to instantly enter the APC while being killed by a Xeno, which is stupid and lame.
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 fix: Fixed entering APC being 0.1 seconds instead of 1 second. /🆑
Introducing KLapse - A kernel level livedisplay module v4.0:
Author: @tanish2k09 (email: [email protected])
What is it? Kernel-based Lapse ("K-Lapse") is a linear RGB scaling module that 'shifts' RGB based on time (of the day/selected by user), or (since v2.0) brightness. This concept is inspired from LineageOS (formerly known as 'CyanogenMod') ROM's feature "livedisplay" which also changes the display settings (RGB, hue, temperature, etc) based on time.
Why did you decide to make this? (Tell me a story). I (personally) am a big fan of the livedisplay feature found on LineageOS ROM. I used it every single day, since Android Lollipop. Starting from Android Nougat, a native night mode solution was added to AOSP and it felt like livedisplay was still way superior, thanks to its various options (you could say it spoiled me, sure). I also maintained a kernel (Venom kernel) for the device I was using at that time. It was all good until the OEM dropped support for the device at Android M, and XDA being XDA, was already working on N ROMs. The issue was, these ROMs weren't LineageOS or based on it, so livedisplay was... gone. I decided I'll try to bring that feature to every other ROM. How would I do that? Of course! The kernel! It worked on every single ROM, it was the key! I started to work on it ASAP and here it is, up on GitHub, licensed under GPL (check klapse.c), open to everyone :)
How does it work? Think of it like a fancy night mode, but not really. Klapse is dependent on an RGB interface (like Gamma on MTK and KCAL on SD chipsets). It fetches time from the kernel, converts it to local time, and selects and RGB set based on the time. The result is really smooth shifting of RGB over time.
How does it really work (dev)? Klapse mode 1 (time-based scaling) uses a method void klapse_pulse(void) that should ideally be called every minute. This can be done by injecting a pulse call inside another method that is called repeatedly naturally, like cpufreq or atomic or frame commits. It can be anything, whatever you like, even a kthread, as long as it is called repeatedly naturally. To execute every 60 seconds, use jiffies or ktime, or any similar method. The pulse function fetches the current time and makes calculations based on the current hour and the values of the tunables listed down below.
Klapse mode 2 (brightness-based scaling) uses a method void set_rgb_slider( bl_lvl) where is the data type of the brightness level used in your kernel source. (OnePlus 6 uses u32 data type for bl_lvl) set_rgb_slider needs to be called/injected inside a function that sets brightness for your device. (OnePlus 6 uses dsi_panel.c for that, check out the diff for that file in /op6)
What all stuff can it do?
1, Emulate night mode with the proper RGB settings 2, Smoothly scale from one set of RGB to another set of RGB in integral intervals over time. 3, Reduce perceived brightness using brightness_factor by reducing the amount of color on screen. Allows lower apparent brightness than system permits. 4, Scale RGB based on brightness of display (low brightness usually implies a dark environment, where yellowness is probably useful). 5, Automate the perceived brightness independent of whether klapse is enabled, using its own set of start and stop hours. 6, Be more efficient,faster by residing inside the kernel instead of having to use the HWC HAL like android's night mode. 7, (On older devices) Reduce stuttering or frame lags caused by native night mode. 8, An easier solution against overlay-based apps that run as service in userspace/Android and sometimes block apps asking for permissions. 9, Give you a Livedisplay alternative if it doesn't work in your ROM. 10, Impress your crush so you can get a date (Hey, don't forget to credit me if it works).
Alright, so this is a replacement for night mode? NO! Not at all. One can say this is merely an alternative for LineageOS' Livedisplay, but inside a kernel. Night mode is a sub-function of both Livedisplay and KLapse. Most comparisons here were made with night mode because that's what an average user uses, and will relate to the most. There is absolutely no reason for your Android kernel to not have KLapse. Go ahead and add it or ask your kernel maintainer to. It's super-easy!
What can it NOT do (yet)?
1, Calculate scaling to the level of minutes, like "Start from 5:37pm till 7:19am". --TODO 2, Make coffee for you. 3, Fly you to the moon. Without a heavy suit. 4, Get you a monthly subscription of free food, cereal included.
All these following tunables are found in their respective files in /sys/klapse/
- enable_klapse : A switch to enable or disable klapse. Values : 0 = off, 1 = on (since v2.0, 2 = brightness-dependent mode)
- klapse_start_hour : The hour at which klapse should start scaling the RGB values from daytime to target (see next points). Values : 0-23
- klapse_stop_hour : The hour by which klapse should scale back the RGB values from target to daytime (see next points). Values : 0-23
- daytime_rgb : The RGB set that must be used for all the time outside of start and stop hour range.
- target_rgb : The RGB set that must be scaled towards for all the time inside of start and stop hour range.
- klapse_scaling_rate : Controls how soon the RGB reaches from daytime to target inside of start and stop hour range. Once target is reached, it remains constant till 30 minutes before stop hour, where target RGB scales back to daytime RGB.
- brightness_factor : From the name itself, this value has the ability to bend perception and make your display appear as if it is at a lesser brightness level than it actually is at. It works by reducing the RGB values by the same factor. Values : 2-10, (10 means accurate brightness, 5 means 50% of current brightness, you get it)
- brightness_factor_auto : A switch that allows you to automatically set the brightness factor in a set time range. Value : 0 = off, 1 = on
- brightness_factor_auto_start_hour : The hour at which brightness_factor should be applied. Works only if #8 is 1. Values : 0-23
- brightness_factor_auto_stop_hour : The hour at which brightness_factor should be reverted to 10. Works only if #8 is 1. Values : 0-23
- backlight_range : The brightness range within which klapse should scale from daytime to target_rgb. Works only if #1 is 2. Values : MIN_BRIGHTNESS-MAX_BRIGHTNESS
Signed-off-by: Eliminater74 [email protected] Signed-off-by: energyspear17 [email protected] Signed-off-by: Michael [email protected] Signed-off-by: PainKiller3 [email protected]
Guards against uplink failsafe code being the same as unlock code (#72113)
There's probably a better way to do this to be honest, but I think it's silly for both to potentially be the same and this should work alright.
Fixes #71446.
I don't think the Syndicate is that stupid.
🆑 fix: After a recent mishap with a high-ranking Syndicate operative, the uplink's unlock code and failsafe code (the one that makes it blow up if you say it) should never turn out to be the same. /🆑
Add X-Clacks Overhead memorials http head/meta tags
Although it's kinda too late for this year, I figured I'd add this as a base for future year's copypasting
this html <meta>
tag is the recommended way to implement gnu-terry-pratchett if you don't have control over your webserver's headers.
looks like we're currently hosted by netlify so there may be another way -- but that would lock us into netlify a bit? this felt more vendor-neutral. not that bothered tho. more keen on making the gesture one way or another.
Happy New Year! What This Important Holiday Means to Me
Happy New Year! What This Important Holiday Means to Me
What does "Happy New Year" mean to you? For me, it's a time of new beginnings and new opportunities. It's the time of year where we take a moment to reflect on what we've done in the past year and set goals for the year ahead.
This holiday is also a time of celebration. It's a chance for people to come together with family and friends, enjoy good food, and share in each other's company. It's also an important holiday for our planet because every day that goes by without us solving climate change is another day closer to New Year's Day 2022 when many scientists predict catastrophic consequences will be felt worldwide. That means this holiday is about more than just celebrating the end of one year and welcoming in another - it’s about making sure that our next new year is a happy one too! Some customs include decorating a Christmas tree, exchanging gifts, attending midnight mass or opening presents on Christmas Eve.The most popular secular song for Christmas is "Let it Snow."
My Personal New Year's Day Experience This is my personal experience of New Year’s Day. I went out with my friends to celebrate the beginning of a new year, and it was a great night. I hope you all have a happy new year! Happy New Year! This is my personal experience of New Year’s Day. I went out with my friends to celebrate the beginning of a new year, and it was a great night. I hope you all have a happy new year! happy new year
New Year's Day Celebrations by Countries Around the World New Year's Day is celebrated on December 31. It is the day when people around the world welcome a new year and make resolutions for the year ahead. In many countries, people celebrate New Year's Day with fireworks. They set off fireworks to celebrate the New Year and to ward off evil spirits. In some countries, people also set off firecrackers during this time of year.
Kaspersky Total Security Download For 3 Years WinZip Free Pro Version 26 Working 100% for life time How To Uninstall Tor Browser Windows 10 How to Resolved reddit error "Something went wrong. just don't panic." This tradition began in China in order to scare away evil spirits and demons that might be lurking around during this time of year. .The practice of using firecrackers for this purpose is also seen in Taiwan, South Korea, and Thailand.New Year's Day is usually a public holiday in most countries around the world. It is also celebrated by some non-Christians as New Year's Eve or New Year's Day.
Happy New Year in 2022 - What Will We Wish for? The year 2022 is still a long way to go. But it's never too early to wish for the best. So here are some of the things we might wish for in 2022: - A more inclusive society where diversity is celebrated and equality is achieved. - Better access to education and healthcare, especially for those living in rural areas. - A decrease in violence and crime rates all over the world. - And most importantly, a better world for our children, who will be the next generation of leaders! 1. More inclusive society
-
Diversity is celebrated and equality achieved.
-
All members of society are able to express their identity in a safe space, free from discrimination or judgement for their beliefs and actions.2. Better access to education and healthcare
-
Education is accessible to all regardless of their location, and healthcare is affordable for everyone living in the country*3. Decrease in violence and crime rates all over the world
Introduction: Happy New Year 2022 The year 2022 is here and we are all excited to see what the future holds. We can't wait to see what the new year will bring in terms of technology, politics, fashion, food, and much more. In this article we're going to look at how technology has changed in the last ten years and how it will change in 2022. We'll also explore some of the predictions that people have made about our future and talk about what they might mean for us. and our society.Technology has evolved greatly in the last 10 years and is only going to continue to do so in the next coming years. In this video of a TED talk, Bill Gates explains how "smart devices" are improving at an exponential rate and will most likely be creating new industries that didn't exist before. Let's take a look at some of these smart devices.In 2022 most cities will have self-driving cars because companies are competing to make them more affordable, safer
Predictions of the Future in 2022 Happy New Year to all of you!
This year we have seen some major changes in the world. We have experienced a new era of AI, machine learning, and automation. With this, we are also seeing a shift in the way we do business and how we live our lives. This is just the beginning of what is going to be an amazing ride!
In 2022, there will be more than one trillion devices connected to the internet and by 2020 there will be over 50 billion smart devices worldwide. We are moving into an era where everything is going to be automated - from driving cars to cooking food on your stovetop.
We will see a huge increase in artificial intelligence by 2022 as well - with AI used for both personal and professional purposes. Artificial intelligence will become more human-like with its ability for emotional expression as well as its ability for deep learning and reasoning.
What does this mean for us? It means that it's time for us all to
What will we wish for? Happy new year! This is the day to make a wish and hope for a better future. The new year wishes are usually about our health, wealth, and happiness. But there are many others that we may wish for. We may wish for a more peaceful world, or for the world to go green again. We may wish for the end of hunger or poverty. We may wish to have more time with our family or to find love in our life. And we may also just want to be happy with what we have now and be grateful for all that is good in our lives. So what will you wish for? I wish for a peaceful world.I wish to always have time with my family.
Conclusion: The Future is Our Choice. We Can Create It. We can create the future we want. The future is our choice.
This year, let's make sure that we are doing everything in our power to make the world a better place for all of us. Let's work together and make this happen.
Kaspersky Total Security download Free License Key For 365 Days, Watched the Full steps in Video and Register the Kaspersky For 3 years Click here
power: Introduce OnePlus 3 fingerprintd thaw hack
Taken from Oneplus 3, this hack will make fingerprintd recover from suspend quickly.
Small fixes for newer kernels since we're coming from 3.10.108..
Change-Id: I0166e82d51a07439d15b41dbc03d7e751bfa783b Co-authored-by: Cyber Knight [email protected] [cyberknight777: forwardport and adapt to 4.14] Signed-off-by: Shreyansh Lodha [email protected] Signed-off-by: Pierre2324 [email protected] Signed-off-by: PainKiller3 [email protected] Signed-off-by: Dhruv [email protected] Signed-off-by: Cyber Knight [email protected]
Carrier buffs and xeno ability toggles (#1996)
After playing a few rounds as various Carriers, it really felt they could use a small buff to work way better with how basically they are expected to build Hive Clusters now.
So the changes are:
- Vanilla and Shaman Carriers now have 500 plasma instead of 400 (would've given them 450 but the defines are in increments of 100). Eggsac still sits at 600.
- Base carrier can carry 8 eggs (up from 7), and Eggsac can carry 12 (up from 7). The latter especially suffered from not being able to carry more than its base variant.
- Shaman can now plat weeds (since we do have support for 5 xeno actions everything still fits). It was strange they could make special structures but not base weeds as a Drone evo strain...
- Eggsac's egg generation is now a toggle instead of an active ability. It uses plasma per tick and generates an egg every 30 seconds. This makes it less fiddly and lets you plant eggs more actively. Still the same cost overall.
- To support that, I added a new xeno ability type - active toggle. For now it's used by Hivelord for Resin Walker and Eggsac for generating the egg
Hopefully the active egg generation will actually make Eggsac a strong frontline xeno, since currently it's not that popular, not to mention it's still a liability for the Hive if they die...
Carriers are usually very plasma starved, especially when they are expected to build Hive Clusters for their Eggs, so mitigated that a bit. Eggsac carrying more eggs means it is compensated for losing huggers, and being able to generate eggs on an ongoing basis makes that ability less fiddly. The ability toggle makes it so the Resin Walker actually deactivates properly when you run out of plasma and cleans up the code a bit. Shaman being able to plant weeds means they can properly support the frontline without needing other Drones for the base weeds.
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 balance: Base and Shaman Carriers now have 500 base plasma, up from 400. Eggsac remains at 600 plasma. balance: Base and Shaman Carriers can now store up to 8 eggs, up from 7. Eggsac now can store a whopping 12 eggs, up from 7. Be careful not to die while carrying those and give Marines greeno material! balance: Shaman can now plant weeds. This bumped all their other abilities one slot over shortcut-wise. qol: Eggsac's egg generation ability is now a toggle that uses plasma per tick to generate eggs at an ongoing rate until full or out of plasma. code: Hivelord's Resin Walker now uses the same toggle structure. fix: Hivelord's Resin Walker now deactivates properly when you run out of plasma. fix: Fixed a runtime around Shaman's ability initialisation. /🆑
Co-authored-by: harryob [email protected]
0.0.7
- AimbotLibrary -> Using mouse move absolute instead of mouse move relative because some exploit software is just shit and ass. (Yes, I am talking to you KRNL. Holy motherfucker)
post It's been so long since I stayed up to welcome in the new year that there was a brief moment last night where I honestly couldn't remember if you're supposed to do that on December 31st or January 1st.
feat: another backport from simba1500
Another large backport of changes from simba1500.
This update brings:
- New consumable handler. The previous was a mess, hard to read, hard to understand, hard to maintain. This one is less tested however so scripts that eat food and/or drink potions might have some new bugs pop up that will need to be squashed. (Some scripts that might have issues due to this are: Ardougne knights, Pickpocketer, Kraken, Combat, Astrals, Agility, Wintertodt, ...)
- New GUI framework. You will notice the GUI has changed slightly. The visual changes are not too big, but the way it works behind, has changed quite a bit. This new GUI has some new stuff with it and some features are not fully tested so let me know of any issues you spot.
- Minor changes to StatsClient (wasp-stats) (sorry Flight, I think I'm finally done with it.... only server issues now left to fix).
Went back on making the StatsClient less verbose. So now it will print it's messages by default. It will also print your biohash and stats password so you can know it if you ever need to.
StatsClient now has an easy to use toggle to disable it if you don't want to use it (@Notorious). Add to the top of the script
StatsClient.Disable := True;
- The "Cake(3)" issue people were reporting with scripts that eat food is fixed.
- For devs, you now have some cool handy wrappers for food items. (E.G.: you can now do this:
Inventory.Click('Strength potion(1..4)')
and Simba will look for the the potions in the order you put the numbers in and click the first one. - For devs, you now have some wrappers for food that was inconsistent with other runescape items (E.G.: You now have Cake(3), Cake(2), Cake(1), ......, Summer pie(2), Summer pie(1). All pies, pizzas and cakes have this now and can be used with the previous mentioned feature.
- For devs, a temporary compatibility layer file was added. This file has some Simba1500 and SRL1500 methods translated to 1400 so some of today's update work.
BREAKING CHANGES: A bunch of things were renamed or removed which breaks compatibility with the current scripts. (yes, even with yesterday's update. Sorry...) This might be the last breaking change that had to be done, but we will see, still have a lot of things to backport!
Also, as a rule of thumb, whenever you see "BREAKING CHANGES" or WaspLib version first number go up, it means you very likely will have to update all scripts that use it.
Simple Chunk + Null Regions
Simplified the chunk reading code to only use the header properties as necessary. The isRLE
flag will be coming back again, once I get to reading versions of LCE from consoles other than the PS3.
Rather than having empty chunk objects inside of a region at unloaded indexes, now the value will simply show in runtime as null
. Once I get the data structure typings written out, then you will essentially be able to make a new chunk using the Chunk constructor, work with the data that way, then you will be able to write the region down to a file after that. This is a very similar flow to how NBTify is designed to work. Essentially, leverage JavaScript as your primitives to work with, then write those back down to an equivalent buffer again. Very powerful, if you ask me! :D Especially with TypeScript types too, oooooo!
Listening to Mammoth WVH now. Once I get through to the end of the album, I should probably go to bed. My Linuxbook is about to die too, even though I charged it earlier tonight (says me, like 5 hours later XD)
This computer has been holding up like a champ, gotta say! It's a 6 year old Chromebook now, and it's not even running Chrome OS now. It has been working really great. I think my next step up will eventually be the DIY Framework Laptop, with the bring-your-own parts options, and an Ubuntu install on it, just like this one. I will migrate my work from this one onto that one. I'm not sure about the Intel 12th Gen vs 13th Gen motherboard. It's only $179 more, but it has 30% less battery life, and I think anything more powerful than this little guy will be perfectly fine. This guy even holds up extremely well with all I do, commonly better than my 2015 iMac running the latest (final support) macOS Monterey, which crashes on average, because of kernel panics. It sounds like from online that that is cause by an aging GPU, who'da thought? And it has to do with the startup intensity that macOS has for some reason, as it doesn't happen at all in Windows Bootcamp for me at all, only macOS.
I was also debating an Apple Silicon MacBook, vs the Framework, but I think I really love Linux now, and macOS is almost quite there for me, but not enough at times. I love using GNOME, and the terminal on here is essentially my vacation house, it's so cozy now! I've learned so much on here, it's awesome. I'm definitely keeping this guy, even once I get a new upgrade eventually. I think I also really like Linux because it doesn't lock me in to anything. If my device gets old, it will stop working before I can't use the software on it anymore. It's also usually on hardware that is commonly supported, so things work out of the box. Apple Silicon is extremely intriguing to me, but it isn't quite big enough in the tech world to provide you with a lot of options. Linux on just an x86 laptop is so powerful, in terms of what you can do with software, and the hardware compatibility too. I think I like Linux more for the software than the hardware, and macOS (at least, Apple Silicon) for the performance. macOS also has great apps for productivity, so I think it wins there. That's the hard part for me. Linux is my favorite for programming, macOS definitely wins for being my home machine, like handling backups, just storing things on, working with my music library, all of those kinds of things. Linux has a lot of software, but people over here aren't doing those things on Linux as much. There are a lot of programmers on Mac too, which I think gives it a plus. But, you're also stuck with everything when you go Mac. In a weird way to me, it's a bit too much to have all of that available to your on once machine. I don't want to worry that I wrote a goofy Node script, and removed all of my family photos from my Photos folder. It's like a piece of mind, over on Linux. It can be my playground to create things, and macOS is my place where I can keep things safe at home, when I'm out and about.
That was a big writing, wow! Ok, listening to Voyage 34 now, I just feel like writing more, haha. Had to plug my Chromebook in, and now I'm standing next to it while it charges, so I can keep typing.
I was working on posting my next album "Corruption Junction" tonight hopefully before the New Year rung in, but I didn't get a chance to. That's one of my resolutions for the year I guess, to catch up on my music catalog, whatever that may be. I have a few albums hanging in progress/limbo, and I just have to make album artwork for them, finish a handful of song names, then create their art track thumbnails, and make their YouTube video videos using FFmpeg. I got to the FFmpeg part tonight, but the exported video made the colors weird from the original PNG, so I was trying to figure out how to change the colorspace, video codec, and other different options it gives you. There were a good amount of suggestions online as to what could help with it, but it still looked a bit desaturated and lighter even with trying those. This little album is a set of a few bonus songs from the Elkosaurus sessions, which either felt too big and conceptual to fit with the other tracks I had on there, or they were in a different style from the rest of the album, those being from before I thought that the album should be weird, and they were just with GarageBand loops like I used to do with my older songs. So, I think those are some of the last/most recent of the older-era songs where I use the GarageBand loops, which I had wanted to try and revive when I started making those. Looking back on it now, it's WAYYY better than I had planned on doing! Now I'm using my guitar in songs a lot more, I have a bass now, I'm starting to play my dad's drums, and I also have (at least I think, lol) gotten much better at singing, I think from just trying it in the car on the way to work. Trying to sing with Russel Allen is very fun, definitely recommend!
Looking back on the last year, it's been about a year now since I started making more-songlike songs, with trying to include the music styles that I like to listen to, and I have been very proud of it. I have also been finding more crossover kinds of things that I can do with my "music career" and my programming career, like my Art-Gen tool, which makes the art tracks for YouTube, which will definitely help with catching up on my catalog this next year. I also want to go to Bandcamp, and I think making my own website (for my music) on GitHub Pages sounds extra cool too. I'm not sure if I've heard of a crossover like that by anyone yet (I bet no doubt a musician has done that, but I don't know of too many full-stack musicians, which is what I mean XD ). I think that's a very awesome idea to add to my experience/resume too, not only that I'm a musician, but that I also do my own marketing/web design for myself too. I'm curious how much one could do on their own with things like that, it's mindblowing! If you go to Minnemann levels of multi-instrumentalism, but also host your own web server at home for your full-stack website about the music you wrote yourself?? Not that I'm that level (yet :O, lol), but trying to see all of the different things I can do feels very empowering.
Ok, enough about me! Not sure how you could talk to me, but if you're reading this, and you just wanna talk about anything, I'm all go for it too! Sometimes I wonder what kinds of conversations I could have with random people out in the world, and what we would talk about. There's so much to talk about! That also leads to good song writing too!
This is very refreshing to do, especially because I know it's being tracked in Git XD I hope your 2022 was nice, and I can't wait to see what comes in 2023!
Best wishes, brand0o0o0on ff pls
Minor fixes
CBs:
- Fixed issue with tyranny CB usurpation.
Councillor voting:
- Fixed an issue with the logic for landing women.
Landed titles:
- Fixed the culture of some mercs.
Decisions:
- Eastern Imperial rulers can no longer become the Samrat Chakravartin, bringing them in line with the other Chinese-/Japanese-style governments.
- Made the AI a bit more willing to raise Imperial Guard regiments.
Events:
- Fixed some issues with WotRS members ranking up when they shouldn't be eligible to.
- Prevented very small "powerful" duke vassals from going "Actually, the Mandate belongs to ME!" if certain things happen.
- Fixed an accidental double negation related to CI/etc. pregnancy event.
- Consorts and spouses with a male lover might not become pregnant with the ruler's child with the above event.
- Fixed incorrect vanilla "religion_group = indian_group" pre-trigger for several guru events; the trigger indicates Bön rulers are supposed to be able to get the events, and those are pagan...
History:
- Fixed incorrect setting of got_surname flag outside an effect scope.
- Fixed some duplicate id issues.
- Fixed a comma in yamato_japanese_historical.txt breaking Japan's history quite horribly. Thus ends the strange, strange tale of Kiyohara Yoshinobu "Hachimantaro".
Localization:
- More ANSI-fication.
// https://meded.ucsd.edu/clinicalmed/ros.html package laout;
public class ReturnrosData { public static Object[] columnNames() { Object[] rosDatacNameOrigin = { "Item...","Commit...","Commit...","Commit...","Commit...","Commit...","Commit...","last" }; return rosDatacNameOrigin; }
public static Object roscrsData() {
Object[][] roscrsDataOrigin ={
{"General",
"Fever/chills","Weight change","Fatigue","Night
sweats","Anorexia","",""}, {"Vision", "Decreased visual acuity","Blurry vision","Diplopia","Eye pain/discharge","",",",""}, {"Head and Neck", "Pain","Sores or ulcers in mouth","Change in hearing acuity","Ear pain or discharge", "post nasal drip","hoarseness","Sense of lump/mass (globus) in throat w/swallowing"}, {"Pulmonary", "Shortness of breath - @ rest or w/exertion?","Chest pain","Cough","Hemoptysis", "Wheezing","Snoring or stop breathing",7}, {"Cardiovascular", "Chest pain (CP) or pressure", "Orthopnea (short of breath lying down)", "Paroxysmal Nocturnal Dyspnea (PND)? - sudden shortness of breath that awakens pt from sleep", "Lower extremity edema","Sudden loss of consciousness (syncope)", "Sense of rapid or irregular heart beat, palpatations","Calf/leg pain/cramps w/ambulation", "Wounds/ulcers in feet"}, {"Gastrointestinal", "Heart burn/sub-sternal burning","Abdominal pain","Nausea or Vomiting", "Abdominal swelling or distention","Constipation, Diarrhea or other change in bowel habits", "Jaundice (yellowish coloration of skin)","Vomiting blood (hematemasis)","Black/tarry stools"}, {"Genito-Urinary", "Blood in urine","Burning with urination","Urination at night", "Incontinence (unintentional loss of urine)", "Urgency, Frequency","Incomplete emptying","Decreased force of stream","Need to void soon after urinating"}, {"Hematology/Oncology", "Fevers", "chills", " cold sweats"," weight loss","Abnormal bleeding/brusing", "New/growing lumps or bumps","Hypercoaguability" },
{"Ob/Gyn/Breast",1,2,3,4,5,6,7},
//Menstrual Hx? //Sweats? //Past pregnancies? //Vaginal Discharge? //# Sexual partners & type of sexual activity? //Breast mass, pain or discharge? //Therapeutic or spontaneous abortions? //Hx STIs?
{"Neurological",
"Sudden loss of neurological function","Abrupt loss/change in
level of consciousness", "Witnessed seizure activity","Numbness","Weakness","Dizziness","Balance problems","Headache"}, {"Endocrine", "Polyuria, polydypsia, polyphagia?","Fatigue","Weight loss","Weight gain",5,6,7}, {"Infectious Diseases",1,2,3,4,5,6,7}, {"Musculoskeletal",1,2,3,4,5,6,7}, {"Mental Health", "Do you feel sad or depressed much of the time","Alcohol, other substance abuse", "Anxious much of the time","Memory problems","Confusion",6,7}, {"Skin and Hair", "Skin eruptions/rashes","Sores that grow and/or don't heal", "Lesions changing in size, shape, or color","Itching",5,6,7}, {"Exit","Quit","Return","Clear","Restart","....","....","...."} }; return roscrsDataOrigin; } }
Add files via upload
Practice Project - 4: World Happiness Report
Problem Statement: The World Happiness Report is a landmark survey of the state of global happiness. The first report was published in 2012, the second in 2013, the third in 2015, and the fourth in the 2016 update. The World Happiness 2017, which ranks 155 countries by their happiness levels, was released at the United Nations at an event celebrating International Day of Happiness on March 20th. The report continues to gain global recognition as governments, organizations and civil society increasingly use happiness indicators to inform their policy-making decisions. Leading experts across fields – economics, psychology, survey analysis, national statistics, health, public policy and more – describe how measurements of well-being can be used effectively to assess the progress of nations. The reports review the state of happiness in the world today and show how the new science of happiness explains personal and national variations in happiness.
Attribute Information:
What is Dystopia?
Dystopia is an imaginary country that has the world’s least-happy people. The purpose in establishing Dystopia is to have a benchmark against which all countries can be favorably compared (no country performs more poorly than Dystopia) in terms of each of the six key variables, thus allowing each sub-bar to be of positive width. The lowest scores observed for the six key variables, therefore, characterize Dystopia. Since life would be very unpleasant in a country with the world’s lowest incomes, lowest life expectancy, lowest generosity, most corruption, least freedom and least social support, it is referred to as “Dystopia,” in contrast to Utopia.
What are the residuals?
The residuals, or unexplained components, differ for each country, reflecting the extent to which the six variables either over-or-under explain average life evaluations. These residuals have an average value of approximately zero over the whole set of countries.
The Objectives of this project are as follows:
What do the columns succeeding the Happiness Score (like Family, Generosity, etc.) describe?
The following columns: GDP per Capita, Family, Life Expectancy, Freedom, Generosity, Trust Government Corruption describe the extent to which these factors contribute in evaluating the happiness in each country. The Dystopia Residual metric actually is the Dystopia Happiness Score (1.85) + the Residual value or the unexplained value for each country.
The Dystopia Residual is already provided in the dataset.
If you add all these factors up, you get the happiness score so it might be un-reliable to model them to predict Happiness Scores.
You need to predict the happiness score considering all the other factors mentioned in the dataset.
Downlaod Files:
https://github.com/dsrscientist/DSData/blob/master/happiness_score_dataset.csv https://github.com/dsrscientist/DSData
Steps included in this project:
i. Importing essential libraries ii. Loading and reading Data iii. Understanding Data Visualization iv. Checking and finding Missing Values in the datatset v. Exploring Variables (EDA) vi. Performing Correlation analysis vii. Preparing data for Training & Modelling ix. Applying Linear Regression models
So, I've made more tests with a simple HTTP server and a client just download data through a simple GET. It's 100% easy to reproduce the issue if the client throttle at say 160kbits/s and a file of ~3.5MB is transferred. The HTTP server confirms (as does tcpdump) that all is transferred in a record time and using TCPview (or netstat) you can see that the connection is in FIN_WAIT_2.
It is all received because the TCPWindow quickly gets massive (a few MB) and so are the kernel's buffers. Obviously, Windows has a half-open socket timer that is started with the first FIN send and that causes the issue 100% time.
By limiting SO_RCVBUF, the TCPWindow cannot open that large as soon as the application does not get data fast enough. Of course, when we'll fill the stream and output buffers, TCPWindow will open because we absorb data super fast, but it will shrink back as soon as we stop pumping data in because we are full.
Now, 4KB is awfully low and I tried to increase it and it was still fine at 65kB, I could see TCPWindow opening and closing. The funny thing is that when you do a getsockopt, system will return 65kB. If you set what you got, the problem disappear as expected. BUT, if don't set anything, then Windows uses some much larger value (although it told you it does not) and then the issues happens.
-philippe44.
Thanks philippe44 for tracking down the cause of this issue. Increase squeezelite revision to 1419.
FUCK stupid bugs
Yeah, I lost a promising character who had even found a cloak of magic resistance already. There's literally no reason to have this extra check that makes shopkeepers angry when they teleport, because zapping them with tele already makes them angry anyway so all that this shitty vanilla coding really does is result in shopkeepers who are suddenly angry because SOMEthing (conflicted monster with teleporting attack for example) teleported them.
Of course, in soviet mode they still get angry, because muahahahaha.
TGUI disposals (#2153)
converted disposals to TGUI
TESTING MY USE OF GITLENS
also fuck nanoui
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 ui: converted disposals to tgui /🆑
Co-authored-by: Stan_Albatross [email protected]
Changes our map_format to SIDE_MAP (#70162)
This does nothing currently, but will allow me to test for layering issues on LIVE, rather then in just wallening. Oh also I'm packaging in a fix to one of my macros that I wrote wrong, as a joke
removes SEE_BLACKNESS usage, because we actually cannot use it effectively
Sidemap removes the ability to control it on a plane, so it basically just means there's an uncontrollable black slate even if you have other toggles set.
This just like, removes that, since it's silly
Offsetting the vis_contents'd objects down physically, and then up visually resolves the confliciting that was going on between the text and its display.
This resolves the existing reported flickering issues
fixes plated food not appearing in world
pixel_y'd vis_contents strikes again. It's a tad hacky but we'll just use pixel_z for this
Adds wall and upper wall plane masters
We use these + the floor and space planes to build a mask of all the visible turfs. Then we take that, stick it in a plane master, and mask the emissive plane with it.
This solves the lighting fulldark screen object getting cut by emissives Shifts some planes around to match this new layering. Also ensures we only shift fullscreen objects if they don't object to it.
compresses plane master controllers
we don't use them for much rn, but we might in future so I'm keeping it as a convienince thing
🆑 refactor: The logic of how we well, render things has changed. Make an issue report if anything looks funky, particularly layers. PLEASE USE YOUR EYES /🆑
Co-authored-by: Mothblocks [email protected]
Biogenerator tweaks, leather makes more belts and clothing (#71175)
dreamseeker_DBq3rWALRA.mp4
dreamseeker_nkY08foUOq.mp4
- Now you don't need the beaker to print solid products.
- Biogenerator now accepts all food, not just plants.
- Biogenerator now treats all nutriment subtypes as nutriments, so vitamins and proteins also turn into biomass.
- Biomass now has the same units as other reagents (you get 5 biomass from 5 nutrient with tier 1 parts).
- Doubled the cost of all items and reagents. (biomass generation reduced by 10 and prices - by 5)
- Chemicals output amounts are now in units and you can select how much you want to output exactly. It will not let you specify more than the size of container or above 50 units with one button click.
- Reduced the amount of stored items and introduced a limit to the biomass, both tied to the matter bin tier.
Made biogenerator more dumb by moving the clothing out from the biogenerator designs, and extending leather recipes instead.
The biogenerator is a grinder/recycler style machine so it doesn't make sense that it outputs clothing. Also you need to make leather to craft the toolbelt, while you can't do the same to craft job-specific belts. Now you can print leather in biogenerator and craft the leather clothing by using the leather in-hand. And the rice hat is now crafted from bamboo, instead of biogenerator.
Also added paper to the biogenerator recipes as it makes stuff from cellulose and barely anyone knows that you can craft paper from 1 log and 50 water. And paper is needed in large quantities to craft some items, like paper frames.
And it doesn't output a pack of rolling paper. It's dumb now. It prints the rolling paper sheets instead.
Biogenerator had terrible UX and backend logic. I didn't improve much on BE though, but now it should be less frustrating to use.
Also I hate how biogenerator is superior to all other means of obtaining its products. It doesn't make sense to grow and grind wheat, for instance, when you can just throw shit into biogenerator and get the flour fast. And the costs are ridiculous - you can get a couple of bottles of fertilizers just from one medium potato.
It honestly begs for more nerfing, at least to make the nutriment - chemicals exchange rate 1:1.
The reason for the biomass cap is because people use it as a sink for veggies and generate infinite biomass. Maybe the limit will make them care more about the part upgrade and offload some of the veggies to the fridge for the Cook.
Also it was weird that biogenerator could tailor some things, while others have to be crafted in-hand. Now you can print leather and craft all types of belts and leather clothing.
🆑 refactor: biogenerator UI revamped qol: biogenerator no longer requires beaker for materials, monkey cubes and nori balance: biogenerator accepts all food, not just plants balance: biogenerator treats all nutriment subtypes as nutriments (vitamins, protein, etc.) balance: biogenerator product prices doubled balance: biogenerator biomass storage is limited depending on the level of matter bins balance: cowboy boots recipe moved from crafting to leather recipes balance: leather clothing & belt recipes moved from biogenerator to leather recipes balance: rice hat recipe moved from biogenerator to bamboo recipes balance: biogenerator now outputs rolling paper sheets instead of a pack add: biogenerator can now print paper imageadd: biogenerator icons now use overlays, have emissive layer and indicate the biomass volume /🆑
Extra Files support
Making this because AOF6 has a ton of missing mods which causes problems on my AOF5 Map... yeah i made this tool just for this stupid reason so that my friends can install everything correctly without my internet dying
TabError: inconsistent use of tabs and spaces in indentation FUCK YOU THEN I ONLY USE TABS
"https://boards.4channel.org/g/thread/90621633/sdg-stable-diffusion-general#p90622493
This guy is making some amazing landscapes.
The model is AOM, dreamlike is just the first word of the prompt. Well, the parts of the prompt specifying the subject material, anyway.
What is AOM?
///
the model thinks the piece it created belongs in an art gallery
90622598 AbyssOrangeMix https://huggingface.co/WarriorMama777/OrangeMixs
///
Damn these AOM images are amazing. Who knew I'd be so much into the landcapes.
10:50pm. Time for bed. Goodbye 2022, and the Singularity that did not happen. I hope that in 2023 I will touch upon power.
1/1/2023
9:40am. The new year is here. Kaiji is out.
Let me post the review I did on the Simulacrum blog.
Let me check out my 3rd email that I've forgotten exists.
10am. The one for the games of Transcendi blog.
It was mostly just Wordpress blog spam. No particularly interesting comments. I unsubscribed from wordpress and archived the rest.
///
2022 was quite a lame year for me. After throwing in the towel on RL in late 2021, I started studying art with the intent of illustrating my VN. I just needed to do anything other than programming, so it seemed as good a thing as any. I did drawing at first, but then quickly moved into 3d and spent a total of 9 months playing with various 3d programs like Blender, Houdini, Moi, Clarisse, Substance Painter and Designer, and Zbrush. I’ve gotten familiar with the use of these programs, but I haven’t grasped the efficiency I really wanted from that practice, and then a few months after the last review DALLE and Stable Diffusion came out. The way I dropped making my own artwork in favor of generative NNs is somewhat messy. At first I was hyped, then I tried the two and found them difficult to deal with and left them alone for a few months, but then I started using the free SD version on Hugging Face. It wouldn’t give me quite what I wanted, but after I got used to prompting I started enjoying going through 10/10 masterpieces and picking the best. I love Stable Diffusion now.
All the other NN stuff is not that interesting to me, but SD itself is like a sneak peek into the Singularity. If a human’s skill can go between ranks 1 and 5 in art, then these NN models are rank 6. Right now, these diffusion models are the greatest artists in the world, and no human can come close. Chapters 1-15 of Simulacrum: Heaven’s Key have been illustrated almost entirely using SD 1.4 and 1.5. I have about 1,000 pages written about it so check it out.
After I had gotten tired of 3d art, I said to myself that I will either get a job or start writing the story, and I picked the latter. In hindsight, studying 3d was a waste of time. In the end, I was chasing a skill that only generative NNs like these could give me. Who knows, maybe in the future I will be using NNs to generate 3d. Strangely enough, even though I should have just started writing Heaven’s Key right away, and I won’t be using 3d anymore, I do not feel regret about learning the things that I did. Despite my inner turmoil maybe living this way by pushing myself to learn things for my goals is satisfying after all.
The lack of money is painful for me psychologically. I didn’t want to be an artist so I picked goals that would hopefully land me in success, but ended up missing the target. What should I do now? It is 2023, Intel can’t stop tripping over its own feet, the various AI chip startups are basically vaporware or going only after the big fist. I do not have access to them. It hurts that I still have my GTX 970 in my rig. GPU performance is still doubling every 18 months, but so is their price and in 2023 the price of a high end GPU costs as much as an entire high end rig a couple of years previously.
The main reason why I blame my late 2021 failure in RL is lack of computational resources. I used to think that it would be enough to just look at existing papers and that with effort I would be able to infer the way to make RL work well. I thought that my responsibility would only be to create the tools to enable me to take advantage of the next hardware wave. That was Spiral. I thought that there would be numerous AI companies offering smaller chips to the general public, which would also be my potential sponsors for the language. I thought I could make RL agent for a toy game like poker without much trouble and use botting to get further computational resources which would further increase my ability to make agents in a never ending virtuous cycle.
I just couldn’t have imagined that backprop itself would be so dominant for so long! That is the main mistake that caused all my other bad luck. I thought that if the ML field is given a couple of years to play around while I work on my programming language, they would get around to discovering something useful for RL. But that didn’t happen. I am not sure how things will go at this rate.
One thing I am starting to change my mind on is what my own responsibility is. I thought that it would be fine to leave discovering new learning algorithms to the field itself, but I am going to have to figure out a replacement for backprop myself. If I could I’d have done it in 2021 instead of dead ending it, but better hardware will come out which would allow me to do the kind of research that I need. Also, the move to PIM programming still has not happened, and unlike when the GPUs wave started, Spiral right now is in particularly good shape. I have my board ready to ride this wave. The AI accelerator companies themselves are quite disappointing and of what I’ve seen only Tenstorrent is really worth paying attention to. Out of all the companies that I’ve looked into only Tenstorrent has plans to sell cards you and I could slot into our home rig.
Graphcore for example, in its cheapest form leases machines for 9,000$ a month. And its programming model is ridiculous, composing AST nodes in C++. Since it is actually losing the performance competition against GPUs, it will go broke before long.
Having small offerings is important for the company’s survival long term. When computers are cheap, anyone can program them in their free time, and make open source and commercial software for them, raising their value. The value of a CPU is not just the raw silicon, but the programs that you can get and run on it. But when something costs 9 grand, they are only going to be used to train large NNs and it is the company itself which will be shouldering the cost of writing software. Forget playing around with those kinds of machines. I get the sense that Tenstorrent as a company understands that much, but the other companies are blindly going after the big fish and it will cost them. This seems obvious to me, but strategic vision in AI companies is really rare.
Since late 2021 I haven’t been doing any programming. I did the C backend back in July when I stopped 3d, but the only exception from that is the work on Spiral I’ve done in the last two weeks.
I posted a link to that PIM course on Reddit saying how much I’d like to program these things, and the lead compiler dev for UPMEM which is one of the companies featured in the course sent me a PM telling me he could point me to the simulator. I sensed an opportunity, if that guy was interested, then the others on the list might be as well, so I decided to go out on a limb and create a Spiral backend for UPMEM as a demo. He was gracious and said that he would answer any questions that I have as long as his energy allows. I sent him some questions. He answered almost none of them and has been ghosting all my messages after the first two days since we had contact. That is about how much you can expect from Internet randos. I’ve had people contact me offering unwanted advice, but I’ve yet to even once succeed at manipulating them into using their brains. It is not like I am trying to scam them. I just break the script a little and they vanish. This particular case has been especially annoying. It has been two weeks since I last heard from him, and I am still mad.
Anyway, the UPMEM Python + C backend is done, I’ve done a fair bit of programming to make a useful demo and what I need to do next is write an article showing off my skills. At the time of writing this review there is nothing there, but there should be a decent language tutorial in a few weeks.
The UPMEM devices themselves are pretty useless, as they are only good at integer arithmetic, but they are not GPUs, but true PIM chips so they are the ideal demo for what Spiral can do. The other devices covered on the PIM course are much more interesting. If I could get the one with 1.2 PFLOPs, that would give me 1,000x the computational power of my GTX 970 and would make it worth attempting to do RL again. A couple of months ago, I posted a link to Spiral in the Tenstorrent’s discord, and haven’t gotten any replies, but maybe the article once it is done will serve as bait. I’ve decided - I don't really want a job (even though I want money) but I am going to make an exception when it comes to these companies. If UPMEM extended me an offer I would have taken it just to spread the light of staged functional programming at these kinds of places. A language like Spiral is the only one fit for devices such as these. I’ll demonstrate what I mean in the article. No other design has the same combination of efficiency and the interop capability.
I am not sure how all of this will go. It feels like all my attempts are doomed, but I have no choice, but to persevere and keep going forward.
Besides baiting AI companies, I am thinking about how to try ML again. The 2021 failure proved to me that I cannot understand and truly improve in ML like I can in regular programming. This was devastating to my ego, so this time I am considering playing it by the book. That means something like tabular RL at the top and evolution at the bottom. I made a huge mistake trying to figure out the algorithms myself. That is the primary lesson which I drew from that failure. I realized that if the hardware is powerful enough I could just create a genetic programming system that could infer the right learning algorithms itself, but I do not have such capable hardware. GPUs are just not suitable for making such a system, but those UPMEM devices confirmed my prediction that PIM chips will have more general purpose capabilities.
Compared to late 2021 I do have access to better hardware. While my own rig only has a 4gb GTX 970, a 8$/month subscription on Paperspace gets me free 16gb RTX5000 and A4000 which are much better than it. I’ve been using them to illustrate the latest chapter of Heaven’s Key. The company is in a growth period of trying to lock in customers by offering far below market prices to use their hardware, so it is way cheaper than any other cloud place I’ve looked at. It even has free basic Graphcore IPUs, but who is going to program those? Graphcore made the mistake all AI chip companies (including Tenstorrent) have which is to load itself up on C/C++ programmers. It should have been hiring functional PL experts instead.
Right now, Spiral is in really good shape. I can do things with it that I could only have dreamed about even as far back as 2020. I originally envisioned it as being used to write ML libraries, but backprop just won’t go away which has led to the absolute dominance of frameworks like PyTorch and Tensorflow, and consequently the AI chip companies adapting to that reality and going after the big fish. But now I think that once I get my hands on next gen hardware, I will be able to use it to have the hardware itself teach me how to learn.
In 2023, I intend to split my time between writing and programming RL agents. Maybe I’ll make a Heaven’s Key game, something like a VN where you play against my poker agents. That could be a bit interesting. I should be doing AI, but none of these algorithms are worth using with real money on the line, so maybe some crappy players I could sell. And this would lead me to further cultivating my programming skills.
I know.
I am a programmer so I should be programming rather than writing or doing art, but when you’ve lost your way, what can you do?
Heaven’s Key on Royal Road…lacks the energy I put into my 2014 stories. I know that better should be possible, but I cannot do it. Right now I am still trying to push forward through the obstacles with my own power rather than having the computers helping me. I am shouldering my burdens on my own. I do not know whether I will reach my end, or whether I will manage to grasp the chance that I’ve been pursuing. My future looks bleak.
The Singularity will happen with or without me, but deep down what I want to do is to cause the Singularity myself.
Getting killed by a self improving being would not be bad. It would vindicate who I am at least, but I want to be the igniter rather than an onlooker in its grand story of transcendence. That would be a true victory to me.
For now, the best I can do to make up for 2021 is to handle my future AI work like a scientist. That means having evolutionary group competitions, no more equivalents of trying to burn holes through the back of the cards with my mind’s eye. I am going to make sure that the GPUs/AI/PIM chips are the ones working hard instead of me. I’ll take it step by step, according to my responsibilities and without any expectation of them being good for real money matches.
It really is hard to be successful in this world with just your own talent and power.
///
10:30am. Posted it.
Let me note my Heaven's Key dashboard stats.
Total views at 6,786. Avg views at 144. Pages at 522. Total comments at 4. Followers at 32. Favorites at 9. Ratings at 7. Reviews at 0. It is tepid growth. I got 3 followers yesterday, but after the GB switch they have stopped comming in.
Hopeless, it is all hopeless, but I have to keep going forward. I'll let ch 12 be published and then I'll schedule ch 13. Then I'll give it a break from publishing for a few months. Maybe it will bait some more Patrons. But maybe 5$ a month is too expensive for them. Still, 32 followers is too little to do anything with.
I need to focus on my language work for now.
10:35am. One thing that I should try to do is get that Tenstorrent SDK and confirm whether its programming model would be suitable for what I want to do. I should have done that last year, but I was too brain dead to consider it. As much as I am mad at UPMEM they gave me just the kind of jolt I needed to spring back to life.
Let me just read Kaiji and then I will get started on the language tutorial.
https://mangadex.org/chapter/103daa27-93d3-4f2f-82aa-07c49bc9fccb/1 Chapter 442: Funeral
'Is Endou...going to die here!!?' Kek.
10:50am. Let me chill just a bit more and then I will get started on the article. I've had time to think how I want to handle it.
Yeah, what my 2023 priority should be to verify Tenstorrent's programming model. There is no point in getting hyped for it if it turns out to be something like Graphcore. If it turns out to be good, then I can let my hopes go up a little.
11:15am. Let me get started. I'll write out the thing a little by little over the next two weeks.
https://www.youtube.com/playlist?list=PL5Q2soXY2Zi8KzG2CQYRNQOVD0GOBrnKy PIM Course
Let me put this here.
11:20am. Forget /a/ threads. The important thing is to just start.
inl run forall a b. (input : a) (output : b) (f : a -> b -> i32) : () = join
Let me change this so I can enable partial application.
inl run forall a b. (f : a -> b -> i32) (input : a) (output : b) : () = join
This will make the examples a lot more impressive.
// Maps the input array inplace.
inl map_inp f = run fun input output =>
global "#include <mram.h>"
global "__mram_noinit uint8_t buffer[1024*1024*64];"
inl block_size = 8
// Creates WRAM buffers.
inl buf_in = create block_size
inl buf_out = create block_size
inl len = length input
forBy {from=0; nearTo=len; by=block_size} fun from =>
inl nearTo = min len (from + block_size)
mram_read input buf_in {from nearTo}
for {from=0; nearTo=nearTo - from} fun i =>
set buf_out i (f (index buf_in i))
mram_write buf_out output {from nearTo}
0
Yeah, this is super nice.
12:55pm.
Error trace on line: 34, column: 5 in module: e:\PIM-Programming-In-Spiral-UPMEM-Demo\test8c\main.spi.
inl test_size = 16
^
Error trace on line: 35, column: 5 in module: e:\PIM-Programming-In-Spiral-UPMEM-Demo\test8c\main.spi.
inl input =
^
Error trace on line: 39, column: 5 in module: e:\PIM-Programming-In-Spiral-UPMEM-Demo\test8c\main.spi.
inl input = rezip (fun x,y,z => {x y z}) input
^
Error trace on line: 39, column: 17 in module: e:\PIM-Programming-In-Spiral-UPMEM-Demo\test8c\main.spi.
inl input = rezip (fun x,y,z => {x y z}) input
^
Error trace on line: 15, column: 10 in module: e:\PIM-Programming-In-Spiral-UPMEM-Demo\test8c\inv.spi.
real inv_array `ar `dim `(a * b) {len=a.len; arrays=f a.arrays}
^
Type error in nominal constructor.
Got: {arrays : {x : a u32 i32; y : a u32 i32; z : a u32 i32}; len : u32}
Expected: {arrays : (a u32 i32 * a u32 i32 * a u32 i32) * {x : a u32 i32; y : a u32 i32; z : a u32 i32}; len : u32}
Ah, whops what the hell?
// Should only be used to rearrange internal fields.
inl rezip forall (ar : * -> * -> *) dim a b. (f : a -> b) (a : inv_array ar dim a) : inv_array ar dim b =
real inv_array `ar `dim `b {len=a.len; arrays=f a.arrays}
It should be like this.
1:05pm. Let me stop here so I can have breakfast.
2:45pm. Let me chill a bit and then I will do the chores.
3:35pm. https://www.reddit.com/r/MachineLearning/comments/1007w5u/d_is_there_any_research_into_using_neural/
Forget this. Let me write the article. It is time to get back into the fray.
"asd v$ qwe v$ zxc".Split("v$")
I just realized something. I could have used split
instead of what I did previously. It would be good to take what I did in the C backend and generalize it to all macros, but nevermind that for now.
let i' = m.IndexOf("v$") // TODO: Instead of doing this generalize it so it uses Split("v$").
I'll leave this TODO here for now.
| TyMacro a ->
I really should just make it part of TyMacro
. Remove it from here and bring it into the parser.
let q = m.Split("v$")
if q.Length = 1 then
decl_vars |> line' s
return_local s d m
else
if d.Length = q.Length-1 then
let w = StringBuilder(m.Length)
let tag (L(i,_)) = $"v{i}"
Array.iteri (fun i v -> w.Append(q.[i]).Append(tag v) |> ignore) d
w.Append(q.[d.Length]).ToString() |> line s
else
raise_codegen_error "The special v$ macro requires the same number of free vars in its binding as they are v$ in the code."
I've gone and done it.
Ah well, let me test it out. Here is test76.
// Does the v$ macro work correctly in the C backend?
inl main () =
inl x : i32 * i32 = $"`i32 v$, v$"
0i32
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
int32_t main(){
int32_t v0, v1;
return 0l;
}
Yeah, no problem.
Let me push out a new version. This solution is better than what I had before.
5:55pm. Done with lunch.
Array.iteri (fun i v -> w.Append(q.[i]).Append('v').Append(tag v) |> ignore) d
w.Append(q.[d.Length]).Append(';').ToString() |> line s
else
raise_codegen_error "The special v$ macro requires the same number of free vars in its binding as there are v$ in the code."
These changes are not worth releasing a new version for.
7:50pm. 850 lines into the article. I should be done with it in a few days.
8pm. Let me finally close here. I want to finish this and post it around. It won't be too long before I can get to that. Writing this article is the fun part.
I'll deal with it and get back to writing Heaven's Key.
https://youtu.be/AoSc1t140hk?list=PL5Q2soXY2Zi8KzG2CQYRNQOVD0GOBrnKy PIM Course: Lecture 11: SpMV on a Real PIM Architecture - Fall 2022
A new lecture came out, so I'll take a look. I am out for the day."
[MIRROR] Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. [MDB IGNORE] (#18019)
- Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. (#71674)
- The chaplain choice beacon now uses a radial to select the armor set, instead of a list, giving the user a preview of what each looks like.
- Lots of additional cleanup to choice beacon code in general. Less copy pasted code.
- All beacons now speak from the beacon with their message, instead of some going by "headset message". Soul removed
I always forgot when selecting my armor which looks like what, and choosing an ugly one is a pain since you only get one choice. This should help chaplains get the armor they actually want without needing to check the wiki.
🆑 Melbert qol: The chaplain's armament beacon now displays a radial instead of a text list, showing previews of what all the armor sets look like qol: (Almost) all choice beacons now use a pod to send their item, instead of just magicking it under your feet code: Cleaned up some choice beacon code. /🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
-
Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup.
-
update modular
Co-authored-by: MrMelbert [email protected] Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com> Co-authored-by: Tom [email protected]
Enter A new grad With literally no idea what the shit to do with his life. So this means just we do something, This is that something. post Q2
Happy new year folks!!!
Stay proud, stay safe, and do what the hell you want. And hey, find yourself some friends with which to overthrow oppressive systems while you're at it.
Remedy 🧪 Baby, baby, why can't you sit still? Who killed that bird out on your window sill? Are you the reason that he broke his back? Tell me, did I see you baby laugh about that?
If I come on like a dream? Will you let me show you what I mean? Will you let me come on inside? Will you let it glide?
Can I have some remedy? (All I want is a remedy) Remedy for me, please (for all of the things I really do need) If I'd some remedy (ooh, I'd take another one) I'd take enough to please me
Baby, baby, why you dye your hair? Why you always keeping with your mother's dare? So, baby, why's who's who? Oh, babe, I know you too Tell me, did the other children scold on you?
If I come on like a dream? Ooh, will you let me show you what I mean? Will you let me come on inside? Oh, will you let it slide?
Can I have some remedy? (All I want is a remedy) Remedy for me, please (for all of the things I really do need) If I'd some remedy (I'd surely take another) I'd take enough to please me
I need a remedy, huh, yeah, but what is havin' me? You see, huh, I need a remedy, but what is havin' me? I need a remedy, yeah, but what is havin' me? If I'd only had a remedy, you see, I'll find it You see, baby, I want it, you see, I'll find it Oh, I really want, really want it Can I have some remedy? Remedy for me, please If I'd some remedy I'd take enough to please me
Add Croissants & Traitorous Baking Techniques (#72232)
This is my Christmas present to mimes everywhere.
First of all this adds Croissants, because I thought they already existed and was shocked to learn that they did not.
Here's a croissant and an unbaked croissant. In terms of food they are GRAIN, DAIRY, and BREAKFAST and made fairly simply from sugar, dough, and butter.
Secondly it adds this pack of traitor gear, exclusively for Mimes and Chefs.
The contents of this pack are:
- One combat baguette, indistinguishable from a regular baguette. If wielded as a sword it gains a 50% block chance (equal to the Captain's sabre) and does 20 damage.
- Two throwing croissants, which do 20 throwing damage and return to your hand like boomerangs.
- A cookbook which teaches you the secret to turning croissaints into deadly boomerang weapons.
You make a croissant into a throwing croissant simply by inserting an expertly bent iron rod into it. The chef can't make any use of the baguette unless they also gain the ability to mime, but they can use it to make food.
Bread.Battle.mp4
Watch me here struggle to use them to kill an ape (they don't return to your hands if thrown at an adjacent tile).
It's insane that croissants aren't already in the game. This gives mimes an "invisible" sword to go with their invisible gun (it announces to everyone nearby when you're about to use it, but they can't know if it's just a regular baguette). It's funny to throw bread at people.
🆑 add: You can now bake croissants to add to your breakfast. add: Traitorous chefs can bake dangerous throwing croissants, Mimes can do this and gain the additional benefit of a deadly combat baguette. /🆑