Skip to content

Latest commit

 

History

History
1101 lines (787 loc) · 70.6 KB

2020-04-03.md

File metadata and controls

1101 lines (787 loc) · 70.6 KB

< 2020-04-03 >

2,399,086 events, 1,218,285 push events, 1,927,297 commit messages, 153,064,265 characters

Friday 2020-04-03 00:09:59 by ncdulo

Implement basic factory/provider pattern

This one has been a long time in the making, finally making progress minus a few delays. Having begun to feel some growing pains in word_tools as I began to expand the test suite, and look into adding new functionality, I figured there must be a better way. A more maintainable, and sensisble way. Enter the object factory.

The pattern, as implemented here, provides LookupProvider and TransformProvider interfaces which are used as the base for classes such as UrbanProvider or StoopidProvider. Our interface provides a blueprint of what each derived provider must be able to do, but does not define how. Put another way, the basic providers define empty abstract methods which must be overriden by the class derived from the base provider.

During initialization of the main word_tools module, we register each provider into a dictionary where keys are the provider names, and values are the provider object themselves. Each provider is implemented as a singleton, therefore only one instance of it may exist at any given time. Individual providers may be 'grabbed' with an expression such as:

stoopid = word_tools.transform.get('stoopid') urban = word_tools.lookup.get('urbandictionary')

Which will look for the derived provider stored in the object_factory.providers dictionary. If a match is found, return an instance of the class. The returned object may be used according to the interface definied in LookupProvider or TransformProvider. Which brings up another point, this decouples us from knowing which specific provider we are working with until runtime. Each provider type maintains it's own interface, and derived providers must implement it. How it works, does not matter. That it's public interface is guaranteed to match other providers, does matter.

In essence, this is the beginning of a mostly full re-write of word_tools. Allowing us greater room to grow, and expand over time. And providing us with more maintainable code, that repeats itself less. It's been a hell of a lot of work setting this initial state up. Have been quite a few scrapped beginnings and git resets along the way. I'm glad to have reached a point where I feel comfortable committing this to our history.

Remaining work will include adapting our tests, and CLI to utilize the new system of providers. I am planning as part of the CLI integration, to do away with our original entry-point system. Further details on that will be in a yet to be written issue. Issue is inbound shortly though.

Note that for now, I am leaving Wikipedia out of the picture. That provider will require writing it over from the beginning. Rather than directly processing the results ourself, we should be using the wikipedia module as it provides a proper API. And will be much easier to work with, and to have functional tests for. Further details on that are filed under Issue #2.

Whew. One hell of a commit message. If you read this entirely, thank you. I don't expect most to though. When I come back in another year, wondering what the hell I was thinking -- this will be my saving grace.


Friday 2020-04-03 02:40:07 by Clark

i didn't fucking break combat i just deleted it cause it was funny

it was YOUR fault idiot


Friday 2020-04-03 03:05:24 by WikiOKiwi

Renew the part of A&M Literatures

Acupuncture and moxibustion literatures In ancient China, acupuncture and Moxibustion were common therapeutic practice that were used to cure human diseases and save their lives. After thousands of years of development, ancient Chinese physicians have left valuable literature and experience for future generations, such as Huangdi Nei Jing Ling Shu, Zhenjiu Jiayi Jing and Huangdi Ming Tang Moxibustion Classic. Compared with Su Wen, Lingshu has a more detailed record on the theory of meridian acupoints and acupuncture methods. The discussion of acupuncture methods in Linshu not only emphasizes the importance of keeping one's spirit and waiting for breath during the treatment but also mentions a series of acupuncture techniques. It also introduces the contribution of different needles, acupuncture site choosing, and contraindications of manipulation. Meanwhile, it mentions the relationship between acupuncture and the four seasons was the case ("灵枢经," 2009)1</sup/>. It has laid a strong foundation for the development of acupuncture in later generations. Zhen Jiu Jia Yi Jing was written by Huang Fu Mi who lived in the Western Jin Dynasty (266-316). It consists of 12 volumes and 128 articles. It describes the fundamental medicine theory in the previous six volumes and records the clinical treatment of various diseases including etiology, pathogenesis, symptoms, diagnosis, acupoint selection, treatment methods and prognosis in the last volumes. Besides, Zhen Jiu Jia Yi Jing not only defines the relationship between meridians and Zang Fu Organs but also locates 348 acupoints by different parts and channel system. In China, Zhen Jiu Jia Yi Jing is the earliest monograph of acupuncture which correlates the theory with the practice, and effects acupuncture therapy deeply until now. In Asia wide, Zhen Jiu Jia Yi Jing has been spread to Japan and Korea, bringing obvious influence on acupuncture academics and education in both countries. Huangdi Ming Tang Moxibustion Classic is a single volume edition which was published in the late Northern Song Dynasty in 1127AD. According to the Fan et al. (2009)2</sup/>, the best source of this book records the moxibustion treatment methods and experience of the main points commonly used by adults and children, meanwhile, it paints more than 40 adults and children's figure drawings which include locations of the points and description from the front, side and back. As this book details the treatment methods and clinical operations of moxibustion, it has been cited by most medical classics since the Ming Dynasty until now.


Friday 2020-04-03 03:40:47 by Leo

I am to fucking tired to remember. Oh yeah game music


Friday 2020-04-03 03:46:51 by Ryll Ryll

