136 Matching Annotations
  1. Last 7 days
    1. You can whip up cover letters in no time using ChatGPT! Just paste in your resume text, position title and company name and ask it to write a cover letter for you. It summarizes your skills really well in context of the position and company. Such a time saver. Like everything else AI does lately, it's absurdly good and in Ryan Reynold's words, "mildly terrifying." I have no idea who actually reads cover letters
  2. Mar 2024
    1. most prolific taggers,those resources were cut in 2015.

      i think this would be a better way to deal w the graffiti problem in Portland. Stop it at the source. Instead, the city chooses to punish property owners.

  3. Feb 2024
    1. One of my inquiries was for anecdotes regarding mistakes made between the twins by their near relatives. The replies are numerous, but not very varied in character. When the twins are children, they are usually distinguished by ribbons tied round the wrist or neck; nevertheless the one is sometimes fed, physicked, and whipped by mistake for the other, and the description of these little domestic catastrophes was usually given by the mother, in a phraseology that is some- [p. 158] what touching by reason of its seriousness.

  4. Dec 2023
    1. However, after finding the magic number, unzip does not check if the comment length correctly describes the comment that must follow. Rather, unzip only checks to make sure the comment length is small enough to not cause an out-of-bounds read beyond the end of the zip file. This means that unzip tolerates arbitrary data append to the end of a zipfile without even so much as a warning. The zip file spec does not allow this arbitrary data

      Yeah, no.

    1. when we get our story wrong we get our future wrong
      • for: quote - when we get our story wrong, we get our future wrong, quote - Thomas Homer-Dixon

      • quote

        • When we get our story wrong, we get our future wrong
      • author: David Korten, quoted by Thomas Homer-Dixon
      • date: 2021
    1. this God is very clearly a 00:09:27 human invention now it doesn't mean it's necessarily bad and it doesn't certainly doesn't mean it's unimportant the fictional stories humans invent are some of the most powerful forces in history 00:09:40 and very often they can also be positive forces there is nothing inherently wrong in fiction
      • for: quote - Yuval Noah Harari, quote - nothing wrong with fictions

      • quote -This God is very clearly a human invention. Now it doesn't mean it's necessarily bad. It doesn't certainly mean its unimportant.

      • author: Yuval Noah Harari
  5. Nov 2023
    1. So then they put it into lib only to find that they have to manually require it. Then later realize that this also means they now have to reboot their server any time they change the file (after a painfully long debugging time of "why what aren't my changes working?", because their lib folder classes are now second-class citizens). Then they go down the rabbit hole of adding lib to the autoload paths, which burns them because rake tasks then all get eager loaded in production. Then they inevitably realize anything inside app is autoloaded and make an app/lib per Xavier's advice.
    2. I think the symmetry of the naming between lib and app/lib will lead a fresh Rails developer to seek out the answer to “Why are there two lib directories?", and they will become illuminated. And it will prevent them from seeking the answer to “How do I autoload lib?” which will start them on a rough path that leads to me advising them to undo it.
  6. Oct 2023
    1. The story starts with the creation of the world, and ends with Moses dying on the wrong side of the Jordan and being buried in an unmarked grave.

      "Wrong side of the Jordan" almost has the flavor of a biblical version of "the wrong side of the tracks".

  7. Sep 2023
    1. There has also been special debate about the right way to think of development in infancy.

      A thought does come around on the "right way to think" This seems like the perfect opportunity for the differences in right or wrong and how the outcome of the infant might be affected by it. The right way to think seems more of a realization on what is socially normal or socially acceptable when thinking of the right way to think. Now that thought is the process figures out, but what must an adult realize?

    2. structure

      The concept of structure really stands out to me. There is the everyday structure as I would call it in what this article is referring to, but what does it really mean by structure and if the structure is consider right or wrong. Everyone has a multitude of structure and what that looks like. For instance it reminds me of two set of parents where the kids have to figure out the structure in both houses. It shard because they go from one to another, but ending up becoming accustomed to both forms of structure. The author states, "structure gives rise to some patterns of observable evidence rather than others" Bad, & Olusegun, S (2015). Constructivism Learning Theory: A Paradigm for Teaching and Learning.

  8. Jul 2023
    1. power does corrupt. We have plenty of evidence that it changes your psychology, it changes your neuroscience, it changes your brain, but it's only a small part of the story. And the much more interesting part of the story is how people interact with systems and why we end up with the wrong people in charge.
      • comment
        • interesting analysis that it is the system that promotes the wrong type of people to positions of leadership.
  9. May 2023
    1. m <- floor(T^(1/3)) Using rule of thumb, the m is 8

      这里忘乘0.75了,注意下,m应该是6.5..., 四舍五入是,7, 改过来应该是 m <- round(T^(1/3) * 0.75). T是回归时间的数量,我看ppt上是这样的。

  10. Feb 2023
    1. Most of them are, in general, moving in the right direction. They just aren’t aggressive enough yet to be consistent with the kind of transformative social change required to achieve the 1.5 C target.
      • climate change actions
      • Most of the climate actions are moving in the right direction.
      • but they just aren’t aggressive enough yet to achieve the 1.5 C target.
      • right direction, wrong speed
    1. Result of lots of searching on net is that pre-checkout hook in git is not implemented yet. The reason can be: There is no practical use. I do have a case It can be achieved by any other means. Please tell me how? Its too difficult to implement. I don't think this is a valid reason
  11. Jan 2023
    1. I've worked with and have helped maintain paranoia for a while. I'm convinced it does the wrong thing for most cases. Paranoia and acts_as_paranoid both attempt to emulate deletes by setting a column and adding a default scope on the model. This requires some ActiveRecord hackery, and leads to some surprising and awkward behaviour.
  12. Dec 2022
    1. Economists explain that markets work bestwith “perfect information.” And visibilityfeeds this market by translating and sharingskills. But the price of transparency in themodern age is invaded privacy, as well as biasinherent in automated products and services
    1. Even when reading a book,the goal-oriented nature and intention of reading is paramount.6

      61 Mortimer Jerome Adler and Charles Van Doren, How to Read a Book, Rev. and updated ed (New York: Simon and Schuster, 1972), 45.

      I see some of the sense of this footnote, which helps to establish some ethos by calling to mind Adler/Van Doren's classic, but this particular page in their text is really about paying enough attention not to fall asleep and thus doesn't underline Scheper's point as well as references to other portions of their book about goals and active reading.

    Tags

    Annotators

    1. Let’s say the recipient is considering unsubscribing. He or she may be too busy to search through the email to find the unsubscribe link, so he or she just clicks “Report as SPAM” to stop the emails from coming. This is the last thing any marketer wants to see happen. It negatively impacts sender reputation, requiring extra work to improve email deliverability. With the list-unsubscribe header, you will avoid getting into this kind of trouble in the first place.
  13. Nov 2022
    1. Testing frameworks often introduce their own abstractions for e.g. evaluation order, data validation, reporting, scope, code reuse, state, and lifecycle. In my experience, these abstractions are always needlessly different from (and inferior to) related abstractions provided by the language itself.
  14. Apr 2022
  15. Mar 2022
  16. Feb 2022
  17. Jan 2022
  18. Dec 2021
  19. Nov 2021
    1. If and when you need some kind of behaviour that waits for things, wait_until is a giant big sledgehammer. There are more fine grained, sophisticated tools built into Capybara, and I want you to learn about them, because those are some of the best features of the library. And when the built in tools aren’t enough, there are more sophisticated tools available than that clunky hammer. So hopefully the removal of wait_until encourages you to write better tests.
  20. Oct 2021
    1. So if I just forward the cookie header (which contains the access-token), wouldn't that be just what I am not supposed to do. I mean what's the point of using 'HttpOnly' flag if I return the token to the client-side js on every request.
  21. Sep 2021
    1. Update API usage of the view helpers by changing javascript_packs_with_chunks_tag and stylesheet_packs_with_chunks_tag to javascript_pack_tag and stylesheet_pack_tag. Ensure that your layouts and views will only have at most one call to javascript_pack_tag or stylesheet_pack_tag. You can now pass multiple bundles to these view helper methods.

      Good move. Rather than having 2 different methods, and requiring people to "go out of their way" to "opt in" to using chunks by using the longer-named javascript_packs_with_chunks_tag, they changed it to just use chunks by default, out of the box.

      Now they don't need 2 similar but separate methods that do nearly the same, which makes things simpler and easier to understand (no longer have to stop and ask oneself, which one should I use? what's the difference?).

      You can't get it "wrong" now because there's only one option.

      And by switching that method to use the shorter name, it makes it clearer that that is the usual/common/recommended way to go.

  22. Aug 2021
    1. Now consider we want to handle numbers in our known value set: const KNOWN_VALUES = Object.freeze(['a', 'b', 'c', 1, 2, 3]) function isKnownValue(input?: string | number) { return typeof(input) === 'string' && KNOWN_VALUES.includes(input) } Uh oh! This TypeScript compiles without errors, but it's not correct. Where as our original "naive" approach would have worked just fine. Why is that? Where is the breakdown here? It's because TypeScript's type system got in the way of the developer's initial intent. It caused us to change our code from what we intended to what it allowed. It was never the developer's intention to check that input was a string and a known value; the developer simply wanted to check whether input was a known value - but wasn't permitted to do so.
  23. Jul 2021
  24. Jun 2021
  25. May 2021
    1. Because constants in Ruby aren't meant to be changed, Ruby discourages you from assigning to them in parts of code which might get executed more than once, such as inside methods.
  26. Apr 2021
    1. Of course you must not use plain-text passwords and place them directly into scripts. You even must not use telnet protocol at all. And avoid ftp, too. I needn’t say why you should use ssh, instead, need I? And you also must not plug your fingers into 220 voltage AC-output. Telnet was chosen for examples as less harmless alternative, because it’s getting rare in real life, but it can show all basic functions of expect-like tools, even abilities to send passwords. BUT, you can use “Expect and Co” to do other things, I just show the direction.
    1. What I dislike from the achievements is the "Dialogue Skipper". I really don't like it because you are encouraging people just to skim or even skip it at all and not get interested with the story. I earned this achievement on a 2nd run but I had a friend who just skipped it all on her 1st try.What devs should encourage is for the gamers to have a lot of playing time on their game so they would recommend it to others and not just do it for the cards and uninstalling it afterwards.
    1. Rather than rewarding the player for discovering a well-thought-out or ideal solution (by picking up coins), the developer tacked on a timer to a game with non-fluid controls. The player feels rushed to discover an elaborate solution.
    1. Yes, you are right. That was a very bad workaround. Stubbing methods on NilClass can be compared to switching to dark side of force. Powerful but comes with a huge price. I highly don't recommend using my workaround from 1 year ago.
  27. Mar 2021
    1. Yes, but honestly, and no offense intended, but I don't see the harm in these type questions, nor why some people are offended when they are asked. If I owed a website, I wouldn't mind it because it just creates more pages that can be indexed. I see it as helping the website. But, I did look and didn't see a simple answer. Again, no offense is intended. I've just never understood the complaints.
  28. Feb 2021
    1. For branching out a separate path in an activity, use the Path() macro. It’s a convenient, simple way to declare alternative routes

      Seems like this would be a very common need: once you switch to a custom failure track, you want it to stay on that track until the end!!!

      The problem is that in a Railway, everything automatically has 2 outputs. But we really only need one (which is exactly what Path gives us). And you end up fighting the defaults when there are the automatic 2 outputs, because you have to remember to explicitly/verbosely redirect all of those outputs or they may end up going somewhere you don't want them to go.

      The default behavior of everything going to the next defined step is not helpful for doing that, and in fact is quite frustrating because you don't want unrelated steps to accidentally end up on one of the tasks in your custom failure track.

      And you can't use fail for custom-track steps becase that breaks magnetic_to for some reason.

      I was finding myself very in need of something like this, and was about to write my own DSL, but then I discovered this. I still think it needs a better DSL than this, but at least they provided a way to do this. Much needed.

      For this example, I might write something like this:

      step :decide_type, Output(Activity::Left, :credit_card) => Track(:with_credit_card)
      
      # Create the track, which would automatically create an implicit End with the same id.
      Track(:with_credit_card) do
          step :authorize
          step :charge
      end
      

      I guess that's not much different than theirs. Main improvement is it avoids ugly need to specify end_id/end_task.

      But that wouldn't actually be enough either in this example, because you would actually want to have a failure track there and a path doesn't have one ... so it sounds like Subprocess and a new self-contained ProcessCreditCard Railway would be the best solution for this particular example... Subprocess is the ultimate in flexibility and gives us all the flexibility we need)


      But what if you had a path that you needed to direct to from 2 different tasks' outputs?

      Example: I came up with this, but it takes a lot of effort to keep my custom path/track hidden/"isolated" and prevent other tasks from automatically/implicitly going into those steps:

      class Example::ValidationErrorTrack < Trailblazer::Activity::Railway
        step :validate_model, Output(:failure) => Track(:validation_error)
        step :save,           Output(:failure) => Track(:validation_error)
      
        # Can't use fail here or the magnetic_to won't work and  Track(:validation_error) won't work
        step :log_validation_error, magnetic_to: :validation_error,
          Output(:success) => End(:validation_error), 
          Output(:failure) => End(:validation_error) 
      end
      
      puts Trailblazer::Developer.render o
      Reloading...
      
      #<Start/:default>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:success>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Left} => #<End/:validation_error>
       {Trailblazer::Activity::Right} => #<End/:validation_error>
      #<End/:success>
      
      #<End/:validation_error>
      
      #<End/:failure>
      

      Now attempt to do it with Path... Does the Path() have an ID we can reference? Or maybe we just keep a reference to the object and use it directly in 2 different places?

      class Example::ValidationErrorTrack::VPathHelper1 < Trailblazer::Activity::Railway
         validation_error_path = Path(end_id: "End.validation_error", end_task: End(:validation_error)) do
          step :log_validation_error
        end
        step :validate_model, Output(:failure) => validation_error_path
        step :save,           Output(:failure) => validation_error_path
      end
      
      o=Example::ValidationErrorTrack::VPathHelper1; puts Trailblazer::Developer.render o
      Reloading...
      
      #<Start/:default>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:validation_error>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:success>
      #<End/:success>
      
      #<End/:validation_error>
      
      #<End/:failure>
      

      It's just too bad that:

      • there's not a Railway helper in case you want multiple outputs, though we could probably create one pretty easily using Path as our template
      • we can't "inline" a separate Railway acitivity (Subprocess "nests" it rather than "inlines")
    2. step :direct_debit

      I don't think we would/should really want to make this the "success" (Right) path and :credit_card be the "failure" (Left) track.

      Maybe it's okay to repurpose Left and Right for something other than failure/success ... but only if we can actually change the default semantic of those signals/outputs. Is that possible? Maybe there's a way to override or delete the default outputs?

    1. Things could go wrong in two places here. First, the validation could fail if Github sends us data we don’t understand. Second, we might not know the user signing in, meaning the “find user” logic has to error-out
    1. These two mistakes, especially the second one, plant worries in your customers mind before they’ve even had time to think of them.
    2. Stop warning people – no contract, no obligations, cancel anytime – companies can’t resist saying this on every pricing page but by using negative words they’re just putting ideas into people’s heads.
    1. Yes, you do face difficult choices (moral) but you don't care about it. All you care are the reputation bars. So... Let's kill this guy, who cares if he is innocent, but this faction needs it or I'm dead. Sounds great on paper but to be honest... you just sit there and do whatever for these reputation bars. If you won't, then you lose
  29. Dec 2020
    1. The only solution that I can see is to ensure that each user gets their own set of stores for each server-rendered page. We can achieve this with the context API, and expose the stores like so: <script> import { stores } from '@sapper/app'; const { page, preloading, session } = stores(); </script> Calling stores() outside component initialisation would be an error.

      Good solution.

    1. This would be cumbersome, and would encourage developers to populate stores from inside components, which makes accidental data leakage significantly more likely.
    2. which makes it much harder to accidentally keep logged-in state visible after a client-side logout
    1. No more waiting around for pull requests to be merged and published. No more forking repos just to fix that one tiny thing preventing your app from working.

      This could be both good and bad.

      potential downside: If people only fix things locally, then they may be less inclined/likely to actually/also submit a merge request, and therefore it may be less likely that this actually (ever) gets fixed upstream. Which is kind of ironic, considering the stated goal "No more waiting around for pull requests to be merged and published." But if this obviates the need to create a pull request (does it), then this could backfire / work against that goal.

      Requiring someone to fork a repo and push up a fix commit -- although a little extra work compared to just fixing locally -- is actually a good thing overall, for the community/ecosystem.

      Ah, good, I see they touched on some of these points in the sections:

      • Benefits of patching over forking
      • When to fork instead
  30. Nov 2020
    1. I'm still calling this v1.00 as this is what will be included in the first print run.

      There seems to be an artificial pressure and a false assumption that the version that gets printed and included in the box be the "magic number" 1.00.

      But I think there is absolutely nothing bad or to be ashamed of to have the version number printed in the rule book be 1.47 or even 2.0. (Or, of course, you could just not print it at all.) It's just being transparent/honest about how many versions/revisions you've made. 

    1. There was a major refactoring in the resolver (https://github.com/webpack/enhanced-resolve). This means the resolving option were changed too. Mostly simplification and changes that make it more unlikely to configure it incorrectly.
    1. I think you meant a different set of arguments to Object.assign ? should be Object.assign({}, api.headers, headers) because you don't want to keep adding custom headers into hash of common api.headers. right?
    1. You could decide to trust yourself and your teammates to always remember this special case. You can all freely use short-circuiting, but simply don't allow a short-circuit expression to be on the last line of a script, for anything actually deployed. This may work 100% reliably for you and your team, but I don't believe that is the case for myself and many other developers. Of course, some kind of linter or commit hook might help.
    1. It might seem too obvious but I've been struggling long time with this until I got that you need to include the base image too

      Thanks for the tip

    2. the "trick" is to pass to --cache-from the image you are rebuilding (and have it pulled already) and ALSO the image that it uses as base in the FROM.
    1. The average hydrogeochemical gradient for the Polish lowlands is 5.7 g/dm3/100m

      Fake reference - unfortunately such information doesn't exist in the source file!

  31. Oct 2020
    1. Looking at all those bearing, heading, orientation, navigation, position, direction, etc. I think we have a bigger problem here. Someone has decided how to use tag (e.g. orientation is about page orientation), but there are 100 other cases. Imho, to disallow misusing there should be no "heading", but rather "html-heading", "gps-heading", "whatelse-heading", which make mistakes impossible. So yes, "heading" should go.
    1. Perhaps we should detect URLSearchParams objects differently (using duck typing detection instead of instanceof window.URLSearchParams, for example) but the solution isn't adding a specific polyfill to Axios (as it'd increase the bundle size and still won't work with other polyfills).
    1. Sometimes we can’t implement a solution that’s fully spec-compliant, and in those cases using a polyfill might be the wrong answer. A polyfill would translate into telling the rest of the codebase that it’s okay to use the feature, that it’ll work just like in modern browsers, but it might not in edge cases.
    1. Note that if you are calling reset() and not specify new initial values, you must call it with no arguments. Be careful to avoid things like promise.catch(reset) or onChange={form.reset} in React, as they will get arguments passed to them and reinitialize your form.
  32. Sep 2020
  33. Aug 2020
    1. Will you accept merge requests on the gitlab-ce/gitlab-foss project after it has been renamed? No. Merge requests submitted to this project will be closed automatically.
    1. As a result, I end up quoting multiple people, sometimes quoting several people back-to-back, before even writing my reply. In those instances it feels like I'm not properly citing those individuals. I feel like it might seem I'm not providing new readers appropriate context for a given quote. It might also be implied that separate quotes are from the same person, leading to mis-attribution.
  34. Jun 2020
    1. OK, so what about regular messages? Turns out they are not encrypted after all. Where Signal implements the security and privacy protocols right from the start, Telegram separates the two and offers an additional option. The problem is that not everyone is aware of the Secret Chat option and first-time users may send sensitive information in the regular chat window unknowingly.
  35. May 2020
    1. Unscrupulous providers are incentivized to use inefficient or malicious means to increase break/fix work and thus increase their revenue.
    1. While this is illegal and can result in criminal and civil penalties, your cooperation may make you eligible for up to a US$50,000 reward.

      Might not this motivate someone to conspire with someone else, one to commit the crime and one to collect the reward? Probably mitigated by a contingency that the reward may only be collected if criminal is successfully charged and prosecuted?

  36. Apr 2020
    1. IDEs and standard *nix tools like sed can help, but you typically have to make a trade-off between introducing errors and introducing tedium.
  37. Mar 2020
    1. It won't let me go beyond this page. I'm sure I've answered the CAPTCHA correctly at least some of the 10+ times I've tried. What's going on?

      I can't even access their static website to find contact information for how to contact them about this problem!

    1. illustrates the extent to which illegal practices prevail, with vendors of CMPs turning a blind eye to — or worse, incentivising — clearly illegal configurations of their systems
    2. All of which means — per EU law — it should be equally easy for website visitors to choose not to be tracked as to agree to their personal data being processed.
    3. “Popular CMP implementation wizards still allow their clients to choose implied consent, even when they have already indicated the CMP should check whether the visitor’s IP is within the geographical scope of the EU, which should be mutually exclusive,” they note, arguing that: “This raises significant questions over adherence with the concept of data protection by design in the GDPR.”
    1. b

      protonation state of the compound in panel b is wrong

    Tags

    Annotators

    1. Earlier this year it began asking Europeans for consent to processing their selfies for facial recognition purposes — a highly controversial technology that regulatory intervention in the region had previously blocked. Yet now, as a consequence of Facebook’s confidence in crafting manipulative consent flows, it’s essentially figured out a way to circumvent EU citizens’ fundamental rights — by socially engineering Europeans to override their own best interests.
  38. Jan 2020
  39. Dec 2019
    1. Despite the successful resolution, it was still quite unsettling that a domain name could be transferred to another registrant and sinkholed for some perceived violation. I thought there would be more checks in place to confirm that a perceived violation was real before a domain could be transferred.

      This is highly unsettling. A person, organisation, country, or company should not be able to have a domain name transferred from its rightful owner this easily.

    1. It shouldn't be useful to distinguish between requests made by Ajax and other kinds of request. Pretty much any usecase where you'd want to do that is better served by using the Accept header to ask for data in a specific format.
  40. Aug 2019
    1. I don’t like reducers. I’ve tried using them, but I always end up migrating away. Something just feels wrong about dispatching actions to trigger business logic when I could instead do so by invoking a function with arguments.
    1. As Sebastian Markbage pointed out, no abstraction is superior to wrong abstractions. We are providing low-level components to maximize composition capabilities.
    1. Case in point: take this css selector: h1.header > a[rel~="author"] Its shortest functional XPath equivalent would be //h1[contains(" "+normalize-space(@class)+" "," header ")]/a[contains(" "+normalize-space(@rel)+" "," author ")] …which is both much harder to read and write. If you wrote this XPath instead: //h1[@class="header"]/a[@rel="author"] …you would incorrectly have missed markup like <h1 class="article header"><a rel="author external" href="/mike">...</a></h1>
  41. Sep 2018
  42. Jan 2018
  43. Oct 2017
    1. But, how confident our we that our manipulation of the light switch was the only variable changing in our experiment?

      Correction first "our" should be changed to "are".

  44. Apr 2017
  45. Nov 2016
    1. Coral reefs result from the work of little polyps, creatures only a few millimeters long, budded on top of one another. Over centuries, the shells of these creatures combine to form the exotic shapes of coral reefs. Tiny differences in the anatomy of each polyp species affect the shape of their shells and produce the exotic shapes of each reef.

      Skeletons, not shells. Far from the most articulate description but generally not wrong.

  46. Aug 2014
    1. When CO2 dissolves in water, we are NOT adding acid to the water.

      CO2 does increase the acidity when dissolved in water. For reference, see for instance "Once dissolved in seawater, CO2 gas reacts with water to form carbonic acid" in Doney et al (2008) http://www.annualreviews.org/doi/full/10.1146/annurev.marine.010908.163834

  47. Oct 2013
    1. The ambitious man does wrong for sake of honour, the quick-tempered from anger, the lover of victory for the sake of victory, the embittered man for the sake of revenge, the stupid man because he has misguided notions of right and wrong, the shameless man because he does not mind what people think of him; and so with the rest -- any wrong that any one does to others corresponds to his particular faults of character.

      Types of people who commit wrong-doings. It is interesting because they all do the same things but for drastically different reasons.

    1. The fact is that anger makes us confident -- that anger is excited by our knowledge that we are not the wrongers but the wronged, and that the divine power is always supposed to be on the side of the wronged.

      It is pretty true. We aren't objective when we are angry.

    1. The worse of two acts of wrong done to others is that which is prompted by the worse disposition. Hence the most trifling acts may be the worst ones;

      But how would anyone know what kind of disposition the doer really possessed? This seems something that only an all-knowing God or gods would know, that is why our justice system works off of the crime committed. You get into difficult judgement calls when you start at the root of why someone did something. Like when people plead mental illness for why they committed a crime. I'm not making a judgement call on whether this is right. I'm only stating that if we start going that route, when do we stop? Do we scan everyone's brain for why they did it and blame it all on mental instability? What about when our technology gets so good that we can see each area of their brain that has been affected by abuse? There most likely is something funky going on in everyone's brain who does something terrible... so should we judge them on their actions or the reasons behind them?