HNHacker News
TopNewBestAskShowJobs

ordinary

1,269 karma · joined March 14, 2011

submissionscomments
ordinary··on Author’s Note 119: Shameless Blegging
Chapter 11 was the turning point for me (for the better; much, much better), and I understand it's like that for many people.
ordinary··on µBlock dynamic filtering: default deny
I don't know if uBlock works the same way RequestPolicy does, but RP is not a replacement for NoScript. You may want to load images from a host but not allow that host to run Javascript or Flash: https://www.requestpolicy.com/faq.html#faq-noscript
ordinary··on When the Boss Says, 'Don't Tell Your Coworkers How Much You Get Paid'
If you are an employer despicable enough to systematically be paying women less just for being women, I don't think another redundant law is going to change your behavior.

Women don't earn about 18% less than men (OECD median, 2008)[0] because a small minority of employers pay women almost nothing, but because the vast majority of employers pay women (or blacks, or handicapped people) slightly less. Just like laws that prohibit killing don't target psychopaths, laws that prohibit discrimination don't target the KKK; they (should) aim to change the societal norms that your average Joe McAverage conforms to. It's the distinction between institutionalized discrimination and the more intimate personal type.

_____

[0] The exact number is not really what's important here, but http://www.oecd.org/dataoecd/54/57/40846335.pdf

ordinary··on Popular Myths about C++, Part 3
While the C++ language is indeed a superset of the C language, the paradigms of modern C++ have almost no overlap with those of C. See for example the string qsort vs string std::sort elsewhere in this thread.

The myth in "To understand C++, you must first learn C" is not that C and C++ are unrelated. The myth is that learning C helps you understand C++. The reality is that telling people to learn C first is an excellent way of getting them to write really bad C++ when they switch over to C++11.

ordinary··on Running bash commands in the background properly
There's this for attaching a running program to your terminal when it is not started in screen: https://github.com/nelhage/reptyr
ordinary··on Github may block content if they receive a valid request from Roskomnadzor
This is the alt.suicide.holiday methods file, translated into Russian:

    37. BEING BURNED UP IN UNPROTECTED RE-ENTRY (silly)

        Time: 
                probably a few minutes

        Available: 
                if you happen to be able to get into orbit

        Certainty: 
                about as certain as you can get!

        Notes: 
                Just go for a spacewalk in a low earth orbit, and
                decelerate enough to enter the atmosphere. You'll get a
                great view...
ordinary··on GDB tricks
GDB 7.0 and up can be expanded with Python pretty printers to do exactly this. See here: https://sourceware.org/gdb/wiki/STLSupport
ordinary··on Fingerprints Are Usernames, Not Passwords (2013)
Regularly changing your password reduces the impact of an undetected security breach by shortening the maximum amount of time a leaked password remains useful.
ordinary··on Troubling Arguments from the Government in Smith v. Obama
Doesn't withholding potentially pertinent information from a criminal investigation constitute obstruction of justice?
ordinary··on Tor Browser 4.0 is released
Click the icon to pop up the menu, select the 'Block all HTTP requests' option.
ordinary··on Skunk Works Reveals Compact Fusion Reactor Details
This is an enlightening explanation: http://www.chforum.org/scenario2012/paper1-4-1.jpg
ordinary··on The Future of Emacs, Guile, and Emacs Lisp
Truth be told, I know nothing of CL. I do know quite a bit about Elisp, and since it's not an Elisp-ism, and the CL and Elisp columns share so much identical code (a lot from cl.el), I assumed it was a CL-ism. My bad.
ordinary··on The Future of Emacs, Guile, and Emacs Lisp
A word of warning for Elisp hackers: the Emacs Lisp part of that resource was written by someone with a CL background. I'm seeing various examples that are not conventional Elisp. For instance, ' is used instead of #' for function quoting in various places (prevents compilation of the function) and use of eval on a form instead of apply on a list (dangerous and also prevents compilation of the form). In addition, many of these features use the cl package at runtime, which will cause the compiler to throw a warning, because it's not allowed in Emacs proper.

That said, there's a lot of information here that's very useful for the starting Elisp programmer.

ordinary··on My Lisp Experiences and the Development of GNU Emacs (2002)
The video: https://www.youtube.com/watch?v=4Jjhmc3Txv0

