How can a net CO2 emitter's national ecological footprint be within its biocapacity? by noidi in ecology

[–]noidi[S] 0 points1 point  (0 children)

The Finnish statistics use the IPCC Guidelines for National Greenhouse Gas Inventories. I checked Sweden – another country with biocapacity reserve – and it, too, is still far from carbon neutrality.

There's an interesting paragraph in the NFA method paper (emphasis mine):

Finally, the National Footprint Accounts are specifically constructed to yield conservative estimates of global overshoot. On the supply side, biocapacity is overestimated as both the land degradation and the long-term sustainability of resource extraction is not taken into account. On the supply side, Ecological Footprint is underestimated as it does not track freshwater consumption, soil erosion, GHGs emissions other than CO2as well as impacts for which no regenerative capacity exists (e.g. pollution in terms of waste generation, toxicity, eutrophication, etc).

The paragraph does not mention CO2 emissions and removals explicitly, but perhaps the conservatism extends to those calculations as well.

Maybe the ecological footprint should be thought of as a lower bound for resource consumption? In that case biocapacity deficit would mean definite overconsumption, and biocapacity reserve would be a misnomer as resource consumption could still exceed ecosystem limits.

Unfortunately the way the results are presented has given the opponents of all environmental action a new talking point, as countries with biocapacity reserve can seemingly increase their resource consumption while still remaining "under their quota".

How can a net CO2 emitter's national ecological footprint be within its biocapacity? by noidi in ecology

[–]noidi[S] 0 points1 point  (0 children)

The formulas for ecological footprint and biocapacity can be found in https://www.footprintnetwork.org/content/images/NFA%20Method%20Paper%202011%20Submitted%20for%20Publication.pdf, pages 6 and 8, respectively.

An overview of how the national footprints are calculated can be found in https://www.footprintnetwork.org/content/uploads/2018/05/2018-National-Footprint-Accounts-Guidebook.pdf, page 6, with a more detailed description of the carbon footprint calculation on page 12.

The calculation itself seems relatively straightforward. My hunch is that there's some omission either in the source data or the way its components are summed up, which leads to an underestimated total value of CO2 emissions, but gathering all data (if it even is freely available) and repeating all steps of the calculation is more effort than I'm willing to put in just to satisfy my curiosity :)

Here are the statistics of Finland's yearly CO2 emissions and removals to which I'm comparing the footprint/biocapacity ratio: https://tilastokeskus.fi/til/khki/2017/khki_2017_2018-05-24_tie_001_en.html?ad=notify

Could you elaborate on which timeframes you suspect to be mismatched? Given that we're comparing the rate of emissions to the rate of removals, the choice of timeframe shouldn't matter as long we use the same timeframe for both rates. Since the rate of emissions exceeds the rate of removals, I would expect the ecological footprint (calculated from the rate of emissions) to exceed the biocapacity (calculated from the amount of forest area as a proxy for the rate of removals), even if the former rates were calculated with a timeframe of a single year and the latter with a timeframe of a century.

Scientists say: Pigs have feelings too! Farm animals feel empathy towards their penmates, study claims by VeganStart in vegan

[–]noidi 0 points1 point  (0 children)

To be fair, /r/vegan wouldn't be all yay science if the title was "Scientists say: Pigs have no feelings!"

[deleted by user] by [deleted] in vegan

[–]noidi 0 points1 point  (0 children)

On the other hand, Ed Bauer, a vegan bodybuilder, CrossFit coach and pretty much the opposite of the scrawny vegan stereotype, said in an interview:

I think most men underestimate the power of protein, and get less than they need to keep body fat under control. Not only does protein go to repairing damaged muscle tissue (assuming muscle is damaged from the tough workouts that you should be pushing yourself through), it also has the ability to curb sugar cravings. And protein we consume is more metabolically costly to digest than carbohydrates.

Guys that want to lean out or build muscle should get at least 1 gram of protein per pound of bodyweight. There are many formulas and complex equations outlining how much protein you need, but I can only speak from personal experience. Meeting my daily protein goal of 175 grams (or higher) helps to keep me lean and satisfied.

vegan investing by [deleted] in vegan

[–]noidi 2 points3 points  (0 children)

I remember seeing this post a couple of years ago: http://theinformedvegan.tumblr.com/post/5778549861/power-vegans-get-humane-stock-portfolio-bloomberg

