Skip to content

Latest commit

 

History

History
563 lines (421 loc) · 30.3 KB

2020-11-26.md

File metadata and controls

563 lines (421 loc) · 30.3 KB

< 2020-11-26 >

2,549,620 events, 1,316,524 push events, 2,024,290 commit messages, 133,422,238 characters

Thursday 2020-11-26 00:03:48 by Ben Dornis

Updating: 11/26/2020 12:00:00 AM

  1. Added: Recruiting and Hiring Software Engineers (https://www.karllhughes.com/posts/hiring-process)
  2. Added: Exit Feeds, Enter Community (https://ianvanagas.com/2020/11/24/exit-feeds-enter-community/)
  3. Added: Magnetic USB-cable mod for Ultimate Hacking Keyboard (https://utveckla.re/post/ultimate-hacking-keyboard-magnetic-cable-mod/)
  4. Added: Monorepo? Think Twice (https://blog.tawhidhannan.co.uk/build-systems/monorepo-think-twice/)
  5. Added: I wrote a script in 4 hours that will save my hospital $40,000 every year for the next 10 years (https://joshcase.dev/articles/i-wrote-a-script-in-4-hours-that-will-save-my-hospital-40k-every-year)
  6. Added: Herding Code 243: Shawn Wildermuth on his new film, Hello World (https://herdingcode.com/herding-code-243-shawn-wildermuth-on-his-new-film-hello-world/)
  7. Added: Reasons why SELECT * is bad for SQL performance - Tanel Poder Consulting (https://tanelpoder.com/posts/reasons-why-select-star-is-bad-for-sql-performance/)
  8. Added: From Laptop to Rack Mount Server (https://blog.avojak.com/2020/11/25/diy-rack-mount-server/)
  9. Added: Be Thankful for Open Source This Year! Try an Alternative OS (https://abqexpert.com/2020/11/25/be-thankful-for-open-source-this-year-try-an-alternative-os/)
  10. Added: My brother’s hamster | Jesse Li (https://blog.jse.li/posts/peach/)
  11. Added: An opinionated list of best practices for textual websites (https://seirdy.one/2020/11/23/website-best-practices.html)

Generation took: 00:03:38.0025905


Thursday 2020-11-26 01:12:35 by Robson Basha

Deez fucking balls i hate you

god fucking damn it


Thursday 2020-11-26 01:25:28 by ahyder2

Added fields to scrape and displayed them

Used the NumPy library to solve the error from before. Most likely will not really use it in the future as the Pandas library will be used for data anamysis. here is my output.

Enter subreddit to scrape: VALORANT {'post_title': ["The coolest Cypher cam you'll never use", 'Icebox cam for B and to watch rotates', 'C9 Relyks explains the run and gun accuracy problem/deadzone', 'Haven boost spot to use when feeling sneaky', 'Rank allocation has shifted? 50% of players are now in Iron and Bronze apparently.'], 'post_body': ['', '', '', '', "So a friend of mine drew my attention to this the other day: https://www.valking.gg/ranked-distribution\n\nThe current rank distribution is now heavily stacked towards the lowest ranks with roughly 70 percent of the playerbase in Silver or below. Iron is now the biggest bracket.\n\nThis surprised me because I specifically remember looking at the rank allocation a couple months ago and Gold used to be by far the biggest bracket. Or am I going crazy? \n\nEdit: For reference someone posted this distribution from August 2020.\n\nIt seems like there's has been a shift but I'm not sure when it happened. And I feel like this would also explain why a lot of people are reporting to have deranked hard in this new act and are now struggling in high Bronze or low Silver when previously they were entrenched in Gold.\n\nThoughts?"], 'comment_num': [35, 24, 26, 94, 343], 'karma': [2235, 1835, 244, 6436, 976], 'link': ['https://v.redd.it/hgbc0o0knf161', 'https://v.redd.it/kbzuhfs0le161', 'https://www.youtube.com/watch?v=q7GICZIU-_0', 'https://v.redd.it/lm6zkdsvxa161', 'https://www.reddit.com/r/VALORANT/comments/k0p1xc/rank_allocation_has_shifted_50_of_players_are_now/'], 'post_date': [1606359802.0, 1606346319.0, 1606366224.0, 1606302908.0, 1606325254.0]}


Thursday 2020-11-26 03:49:27 by binex-dsk

even more progress on the file format

Did a lot of stuff to fix bugs on it yeah For the most part, this is actually a sort of functioning release, but theres some bugs:

  • Sometimes, authentication may fail despite the password being correct, but when the database is recreated with the same IV and UUID it works??
  • Putting no name or no description when creating causes segmentation faults

Now some shit I did

  • Reorganized constants, suppressed an error, and put more stuff there
  • Removed a few encryption options. These seem to be incompatible with my implementation
  • Replaced pdpp handlers with a full database class:
  • This class provides extremely easy interfacing between the application and database
  • Also, it's cleaner, and stores all its own variables, making encryption, decryption, saving, etc. much easier (no casts required!)
  • Changed Skein-512(256)'s personalization string to be the IV
  • Completely fixed the conversion helper!
  • Fixed compression, decompression, etc. and encryption so the databases are pretty small now
  • Cleaner file parsing
  • Reorganized and cleaned up includes
  • Multiple functions now directly address the database's data rather than having another function do it for them
  • Encryption automatically uses the database's metadata and config
  • Replaced path addressing with database addressing
  • Cleaned up statement list stuff
  • Some smaller bug fixes I probably forgot to mention

this is quite a bit of shit isnt it?

PLANNED SCHEDULE:

  • Fix all known bugs
  • Add key files
  • Create header documentation
  • Experiment with different hash/checksum/encryption/deriv functions to see if any work
  • Icons
  • Entropy checker
  • On-the-fly database configuration
  • Implement more stuff into the "edit" menu
  • Try and get Extended ASCII or other unicode chars to work
  • Create a better, more streamlined interface, like a table for the list view
  • Open up entry info in the same window as the entry list
  • Complete GUI
  • User-input attributes

Some extra stuff to maybe do:

  • CLI application
  • KeePass* format integration if I can find docs for their headers and shit
  • Create a new format(s)
  • Users/Groups
  • Switch from SQLite to a better format more suited for things like this (XML, JSON, fucking HTML idk)
  • Encrypt the passwords in some way in the database so they usually aren't ever stored in plaintext in memory

wow i just wrote that


Thursday 2020-11-26 06:31:17 by Badhad

Adventurer Bots & More (#591)

  • Rename .java to .kt

  • Adventurer Bots & More!!!

  • Fix item drop bug thing.

  • Adds Adventurer bots to the world w/@Ceikry!

  • Fixes cluescroll crash when digging in wilderness.

  • Fixed Lecterns with Animations and correct delays & a spellbook check w/@Ceikry

  • Tuned SharkCatcher and LobsterCatcher bots.development

  • Updated CombatBotAssembler to make more equipment available to bots.development

  • Fixed weird Void Knight spawn inside a table.

  • Added the ability to use Armour Stands to repair barrows armour at a discount @Ceikry!!

  • Final tuning for Pest Control bots to further improve performance.

  • Updated ScriptAPI to accomadate new fish used by GDK bots.

  • Removed UKNOWN items from drop tables.

  • Adventurer Bots & More
  • Fixed construction related crashes by removing doors in POH for now.

  • Fixed Adventurer bots to handle weird scenarios better and fine tuned their code.

  • Fixed clue scrolls to actually function instead of being trash.

  • Added some interfaces to the list in 530_interface_names.txt .

  • Adjusted some bot gear and levels to be more realistic examples of normal players.

  • Adventure Bots Fix!
  • Fixes permanent idle bugs and multiple other ones, they now run flawlessly even after 5 hours with 1000 spawned. (Only 150 on live server)
  • Fishing Spot Fixes
  • Added 99.9% of missing fishing spots.

  • Fixed multiple fishing spots that had 3+ npc's spawned on them.

  • Fixed multiple NPC's spawned on water or in an object.

  • Added missing fishing spots!

  • Fixed things Git Comments related

  • Fixed Random Typo

  • For ArdTheSheep <3
  • Rename .java to .kt

  • Barrows Rework

  • Fix chest rewards.
  • Isafdar Expansion
  • Many things have been fixed and added to Isafdar!

  • Elfs have setup camp with a loom in Northwestern Isafdar guarded by Elf Warriors and Archers.

  • Multiple NPC Spawns have been fixed!

  • Adamantite ore rocks have been added in their correct amount.

  • Limestone ore rocks have been changed to their appropriate amounts as they were in 2009.

  • All fishing spots have been added around Isafdar including fixes to existing ones!

  • Added Magic trees around Isafdar where they should be!

  • Hunter creature Pawya added, requiring level 66 hunter and a box trap, yields 400 Hunter Experience!!!

  • Hunter creature Grenwall added, requiring level 77 hunter and a box trap, yields 726 Hunter Experience!!!

Co-authored-by: Sir Kermit [email protected]


Thursday 2020-11-26 07:34:30 by Mordecai Malignatus

Feat(emacs/python): Roll back to elpy.

Fuck LSP holy shit


Thursday 2020-11-26 12:43:04 by bardinatavern4

FUCKING BREAD HOLY SHIT GODDAMIT

The last few versions of the PR this commit is in kept failing the sanity test because bread wouldn't fit in the radiopack. Bread is a normal sized item and thus wouldn't fit in the radiopack.


Thursday 2020-11-26 17:09:57 by goosecoid

feat: add group member attribute

Hi, I saw your nice simple little library for LDAP authentication and started to play around with it. Nice work! I was particularly interested in extracting group information and saw that your example for the forumsys LDAP server wasn't working properly. I looked at the code and saw that the search you do is based on the object class and member attributes, but this last attribute should be uniqueMember for forumsys. So I thought of adding a groupMemberAttribute option. Then, when passing the groupClass option as groupOfUniqueNames and groupMemberAttribute as uniqueMember it finds the group information correctly. Sorry if you find this an unnecessary change, but at least it will make it clear to other users why it won't find group information based on your example? Anyways, glad to hear your thoughts and have a nice evening.


Thursday 2020-11-26 17:52:04 by Marko Grdinić

"9:40am. I went to bed 'early' tonight so I slept well. Let me watch some PF vids. Yesterday I recruited Octavia and she is a Rogue/Wizard so I am not sure how to build her. Plus I get the sense that I am playing suboptimally. I picked a Diviner specialist, but I only seem to be casting Grease and Web.

Let me chill a bit and then I will start.

10:45am. Let me start.

Yeah, I've slacked a lot in the morning. Maybe I should just skip the morning session and move to breakfast. Let me do that. I'll have an extended afternoon session in place of that.

Though I've said I would start work on the prepass yesterday, I haven't put any thought into what the specific steps should be, so I am not clear at what I should do at the moment.

1:30pm. Let me do the chores.

2pm. Let me finally start for the day.

Today, I seem to be crazy about wizards again. Well, it is not just wizards - about the Pathfinder Kingmaker game in general.

I am actually not that used to thinking so much in depth about games. As a kid my usual flow was to go through them without using my brain too much. So right now I am going through a system shock since I am trying to play them properly.

Let me leave the thoughts of the game aside. For today, for the next 4h I doubt I'll do much programming, but what I should do is form my goals and do some planning on how to complete the compilation pipeline.

Right now I can do cross module and cross package typechecking - a great feat, but I still cannot compile. Until Spiral can produce working code, it will be nothing more than a toy.

2:15pm. I am still hooked on it.

This just goes to show that the only danger to my work is not the games themselves.

I can pry myself off a game, but prying my mind off it can take more work.

2:20pm. Ok, first of all, what happens to those filled tops?

type InferResult = {
    filled_top : FilledTop Hopac.Promise
    top_env_additions : TopEnv AdditionType
    offset : int
    hovers : RString []
    errors : RString list
    }

They are in infer result.

2:35pm. My focus is in the dumps.

You know what, let me turn off the computer for a while. It is clear I cannot pry myself off Pathfinder even though I am not even playing the game right now.

In bed I am going to focus my mind on just the prepass for a while and then hopefully accomplish something.

Today is kind of like a vacation after hitting a milestone it seems.

6:25pm. Done with lunch.

Since the last entry it took me a few hours to still my mind and then I managed to get some planning done.

Let me start with what I do not want to do. First let me note the compiling the prepass has a lot of similarity with typechecking.

I have to do deal with packages and modules, and I have to deal with memoizing past results.

So the first instinct would be to mirror the typechecking process.

let typechecker package_id module_id top_env =
    let rec run old_results env i (bss : Bundle list) =
        match bss with
        | b :: bs ->
            match PersistentVector.tryNth i old_results with
            | Some (b', _, env as s) when b = b' -> Cons(s,Promise(run old_results env (i+1) bs))
            | _ ->
                let rec loop old_results env i = function
                    | b :: bs ->
                        let x = Infer.infer package_id module_id env (bundle_top b)
                        let adds = match x.top_env_additions with AOpen x | AInclude x -> x
                        let _,_,env as s = b,x,Infer.union adds env
                        Cons(s,promise_thunk (fun () -> loop old_results env (i+1) bs))
                    | [] -> Nil
                loop old_results env i bss
        | [] -> Nil
    let rec loop r =
        {new TypecheckerStream with
            member _.Run(res) =
                let r = r()
                let r' =
                    r >>=* fun old_results ->
                    top_env >>= fun top_env ->
                    res >>- fun res ->
                    run (cons_fulfilled old_results) top_env 0 res.bundles
                let a = Stream.mapFun (fun (_,x,_) -> x) r'
                a, loop (fun () -> if Promise.Now.isFulfilled r' then r' else r)
            }
    loop (fun () -> Stream.nil)

The issue is that I'd have to start with expanding the typechecker and then the other streams. Doing the prepass in tandem with typechecking would explode the complexity of all these functions and to be honest, I am at my limit here.

I can't take any more complexity in these.

Instead what I will do is gather all the package file hierarchies and the map of InferResults and do the prepass as a separate pass.

6:35pm. It is just too much of a burden for me to do anything in any of the other passes anymore. I do not want conflicting goals.

Actually, to start things off, I am going to do it even simpler. I'll forget about doing the prepass concurrently and I'll forget about fetching the InferResult streams. I'll also ignore the needs of memoization - I'll leave weaving the prepass compilation into a stream of promises for later.

Instead I will start a function that takes in a fully manifested data, without any streams or promises, and make that work. That will be my goal.

Then after that I should just optimize this for the needs of concurrency and memoization. I'll take it apart and put the pieces in the proper place.

6:40pm. I am going to try to get something done tomorrow. Today I got too obsessed with Pathfinder mechanics.

In general, I have enough discipline to keep myself from playing games or watching anime during the workday, but if my mind gets really fired up about something, I can't outright force it to go where it should.

Programming is directing my creative urges, and those can get hijacked.

Today I am going to do a gaming session, but if this happens tomorrow as well, I'll just stay in bed the whole day until my subconscious falls into line. Let me have some fun here.

This happened in part because I just slept so well tonight. I was so relaxed and all the tension drained out of me. I need a little bit of stress to work properly. Now that I have a clear goal regarding the prepass things should go more smoothly. It is hard to be motivated about something if you do not know exactly what those exact steps are."


Thursday 2020-11-26 18:18:26 by PaulZC

Moving the four SMA edge connectors into their own device set. See Description

I've moved the four SMA edge connectors into their own device set as it didn't seem to make much sense to have them wrapped up with the trace antennas. The main change is that the two SMD variants now have document layer helper text showing where a power layer cutout polygon should be located. Now then, the trouble is, for reasons I don't fully understand, you can't do a simple replace to change to the new footprint. The library throws an error which I can't seem to get rid of. On the Asset Tracker I had to delete my two connectors and add them back in as new ones... Sorry about that. Apologies for the inconvenience! (Don't hate me!)


Thursday 2020-11-26 18:35:25 by spxctreofficial

Beta-1.4 Main Changes

(IMPORTANT) Dropping support for 1.16.2 and 1.16.3. You must update to the latest version of Fabric Loader and Fabric API! (ALSO IMPORTANT) One new feature overwrites an entire method related to the Riptide Enchantment. It is recommended to disable any mods that may make changes to the Riptide Enchantment has it might break both mods.

Changes

<New Stuff>
- New set: Aecoron (derives from the word "aecor", meaning "ocean" in Latin)
    - Aecoron crafted by smelting Prismarine Shards / Crystals
    - Aecoron Ingots crafted by combining Aecoron and Metal Alloy in a Smithing Table
    - 80% max durability of diamond (1248 for tools, 26 durability multiplier for armor)
    - Armor:
        - Same armor points as diamond.
        - Same toughness as diamond.
        - Same enchantability as iron (9).
        - Repaired with Aecoron Ingots.
        - Aecoron Set Bonus:
            - You swim significantly faster (up to Dolphin's Grace levels)
            - Infinite water breathing when in water.
            - Holding a trident now grants you Strength I.
            - Throwing a trident now deals 14 damage.
            - Riptide Buffs:
                - Riptide now throws you 2.5 times further and has a faster cooldown.
                - Riptide now deals 15 damage on impact.
                - You are INVULNERABLE during riptide.
                - Launching with Riptide will break your fall.
                - After launching with Riptide, you swim EVEN FASTER for 5 seconds.
            - Loyalty Buffs:
                - Loyalty now returns to you 3 times faster.
            - Siren's Rest:
                - This unique ability allows you to heal and regain hunger by "meditating" underwater.
                - After meditating, you gain Regeneration I, Resistance I, Speed I, and Absorption X for the next 5 minutes.
                - You are invulnerable to damage during meditation.
                - You cannot move during meditation.
    - Tools:
        - Same overall stats as Diamond.
        - Suffer no mining speed penalty when touching water.
    - Trident Mold:
        - Tridents can now be crafted with trident molds.
        - A trident mold will still require an existing trident to be created.
        - A trident mold has three uses before being destroyed.
            - The state of the mold will be displayed as a condition: New, Damaged, and Shattered.
- New set of tools: Netherrack Tools!
    - Mining level of 1 (same as stone).
    - Mining speed of 3f.
    - Durability of 72.
    - Attacking a player who is lit on fire with a netherrack tool will extend the burning time for 50% longer.
- New item: fireballs!
    - Fireballs currently have the same texture as Fire Charges.
    - Stackable up to 3!
    - When right-clicked, fireballs will launch a giant ghast fireball that deals 6 damage on direct contact, and explosion damage if not direct.
    - This item/concept was inspired by the Fireball in Hypixel's Bedwars.
    - Crafted by combining fire charges with gunpowder.
- New item: Smart Pearls!
    - Smart Pearls work just like ender pearls, but have some benefits over normal Ender Pearls!
    - Smart Pearls do not deal damage to the user on teleport.
    - Smart Pearls *does* deal damage to any entities that are hit by the Smart Pearl. Deals 3 damage on impact.
    - Smart Pearls never spawn endermites.
    - Smart Pearls have 1/4 the cooldown compared to normal Ender Pearls.
    - Stackable up to 16.
    - Smart Pearls have a distinct particle when the user teleports, to differentiate it from normal Ender Pearls.
    - Smart Pearls have a unique sound effect when the user teleports, to differentiate it from normal Ender Pearls.
    - This item was inspired by the Smart Pearl in Hypixel's Skywars, but I highly doubt the concept is the same as Hypixel's implementation of this item.
    - Crafted by using ender pearls surrounding a piece of lapis lazuli. Crafted in batches of 2.
- Added a new food item: Golden Heads (aka G-Heads)!
    - Continuing down the Hypixel copy-train, we have created the Golden Head from Hypixel UHC Meet-ups.
        - Food stats identical to Golden Apple:
            - Regeneration II for 5 seconds
            - Absorption I for 2 minutes.
            - 4 hunger points and 9.6 saturation points restored.
    - Like Hypixel's G-Heads, they are consumed instantly.
    - To prevent from accidently eating multiple G-heads, as well as for the sake of balance, we've put a 3-second delay on repeated-head-eating. ;)
    - They are crafted with golden ingots surrounding a player head, similar to Hypixel's G-Head.
    - Players now have a 50% chance to drop their own head when they die.
- YEAY
- NEW ENCHANTMENT: Harvester
    - Harvester is a new enchantment specific to hoes.
        - Harvester increases harvest amount of crops.
            - Beetroot crops now drop 4 to 10 beetroots when harvested.
            - Potato crops now drop an ADDITIONAL 5 to 12 potatoes when harvested. (You're welcome Technoblade)
            - Carrot crops now drop an ADDITIONAL 7 to 15 carrots when harvested.
            - Wheat crops now drops 3 to 7 wheat when harvested.
            - Haybales now have a 50% chance to duplicate themselves when harvested.
    - Harvester can be obtained with an enchantment table with a level-15 enchantment or better.
    - Harvester is mutually exclusive with the Fortune enchantment.
- Two new advancements in-game!

<Etherium Set Buffs>
 - New item: Godslayer (Etherium Perk)
    - Godslayer perk only works if the user equips a full set of Etherium armor.
    - On use, the user is granted temporary maximum enrage.
    - Cooldown for 45 seconds.
 - New mechanic: Relentless Warrior
    - When you are fully enraged, your sword will disable the opponent's shield and deal 125 durability to your opponent's shield.
    - You disable your opponent's shield for twenty seconds instead of ten, and deal full damage towards your opponent.

<Better Spawning!>
- Skeletons can now spawn equipped with swords and axes.
- There are now different types (classes) of zombies!
    - In hard mode, zombies will always spawn with a class, with a 7.5% chance to spawn with a hard-mode class.
        - These zombies have a lowered chance to drop their hard-mode-only gear (2.5% chance instead of 8.5%).
        - Hard Classes:
            - Furious Zombie:
                - Netherite Sword with Sharpness 4
                - Iron Chestplate
                - Strength III
            - Berserker Zombie:
                - Iron Axe with Sharpness 5
                - Diamond Helmet and Iron Chestplate
            - Scout Zombie:
                - Speed IV
                - Always able to pick up loot
            - Tank Zombie:
                - Enchanted Diamond Sword with Sharpness I - IV
                - 3/4 Diamond Set (diamond helmet is excluded)
                - Shield with Unbreaking III (cosmetic only)
                - Resistance I
    - In normal mode, zombies will have a 50% chance of spawning with a normal zombie class.
        - Normal Classes:
            - Warrior Zombies:
                - Warrior Zombie ~
                    - Iron Helmet and Chestplate
                    - Stone Sword
                - Weak Warrior Zombie ~
                    - Leather Helmet
                    - Wooden Sword
            - Sword Zombies:
                - Weak ~ Golden Sword
                - Simple ~ Bronze Sword
                - Generic ~ Iron Sword
                - Strong ~ Alloy Sword
            - Shovel Zombies:
                - Generic ~ Iron Shovel
            - Axe Zombies:
                - Simple ~ Bronze Axe
                - Generic ~ Iron Axe
            - Nitwit Zombie:
                - Metal Alloy in off-hand
    - In easy mode, the chances of spawning with a weapon is the same as vanilla.
    - The point of this change was to make normal zombies a more annoying-to-deal-with mob, than just a mere punching bag. Now, you're forced to deal with large groups of zombies with more skill required, than just slaying them in one hit with your smite 5 netherite sword.

<Fixes>
- Fixed shields not being able to be crafted with metal alloy.
- Etherium armor now has a unique equip sound effect and a unique set bonus activation sound effect.
- Etherium sword retextured.
- Removed irrelevant recipes JSONs.

<Easter Egg?>
- A easter egg ;)

<Technical Stuff>
    - Maven publication has been officially removed since no one uses it anyways and it's kind of redundant.
    - ModRegistry has been refactored to ECRegistry.
    - Project was updated to JDK 15.0.1.
    - JIJ for Fabric-ASM.
    - Fixed all capitalization to match Java's official capitalization. (Thanks... YTG123 ;[           i cry)

Thursday 2020-11-26 21:27:47 by Marcus L. Jensen

Doing some experimentation with matrixes

Terrible idea to experiment before everything works but fuck you.

<3


Thursday 2020-11-26 23:07:54 by Niklas Fasching

cli: Improve dependency update. Disable GOPROXY so updates actually work

Those monkeys maintaining go decided that go get (1.13+) goes through their proxies and doesn't look at the actual fucking repositories of the packages you're depending on. So you only end up seeing new versions of your dependencies when their fucking proxy gets around to fetching them. I was going insane wondering what part of MY setup is fucked up leading go get -u ./... to not see the latest commits i pushed to goheadless. But sometimes select really is broken [1]. FUCK.

While we're at it let's get rid of go.sum - right now the diff is just noise - we can add it back later when we reach some kind of stable.

Finding docs on this wasn't easy. In the end, the release notes [2] of 1.13 show the way out:

go env -w GOPROXY=direct
go env -w GOSUMDB=off

To be clear, I'm sure they have their reasons and there's probably significant benefits to using goproxy. I'd have liked this to be more obvious though - and maybe have a --force flag when I know better than their proxy.

[1] https://blog.codinghorror.com/the-first-rule-of-programming-its-always-your-fault/ [2] https://golang.org/doc/go1.13


< 2020-11-26 >