1. 9

    I recently told my boss I could rewrite 80% of our project from scratch in a few months, with two caveats.

    1. I choose which 80% of the features
    2. I’m not making any promises about the other 20%
    1. 4

      Is that really helpful at all?

      1. 1

        Nope. He and I both knew that the ugly 20% that I would exclude is actually indispensable from the customers’ perspective. We were talking about our ongoing efforts to modernize the product, and I brought it up to illustrate the same point that this blogger does.

    1. 0

      The new computer had a one-plus-one addressing scheme, in which each machine instruction, in addition to the operation code and the address of the needed operand, had a second address that indicated where, on the revolving drum, the next instruction was located.

      In modern parlance, every single instruction was followed by a GO TO! Put that in Pascal’s pipe and smoke it.

      – The Story of Mel

      Pretty crazy! I’m sure glad we don’t do anything like that any more.

      More specifically, the attacker first finds usable gadgets in the victim binary. She then uses a buffer overflow vulnerability to write a sequence of addresses of gadgets into the victim program stack. Each gadget performs some computation before executing a return instruction. The return instruction takes the return address from the stack, and because the attacker control this address, the return instruction effectively jumping into the next gadget in the chain.

      – Spectre Attacks: Exploiting Speculative Execution

      Everything old is new again.

      1. 33

        In other news, resistors and capacitors are keeping kids from electronics, and getting their hands icky is keeping kids from cooking.

        It’s been proven that saying programming is easy is a bad idea, it isn’t. Also all instructions given to a computer in anyway get translated at some point or other into machine code (best represented by lists of text instructions if you want a human to read it). Pretending that’s not true doesn’t seem useful.

        It would be better to frame this conversation in terms of the group of people who want to make computing in some way accessible to other people. What are they trying to achieve and what do they want out of this ‘coding’ experience. Let’s just stop pretending that that has anything to do with programming, which is always going to be processing lists of instructions.

        1. 24

          The whole point of the article is that their playtesters were intimidated from starting the game because the text UI looked too scary, but if the game started with icons and gradually switched over to text kids had no trouble with it.

          1. 14

            That’s funny because for me it was exactly the other way around. Ok, I was a bit older than five years old, twice that even. Still a young kid. Back then I discovered mIRC and learned how to write mIRC scripts. To this day IRC has been my favorite protocol: next to being able to easily talk to each other, the event based potential is just very appealing.

            (Ok, anekdote time. If there was an ability to hide the rest of my comment underneath a “read more” link, this is where you could click. But since there isn’t any such functionality, the best I can do is offer my apologies to anyone who is displeased by the length of my comment. Clicking on the [-] next to my nick will hide the entire thing.)

            Maybe a year or so later if memory serves me right — I can’t have been much older than 12 because I can still remember both the old house where I used to sneak into the other room to steal, err, borrow my stepdad’s external ISDN modem and extremely long phone cable; and the monthly fights we had about the phone bills — an online friend told me that you didn’t have to use an IRC client (intended to be used interactively) for automation: someone named Robey Pointer had designed IRC bot software called ‘eggdrop’.

            (My friend also kept going on about how envious he was of Robey’s last name which initially made me reconsider our friendship, it sounded so weird that it made me unsettled – many months later a different friend unsettled me again when he told me about pointers, causing me to realize that my first friend actually might not have been that weird at all)

            This ‘eggdrop’ thing made me very curious and I couldn’t wait to give it a go. So I got onto my 486SX with Windows 95, downloaded and extracted the zip file, executed eggdrop.exe and.. wait.. what was this? All I saw was a command prompt that did appear to show some text, but it disappeared before I could make sense of it.

            So I opened up a command prompt myself, typed ‘eggdrop.exe’, and read something cygwin something, and about there not being a user file, et cetera. Alright, my curiosity was now really piqued.

            Eventually I got it running and was very pleased with myself – anyone who’s ever configured an eggdrop knows that it’s not exactly trivial, and even more so when most of it is way outside the things you know about.

            Then I discovered that it actually wasn’t for Windows at all. Thanks to the integrated Cygwin it worked, but as it turned out most people would use something entirely different from Windows. Called Linux.

            And that’s how I discovered and got fond of Linux. First RedHat, then SuSE, then Slackware… and to this day, 20 years later, I still enjoy using the terminal, and IRC, and all kinds of other exotic things that people call anything from unappealing, to downright scary, with ‘complicated’ somewhere in the middle. I don’t think it’s any of that. All one needs is a curious mind, the ability to disregard what other people say about it, and fun ideas. I didn’t care about how esthetically pleasing any of it was, at all. I cared because of how thought provoking it was; a new dimension, and mine to explore.

            To me this is where the heart of the matter is and I think it’s where most people are mistaking - in my view, computers in and of themselves aren’t fun. Computers shaping people aren’t fun either. People shaping computers is where the fun’s at.

            What makes working with computers so intriguing, especially from an engineering perspective, is that you’re immersing yourself into a world of codified thoughts made entirely by human brains. The choices, and even psychology behind things. It’s like a labyrinth: intelligently designed by humans, so there simply has to be logic to it.

            Discovering the logic. That’s the appeal.

            1. 7

              I was a bit older than five years old, twice that even. Still a young kid.

              That’s a huge difference in terms of reading skill. Maybe bigger than the additional reading skill you acquire between ten and twenty years old.

              I think this article has more to do with early childhood development than it does with teaching programming in general. The more I think about, the more I’m impressed that children that young were able to do any kind of programming.

              And the more I think about it, the more I hate the title.

              1. 2

                Agreed. Plus, the more I think about it, the less I trust the research: you can never go wrong with 5 year old subjects. Totally unreliable.

                But, gah, I’ll admit. I wrote most of my comment before realising how old they were. So that explains that.

              2. 3

                This was very unexpected and gratifying; thanks. (My last name got a lot of laughs in programming classes, too.) :)

                On topic, I think “the thrill of solving puzzles” is a big part of what got me into coding as a kid, too. I still remember Silas Warner’s “Robot War” and trying to figure out why one bot always won. Part of the disconnect here may be that 5 is too young for most kids to find fun in written language, so the puzzles have to be scaled down. But my instinct agrees with yours: dropping a puzzle in front of a kid and saying “this should work, if you can figure it out” is usually a great way to motivate them to learn something.

              3. 4

                It’s more likely a lack of autocomplete and red squigglies. Also having a cheat sheet on hand would probably help when getting started.

                1. 3

                  “Danny! Don’t eat the cheat sheet!”

                  5 year olds ¯\_(ツ)_/¯

              4. 11

                I’m sympathetic to text, and to programs as lists of instructions, and I totally agree that saying programming is easy is counter-productive. But I feel I’m missing something about your argument given the obvious holes, so can you elaborate?

                1. I don’t understand this distinction you’re making between ‘programming’ and ‘coding’. To the extent that programming isn’t accessible, I think we should be changing programming to be more accessible. Creating new distinctions seems unnecessary, and also inherently a political rather than technical act: even if you don’t intend to, you’re liable to end up creating us-vs-them divisions between ‘programmers’ and ‘coders’.

                2. Programs always eventually get translated to zeros and ones. Surely that doesn’t mean we should be programming in zeros and ones? You’re obviously aware of expression-oriented languages like Hy. Similarly, translating icons to addresses doesn’t seem much different to me than translating words to addresses. What am I missing in your argument?

                One of my students is contributing to this project which assigns icons to new procedures by default. It seems useful.

              1. 19

                I almost entirely disagree with this. The only thing I’ll grant is that you can’t always tell the exact same story in a video game as you can in another medium (Doh!).

                For instance, Papers Please is a game about checking paperwork as an immigration inspector. It would make a fairly boring book or movie, but as a game, it tells an interesting story that’s entirely influenced by every one of the player’s decisions.

                There are plenty of other examples of this type of game, and its really a disservice to the medium to choose a small subset of AAA action games that are attempts to copy Hollywood films, then blame video games for being poor imitations of Hollywood films.

                1. 4

                  Papers, Please gives you an emergent story, which I love and which games can do better than any medium. I think the article could have been better titled, “Video Games Are Better Without Scripted Stories.”

                  Even then, there are a few scripted games stories that I love. I do feel like they’re the exception.

                  1. 3

                    I think this critique misses the crux of the article, which criticizes specific movements in artistic video game storytelling through understanding the relationship of storytelling to the rules and problem solving we consider gameplay. Specifically, it’s exploring the investigatory style of facade-like “storytelling through environment” techniques that dominates game storytelling (Papers Please still falls under this kind of storytelling), which holds its own shortcoming by creating a foundational contradiction between the mechanical and fictional.

                    AAA games especially suffer from this contradiction because of their publisher’s interests in cinematic industry profits and disinterest in conceptual artistic problems related to storytelling. And this is made especially interesting because of the massive influence and cultural importance of AAA games. It’s a useful examination.

                  1. 8

                    Unmentioned: the Chicago Tribune website has been steadily declining in quality. I won’t argue the quality of writing, but there are constantly more ads (pulling up the top story, my ad blocker caught a dozen items and there were still four on the page). Around the time of this change, they introduced a paywall that limits you to X articles per month and has an undismissable modal telling you turn off your ad blocker (few blocker filters catch this modal).

                    Facebook watches everything. If they notice the rate of users clicking through to ChicagoTribune.com and bouncing back to Facebook.com in a couple seconds has lept up, they’re going to consider it a low-quality site and serve it less often. Facebook probably never made a decision to reduce the frequency of links, or of news links, or of links to the Trib - this is probably just a general quality filter doing its job.

                    1. 2

                      But what about their parent company’s plan to focus “on leveraging artificial intelligence and machine learning to improve the user experience and better monetize our world-class content in order to deliver personalized content to our 60 million monthly users and drive value for all of our stakeholders. Our rebranding to tronc represents the manner in which we will pool our technology and content resources to execute on our strategy.”

                      Surely that would have improved their site’s quality by now?

                    1. 4

                      I was surprised to see so many are leaving Lisp for Python… but then I remembered one popular company did exactly that, and everybody spent the next decade rehashing the decision.

                      1. 12

                        I love Lisp, truly, but for modern workloads, the ecosystem is there for Python and it’s not there for Lisp (which Lisp? Common Lisp? Scheme? Which implementation of CL?).

                        If I want to connect to some Amazon API, there’s already a library in Python that’s well-supported, well-documented, and has tens of thousands of users. If I want to do that in Lisp, there may or may not be a library that may or may not work and may or may not be kept up to date. Python has networking and encryption in the standard library, etc, etc.

                        I remember reading an article by…Paul Graham?…about writing early web apps in Common Lisp (I think it was the original Yahoo! Market, but don’t quote me on that). All of the things he talked about were revolutionary, and he was right that nobody could do what they were doing at the time…but that was because nobody had written it in any other language either. When you’re starting from absolute scratch, Lisp will win, but very, very few projects are started absolutely from scratch anymore.

                        1. 3

                          I remember reading an article by…Paul Graham?…about writing early web apps in Common Lisp (I think it was the original Yahoo! Market, but don’t quote me on that)

                          You remember correctly. http://paulgraham.com/avg.html

                        2. 3

                          Most things in technology are there because of legacy and overriding commercial imperatives.

                          Alas, very seldom in this industry does the best technology win.

                        1. 6

                          Is this article a troll?

                          1. 4

                            It did a nice job of dancing on that line so I couldn’t decide. Until I saw those numbers. $15 an hour? Definitely a troll.

                          1. 3

                            This person’s lab practices terrify me. I’m surprised he hasn’t described any hospital trips.

                            1. 2

                              He sounds very smart and also very stupid.

                              1. 2

                                The lack of hospital visits sounds like it’s attributable to, besides a bit of luck, some pretty serious safety equipment in the post-high-school examples: full-body hazmat suit, respirator mask with faceplate, etc.

                              1. 5

                                It would be nice if some of this were true. But we aren’t living in an era of fragmentation; we’re living in an era of consolidation. The rate of new business formation collapsed in the recession and hasn’t recovered. The economy is increasingly dominated by big, old firms.



                                1. 1

                                  The best part is Carmack’s comment on the article. He isn’t so anti-STL any more, even if he still doesn’t love it.


                                  1. 6

                                    I personally prefer µBlock, since it’s compatible with AdBlock-style filters while providing the option to only block cross-site stuff (as opposed to cosmetic blocking). It’s more of a privacy-centric approach, as opposed to the “all ads are bad” approach taken by the AdBlock devs that essentially breaks online monetization.

                                    1. 2

                                      EFF’s Privacy Badger is another one that focuses on cross-site content and trackers rather than ads per se. It does require a bit of fiddling though, because it sometimes breaks pages that require cross-site loading for functionality, e.g. an embedded google widget of some kind (you can override that on a site-by-site basis).

                                      1. 1

                                        How does Privacy Badger compare to telling Chrome to block third-party cookies?

                                        1. 2

                                          I use all 3. uBlock Origin. , Privacy Badger and a cookie white list.

                                          The cookie white list has had a huge impact on my habits. I don’t have hard data, but my Amazon spending dropped dramatically once cookies were blown away!

                                          1. 2

                                            It blocks more than just the cookies; it also blocks (some) third-party content from loading, to make it harder to do even server-side tracking (many of these trackers don’t strictly depend on cookies, using other techniques like browser fingerprinting and IP logging). Uses some heuristics about what’s likely to be doing cross-site tracking.

                                            For example, when I loaded cnn.com just now, it blocked things from 17 domains from loading: aax.amazon-adsystem.com, www.budgetedbauer.com, staticxx.facebook.com, www.facebook.com, cdn.gigya.com, partner.googleadservices.com, secure-us.imrworldwide.com, vrp.outbrain.com, vrt.outbrain.com, widgets.outbrain.com, a.postrelease.com, pixel.quantserve.com, ads.rubiconproject.com, consent.truste.com, www.ugdturner.com, ad.doubleclick.net, and cdx.krxd.net. It allowed a further 3 domains to load widgets but without allowing cookies: static.chartbeat.com, cdn.optimizely.com, cdn3.optimizely.com.

                                      1. 5

                                        SQL at #24, just ahead of Haskell? Oh-kay.

                                        1. 2

                                          As a DBA, I can assure you that very few developers actually engage with SQL, preferring to hit the DB through an ORM or other SQL wrapper instead. On the one hand, it’s frustrating, because there are still plenty of those “looping over ORM calls generates 10k queries where one would do” situations. On the other, it’s often fairly easy to tune something if they’re willing to embed raw SQL in their code (usually raw SQL that I write, mind you).

                                        1. 2

                                          My ultimate goal when work on a difficult project is that when problems arise, as they always do, it should require almost no effort to pinpoint and fix the problem.

                                          “I don’t maintain legacy software that was architected by anyone less wise than me,” he bragged.

                                          1. 5

                                            I don’t think it should be that hard for him to get his coding chops back. The harder problem might be re-learning how to focus on a job in the first place. Six years of doing nothing is a long time to form habits.

                                            1. 9

                                              Getting stuck too easily in a local maximum is bad. Searching indefinitely for the global maximum is bad. You just have to be willing to stick most of the time, and hop around other times. Now I just need a name for it… pretend tempering?

                                              1. 18

                                                “But the plans were on display …”

                                                “On display? I eventually had to go down to the cellar to find them.”

                                                “That’s the display department.”

                                                “With a torch.”

                                                “Ah, well the lights had probably gone.”

                                                “So had the stairs.”

                                                “But look, you found the notice, didn’t you?”

                                                “Yes,” said Arthur, “yes I did. It was on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying Beware of the Leopard.”

                                                1. 5

                                                  Ha, no argument Apple could be more transparent. But the initial post (and comment thread, for that matter) could have been much more informative without the “they’re coming to steal your datas” speculation. “How to safely use Apple Music” would be a great post.

                                                1. 1

                                                  Just wow. And yet his column in boot was so cool. Anybody remember that?

                                                  1. 18

                                                    ? means save and 刀 means sword. After a while, you don’t need a reason.

                                                    1. 18

                                                      Give me a minute to put on my tartan kilt, because no true statically typed language would leave it until run time to discover that your code doesn’t handle a null pointer in that one spot.

                                                      1. 5

                                                        Yelp’s chief operating officer, Geoff Donaker, acknowledged the unicorn poaching phenomenon…

                                                        Poaching unicorns? Is nothing sacred?