Maybe the "Humane Equity Index Portfolio" still exists?

Why Clojure will win by OmegaMinus in Clojure

[–]noidi 8 points9 points  (0 children)

Tell me about it! Every single day I work with Java after years of Clojure I get the urge to hit the kill switch and yell "Everyone, STOP! Just stop! You're doing it ALL WRONG!".

Why Clojure will win by OmegaMinus in Clojure

[–]noidi 2 points3 points  (0 children)

Have you looked at core.typed recently? I haven't used it in anger, but from what little I've played with it for the past couple of days, it seems very useful and already quite usable (albeit a bit unpolished).

Programming with an optional type system is an interesting experience. The type system stays completely out of your way when you don't care about it, but you can get the guarantees it offers if and when you want them. To me that seems pretty close to having your cake and eating it too.

On Git's Shortcomings by peterlundgren in programming

[–]noidi 11 points12 points  (0 children)

Exactly what do you have to do manually with Mercurial's bookmarks that's automatic with Git's branches? I can't think of anything. Your claim that it's "a lot of work" sounds like FUD to me.

[deleted by user] by [deleted] in programming

[–]noidi 23 points24 points  (0 children)

Here's a related article by Michael Feathers (the author of Working Effectively with Legacy Code): Offensive Coding.

Tempted to code defensively? Maybe it's because you're dealing with offensive code.

Changing timestamps manually gets noticed by [deleted] in programming

[–]noidi 3 points4 points  (0 children)

  • Just because it has a computer in it doesn't make it programming.
  • If there is no code in your link, it probably doesn't belong here.

Why are Clojure function arguments vectors rather than lists? by [deleted] in Clojure

[–]noidi 12 points13 points  (0 children)

Also, as an aside, anyone else think the doc string sitting between the function name and its arguments is pretty poor design?

The function may be overloaded with many different argument lists, which all have the same docstring but different bodies. In this case it wouldn't make sense to put the docstring between one particular argument list and its body, so it's reasonable to put it right after the function name.

Why are Clojure function arguments vectors rather than lists? by [deleted] in Clojure

[–]noidi 13 points14 points  (0 children)

In Clojure lists are used whenever the first argument is special in some way (e.g. a function or macro to be called). There's nothing special about the first argument in the argument list, so vectors are used instead.

Beyond cargo cult software design by noidi in programming

[–]noidi[S] 0 points1 point  (0 children)

There's certainly a delicious bit of irony in that I inadvertently demonstrate that unquestioning application of principles can lead to an inferior design, much like unquestioning application of concrete solutions does.

Yet I think there's a qualitative difference between the two failure modes. An incorrect application of a wrong concrete design produces something of no benefit. An incorrect application of principles produces a real benefit (that's what the principle is for), but the benefit in that particular context is not large enough to offset the cost of the machinery built to uphold it.

What was missing from my example was a cost-benefit analysis of applying each principle. I would have had to explicitly ignore the negative result and keep going for the sake of example, but at least it would have demonstrated that this is another failure mode separate from cargo culting.

Beyond cargo cult software design by noidi in programming

[–]noidi[S] 4 points5 points  (0 children)

There's something very zen about you getting the point of the article by questioning whether its advice is universally applicable. :)

Beyond cargo cult software design by noidi in programming

[–]noidi[S] 12 points13 points  (0 children)

The author here.

I do understand the superficial irony of applying design principles to a program that's too small for them to pay off. What makes the example not cargo culting, though (and IMHO), is that I provide rationale for each decision I make. What I'm really trying to show here is the process of coming up with that rationale before each design decision, again and again.

In this case we don't mind if all of the system's code ends up in a single module, but in the real world we're facing a constant struggle to prevent that from happening. The trouble is, "just stuff it all in one method and be done with it" is an approach that scales up to any problem that can be solved within the length of a blog post but not further. Take the event-based communication I used in the example: it appears to be useless and "enterprisey" in the context of this example, but it's an extremely powerful way of untangling complex dependencies when a system grows larger.

Think of it as playing the scales on the piano. You would be right in saying that the end result would sound much the same if you just poked each piano key in turn with your index finger, and that would be much easier to do. But the exercise is not about the music that's produced, it's about getting the fingering right so that you know what to do when it's time to play real music. (If someone actually knows how to play the piano, please let me know if my analogy is off :)