Adds a minimum drinking/smoking age (#49990)

About The Pull Request

NT is finally cracking down on underage drinking and smoking on its stations, and you must now be at least 20 years old in order to purchase alcohol or tobacco at vendors. Underage ID's will be visible as such when shown or inspected. Bartenders below the age have discreetly had their IDs modified to be the minimum age, though if anyone cross references the station datacore records, they'll be exposed!

dreamseeker_2020-03-31_05-04-22.png

You can adjust the registered age for an ID at the HoP's console, the same way you would adjust the registered name. You can also pulse the age restriction wire on vending machines to disable the age checking system if you want to hack the system. I chose 20 as the legal limit because I don't care to listen to people fighting about 21 vs 18 and America vs the world, and it still will affect a decent amount of people I figure.

2020-03-15_21-40-54.png Why It's Good For The Game

Makes age a teeny bit relevant, you can now more easily identify and bully 17 year old Heads of Staff. Changelog

🆑 Ryll/Shaps add: Due to pressure from various organizations, Nanotrasen is implementing a new ban on the purchase of alcohol and tobacco products for crewmembers under the age of 20 onboard its Spinward space stations. Please remember that providing alcohol or tobacco products to underage crewmembers is against Space Law, and remember to check those cards bartenders! add: Standard Nanotrasen IDs now display the registered age of the holder, which you can change at the HoP's access console. /🆑


Friday 2020-04-03 03:56:30 by ArcaneMusic

A bold new era of hydroponics (Large department rework/update) (#50001)

Shoutout to skog for helping me fine tune a lot of the ideas for this as well as convincing me to do it anyway. Feel free to send me your adoration and glory (once this is actually balanced and tested out so I can work out the like 1000 little runtimes and bugs this will surely have.) About The Pull Request

Lets Start with everything that DIDN'T change. Plants still have all their unique qualities. That includes chems, traits, all that good stuff. Plant stats have been unchanged, with an exception I'll bring up later.

Cool. Onto everything else. Changes to hydroponics trays.

Trays now have a new feature that visually you may be very familiar with. By Ctrl Clicking a tray, it activates Autogrow. Autogrow uses a HEAVY amount of power per tray, but in return it automatically maintains the plant contained within, limited nutrient loss, adding a gradual amount of water per process, and keeps pests and weeds at bay. Ideally you would only be using this on high maintenance plants, or if you need to leave your department for a few minutes. Having all your trays on Autogrow is an excellent way to kill your APC cell in a matter of seconds, even on a robust power setup.

Trays no longer use Nutrient Points. Instead, each tray has an internal reagent holder that basically holds a beaker for your plant's nutrients. In exchange, the tray now determines the gradual stat changes of plants based on nutrients within that nutrient tank. That's right, no more dumping chemicals into the tray to reach 100 potency in a matter of minutes. You can, however, use reagent mixes in order to improve plant stats in a satisfying way. Still, with each tray having a default of 10 reagents maximum in the tank, it places a greater impetus on upgrading trays if want to really get the most of a specific chemical composition.

If you realize you need to change the nutrients in the tank, you can Alt Click to empty the whole tank at once. Seed Changes

All plants now have a new stat, Instability. (It was originally titled stability so I'm changing it here but yes it is now called instability) Contrary to the name, the higher the stability of the plant, the more likely that your plant will see radical changes. Plants with a low stability will not see much difference, but as you go higher and higher you will start seeing the plant automatically mutate with harsher ramifications. At 60 Stability, the plant has a chance to automatically mutate it's species. At 80 Stability, assuming you can prevent the plant from mutating beforehand, the plant has a chance to receive random plant traits similar to strange seeds. That's right! You can now be free from the tyranny of the strange seed market!

Plants are now affected differently by pests and weeds. Instead of outright killing plants, they will instead heavily lower a plant's yield and potency instead. This also allows for plants that have been left for a few minutes to outright die far less than they were before, but at the same time encourage using autogrow when AFK within the department.

When growing a plant however, you have something new to consider. Plants will now pollinate adjacent seeds in trays, which will bleed off adjacent stats to other plants. Primarily, this affects your core stats. like potency, yield, also stability. If you have 2 plant with high and low potency, they'll bleed their stats off into each other as they grow. This allows for interesting mechanical gameplay between nutrient choices, stability, and adjacency. Some plants have naturally high stability that can bleed off of other plants (Corn, Wheat, and Weeds), while others have naturally low stability and can help bring plants back into a maintainable stability threshold if you just want to harvest the plant itself.

Pollination at high levels of stability can also cause the adjacent plants to receive chemical traits from each other. This allows for plants to share chemical traits without having an insane level of control afforded by the DNA manipulator. However, careful manipulation of plant reagents is difficult to do perfectly, and should be done carefully, as well as experimentally.

For a more controlled trait experience however, we have Plant Grafts. Plant grafts are obtained by using the new secateurs, or sheers, that comes with the botanist's default kit. When a plant is ready to harvest, you can cut off a plant graft, which carries several of the plant's stats and qualities with it. When transplanted, you can share the unique traits of several plants into a new host. These traits are mostly the physical traits you're most likely familiar with, like bio-luminescence, slippery skin, liquid contents, the works. You can also store plant grafts if there's a specific trait build you'd like to eventually get to. Since you need to fully grow a plant to graft it, the process of obtaining several unique traits for a plant will result in more types of plants needing to be grown as a result.

Alright, this leads up to what you're probably guessing. DNA manipulator for plants is dead. Even if it's really good, being able to Frankenstein a dozen different plants together without even growing half of them is kinda lame, you have to admit. The new trait and chemical controls are a bit more robust overall to compensate for this.

image Why It's Good For The Game

Chemical dependence hydroponics is dead. Genefreak maxed out stats plants are dead. The Tyranny of Pests and Weeds killing plants for cooperating with the station is dead. Ambrosia Gaia is now no longer the staple plant of hydroponics, as earthblood trays are dead. Plant mutations are now easier to come by, and can be achieved within 2 plant generations assuming you're not crossbreeding and using readily available chems. Chefs, and by extension bartenders, get a wider array of plant's each to work with. Botanists are no longer required to acquire a chem dispenser at shift-start to acquire mutated plants. Crosspollination, mutation, and grafting allows for a more interesting dynamic in improving plant stats, as opposed to just clicking buttons. It also rewards planning and developing system for growing plants. Changelog

🆑 add: Plants can now Cross-Pollinate, via adjacency. This causes plant stats of average into each-other. add: Plants now have a new stat, Instability. Instability allows for gradual mutations to a plant's stats at certain thresholds, and a chance of mutation, or gaining new random traits at even higher thresholds. add: Plants can be grafted when ready to harvest, and grafts can be applied to plants in order to share unique traits, or share stat changes. del: The Plant DNA Manipulator is dead. Long Live the DNA manipulator. tweak: Hydroponics trays now have their own internal beaker for holding chemical reagents. As such, chemical affects on plants are gradual, and slowly alter seed stats over generations. balance: Several chemicals are adjusted to match the new system. Experiment! /🆑


Friday 2020-04-03 03:58:42 by Ryll Ryll

Grenades and projectiles can have shrapnel and embed, all carbons can suffer embeds, some bullets can ricochet, sizable refactor of embedding (#49634)

About The Pull Request

It annoyed me that we have a perfectly good frag grenade item, and a perfectly good shrapnel component, but no crossover episode between the two. This remedies that, and does a lot, lot more.

dreamseeker_2020-03-30_05-01-13.png

dreamseeker_2020-03-30_05-01-26.png

Big points:

Adds new component: pellet_cloud, which can be used by ammo casings, guns, and landmines to spray shrapnel and display aggregate hit messages ("You're hit by 6 buckshot pellets!" vs "You're hit by the buckshot pellet in the X" x6). All gun ammo that shoot multiple pellets now use this component on firing.
Adds stingbangs, premium less-lethal grenades that shoot off lots of stinger pellets, to cargo. Frag grenades are also reworked to have smaller booms, but shoot off lots of shrapnel shards. You can jump on top of these grenades to absorb a portion of the shrapnel to save those around you! There's an achievement for dying this way, called "Look Out, Sir!"
Projectiles can now embed items/shrapnel. Adds .38 DumDum ammo to cargo that does less damage and has negative armor pen, but can embed in people. This is the only ammo that currently embeds.
Bullets can now ricochet off walls, structures, and machinery (harder surfaces are more likely to ricochet). Only standard .38 and Match Grade .38/.357/L6 ammo can ricochet, with Match Grade being much better at ricocheting. You can buy Match Grade .38 from cargo and Match Grade L6 ammo from the nuke uplink, while Match .357 is admin only.
Armor now protects you from harmful embeds, taking the better of the bullet/bomb armor on the affected limb. Armor penetration can modify this of course, and many blunt embeds like stingbangs and DumDum bullets are significantly worse if you have even 1 armor.

Other misc fixes/changes

Refactored the embed element a bunch and fixed it creating new elements for every instance rather than expected bespoke behavior. There are new /obj/item helpers for modifying and adding embedding.
Fixes #49989: Spears can no longer embed in turfs cause their sprite is annoying to me, it's generally harder for most things to embed in turfs
Fixes #49741: New carbon helpers for removing embedded objects
Fixes #46416: Handles embedded objects getting qdel'd or moved while embedded
Renamed the old shrapnel component for RPG loot to MIRV to avoid confusion
Repathed frag grenades from under minibombs to under base grenades, and added explosion vars to base grenades

Why It's Good For The Game

Fixes a bunch of janky design with embeds, adds lots of new avenues for projectile and grenade variety, ricochets and collateral damage are fun! Changelog

🆑 Ryll/Shaps add: Adds stingbangs to cargo (and one in the sec vendor premium), premium less-lethal grenades that shoot off a giant swarm of stingball pellets to help incapacitate swarms of people in tight quarters. You can jump on top of a live one to be a hero and absorb a bunch of shrapnel, same with frag grenades. There's even an achievement for dying to a grenade you jumped on! add: Projectiles can now embed in people! Or at least grenade shrapnel and the new .38 DumDum ammo, now available in cargo, can. DumDum rounds excel against unarmored targets, but are pricey and do poorly against armored targets. add: Bullets can now ricochet! Or at least, standard .38 and the new .38/L6 Match Grade ammo can. Match Grade ammo is finely tuned to ricochet easier and seek targets off bounces better, and can be purchased from cargo (for the .38) or nuke ops uplink (for the L6), but standard .38 ammo has a chance to ricochet as well. tweak: Frag grenades now have smaller explosions but shoot off a bunch of devastating shrapnel, excellent for soft targets! tweak: Shotguns and other multi-pellet guns now print aggregate messages, so you'll get one "You've been hit by 6 buckshot pellets!" rather than 6 "You've been hit by the buckshot pellet in the X!" messages. Bye bye lag! balance: Armor can now protect against embedding weapons, taking the best of either the bullet or bomb armor for the limb in question away from the embed chance. Some weapons are better at piercing armor than others! /🆑


Friday 2020-04-03 04:13:59 by Kazkin

Edition 1

My massive fucking overhaul, first rendition, it isn't done so don't be surprised if you see weird shit and the map doesn't load properly.


Friday 2020-04-03 08:52:11 by Noah Glassford

Its 4:51 in the god damn morning and it fucking works


Friday 2020-04-03 09:23:53 by Charles Lewis Nichols

Fuck hackers

Bitch mDde fuck your Isuzu and your lying lip frodde hoes if you keep being in mine life ever where your gonna except your protending likde me Zeus mistaking making me mix spell ugly during hoe and no ond zcarecz3 of ann wells bitch jail yourself in hell forever exon.


Friday 2020-04-03 09:55:06 by Minty-Meeo

Step 1

Created new Dolphin.ini config values. Created a skeleton of a GUI to configure aeformentioned config values.

Another commit

We are, like, this close.

Backup Commit

The thing works holy shit. Time to push it even further.

Extendo-MEM2 oh my god

yesssssssss

Finish the GUI

Also rollback a no-no change I made to SConfig.

Cleanup

How did those get there...?

Cleanup part 2

checkpoint


Friday 2020-04-03 11:40:50 by Ömer Sinan Ağacan

Fix chaining tagged and untagged ptrs in compacting GC

Currently compacting GC has the invariant that in a chain all fields are tagged the same. However this does not really hold: root pointers are not tagged, so when we thread a root we initialize a chain without a tag. When the pointed objects is evaluated and we have more pointers to it from the heap, we then add tagged fields to the chain (because pointers to it from the heap are tagged), ending up chaining fields with different tags (pointers from roots are NOT tagged, pointers from heap are). This breaks the invariant and as a result compacting GC turns tagged pointers into non-tagged.

This later causes problem in the generated code where we do reads assuming that the pointer is aligned, e.g.

0x7(%rax) -- assumes that pointer is tagged 1

which causes misaligned reads. This caused #17088.

We fix this using the "pointer tagging for large families" patch (#14373, !1742):

  • With the pointer tagging patch the GC can know what the tagged pointer to a CONSTR should be (previously we'd need to know the family size -- large families are always tagged 1, small families are tagged depending on the constructor).

  • Since we now know what the tags should be we no longer need to store the pointer tag in the info table pointers when forming chains in the compacting GC.

As a result we no longer need to tag pointers in chains with 1/2 depending on whether the field points to an info table pointer, or to another field: an info table pointer is always tagged 0, everything else in the chain is tagged 1. The lost tags in pointers can be retrieved by looking at the info table.

Finally, instead of using tag 1 for fields and tag 0 for info table pointers, we use two different tags for fields:

  • 1 for fields that have untagged pointers
  • 2 for fields that have tagged pointers

When unchaining we then look at the pointer to a field, and depending on its tag we either leave a tagged pointer or an untagged pointer in the field.

This allows chaining untagged and tagged fields together in compacting GC.

Fixes #17088

Nofib results

Binaries are smaller because of smaller Compact.c code.

make mode=fast EXTRA_RUNTEST_OPTS="-cachegrind" EXTRA_HC_OPTS="-with-rtsopts=-c" NoFibRuns=1

--------------------------------------------------------------------------------
        Program           Size    Allocs    Instrs     Reads    Writes
--------------------------------------------------------------------------------
             CS          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
            CSD          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
             FS          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
              S          -0.3%      0.0%     +5.4%     +0.8%     +3.9%
             VS          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
            VSD          -0.3%      0.0%     -0.0%     -0.0%     -0.2%
            VSM          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
           anna          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
           ansi          -0.3%      0.0%     +0.1%     +0.0%     +0.0%
           atom          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         awards          -0.2%      0.0%     +0.0%      0.0%     -0.0%
         banner          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
     bernouilli          -0.3%      0.0%     +0.1%     +0.0%     +0.0%
   binary-trees          -0.2%      0.0%     +0.0%      0.0%     +0.0%
          boyer          -0.3%      0.0%     +0.2%     +0.0%     +0.0%
         boyer2          -0.2%      0.0%     +0.2%     +0.1%     +0.0%
           bspt          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
      cacheprof          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
       calendar          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
       cichelli          -0.3%      0.0%     +1.1%     +0.2%     +0.5%
        circsim          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
       clausify          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
  comp_lab_zift          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
       compress          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
      compress2          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
    constraints          -0.3%      0.0%     +0.2%     +0.1%     +0.1%
   cryptarithm1          -0.3%      0.0%     +0.0%     -0.0%      0.0%
   cryptarithm2          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
            cse          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
   digits-of-e1          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
   digits-of-e2          -0.3%      0.0%     +0.0%     +0.0%     -0.0%
         dom-lt          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
          eliza          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
          event          -0.3%      0.0%     +0.1%     +0.0%     -0.0%
    exact-reals          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         exp3_8          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
         expert          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
 fannkuch-redux          -0.3%      0.0%     -0.0%     -0.0%     -0.0%
          fasta          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
            fem          -0.2%      0.0%     +0.1%     +0.0%     +0.0%
            fft          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
           fft2          -0.2%      0.0%     +0.0%     -0.0%     +0.0%
       fibheaps          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
           fish          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
          fluid          -0.2%      0.0%     +0.4%     +0.1%     +0.1%
         fulsom          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         gamteb          -0.2%      0.0%     +0.1%     +0.0%     +0.0%
            gcd          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
    gen_regexps          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         genfft          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
             gg          -0.2%      0.0%     +0.7%     +0.3%     +0.2%
           grep          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         hidden          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
            hpg          -0.2%      0.0%     +0.1%     +0.0%     +0.0%
            ida          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
          infer          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
        integer          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
      integrate          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
   k-nucleotide          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
          kahan          -0.3%      0.0%     -0.0%     -0.0%     -0.0%
        knights          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         lambda          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
     last-piece          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
           lcss          -0.3%      0.0%     +0.0%     +0.0%      0.0%
           life          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
           lift          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         linear          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
      listcompr          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
       listcopy          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
       maillist          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         mandel          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
        mandel2          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
           mate          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
        minimax          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
        mkhprog          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
     multiplier          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         n-body          -0.2%      0.0%     -0.0%     -0.0%     -0.0%
       nucleic2          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
           para          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
      paraffins          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         parser          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
        parstof          -0.2%      0.0%     +0.8%     +0.2%     +0.2%
            pic          -0.2%      0.0%     +0.1%     -0.1%     -0.1%
       pidigits          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
          power          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
         pretty          -0.3%      0.0%     -0.0%     -0.0%     -0.1%
         primes          -0.3%      0.0%     +0.0%     +0.0%     -0.0%
      primetest          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
         prolog          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
         puzzle          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
         queens          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
        reptile          -0.2%      0.0%     +0.2%     +0.1%     +0.0%
reverse-complem          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
        rewrite          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
           rfib          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
            rsa          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
            scc          -0.3%      0.0%     -0.0%     -0.0%     -0.1%
          sched          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
            scs          -0.2%      0.0%     +0.1%     +0.0%     +0.0%
         simple          -0.2%      0.0%     +3.4%     +1.0%     +1.8%
          solid          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
        sorting          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
  spectral-norm          -0.2%      0.0%     -0.0%     -0.0%     -0.0%
         sphere          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
         symalg          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
            tak          -0.3%      0.0%     +0.0%     +0.0%     -0.0%
      transform          -0.2%      0.0%     +0.2%     +0.1%     +0.1%
       treejoin          -0.3%      0.0%     +0.2%     -0.0%     -0.1%
      typecheck          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
        veritas          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
           wang          -0.2%      0.0%     +0.0%     -0.0%     -0.0%
      wave4main          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
   wheel-sieve1          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
   wheel-sieve2          -0.3%      0.0%     +0.0%     -0.0%     -0.0%
           x2n1          -0.3%      0.0%     +0.0%     +0.0%     +0.0%
--------------------------------------------------------------------------------
            Min          -0.3%      0.0%     -0.0%     -0.1%     -0.2%
            Max          -0.1%      0.0%     +5.4%     +1.0%     +3.9%
 Geometric Mean          -0.3%     -0.0%     +0.1%     +0.0%     +0.1%

--------------------------------------------------------------------------------
        Program           Size    Allocs    Instrs     Reads    Writes
--------------------------------------------------------------------------------
        circsim          -0.2%      0.0%     +1.6%     +0.4%     +0.7%
    constraints          -0.3%      0.0%     +4.3%     +1.5%     +2.3%
       fibheaps          -0.3%      0.0%     +3.5%     +1.2%     +1.3%
         fulsom          -0.2%      0.0%     +3.6%     +1.2%     +1.8%
       gc_bench          -0.3%      0.0%     +4.1%     +1.3%     +2.3%
           hash          -0.3%      0.0%     +6.6%     +2.2%     +3.6%
           lcss          -0.3%      0.0%     +0.7%     +0.2%     +0.7%
      mutstore1          -0.3%      0.0%     +4.8%     +1.4%     +2.8%
      mutstore2          -0.3%      0.0%     +3.4%     +1.0%     +1.7%
          power          -0.2%      0.0%     +2.7%     +0.6%     +1.9%
     spellcheck          -0.3%      0.0%     +1.1%     +0.4%     +0.4%
--------------------------------------------------------------------------------
            Min          -0.3%      0.0%     +0.7%     +0.2%     +0.4%
            Max          -0.2%      0.0%     +6.6%     +2.2%     +3.6%
 Geometric Mean          -0.3%     +0.0%     +3.3%     +1.0%     +1.8%

Metric changes

While it sounds ridiculous, this change causes increased allocations in the following tests. We concluded that this change can't cause a difference in allocations and decided to land this patch. Fluctuations in "bytes allocated" metric is tracked in #17686.

Metric Increase: Naperian T10547 T12150 T12234 T12425 T13035 T5837 T6048


Friday 2020-04-03 11:48:57 by Gotmachine

Many changes :

  1. Refactored fatal error handling, moved many checks to the loading screen, implemented a common system for all those checks, removed all the bits that were all over the place in Kerbalism.cs
  2. UI for bug report submitting :
  • from the fatal error handler
  • from the Alt+F12 debug menu
  • this generate a zipped bug report, required the inclusion of the System.IO.Compression classes from the unity mono framework
  1. Refactored config format for profile, settings, features, rules, processes and supply
  • changes to the config format, notably processes inputs/outputs, dump settings
  • mod compatibity checks are now defined in the settings config
  1. config update :
  • removed depreciated parts
  • changed config folder / file organization a bit
  1. VesselData and related classes changes
  • Some classes reorganization
  • Reimplementation of part die events
  • Reorganized vesseldata update handling
  1. Centralized handling of part prefab hacks in a PartPrefabsPostCompilation class
  2. ExperimentModuleDefinition DB creation reworked
  • Specifics handling moved from the experiment module to it
  • Added tech availability list for the Science Archive filter
  1. Many bugfixes and tweaks, I don't remember them all

Todo :

  • Science archive rewiring

Friday 2020-04-03 12:19:07 by Peter Zijlstra

sched/core: Implement new approach to scale select_idle_cpu()

Hackbench recently suffered a bunch of pain, first by commit:

4c77b18cf8b7 ("sched/fair: Make select_idle_cpu() more aggressive")

and then by commit:

c743f0a5c50f ("sched/fair, cpumask: Export for_each_cpu_wrap()")

which fixed a bug in the initial for_each_cpu_wrap() implementation that made select_idle_cpu() even more expensive. The bug was that it would skip over CPUs when bits were consequtive in the bitmask.

This however gave me an idea to fix select_idle_cpu(); where the old scheme was a cliff-edge throttle on idle scanning, this introduces a more gradual approach. Instead of stopping to scan entirely, we limit how many CPUs we scan.

Initial benchmarks show that it mostly recovers hackbench while not hurting anything else, except Mason's schbench, but not as bad as the old thing.

It also appears to recover the tbench high-end, which also suffered like hackbench.

Change-Id: I68dffb73df8a71186b2980e8c47e1c44c193f7a1 Tested-by: Matt Fleming matt@codeblueprint.co.uk Signed-off-by: Peter Zijlstra (Intel) peterz@infradead.org Cc: Chris Mason clm@fb.com Cc: Linus Torvalds torvalds@linux-foundation.org Cc: Mike Galbraith efault@gmx.de Cc: Peter Zijlstra peterz@infradead.org Cc: Thomas Gleixner tglx@linutronix.de Cc: hpa@zytor.com Cc: kitsunyan kitsunyan@inbox.ru Cc: linux-kernel@vger.kernel.org Cc: lvenanci@redhat.com Cc: riel@redhat.com Cc: xiaolong.ye@intel.com Link: http://lkml.kernel.org/r/20170517105350.hk5m4h4jb6dfr65a@hirez.programming.kicks-ass.net Signed-off-by: Ingo Molnar mingo@kernel.org


Friday 2020-04-03 13:03:35 by Troy Prelog

Update Freenas docs (#11585)

  • updated rc.d script

Add extra_commands

check_config - checks config using `hass --script check_config`
upgrade - stops HA / upgrade / checks config / starts HA (only starts if config check passes)
test - simple test to check directories / activate venv / check version of python and homeassistant
restart - (modified) check_config / stop HA /start HA (only restart if config check passes)

NOTE: All extra_commands REQUIRE bash to be installed pkg install bash

I also removed the check_config from the pre_start function because because it will prevent HA from starting if the configuration is missing (Like a clean install from example). NO BUENO!

Another case to consider haveing no configuration even after initial install is troubleshooting or testing. For instance with rc.d script createing a fresh config is simple.

Let's suppose my working config is at /home/hass/homeassistant

Now to get a clean configuration I can just do this service homeassistant stop sysrc sysrc homeassistant_config_dir="/home/hass/ha_test_config" service homeassistant start

That's it! Configuration wise, it's a clean install. To switch back to working config I just service homeassistant stop sysrc sysrc homeassistant_config_dir="/home/hass/homeassistant" service homeassistant start

Awesome right?! But that doesn't work if check_config fails during pre_start

  • add pkgs

These are not required to install HA but they are quickly missed once you start to actual use it. Let's just avoid some fustration from the start. I don't think this list should be all inclusive but these basic things seem to be frequently needed from the start.

autoconf |
gmake    | - looking at you Z-Wave, Stream, IKEA Tradfri
pkgconf  |

bash - Give me bash or give me death! Seriously, it makes life easier. There's not alot of *BSD focus
	around HA. I only use *BSD because of FreeNAS -- Typically (with the exception of jails) FreeNAS is webui.
	I'm ok with Linux cli and it's very similiar to FreeNAS but not the same. It's not bash. I don't think it
	needs to be for the root user either. But having bash installed and used by the HA user makes it easier
	to follow along with exising documentation for other virtualenv type installs when trying to further expand
	your HA installation
  • give me bash or give me death!

Most people won't notice a differene but we'll know in our hearts we did the right thing.

  • fix typo

I'm lucky I can spell my name

  • whitespace

  • use venv

Use the built-in venv instead of virtualenv which must be installed seperate.


Friday 2020-04-03 13:17:41 by Nik Everett

Simplify BucketedSort (#53199)

Our lovely BitArray compactly stores "flags", lazilly growing its underlying storage. It is super useful when you need to store one bit of data for a zillion buckets or a documents or something. Usefully, it defaults to false. But there is a wrinkle! If you ask it whether or not a bit is set but it hasn't grown its underlying storage array "around" that index then it'll throw an ArrayIndexOutOfBoundsException. The per-document use cases tend to show up in order and don't tend to mind this too much. But the use case in aggregations, the per-bucket use case, does. Because buckets are collected out of order all the time.

This changes BitArray so it'll return false if the index is too big for the underlying storage. After all, that index can't have been set or else we would have grown the underlying array. Logically, I believe this makes sense. And it makes my life easy. At the cost of three lines.

but this adds an extra test to every call to get. I think this is likely ok because it is "very close" to an array index lookup that already runs the same test. So I think it'll end up merged with the array bounds check.


Friday 2020-04-03 13:26:25 by Linus Torvalds

MAINTAINERS: fix bad file pattern

Testing 'parse-maintainers' due to the previous commit shows a bad file pattern for the "TI VPE/CAL DRIVERS" entry in the MAINTAINERS file.

There's also a lot of mis-ordered entries, but I'm still a bit nervous about the inevitable and annoying merge problems it would probably cause to fix them up.

The MAINTAINERS file is one of my least favorite files due to being huge and centralized, but fixing it is also horribly painful for that reason.

Signed-off-by: Linus Torvalds torvalds@linux-foundation.org


Friday 2020-04-03 15:31:03 by Mateusz Brawański

Recycle MemoryStream in WebSocketClient (#532)

  • Fix garbled data in voice recieve, and fix UDP ping.

  • Reuse memory stream in socket handler

  • Revert "Fix garbled data in voice recieve, and fix UDP ping."

This reverts commit 1a6f9dbdfed96c170739ae446b44ab8b8375ea6d.

  • fuck you visual studio

Friday 2020-04-03 15:39:04 by bors[bot]

Merge #129

129: Add headless rendering example r=kvark a=chinedufn

Hey!

This PR adds an example of how to headlessly render and save to an image.

I wanted to add this example while it was fresh on my mind because it took me a few hours to figure out how to do it.

This is my first time writing Metal(can't believe I can have my first metal experience with Rust!!) so feel free to point out anything silly that I might have done.

I tried to stay close to the existing samples so hopefully nothing looks too off.

Happy to make any changes that you request - cheers!

Co-authored-by: Chinedu Francis Nwafili frankie.nwafili@gmail.com


Friday 2020-04-03 17:16:37 by Marko Grdinić

"2:15pm. No, there are no samples for ch 1 and 2. I though I saw a folder there earlier, but I was wrong. Makes sense, as those two chapters have no code. Let me go through ch 2 of the book.

2:25pm. There is something that has been bothering me. That BurstFilter function. I am not sure that it really does what was stated. Right now I am trying to reason out how it should be done and am failing. I am not really sure what the exact semantics of Window are.

I kind of want to just sit down and spend a few hours playing with this and playing with testing. It is no good to just read all the time.

But on the other hand, I want to get through the Akka book.

2:30pm. Let me just go with the plan. I'll have plenty of chances to get familiar with FRP later. There is no need to obsess over that right at this very moment.

I'll master all of this in due time.

2:55pm. I am reading the ML sub instead of the book.

https://www.reddit.com/r/MachineLearning/comments/fstugq/d_director_of_customer_analytics_says_i_think/


I think that in the production setting, model ensembling is much more important than, for example, in competitions. Typically people claim that you only use those monster ensembles to win competitions but you will never use it in real life. I say that in real life it is something much more important than in competitions because of a very simple reason that you get a lot of non-stationarity.

Non-stationarity is something common In real life, which you don’t experience in competitions. And in the non-stationary problems having a diverse group of models helps a lot.

We were actually spending a couple of hundred thousand dollars on Amazon every month but we have decided to move from one model to 20 models because the performance improvement was so big.


This is actually really interesting. I've been thinking of doing the same thing for the sake of roboustness with RL.

3pm. https://neptune.ai/blog/interview-with-head-of-ai-pawel-godula?utm_source=reddit&utm_medium=post&utm_campaign=blog-interview-with-head-of-ai-pawel-godula

This is the interview. Let me read it.

...No, nevermind, just this first part is interesting. Let me get back to the book.

Just that quote is a good hint where real life systems will go.

3:15pm. 28/264. The first two chapters were just claptrap, but now thing should heat up.

Programming according to reactive principles is something that should become second nature to me. I agree with the book on that. So this aspect of reactive programming is something that I should get familiar with, even though I won't really need it unless I get to the point where I am having swarms of agents.

3:20pm. Now focus me. I'll give this book - Reactive Applications with Akka.Net the same treatment I gave the Rx.NET one. Let me do just this one thing and then I am done with books and studying. I'll do some programming after that. I'll have to take that approach with ReactiveUI anyway.

3:40pm. 32/264. "This basic example shows how you create an actor using Akka.NET, but you’ll also want to do something with the actor when it receives a message. You can use any type within the Common Language Runtime (CLR) as a message, with the only requirement being that the class must be immutable."

F#'s union types should be especially suitable for this sort of thing. Probably, Akka.NET will have some special F# support to make programming in it nicer.

Let me do a quick search to see how often F# is mentioned. Only 3 times. I guess I can't expect too much from this then.

3:45pm.

class PersonActor : UntypedActor
{
    protected override void OnReceive(object message)
    {
    message.Match()
        .With<VocalGreeting>
        (x => Console.WriteLine("Hello there"));
    }
}

I am not too great of a fan of this. But maybe they'll introduce a typed version of this in the future.

3:55pm. I do not get the way this book is formatted. It feels like it was written in markdown and then carelessly converted into PDF. The headers in places are clearly too small.

var actorRef = actorSystem.ActorOf<GreeterActor("actorA");

The editing job is shoddy. Note he forgot to close the >. I do not need to be reminded on every page how good this is for scalability.

4pm. I am going to pick up the pace. This book is rather light on details despite it being 40 pages in. In contrast the Rx.NET one was engaging from start to finish.

4:10pm. Well, ignoring the formatting issues the book is not too bad.

This distinction allows for more-complex paths to be used in the context of an actor address. An
example of this is the use of wildcards in an actor’s path to select a large number of actors at once.
When actors have been selected, you can send the same message to all actors encompassed by the
wildcard with a single method call. Paths in Akka.NET support two kinds of wildcards in actor
addresses, based on a standard wildcard syntax common to other languages and tools:

This is interesting. I guess I should just accept the dynamic nature of these actor systems.

Even just from this much I understand that Akka provides many additional services over F#'s mailbox processor. I doubt F# has an actual actor system which this thing would need.

4:15pm. 43/264. By using F#'s union types, I can avoid having to match on different types as with that match statement.

I admit that my focus is not that high here. The book is not high on examples I can chew on, so this is more like a survey of features. Unlike Rx, message passing concurrency is rather intuitive much like OO in general (without all the extensions Java/C#/C++ brought in.)

4:20pm. "The actor reference defines a method called Tell, which takes an instance of any type and passes it through the Akka.NET framework. If you’re using F#, a custom operator is defined for sending a message. "

I'll check it out after I am done with the book.

4:25pm. "Actors are designed to completely encapsulate any state, to ensure that nothing outside of the system is capable of mutating it."

I wonder how this is done?

4:40pm. Focus me, stop reading HN threads on Akka.

4:50pm. 51/264. I do not like this too much so I'll be moving to skim mode. This stuff so far has been too primitive. Actors are not really an abstraction on the level I can use it to do various things like reactive extensions are.

5:10pm. Forget the book. Let me just take a look at the docs and then I am done.

https://getakka.net/articles/intro/what-problems-does-actor-model-solve.html

The documentation for this actually seems better than the book.

5:15pm.


The illusion of shared memory on modern computer architectures Programming models of the 80'-90's conceptualize that writing to a variable means writing to a memory location directly (which somewhat muddies the water that local variables might exist only in registers). On modern architectures - if we simplify things a bit - CPUs are writing to cache lines instead of writing to memory directly. Most of these caches are local to the CPU core, that is, writes by one core are not visible by another. In order to make local changes visible to another core, and hence to another thread, the cache line needs to be shipped to the other core's cache.

On the JVM, we have to explicitly denote memory locations to be shared across threads by using volatile markers or Atomic wrappers. Otherwise, we can access them only in a locked section. Why don't we just mark all variables as volatile? Because shipping cache lines across cores is a very costly operation! Doing so would implicitly stall the cores involved from doing additional work, and result in bottlenecks on the cache coherence protocol (the protocol CPUs use to transfer cache lines between main memory and other CPUs). The result is magnitudes of slowdown.

Even for developers aware of this situation, figuring out which memory locations should be marked as volatile, or which atomic structures to use is a dark art.

In summary:

There is no real shared memory anymore, CPU cores pass chunks of data (cache lines) explicitly to each other just as computers on a network do. Inter-CPU communication and network communication have more in common than many realize. Passing messages is the norm now be it across CPUs or networked computers. Instead of hiding the message passing aspect through variables marked as shared or using atomic data structures, a more disciplined and principled approach is to keep state local to a concurrent entity and propagate data or events between concurrent entities explicitly via messages.


From the docs.

5:20pm. "Actors are a fundamental model for concurrency, but there are common patterns where their use requires the user to implement the same pattern over and over. Very common is the scenario where a chain, or graph, of actors, need to process a potentially large, or infinite, stream of sequential events and properly coordinate resource usage so that faster processing stages does not overwhelm slower ones in the chain or graph. Streams provide a higher-level abstraction on top of actors that simplifies writing such processing networks, handling all the fine details in the background and providing a safe, typed, composable programming model. Streams is also an implementation of the Reactive Streams standard which enables integration with all third party implementations of that standard."

This is something I might be interested in.

5:25pm. I saw a mention of streams when studying observables, but I forgot what context it was.

[Edit: It was in the Rx.NET in Action on page 292/337 on mitigating backpressure.

Reactive Streams (www.reactive-streams.org/) tries to provide a controlled lossless approach to observables. As stated on the Reactive Streams website, this initiative provides a standard for asynchronous stream processing with nonblocking backpressure (controlled lossless). This standard extends the Rx model to allow the observer to notify the observable about the load it can take. Reactive Streams is not supported by Rx.NET at the time of this writing. ]

https://www.slideshare.net/BartoszSypytkowski1/from-reactive-extensions-to-reactive-streams

Let me go through these slides. Looking at the standard, streams are similar to reactive extensions, but with some extra stuff in.

5:30pm. He is writing out the types in F#. That is nice of him.

https://www.youtube.com/watch?v=TRLYjp0c_as From Reactive Extensions to Reactive Streams - Bartosz Sypytkowski

Here is the talk by him. Rather than studying actors, this is what I should be studying instead.

Being able to do things at a high level provides the motivation for studying things at the lower ones.

https://getakka.net/articles/streams/introduction.html

Actually, the documentation for Akka is excellent. Why am I even reading that book? This is much unlike Rx.NET where there was very little in the docs.

5:35pm. Let me watch the video on reactive streams. If I learn streams I know I'll be able to use Akka at the high level. I am really not interested in dealing with state machines directly as those will quickly turn into a nightmare.

5:55pm. https://youtu.be/TRLYjp0c_as?t=1323

I've skimmed to the relevant part. At this point I just want to call it a day, but let me study this for a while.

6:10pm. https://youtu.be/TRLYjp0c_as?t=1945

Google failed me. It did not mention Akkling at all when I searched for akka .net F#

https://github.com/Horusiath/Akkling

6:35pm. https://youtu.be/TRLYjp0c_as?t=3344

Here he mentions persistent actors. This might be worth checking out in the future as I'll have to do something to get persistent agents.

7:05pm. Done with lunch and the video. Let me call it a day here.

My conclusion is that streams are too much for me right now in the sense that I do not need them. The same goes for actors. It sounds great to have an extra skill, but I'll leave this part of reactive programming for when I need it.

Standard reactive extensions are enough for me. When I need to use clusters or complicated backpressure mitigation I'll pick this thing up. Right now those extra feature are just burden I do not need.

7:10pm. Tomorrow, I will study ReactiveUI. Finally, its turn comes. It is a shame the book is not digital, but the samples should give me insight. I'll also look into the library itself. I want to get to some level of skill in making UIs.

It is not like I need UI skills at the moment, but this is something that I've wanted to learn for a long time. Since the learning here will generalize to editor support, I will take my fun playing with it.

But for now, let me have some actual non-work related play."


Friday 2020-04-03 19:24:42 by Matthew Scroggs

Merge pull request #4 from mscroggs/fuck-you

Fix wrapped title


Friday 2020-04-03 19:37:33 by Redd

ktl's fixes, actually done because I'm a goddamn idiot

shitcode


Friday 2020-04-03 19:42:23 by Alec Kennedy Walker

The Digital Yearbook

Remember how we used to get our classmates to sign the pages of our physical yearbooks for us?

People would write nice things about each other, make predications about each other's futures, and mention shared experiences to ensure they were recoverable if forgotten. The reason that schools do this is to reinforce the sense of community between people in a way that lasts. Alumni stay in touch better, donate more, and generally think more highly of their schools. Many cherish their old yearbooks and pull them out to look at them from time to time. It was a good practice to reinforce positive culture in a community. Digital transformation has changed this practice, and it never really applied to organizations additional to schools to begin with (can you think of a company that had a yearbook?). I think there's an opportunity to bring it back digitally in a meaningful way within communities generally.

This app allows anyone with a list of email addresses and names to begin a series of chain mails soliciting positive comments from a community. For each participant, the app chooses a community member at random and asks the participant to write something nice about that community member. Whenever anyone elects to write something nice about someone else, the note is shared with the community member (and saved in a master spreadsheet). This community member is then shown the message and is asked to write about someone else at random. Community members can elect to write about someone else whenever they want. The more messages they write, the more likely they are to be selected as the recipient of a comment from someone else. Community members have the option to opt out of the digital yearbook.

This app is built in Google Script (JavaScript) and relies on Google Sheets and Google Forms to function. It also relies on the members of the community to be in a Google Group together so that the form can automatically collect email addresses and prohibit non-members from joining. It is not hard to change the script to enable any type of email address to work (disabling the auto-email collection and security feature), but it will be more difficult to remove it from the Google Sheets and Google Forms that it relies on currently.


Friday 2020-04-03 20:07:01 by 0xADADA

Merge branch 'master' of github.com:0xadada/0xadada.github.io

  • 'master' of github.com:0xadada/0xadada.github.io: 😐 new post @0xADADA My boys are awake, my work day is over. 🙍 new post @JayCarney @SenSanders Did anyone leaving the Obama administration not turn out to be a corporate apparatchiks? 😍 new post @0xADADA https://t.co/cQrgZL5WyL 😐 new post The Relief Package Ushers In Trump's Planned Economy 😨 new post Zoom Zero Day: 4+ Million Webcams & maybe an RCE? Just get them to visit your website! 😲 new post Twitter needs a "mute accounts created this month" option. 🙈 new post Microsoft has a News Tab extension for Chrome (and other Chromium-based browser) users. More than 200K installs, according to the Web Store. In an odd twist, favicons are loaded through Google, rather than from the first party. Wouldn't this leak your top-sites to Google? https://t.co/2ZcqdLouUL 😨 new post @krystalball @shaunking America is a 3rd world country 😥 new post Every person with a social security number should go to the fed, incorporate as a bank, then exchange a sock for a $1200 loan. The fed keeps the sock. The bank doesn’t pay back the loan 😿 new post @djm5000 Fuck the ledgers. 😽 new post Do I get $500 in stimulus money if I'm gonna have a kid in the near future? Or does a fetus not count as a child under official Republican Economic Policy? 🙀 new post Not sure about you guys but I’m loving the extra time I’ve been getting with the woman of my dreams and the tiny people we decided to invent together. 😗 new post I'm a centrist but only radical leftist theories can explain Congress passing a huge corporate bailout today. Dems proved that both parties are captive to the wealthy elite, the kleptocracy. Neither Warren nor Sanders & their supporters could "meet the moment" 1/ 🙌 new post .@AOC: What did the Senate majority fight for? One of the largest corporate bailouts with as few strings as possible in American history. https://t.co/xDS0ShJQoa 😝 new post @0xADADA @NadaRespetable i realized they were seventy when i decided to go for a numbered list. would've never guessed it was a round number. 😲 new post @0xADADA @EvanWilliamsUSA @KingsCoWhiskey https://t.co/w2qsT8XoqT 😣 new post Ya se encuentra online la segunda parte de nuestra traducción de "Contra Facebook" de @0xADADA. spanish pt2 😿 new post Snacking and a snack are two different things. You can snack on things that arent snacks. You can eat snacks but not in a snacking way. 😧 new post almost done w Ys Books I & II n gonna take a break from rpg-style games for a bit n go back to reading an actual book

Friday 2020-04-03 20:56:35 by Karl

FIXED FUCK UP

Sorry boys it seems I fucked up - but attest I stuck around to fix my mistake.


Friday 2020-04-03 22:13:22 by lootz

LooTz

Who’s Lootz? My name is LooTz, I believe we need to change this world through technology and bravery. I have been with Komodo since its first days. I created the first SuperNET website and ran SuperNET Radio, which is now renamed to CryptoRadio.Live. With over 250 interviews, my Crypto Show has been downloaded thousands of times.

I co-founded CryptoCoreMedia.com, a premier crypto information website, and marketing service. While I am primarily the resident SEO guru for CryptoCoremedia.com, my skill set also includes web development, content creation, CryptoRadio.Live hosting and most of all the “creator of magical opportunities”.

I have boarded the Pirate Ship and naturally became a Pirate myself. I did this because I believe in privacy and in the strength of the Komodo ecosystem. In collaboration with other pirates, I have made the following contributions towards Pirate Chain: Pirate OS (thank You to Wieprz), Pruner Code (thank you to Forge and MrLynch), Mobile Wallet (thank you to Forge, MrLynch, CHMEX, PWNZ), and several more collaborations I cannot disclose at this time.

I aim to be a champion of the Komodo ecosystem by running a notary node. As a tech specialist for over 30 years, I believe in the gradual and constant improvement of the node. Ultimately, this will create redundancy for lower downtime risks overtime.

Our Team: Our Notary Node team also includes theekgb. who is an expert in systems engineering, monitoring, and automation technologies. He has been involved in systems engineering and DevOps for 7 years, IT systems for 20 years and blockchain for over 2 years. He is very passionate about Komodo. While he is not active publicly, he has been involved in several Komodo technology projects behind the scenes.

Let’s get into the meat and potatoes now…

Hardware (located in NYC) 16 core servers, 64gig ram, UPS setup, Fiber Internet 940/880 Mbps,

Reward Allocations:

20% to Scalleywag thinktank - This is a think tank for like minded contributors interested in improving Komodo and Pirate Chain. Scallywag also functions as an R&D department making interoperable technologies such as DEXP2P, IPFS, with the goal of generating revenue streams for the ecosystem. 20% for Combined Marketing Initiative, including: 5% to design 5% to writers 10% to new initiatives

Having a revenue stream go to a steady writer will produce regular content for distribution increasing traffic and attention for all parties involved. Co-marketing will lower costs. Current marketing initiatives include: Flyer Distribution - Boots on the Ground Initiative Article Creation w/ Strategic Posting

40% to hardware – Server maintenance and upgrade

10% Retirement Fund

10% Slush Fund - Coffee

“ I don't want to be an emperor. That's not my business. I don't want to rule or conquer anyone. I would like to help everyone if possible. We all want to help one another. Human beings are like that. We want to live by each other's happiness, not by each other's misery. We don't want to hate and despise one another. In this world, there is room for everyone, and the good earth is rich and can provide for everyone. The way of life can be free and beautiful, but we have lost the way. Greed has poisoned men's souls, has barricaded the world with hate, has goose-stepped us into misery and bloodshed. We have developed speed, but we have shut ourselves in. Machinery that gives abundance has left us in want. Our knowledge has made us cynical; our cleverness, hard and unkind. We think too much and feel too little. More than machinery, we need humanity. More than cleverness, we need kindness and gentleness. Without these qualities, life will be violent and all will be lost. The airplane and the radio have brought us closer together. The very nature of these inventions cries out for the goodness in men; cries out for universal brotherhood; for the unity of us all.”~Chaplin

VOTE Address: REbnTZUHeYiqx6uNqGsUan3Usp9RJy5kjU

Contact Twitter: @DatePickle Scallywag Discord: https://discord.gg/C8H4qhb Soundcloud: https://soundcloud.com/cryptoradio Discord: Loo✟z#2749


Friday 2020-04-03 22:28:31 by Michael Gibson

Further tweaks (#3)

  • remove caps from menu cuz fuck you

  • create 404 page

  • correct spelling on readme

  • remove white space, 404.html

  • create placeholder post for menu to work

  • updates to css, add rss feed link

  • mess

  • add info to home page

  • add info to home page

  • correct missing space line 30 about.md


Friday 2020-04-03 23:01:10 by Luke.Humphreys

Ivor the Chronicler

The youngest son of a successful merchant, Ivor was tutored along with his elder siblings on the road - as the family flitted between trading hubs. Not gifted with the natural charm and quick minds of his elder siblings, Ivor quickly lost interest in the business he was never going to inherit. In its place came a fascination with the history and myths of the continent. Although his brothers and sisters all learned many tongues - the only language that Ivor ever took to was Elvish, delighted by the secrets that this ancient people and their texts could unlock.

As he moved into young adulthood, Ivor announced his unlikely to study with the famed chronicler monks at Oak-Tree Abbey. A generous donation from his Father secured him am place, and at 15 left the family to begin life as a novice. Quiet, occasionally forgetful, Ivor was not quick to make a name for himself - and when he choose to specialise in the obscure "Cult of the Dragon", he seemed destined to be no more than a footnote in the venerable institution's famed Chronicles.

For nearly 20 years Ivor meticulously studied his subject in the Oak-Tree archives. More often than not, when he did venture out to ancient libraries or rumoured historical sites he would return empty handed - inevitably generating gentle mockery from his more successful brothers at the Abbey.


Friday 2020-04-03 23:30:33 by Feasel

[Balance Pass] - Stunbaton (Because no one wants to do a single line change to make this not shit)

I'm putting it at 35 as Kevinz suggest, rather it be 49 but w/e.

The "Intuitive" system will be staying, but now it won't suck ass to actually be used as a stamina draining weapon.


< 2020-04-03 >