1. 1

    When I count my blessings, among them is the fact that it’s been more than 10 years since I’ve had to touch an oracle db.

    1. 2

      It’s been a while since I’ve read such snotty, arrogant drivel.

      any other laptop feels like a cheap plastic toy nailed to the floor

      This is the classic Apple fanboy “I’m griping at Apple but while I’m doing it I’ll remind you that my tribe is better than your tribe.” Apply laptops are pretty, but laptops are tools, and tools don’t need to be pretty. You can get your work done just as well on a Thinkpad or a sputnik. Get over yourself.

      Ew, creeps! Let this shit stay in 2007. I went through it. I grew up. It looks cool and “cyberpunky” for literally one evening. You never use it afterwards.

      Guess what? It’s no longer 2007 and things have changed, except evidently your prejudices.

      Things must be useful, not “beautiful”

      The irony of someone who paid 3000 Euros for a pretty laptop saying this is strong. It’s even stronger when the rest of the article talks about the time he wasted trying to make that laptop’s signature feature not suck. He’s the same kid who wasted time configuring his linux desktop in 2007, only now he’s wasting time configuring his touch bar and bragging about how much of an adult he is.

      1. 1

        One company I joined had a unit test that failed if it ran less than 5 minutes before the top of the hour. Turns out there was some bogus ad-hoc time arithmetic that added 5 minutes to the time without taking into account hours, day, month, year, etc. This test had been that way for years but the company culture was “eh, run it again and see if it passes” so nobody had noticed the pattern.

        1. 9

          Saw a huge block of XML, screamed and hit the back button.

          1. 5

            Interesting, but of course, DRM companies don’t care about ‘family’, they just care about selling you a package that is attractive to you because your wife can use it, too. I have no idea why rules like ‘you can only be the member of one family’ would be absurd or a ‘falsehood’ in this context.

            1. 4

              I consider myself to be a member of at least four families: my Mother’s family, my Father’s family, my wife’s family, and the family that consists of my wife and kids and me.

              1. 3

                “Household” or “Home” might be better terms. Seeing as most people spend 99% of their time at a single residence. This may be a group house, university, dorm, or some other place, which is fine, that’s your group.
                Unfortunately it won’t work if you have 50% time at Dad’s house and 50% time at Mum’s house, or some other arrangement.

                1. 2

                  Well, maybe you have a wife and a mistress and then there’s the pretty lady in the hotel bar you want to google play and chill with. Can you make her part of your family for 24 hours? Of course, she’d have to be a hidden family member, but that’s just a few checkboxes. Can see other family members, can be seen by other family members, etc.

                  1. 1

                    I you are affluent enough to have a mistress, you can buy her her own Netflix account!

                1. 2

                  The first net-negative programmer I ever met was on a consulting project that had been set up in a hurry so devs were hired after a brief phone screen. Until then I had heard of NNP’s but wasn’t sure they existed. Ron changed my mind. We started giving him simple jobs, then when he failed we gave him simpler jobs, then when he failed again we just made up a few make-work tasks having nothing to do with the system we were working on. He’d try, but his efforts would always break things so we ended up writing a short script called “un-ron” that would check the commit history for his commits and revert them.

                  1. 3

                    This is one of those times that it’s actually a good thing to have one of my projects become obsolete: https://github.com/caboteria/rails-bigint-pk

                    1. 2

                      ??

                    1. 16

                      On behalf of old people and Linux users everywhere, I fully agree and look forward to the end of the scourge of tiny text.

                      1. 9

                        Apache is increasingly becoming the software version of an aircraft boneyard. I honestly upvote announcements of projects moving to Apache these days not out of excitement, but because it’s one of the closest things to a “this project is now dead” announcement we have in the industry.

                        1. 5

                          A pretty large number of the projects are healthy, but it really depends on some external entity maintaining them, either a community or a company that puts resources into it. Apache itself is just kind of a repository, where the default state is indeed to repose in peace.

                          For example a bunch of the cloud-related stuff is in a not-dead state because companies like Google put engineering resources into them; that’s the case with at least Hadoop, Beam, and Spark. OpenOffice is one that’s alive because it had a preexisting community that still exists. There are also some more infrastructure-type projects that have maintainers, e.g. Maven and Subversion.

                          1. 3

                            I think you’re making a fair point, and I’m definitely not arguing that everything coming out of Apache is dead. But I do think that the overwhelming number of projects that active on Apache either began life as Apache projects (e.g., Hadoop and its entire ecosystem, httpd and its entire ecosystem) or were donated very early in their lives, when there was still active development going on (e.g. Spark, Cassandra). None of the stuff donated when it seemed sick or dying (OpenOffice, Subversion, Derby, etc.) that I’m aware of actually recovered.

                            1. 9

                              Subversion went to Apache in 2009 because the developers (including myself) wanted to.

                              We actually had to convince CollabNet that it would be a good idea to hand the trademark to the ASF. I remember getting phone calls from executives all of a sudden who had never talked to us developers before, calling each of us begging to let the project stay with CN because they were worried about this move.

                              In hindsight it was the best thing we ever did. More developers received pay checks than before, from several companies. Everyone involved understood what the rules are and nobody could bend them (even though some companies did try, and then the ASF helped us out). The intrastructure provided is absolutely reliable, and since most of the ASF projects use SVN there’s a great purpose for us working with the ASF. The project is less focused on open source users these days, though. We’re mostly sticking around to support the relatively large install base across the entire industry. Most pure software shops have moved on, but take a look at other sectors such as finance, automotive, etc… you’ll find SVN everywhere.

                              Development activity was pretty steady until last year: https://www.openhub.net/p/subversion/commits/summary That’s because a company who employed about 5 developers to work on SVN full time let them all go by December. And this is precisely why being with the ASF is a good thing. We don’t want the project to be left unable to operate when a single company changes strategy or folds. Just look at what happened at Sun.

                              1. 3

                                You’re also re-enforcing my point about what Scott Hanselman calls “Cold Dark Matter Programmers” - the droves of people who quietly use tools for decades after they’re no longer the new hotness, getting work done and making their lives better.

                                Software may have eaten the world, but (thankfully? :) the software INDUSTRY has not.

                            2. 2

                              OpenOffice is dead. The current release (http://www.openoffice.org/download/) is “Milestone AOO412m3 | Build ID 9782 | SVN r1709699 | Released 2015-10-28” which has at least one CVE in it that’s been known about since July. There’s been talk recently of retiring the project, which seems to have rekindled interest in it, but the community has moved to LibreOffice.

                            3. 3

                              That’s rather better than the libtiff story though.

                              1. 3

                                I get where you’re coming from here but I also think this can be a matter of perception. Ruby and Python programmers tend to view Java as “dead” because they work in places where it’s not used much, meanwhile, a HUGE chunk of critical infrastructure still runs on the JVM. I suspect Apache software is similar.

                                1. 2

                                  Usually, that happens in the incubator, which is why such projects have a long incubation phase.

                                  There’s an astonishing amount of working Apache projects.

                                1. 5

                                  I had a “huh?” moment when I clicked the link, then realized that it was the post-signup page. It’s more obvious what Blisk does on the home page: https://blisk.io/

                                  1. 1

                                    Ah, sorry about that!

                                  1. 2

                                    I’ve used this tool and I’d recommend it only as a last resort - the packages it builds aren’t much better than tarballs. I’ve found that I can almost always find the packaging scripts for a “real” Fedora or Debian package of the code I want to install. The advantage to leveraging the upstream packaging is that the config files, log files, libraries, etc etc all end up in the right place.

                                    1. 4

                                      I’ll read between the lines and infer that the server that they lost was hand-crafted and that’s why he needed to recover from a backup and not just fire up and configure a new one from scratch in a few minutes. This read like something written before devops existed.

                                      1. 2

                                        No need to read between the lines, he says as much. It’s a PHP based web server running the Laravel framework. This doesn’t preclude the use of configuration management at all, but it’s probably an indicator that this person should be using a hosted service (Does Heroku do PHP? :) rather than trying to maintain a VPS. Either that or they need to invest the time in upping their game.

                                        1. 1

                                          Just FTR, if you have to use PHP, I would definitely recommend Laravel. If I were him I would run it on OpenShift since they have Laravel cartridges ready to deploy with all the dependencies necessary.

                                          1. 2

                                            Seconded. Laravel brings a ton of reason and quality patterns to PHP.

                                      1. 2

                                        The problem with 500 is that it’s misleading to the client. Anything in the 400 range means “you messed up, send me something different” where anything in the 500 range means “I messed up and someone will fix this bug.” Percival’s solution is OK when there’s only one client and he wrote it, but it’s not OK when clients will be writing their own clients because it’s misleading to them.

                                        1. 3

                                          The problem with best practice #3 is that the database itself may change in ways that make your schema creation scripts no longer work. So I’d view practice 3 as a guideline (“should” not “must”), but you also need to be able to modify schema creation scripts if necessary.

                                          Also, the title should be “Database schema versioning best practices” because versioning the data is a whole different kettle of fish.

                                          1. 1

                                            We use Rails. It’s overkill for API’s but we have a bunch of stuff in one app (including web pages) and don’t have enough volume to make the run-time inefficiency be a practical problem.

                                            1. 4

                                              Not long after, Sidekick users noticed prolonged service disruptions until eventually, Microsoft discovered that this data center had not been updated to run on Microsoft technology, which ultimately led to the system failure.

                                              <cough>Bullshit!<cough>

                                              1. 3

                                                If you enjoy the book and think it would benefit kids to read it, you can donate a copy to libraries: http://craphound.com/littlebrother/donate/

                                                1. 4

                                                  There are some really great historical details here. I particularly enjoyed:

                                                  The IBM 1401 does not use bytes. Instead, it uses 6-bit BCD storage.

                                                  It would be super interesting to understand why they built it that way. BCD seems like an interestingly inefficient way to do arithmetic in hardware. Had the “standard” binary encoding approach not been invented yet? Was there another good reason?

                                                  Even the comparison instruction cost extra.

                                                  That whole paragraph is very interesting in comparison to the normal way of doing things today. It’s not unusual for modern hardware products to have features physically supported but soft-disabled. Sometime between the late 60s and now (probably driven by VLSI), the economics of hardware changed dramatically.

                                                  The 1401 I used is the Sterling model which it supports arithmetic on pounds/shillings/pence, which is a surprising thing to see implemented in hardware.

                                                  I consciously knew that the pounds/shillings/pence age ended in the early 70s, but my unconscious mental model of history doesn’t have it overlapping with the computer age.

                                                  1. 5

                                                    Was there another good reason?

                                                    Since it was designed for business they probably wanted to avoid the errors that come with representing base-10 fractions in binary. Billing systems, for example, often use BCD arithmetic so they can perform accurate arithmetic on large columns of numbers with fractions.

                                                    1. 4

                                                      I don’t know why BCD was chosen, but the fact, noted later in the story, that raw machine code was human readable is a really interesting side effect, especially when working at such a low level. Wonder if that was a factor?

                                                    1. 1

                                                      I had intended to become a SFC supporter for a while now, so this is the nudge I needed.

                                                      http://sfconservancy.org/supporter/

                                                      1. 10
                                                        1. 1

                                                          I’m not sure how in that proposal you alleviate the merge bubbles. If you have more than one person working at a time, it’s relatively intractable.

                                                          Because git rebase is a manual race between developers to get in, and the merge would be successful anyways, I haven’t seen projects with greater than 5 devs really manage anything like that without something like Gerrit.

                                                          1. 4

                                                            So use Gerrit. You should be doing code review anyway with >5 devs.