(Unfortunately, the audio isn't great.)

ordinary··on Adobe Spyware Reveals Again the Price of DRM: Your Privacy and Security
The argument of copyright is that 'published' information is not public. It is still owned by its creator (or more often by one of the corporations that employ them), you just get a very limited license to do certain things with it, like reading it and maybe creating personal backups, but not other things, such as sharing it with others, either for free or as part of a commercial venture.

This distinction between owning and licensing information didn't use to be necessary in the publisher's business model for popular culture, because the cost (and, equally importantly, the profit margin) of distribution was significant: authors made and continue to make far less than their publishers, with rare exceptions.

The cost of distribution of digital information is so low that consumers will do it for free (BitTorrent). And since the power of publishers primarily derives from their ability to distribute copies, that is what they attempt to preserve, even though they do a lot of other things that continue to be valuable in today's digital world, like financing and advertising. This (not entirely irrational) attempt to preserve a dated business model is in turn perceived by consumers as a clampdown on their rights, leading to a backlash to the established publishing industry and enabling the (so far limited) success of new services like Spotify and Netflix, which don't have to take into account any reconceived notions of what their business is. People associate licensing an ebook with buying a treebook, but they tend to associate streaming with borrowing a book in the library.

ordinary··on What we did about expired links on HN

  function adder(x) {
    return function(y) {
      return x+y;
    };
  }

  var plusthree = adder(3);
  var plusnine = adder(9);

  plusthree(2); //  5
  plusnine(3)   // 12
  plusthree(4); //  7
adder is a function that returns a closure that closes over x. If the function that's returned were a normal function rather than a closure, the x that you pass to adder would not within the scope of the inner function, and you wouldn't be able to reference it. Calling plusthree or plusnine would simply fail. However, because the inner function is a closure, it remembers x.

Every time you call adder, a new closure is created, with its own version of x, so you don't have to do anything extra like creating an object to store it in. The language runtime takes care of all that boring stuff for you.

ordinary··on Germany’s great tuition fees U-turn
Bigger version: https://upload.wikimedia.org/wikipedia/commons/6/6c/Social_m...
ordinary··on CVE-2014-7169: Bash Fix Incomplete, Still Exploitable
Perl backticks and system() delegate commands to the system shell, normally sh. On many systems, sh is simply bash in compatibility mode. That's how the attacker gets at the vulnerability.
ordinary··on JavaScript is a trademark owned by Oracle
According to Crockford[0], Netscape called it LiveScript, originally. In their attempt to 'destroy Microsoft', they teamed up with Sun. One of Sun's original goals with Java was making it the client-side scripting language for the browser. However, Netscape had LiveScript. Apparently the negotiations almost broke down over this point.

In an enlightened moment, (probably) Marc Andreessen proposed renaming LiveScript to JavaScript (despite the fact that the languages have very little in common), and joy was had. Sun got the JavaScript trademark (and passed it on to Oracle), and Netscape got a perpetual exclusive license to use it.

When JavaScript was standardized to avoid Embrace, Extend, Extinguish, Netscape refused to share its license, and so the official language was renamed to ECMAScript, after the standards body. When Sun was bought by Oracle, it also got the trademark, and presumably, Mozilla inherited the exclusive license from Netscape.

_____

[0] https://www.youtube.com/watch?v=RO1Wnu-xKoY#t=430

ordinary··on Bizarro World: World Record Tetris (2007)
Culture modifies human natural behaviour in all sorts of surprising ways. You cannot tell out of hand which behaviours are natural (whatever that means) and which are cultural. Why are women's appearances scrutinized to much greater extent than men? Is it because our culture* discourages male objectification, or because it encourages female objectification?

Even if it is natural, that doesn't mean it's desireable. That's just an appeal to nature.

While laws are an extreme method, they're routinely used to better ourselves, and even more often to better others. It's worked for (what we currently consider) undesireable behaviours like theft, smoking in public places, environmental pollution, seatbelt wearing, illegal parking, murder, and looking funny at cops. That's a pretty varied list, so why wouldn't it work for sexual objectification? I don't think we should use such a drastic approach, but it's not ridiculous, either.

_____

* Cowardly assuming we're all in the West.

ordinary··on Bizarro World: World Record Tetris (2007)
This is just a random thought, but it does occur to me that a lot of effort is expended in discouraging guys from objectifying women, but little to no effort is expended in doing sort of the opposite: encouraging women to objectify guys.

That's because the people who think objectification of women is bad tend to also think objectification of men is bad. Those people don't want to live in a world of ubiquitous or or even just balanced objectification; they want to live in a world with none.

ordinary··on Bizarro World: World Record Tetris (2007)
I think you may enjoy this: http://solitaire-ranking.org/rankings/sol_std_95

If you had a video of your attempt, or at least a screenshot of the ending screen, you would be either the #3 (if it was 3-draw) or the #7 (1-draw) Windows 95 Solitaire player in the world.

ordinary··on Every person with a Wikipedia article in a frequency graph by birth year
The notability requirement is not there to keep out the plebs, it's there to keep the information on Wikipedia accurate. In effet, it sets a lower bound on the reliability of primary sources, improving the quality of the project as a whole.
ordinary··on Dropping Loot
I've played Path of Exile a little, but while I'm don't usually care much about graphics in game, the style in PoE was an incredible turnoff for me. It's a real shame, because the game design indeed has some very interesting ideas, and I would've loved to explore them in more depth.

I agree with your point on maps. Diablo 2's focus on bosses over general farming was one of its weak points. The map structure would've been more important if Blizzard had made boss runs and general farming rewarding in distinct ways.

There are other things that I feel Diablo 3 did wrong, but my comment was getting dangerously long as it was: lack of build permanence (you touched on this), non-existent social features (slightly improved in the expansion), uninspired items (less so since the expansion) and badly tuned reward structure (I appear to be alone in feeling the expansion has not improved this aspect).

ordinary··on Dropping Loot
Having played both games extensively, I feel the most interesting thing to analyze about in which parts of the game are randomized, and how that randomization impacts gameplay. Let me pick 2 examples.

In Diablo 2, areas were randomized internally but externally consistent: the individual makeup of areas would be different every game, but the connections between different areas would remain the same.[1] This means that repeatedly exploring the same area remains entertaining for a relatively long time in Diablo 2. This is important, because as you say, items have a higher chance of dropping from certain monsters than from others. If you "have to" keep farming the same area over and over, it helps prevent boredom if that map is different every time.

In Diablo 3, the internal layout for each outdoor area is always the same, and even indoor areas are relatively static, compared to Diablo 2's. After a while, you know the best way to maximize efficiency, which encourages people to repeatedly farm one area, but this is a double edged sword: once you know what the most profitable way of playing the game is, playing any other is much less attractive. This actually reduces the range of (rational) possible actions in the game, inducing boredom more quickly. In addition, some of the best areas to farm in Diablo 3 are the dungeons. These are (smaller and optional) sub-levels within areas. Each area had fixed dungeons in Diablo 2. In Diablo 3 areas can often spawn 5 or 6 different special events, while it has only 2 or 3 (fixed, just like the areas themselves) spots for such events. This adds another layer of randomization: you need to be lucky twice: once to find the dungeon and once again to find the item in the dungeon.[2]

Something else that changed between Diablo 2 and 3 is the way item affixes are randomized. In both games, magical items can spawn with certain properties, and those properties have stat ranges. You might find a Short Sword with the Red prefix, giving +1 or +2 damage. In Diablo 2, the best items (Uniques, Sets and Runewords) had fixed affixes with random stat ranges: you might find a Tyrael's Might with anything between +20 Str and +30 Str (in addition to have a dozen other affixes), but that it would get a significant +Str roll was guaranteed. Even the worst Tyrael's Might was a great find. Relatively casual players would be happy with any stat rolls, while true Diablo 2 addicts would make do with nothing less than a +30 roll. Such a perfect roll could (and still can) increase the value of an item by a factor of 10 to 1000+,[3] even if the objective difference between a random roll and a perfect roll is fairly small in the grand scheme of things.

In Diablo 3, this was thrown out the window. Legendary and Set items get some fixed affixes, but even if you got the best item in the game and perfect rolls on the fixed affixes, you still need 1-3 other affixes to get a genuinely good item. In addition, the stat ranges were much wider. Immortal King's Tribal Binding could get +30 or +200 Str, and with the right random affix, all the way to +300 Str.[4] This makes the relation between gear cost and power fairly linear. You might have to find half a dozen Tribal Bindings before you got one worth using. In addition to finding the dungeon, and then the item, you also need to get good affixes on the item, then get good rolls on your affixes. Finally, in some slots, the best items in the game were not Legendaries, with their half-random setup, but Rares, with fully random affixes, which instead of 1-3 good affixes, need 5 or 6. It is no wonder then that players were unable to find their own items, and were forced to turn to an auction house, where they were primarily supplied by bots and gold farmers (unknowingly, but still).

Blizzard tried to address some of these issues in the Reaper of Souls expansion. Here's a few examples relating to the above points:

* Enchanting was added: allows you to replace one of each item's affixes with a different one (only one affix per item, but you can repeatedly change the same affix until you get one you like), reducing the impact of random affixes.

* Rifts were introduced: random dungeons with random monsters and a random boss at the end, which are generally slightly more efficient than just farming normal areas.

* The auction house was removed, reducing the impact of bots and farmers, allowing an increase in the drop rate. Trading in general was removed as well, making it impossible to turn to third-party trading sites (as was common in Diablo 2).

* The stat ranges on affixes were reduced, lessening the dependence on highly random items. Many Legendary items got unique Legendary-only affixes that (when combined in clever ways) make them far better than fully random Rare items.

Overall, this has significantly improved the game, but having played Diablo 2, Diablo 3 and Diablo 3 after the Reaper of Souls expansion, I can't help but feel like these are in the end just patches on a fundamentally flawed design, and that some of those patches actively prevent it from becoming better. Diablo 2, on release, was a bad implementation of a great design. This allowed it to be improved over the course of almost a decade (sporadically by modern standards, but impressive at the time). Diablo 3, on release, was a mediocre implementation of a bad design. Blizzard improved the implementation (at significant cost, to the point of forcing them to postpone the expansion), and details of the design, but it is still only a good implementation of a mediocre design, and improving it much further strikes me as uneconomical, to put it mildly.

_____

[1] For example: http://classic.battle.net/diablo2exp/maps/act1.shtml

[2] It's worth pointing out the two different types of randomization in games. One is the type the player can influence, like which area to farm and whether to play solo or in groups. The other is forced upon players, like what affixes your drops have or whether a dungeon spawns in a given area. Players tolerate the latter to much higher degree than the former.

[3] Filled with jargon, but: http://forums.d2jsp.org/topic.php?t=59979863&f=52. Look at Hellfire Torches for a typical desireable item, and Black Hades for an extreme example.

[4] These are the post-expansion stats, but it illustrates the principle, which is much reduced, but still very much alive: https://us.battle.net/d3/en/item/immortal-kings-tribal-bindi....

ordinary··on Euclid: The Game
Hm, seems to only work on some levels.
ordinary··on Euclid: The Game
Right click.
ordinary··on TrueCrypt developer says no to license change for forking
No, they don't. You're allowed to inspect the source code for any reason, but the license does not allow redistribution or modification. TrueCrypt is not open source or free software.
ordinary··on The Abstinence Method – Dutch farmers say no to antibiotics for livestock
This is not the place. Your post is irrelevant to the topic at hand, is itself guilty of overgeneralization, and contains not just one but a whole series of political statements of the type that originate flamewars. A favourable reading (ignoring the parts that go flagrantly against either the style guide or the community standards) reduces your post to 'nice to read this', which is contentless. Please stop.
ordinary··on The Hidden Beauty of Airport Runways, and How to Decipher Them
Is it just me or is that font a mess? The insides of the '11' are 3.8m apart. Adding the overhang of the second 1 (0.3m) and the width of the vertical lines of both 1s (2 * 0.8m) gives us 5.7m. Yet the outsides measurement is displayed as 5.6m.

Same for the 10: Adding up the space between the characters (2.3m), the width of the 1 (0.8m, just the vertical line) and the width of the 0 (3m) gives us 6.1m, yet the outside measurement is 6.0m.

Am I missing something?

← PreviousPage 3 of 14Next →