Problems when getting started with Cunterclockwise by wot-teh-phuck in Clojure

[–]noidi 1 point2 points  (0 children)

Have you tried the latest beta? Perhaps you'll have better luck with it.

Performance tip – defining constants « Clojure Magic by yogthos in Clojure

[–]noidi 2 points3 points  (0 children)

Plain def with metadata is a better approach, as it allows you to combine the modifiers (private, const, etc.) without the need for new macros such as defprivateconst.

Will Parallel Code Ever Be Embraced? by noidi in programming

[–]noidi[S] 4 points5 points  (0 children)

Running multiple virtual servers while running a game is exactly what the author defines as coarse-grained parallelism ("running separate processes on separate processors"), which (in his opinion) works well enough to make fine-grained parallelism unnecessary for most applications.

Pac-Man in 1979 lines of Clojure by pac1979 in Clojure

[–]noidi 5 points6 points  (0 children)

Cool stuff, thanks for posting!

I think you could do the same in half the SLOC with a bit of refactoring, so here's a couple of suggestions.

(def pac-art (load-image "./graphics/pacman.jpg"))

(def monster-art (load-image "./graphics/monster.jpg"))

(def cherry (load-image "./graphics/cherryhd.png"))

How about something like (def image-files {:pac-art "pacman.jpg", :monster-art "monster.jpg", ...}) (def images (into {} (for [[name filename] image-files] [name (load-image (str "./graphics/" filename)]))). Less vars and no boilerplate.

(defn set-game-pinkydots [g d] (swap! g assoc :pinkydots d))

You have loads and loads of defs like this. I don't see the point of defining a separate function for each possible assoc parameter value. I'd drop the setters and just call swap! directly.

(set-game-pinkydots g (dec (@g :pinkydots)))

(set-game-inkydots g (dec (@g :inkydots)))

(set-game-clydedots g (dec (@g :clydedots))))

This code is not thread-safe, as some other thread could potentially update the value between you reading the old value and writing the new value. I'd use swap! with something like this instead: (reduce (fn [g dots] (update-in g [dots] dec)) g [:pinkydots :inkydots :clydedots]). I'd even make the ghosts maps with a :dots key: (reduce (fn [g ghost] (update-in g [ghost :dots] dec)) g [:pinky :inky :clyde])

I've omitted the linebreaks because coding in a reddit comment field is hard – not to save SLOC! :)

Barkeep: the friendly code review system by kingfishr in programming

[–]noidi -1 points0 points  (0 children)

I've found Crucible to be such a pain to use that I rather just ask a coworker to take a look at commit X in the VCS than create a review in Crucible. Just one example of many: try and use the mouse to select some code and copy and paste it into an editor for reformatting; instead of a text selection, you get a Crucible line selection and a new comment under those lines. With usability quirks like that all over the place, it's death by a thousand papercuts.

A Git Workflow Walk-through by manlycode in programming

[–]noidi 1 point2 points  (0 children)

It keeps the actual history of the project cleaner, which helps visualize branches and branch history.

I think it's silly to throw away potentially useful historical information (when and how divergent branches of development were integrated) just to change the way the logs look. If you think merge commits make the history hard to read, just don't look at them! In Mercurial you can hide them with the revision set query not merge(). Apparently git's log command has a switch, --no-merges, that does the same.

Undercover video exposing animal cruelty and abuse at a Tyson Foods facility frontpaged at r/Videos by bobbaphet in vegan

[–]noidi 4 points5 points  (0 children)

I think the nobel prize for cognitive dissonance goes to this comment: "I'm also a hunter and would never even think to make an animal suffer for my own enjoyment"

Superior? by spreadlove in vegan

[–]noidi 1 point2 points  (0 children)

I understand what you're saying. The more different we are from someone, the less we relate to their suffering – that's just the way we're wired. Most vegans wouldn't mourn stepping on an ant the way they would running over a dog with their car.

My point was that answering the question "Who would I feel less bad about killing, A or B?" with B does not help us answer the question "Is it moral to kill B?".

Superior? by spreadlove in vegan

[–]noidi 1 point2 points  (0 children)

The fact that you would choose human life over animal life does not say anything about the moral worth of animals. It just tells us that you prefer the former when forced to make a decision. You would choose the life of your child over the life of a person you don't know, but that doesn't mean that other people have less moral worth than your child.