The 'brushing' scam that's behind mystery parcels - <AUTHOR> https://www.bbc.com/news/technology-54055669 <comment><USER2> > According to Citizens' Advice, if an item is addressed to you, there has > been no previous contact with the company, and it arrives out of the blue, > then you can keep it.

You might not want to, through. I an was almost-victim of another scam where the scammers opened an account at Best Buy using my information with (someone else's) stolen credit card, and ordered a laptop and shipped it to my address. I returned it to the store immediately and notified Best Buy of the scam, but the next work day a FedEx guy came with a prepaid label (from the scammers) to pick it up. The idea apparently was to confuse me about the return, so I'd accidentally ship the laptop to the scammers rather than Best Buy.

It would've worked too, but I'd already returned the package in person and called the police (because I'd assumed the scammer's plan was to steal it from my doorstep). I didn't realize something was wrong with the pickup until the Fedex guy was almost ready to drive away, but I waved him down to get a look at the label.

The name/address on the was that of a recent immigrant living in New York City. My understanding is that he's probably just a schmuck who got taken in by some fake work from home scam to transship the stolen items. He may even think he's working for Best Buy to process returns.

In any case, I think if I'd kept the laptop I'd have been guilty of receiving stolen property, at least. At worst, I could have been assumed to be a bumbling scammer and charged with credit card fraud (though, being a white professional worker, that probably wouldn't happen since I would probably be given the benefit of the doubt, but other people wouldn't be so lucky).

<comment><USER3> >> there has been no previous contact with the company

Every law student is given that speech. There used to be a specific scam targeting new lawyers. When a new law office was setup it would be sent books and lawyer-related equipment, along with a bill for payment. The scammers hoped the bill would just be paid without further inquiry. So law students are now warned and told that they can keep such "gifts".

But that isn't how the real world works. Who here doesn't have any previous contact with amazon? What if the package contains something very illegal (drugs etc) and the police are watching it? That will be a fun afternoon. Or what if your new address, previously perhaps a vacant house, is being used by someone buying illegal stuff? Yesterday he would pick it up from the door of an empty house. Today the package is inside the house. Unrequested deliveries should not be treated lightly.

<comment><USER4> Not sure why previous contact with a company matters?

Here's what the U.S. Federal Trade Commission says about receiving packages you didn't order [1]:

"What do you do when you receive merchandise that you didn't order? According to the Federal Trade Commission, you don't have to pay for it. Federal laws prohibit mailing unordered merchandise to consumers and then demanding payment."

There is obvious nuance here [2]. Maybe receiving "stolen property" for example. But if the item is addressed to you, and you didn't order it, I think you're in the clear, and certainly nobody can demand payment and enforce it.

-edit-

This reminds me of the scams in Europe where someone will grab your hand and put a bracelet on or put a flower in your hair or something and demand payment. I've been in this scenario. All you have to do is walk away or just throw the merchandise on the ground. They'll change their tune quickly.

[1] [https://www.consumer.ftc.gov/articles/0181-unordered- merchan...](https://www.consumer.ftc.gov/articles/0181-unordered-merchandise)

[2] I'm not a lawyer.

<comment><USER5> In the Pre-Covid Age that scam was pretty common in NYC, too. Usually it's someone dressed as a Buddhist monk in a tourist area like Times Square who will walk up to you and press a charm into your hand, then ask for payment. This happened to me when I first moved here years ago. I wasn't sure what was happening so I thanked him and kept walking, thinking it was some kind of religious proselytizing thing. He came after me and angrily demanded money, so I handed the charm back and left.

Here's an article from a few years ago about these fake monks being a nuisance on the High Line park: [https://gothamist.com/news/the-high-line-is- struggling-with-...](https://gothamist.com/news/the-high-line-is-struggling- with-aggressive-fake-monks)

<comment><USER6> My policy is to never take anything from any person on the street. Flyers, comic club tickets, CDs, cans of soda, I don't want the interaction.

</comment></comment></comment></comment></comment><comment><USER7> There is a Book-Parcel scam in India, and I was one of the victims.

When you register a new company, your details are out there in the open, targeted by scammers, spammers, and other marketing specialists. I'm usually paranoid and am good at detecting BS, but this slipped through.

On a fateful day in 2015, while I was driving, the security guard at our building called me to say there is a book order, and the mailman was asking for cash payments. Highly unlikely because I always pre-pay and don't do the Cash-on-Delivery, which is 90%+ of the eCommerce in India.

I had earlier helped the guard's family, especially his daughter (similar to my daughter's age), with some school fees and gifts. So, he is always looking for ways to "repay" me. He offered to pay off the ₹2,500+ for the "official book" order.

In the melee of me driving and the "official book," I told him to go ahead. I paid him the amount he paid the mailman but never told him about the scam lest he feels terrible.

I still have that book-order well packed to remind me of the time when I was scared. I will have it as part of my collectibles (family museum).

<comment><USER8> What was the scam? That maybe you forgot you ordered it? Or that since it's a company someone will more likely take possession and pay thinking it's for someone else?

<comment><USER9> That someone, like the doorman, will just pay it and assume someone ordered it and they'll collect from the someone.

Scammers used to do a similar thing here with xerox/laser toner cartridges.

They'd call ahead and find out what kind of machine you have, and then ship a pallet of the right cartridges for it. Cheap refills, terrible quality, they'd be worth pennies on the dollar compared to the real ones. But, they fit and they print, so the alarm bells aren't ringing yet. Someone else must've ordered these, but they're "the right ones".

Some time later, an invoice shows up. For the amount you'd expect to pay for a pallet of genuine cartridges, which is vastly more than this junk was worth, but does anyone notice? Sometimes, it just gets paid; someone forgot they ordered this, yeah? Whatever, just pay it. Sometimes, this smells fishy enough that it doesn't get paid, and then the scammers call up (sounding like a legitimate office supply firm) concerned about the overdue invoice, and "if you've already opened them then it's not returnable, so yeah, you have to just pay it at this point."

All lies -- it was sent unsolicited, you're under no obligation to pay for it. But a lot of people will, especially if the cold-call weeks ago where they asked about the machine might be vague enough in the memory that, maybe you did agree to buy some?

So the scammers take $600 in product and get $4800 for it. Enough return to make it worthwhile even if quite a few don't fall for it!

</comment></comment></comment><comment><USER10> There's another scam involving mystery parcels:

The scammer will order a product, to be delivered to your address. Crucially, they use delayed payment.

After delivery, the scammer will come to your door to get the package, claiming a shipping or ordering mistake. As you didn't order it yourself, you'll probably give them the package.

A while later, the store will send you the bill, and they'll harass you until you pay them.

<comment><USER11> This must not be a US thing. I don't know of any business that ships a product prior to receiving payment.

<comment><USER12> Book/CD clubs used to work that way. They shipped you the 'book of the month' and then you'd either return it or pay for it.

<comment><USER13> Not exactly. They would always send a postcard or something similar beforehand allowing you to opt-out.

</comment></comment></comment></comment><comment><USER14> Why does the actual product need to be delivered to the fake reviewers? Surely "Kleinman candles" knows which addresses are fake and can simply not send the candles out to them.

Edit: I'm going to guess because these shady drop-ship companies use FBA and similar?

<comment><USER15> I want $1M free dollars. I send 1000 packets of seeds with tracking numbers to 1000 random addresses, and then write 1000 fake 5-star "verified purchase" reviews. Total outlay? 1000 x $0.55 postage = $550.00.

I then take my 1000's of five-star review page, and start selling diamond earrings for $199.95. I collect $200k in cash from 1000 sellers who get duped, and never ship anything to anybody ever again.

Repeat x5 and you have $1M free dollars.

<comment><USER16> Why would you send seeds instead of sending 1000 empty envelopes?

<comment><USER13> Maybe because you outsource fulfillment to a legitimate company, and they will find it strange to send empty envelopes?

So instead you give them seeds to ship which probably cost less than the envelope itself.

</comment></comment></comment></comment><comment><USER17> I have yet to see anyone show any evidence that the "mystery seeds" are "brushing"; and it seems like it would necessarily exist, wouldn't it? If there's someone using the fact of the parcels having been delivered as documentation of something, why has no one found an example yet?

<comment><USER18> I've gotten literally empty ePackets before (long before the recent seeds thing). I assumed they were some kind of Aliexpress scam, but it never hit me personally in any way I could tell other than a few seconds of opening and tossing empty bubble envelopes.

<comment><USER19> I recommend you to open an AliExpress, and Amazon accounts with the letter a letter exact (including register) address to one from ePacket.

They will detect the duplicate address, and likely give a surprise to the seller.

</comment></comment></comment><comment><USER20> Nina Kollars had a nice related talk during Defcon on a similar scam buying what she thought was gray market Nespresso pods whose "seller" bought for her using a stolen credit card. They also gave her a free Nespresso machine, presumably to give her motive to keep quiet.

[https://www.youtube.com/watch?v=2IT2oAzTcvU&ab_channel=DEFCO...](https://www.youtube.com/watch?v=2IT2oAzTcvU&ab_channel=DEFCONConference)

</comment><comment><USER21> Have had similar in Canada: ordered footwear from a seemingly legit website. Some time later cheap jewellery arrived in the post with the same tracking number and Paypal was duly debited for the cost of the footwear. I reported to PayPal (who promptly refunded) and suggested they shut down or suspend the account, and also the the Canadian Fraud Center (apparently < 5% of people take the time to do this)

[https://www.competitionbureau.gc.ca/eic/site/cb- bc.nsf/eng/0...](https://www.competitionbureau.gc.ca/eic/site/cb- bc.nsf/eng/04339.html)

</comment><comment><USER22> "I then set up a load of fake accounts, and I find random names and addresses either from publicly available information or from a leaked database that's doing the rounds from a previous data breach. I order Kleinman Candles from my fake accounts"

Do all these accounts have the same credit card number? I'd think Amazon checks card numbers, so lots of accounts can't use the same card. Or does brushing need getting lots of different card numbers too? I wouldn't think they are so easy to come by in bulk.

<comment><USER23> The card number problem should be somewhat easy I would think. You either use gift cards or one of the cards out there that lets you create virtual card numbers for online purchases. I would think at some point if you were spinning up hundreds of virtual cards you'd get flagged, but gift cards should be awfully easy other than the time/effort to actually acquire them.

</comment></comment><comment><USER24> Brushing scam recipient here. The coolest thing I've gotten so far is a fancy coffee mug. The lamest thing has been a baggie for jewelry (no jewelry included).

<comment><USER9> They sent me a forehead thermometer (turned out surprisingly useful, hey!), a crappy USB powerbank, and a very compact sleeping bag.

I dismissed the first as a hiccup, but it was weird enough that I took photos of the packaging just in case. When the second arrived, I figured something was up and tried to open an Amazon case, but gave up because the process was frustrating. When the third arrived, I did more research on the scam and persisted enough to open a case, and I think they must've done something because I haven't received any more.

What's odd is that it would be in my short-term interest to have said nothing, and continued receiving interesting goodies. But it's in my long-term interest to have a marketplace I can trust. Will my action lead to that? Fuck no, not until Amazon pulls their head out of their ass.

I'm not holding my breath, and I'm putting a lot more effort into buying things ABA -- Anywhere But Amazon.

</comment></comment><comment><USER25> This was happening in Georgia with people first receiving seeds but then other types of packages were also being delivered to people not requesting them. Pretty much identified as the same type of scam the article related.

* both have video stories attached

[https://www.wsbtv.com/news/georgia/get-surprise-package- it-m...](https://www.wsbtv.com/news/georgia/get-surprise-package-it-might-be- scammer-heres-what-you-need-do/SUJHVKJAGRD3BPU4GP7EJ27ZNQ/)

[https://www.wsbtv.com/news/local/not-just-seeds-georgians- re...](https://www.wsbtv.com/news/local/not-just-seeds-georgians-receiving- other-mysterious-packages-china/IS5LOI2R45CBNNUDAYEFBRAGEA/)

</comment><comment><USER26> NPR's podcast Planet Money did a piece on brushing which goes into bit more detail than the BBC article: [https://www.npr.org/transcripts/606517326](https://www.npr.org/transcripts/606517326)

</comment><comment><USER27> I want to know the scam behind the rash of SMS message I and many of my friends have gotten recently. The text is different each time, but similar to:

 _Johnny, urgent alert regarding your USPS shipment 6G55M7 from 03 /25/2020\. Go to: [url redacted]_

For the past couple of weeks I've gotten one of these every day or so, always from a different number. I keep marking them spam, but I doubt that helps if they just keep making up new numbers.

I haven't had the courage to click on the link to see where it goes.

Does the link try to exploit my browser or download malware? Is it just an old fashioned phishing attack?

<comment><USER28> I've gotten similar ones, except with a local firm instead of USPS, and I live in Sweden.

</comment></comment><comment><USER29> My wife keeps getting packages in the mail containing cheap jewelry, the type you'd find in a vending machine for $.25 USD. It's all very strange.

<comment><USER30> maybe she has an 8 year old secret admirer

<comment><USER31> or maybe she is feeding an exceptionally intelligent crow

</comment></comment></comment><comment><USER32> Here's one we received earlier this year for your analysis. Personal details were ours including the phone number. The package contained a bag of seeds. Not the rose stud earrings claimed (that we also didn't order).

[https://imgur.com/a/sRMLbDj](https://imgur.com/a/sRMLbDj)

</comment><comment><USER33> My girlfriend gets a random package from Amazon about once a week. The products have not been purchased from her account. When she contacted Amazon they didn't care and just told her to reset her password. We suspect it is this. We either keep the items or donate them.

</comment><comment><USER34> These scammers are really not thinking this through. They could send out something cheap with their company logo on it, and make it double as advertising.

<comment><USER35> I think not identifying yourself is a key part of a successful scam

</comment></comment><comment><USER36> Related to what they reference.

Whatever happened to the whole seed panic? There was so much speculation that made no sense.

</comment><comment><USER37> Far more likely at the beginning of lockdown people panic bought what they thought were vegetables from amazon grocery but were in fact vegetable seeds from chinese sellers because they didn't read the descriptions fully.</comment>


Launching Soon - <AUTHOR> http://LaunchSoon.com/ <comment><USER2> $29 for what when last.fm costs $3? these guys have found a very spectacular niche

</comment><comment><USER3> I think you would be better off with a hosted version ..

</comment><comment><USER4> launchsplash.com also provides a free hosted one</comment>


How My Car Insurance Exposed My Position - <AUTHOR> https://andreascarpino.it/posts/how-my-car-insurance-exposed-my-position.html <comment><USER2> Wow thats horrible... I don't understand why this consider negligence does not get a stronger legal response.</comment>


Minecraft turns 3 years old, sells 13,000 copies in a day - <AUTHOR> http://www.minecraftforum.net/news/497-minecraft-turns-3-years-old-today/

<comment><USER2> A popular indie game is not so surprising. What's surprising is the sheer magnitude of the profits: $359,000 in daily profits -- a $131 million profit run rate. Pure profit. It's conceivable that Notch will become a cash billionaire over the next few years if the growth continues. That's just insane.

<comment><USER3> Seeing Minecraft's profits makes it abundantly clear how much game industry money is being extracted by middlemen, big men and other parasites.

<comment><USER4> Especially when you consider that Notch split his $3M cash dividend across his staff - I don't know if it was staggered across the roles, but on average it would be roughly $125k a piece.

</comment></comment></comment><comment><USER5> Minecraft is one of the few modern examples of Gave Design triumphing over Graphics. That alone is enough to make me cheer wildly for every positive news I hear about Minecraft.

I want to thank Notch and the team for making/extending this game, and the players for making it popular. It brings me hope that this _counterculture_ can grow stronger in the years to come.

<comment><USER6> Gave Design should be "Game Design".

<comment><USER7> I think it makes an interesting and appropriate typo :)

</comment></comment></comment><comment><USER8> I have been interested in the rise of minecraft, so about 3 months ago I started scrapping some stats from the website and forums every day. I grabbed total users, total paid users, forum post count and forum member count.

You can see that data here: <http://pastebin.com/W8AhzfK8>

I haven't been doing it for very long, so there is nothing of great interest in the data, other than the crazy amount of money that Notch must be making.

<comment><AUTHOR> If you ever want to do cool analysis let me know, I can provide you about a years worth of forum history, can't help with the minecraft.net side though, but there must be someone with the data out there!

</comment></comment><comment><USER9> Amazing...truly amazing.

Startups are inspiring, but this is one of my favorite success stories of the decade.

<comment><USER10> Successful startups and Minecraft seem have quite a bit in common: [http://techcrunch.com/2011/01/15/a-brief-explanation-of- why-...](http://techcrunch.com/2011/01/15/a-brief-explanation-of-why- minecraft-matters/)

</comment></comment><comment><USER11> Minecraft.net has a stats page here: <http://www.minecraft.net/stats>

       28,850,178 registered users, of which 5,884,899 (20.40%) have bought the game.

       In the last 24 hours, 125,974 people registered, and 13,337 people bought the game.

Approximately 5374 sales a day.

<comment><USER12> I'm assuming you calculated the average sales/day over the time period since day 1? When did they first launch btw?

<comment><USER11> Good question. I just assumed 3 full calendar years. I'm pretty sure that the 'birthdate' is when Notch went public with the project and people started being able to play it, but I don't know if that's the same date that people could _pay_ for it.

It had multiple price points so it's hard to estimate profit. People who bought the game early (like me) paid significantly less than the current $26 price.

<comment><USER4> There are a few historical graphs showing the sales (the wiki keeps track of the various price points too), however I'm yet to find a graph for the whole 3 year period.

[http://crafthub.net/wp- content/uploads/2010/10/purchaseandre...](http://crafthub.net/wp- content/uploads/2010/10/purchaseandregistered1.png)

Remembering here that Paypal froze Notch's account in September 2010, and even then there was 600K Euro in there.

<comment><AUTHOR> Heh, that screenshot is from my website. The utility I built that used to track the sales (during the period of that screenshot) was turned off once minecraft.net became unreliable (used to crash and I didn't have things in place to avoid data corruption). I wish I had kept it going, would have been great to have it still.

</comment></comment></comment></comment></comment><comment><USER4> Just for curiosity sake. What's HN's opinion on Minecraft keeping a regular level of sales into the long term. Noting that it's an ongoing development title (and that's a large part of the continuing appeal.)

My observations on /r/minecraft and the minecraft forum reveal that while there is a solid base, the vocal majority of posters seem to be green.

<comment><USER13> Whilst I'm sure the growth rate will slow, I think there is potential for it to hit a consistent long term growth trend.

Minecraft is basically a modern version of Lego - and Lego has for the most part been consistently popular and sells well. There is a constant batch of new customers (ie kids) who will always enjoy the freedom of exercising their imagination and building their own worlds.

</comment></comment><comment><USER14> As someone that only really learned about minecraft fairly recently, that old tech demo video of minecraft from 3 years ago was rather interesting. Is anyone aware of perhaps a series of videos that document its progression?

<comment><USER15> There's a documentary in the making.

<comment><USER15> [http://www.kickstarter.com/projects/2pp/minecraft-the- story-...](http://www.kickstarter.com/projects/2pp/minecraft-the-story-of- mojang)

</comment></comment></comment><comment><USER16> Anyone have insights on how they ported a JVM game to Xbox 360?

<comment><AUTHOR> As msarchet stated it was a rewrite. The game wasn't built by Mojang but an external studio (<http://4jstudios.com> / <http://en.wikipedia.org/wiki/4J_Studios>).

</comment></comment><comment><USER17> Congrats! I've been tempted to get the iOS version, maybe this milestone will compel me to do so.

The only indie-game-story I respect as highly is Dwarf Fortress. It's hard to imagine how that dense gameplay could ever make a sales breakthrough but what incredible game design it is

<comment><USER18> The game engine was going to be used by Notch as a '3D Dwarf Fortress' but ended up turning into Minecraft. I wish I could have seen it as Dwarf Fortress.

Also worth checking out is a game called Towns.</comment></comment>


Ask HN: Please, how do I now power my laptop? - <AUTHOR>

A quick background. <comment></comment><comment></comment><comment>=
I am woking on a startup (read: using my computer always). 80% of the time, I generate my own electricity with a petrol/gas generator.
On new year's day, the Nigerian government increased the price of petrol/gas by 120%. Instantly doubling the cost of my electricity in addition to other costs. Therefore, making it really hard to afford working with my computer as often.
What is needed </comment><comment></comment><comment>== I would love suggestions on affordable alternatives for generating reliable renewable electricity. I am told solar is expensive, but I understand that is if you are trying to generate serious power.
Of course I could Google, but I wanted something that has actually been used by a membeer of this community. It will spare me the cost on taking gambles on what I see online.
Thanks a million.
This is 2012. We would not allow irresponsible decisions by mere mortal governments hold us back :) </comment><comment><USER2> Check the OLPC project's power listserv. They have been hacking on your problem for years.

<http://lists.laptop.org/listinfo/Power>

<comment><AUTHOR> I will check it out. thanks!

</comment></comment><comment><USER3> As much as solar can be expensive (Possibly even more so considering you would need it shipped in) looking into some of the other possibilities isn't a bad idea. Solar I would think could end up more reliable, and be able to generate enough, I've seen some 60W panels for sale for around $100-200 USD at various times. 60 Watts should be fine to charge up most laptops. I think some more information about what kind of laptop you have could tell us what kind of power generation you need.

Edit: It looks like some amount of it might be cheaper if you're doing it yourself [1]. I'm not sure where to find a good reputable place for finding kits like this though.

[1] [http://www.ebay.com/itm/Solar-Cells-DIY-Panel-Kit-w-- Junctio...](http://www.ebay.com/itm/Solar-Cells-DIY-Panel-Kit-w--Junction- Box-%26-Controller/120714891984)

<comment><AUTHOR> I am willing to spend up to $400 depending on mobility and reliability.

My laptop charger is 60W. it is a normal HP pavilion laptop.

</comment></comment><comment><USER4> Power inverter off of your automobile's battery. If you are regularly driving enough to keep the car battery charged, this is largely free power...of course with the price of petrol going up, you may not be driving as much.

<comment><USER5> "this is largely free power."

Does it come with lunch?

</comment></comment><comment><USER6> Voltaic systems has a nice solar charger laptop bag. I'm not sure if this would work for you: <http://www.voltaicsystems.com/generator.shtml>

<comment><AUTHOR> I was hoping I could get something I can hang on my roof and connect to a plug.

The bag looks quite elaborate.

</comment></comment><comment><USER7> I worked with airjaldi.org in the Himalayan mountains for a few months. They use a solar+mains hybrid to power wifi mesh nodes, but the issues they had to work around (variable voltage inputs, using locally available components) might be applicable for your laptop charging use case as well. Here are some design specs. Good luck! <http://drupal.airjaldi.com/node/69>

</comment><comment><USER8> Something like this?

[http://www.amazon.com/Sunforce-50048-60-Watt-Solar- Charging/...](http://www.amazon.com/Sunforce-50048-60-Watt-Solar- Charging/dp/B000CIADLG/ref=pd_sbs_auto_5)

Amazon's price in the US for this is $299. If you had two, one could run your laptop, and the other could charge a battery, which you could use at night.

</comment><comment><USER9> Have you _considered_ different hardware? <https://en.wikipedia.org/wiki/IPad#Power_and_battery> suggests that an iPad consumes ~2.5W (0.5A at 5V via USB). An iPad, or a decent netbook, should be much easier to keep running than your current 60W machine.

<comment><AUTHOR> I plan to get an Android tablet later in the year.

However, if used consistently, I will also need to charge it. :)</comment></comment>


The new features of Fortran 2018 [pdf] - <AUTHOR> https://isotc.iso.org/livelink/livelink?func=ll&objId=19441669&objAction=Open <comment><USER2> Modern FORTRAN looks more like Matlab than FORTRAN 77. The syntax has been completely overhauled since at least '95.

For a while I was translating my Matlab codes to FORTRAN; it was surprisingly easy. But I was being too naive with array resizings in Matlab and most of the speed gain (which was like 2-3 orders of magnitude) could be achieved in Matlab itself by preallocating memory.

To this day I have the nervous tick of initializing arrays with zeros even in numpy.

<comment><USER3> > _To this day I have the nervous tick of initializing arrays with zeros even > in numpy._

The typical way to create arrays in Numpy is with `np.zeros(size)`. What is it that you're doing?

<comment><USER4> Note there's also `np.empty(size)` if you know you're going to initialize all the values in a later step, in which case it can skip assigning zeros to every element.

</comment></comment></comment><comment><USER5> Fortran users of HN - what are the best resources (online / books / ...) to pick up Fortran in 2019? Are there any open source codebases you'd consider as good to read through?

<comment><USER6> Modern Fortran by Milan Curcic seems to be a pretty good book.

[https://www.manning.com/books/modern- fortran](https://www.manning.com/books/modern-fortran)

Most other 'modern fortran' books assume you have knowledge of older fortran versions.

<comment><USER7> Thanks! "Publication in Fall 2019 (estimated)" at the moment: "8 of 13 chapters available"

Table of Contents and samples on the author's site:

[https://milancurcic.com/book/](https://milancurcic.com/book/)

Here's author's recent series of articles "Analyzing stock price time series with modern Fortran":

[https://milancurcic.com/2018/11/06/analyzing-stock-price- tim...](https://milancurcic.com/2018/11/06/analyzing-stock-price-time-series- with-modern-fortran-part1.html)

</comment></comment></comment><comment><USER8> Ahhh... FORTRAN -- my first language: CDC 3100, 1965. What magic.

<comment><USER9> FORTRAN77 on a VAXCluster in 1986.

Still have my copy of "FORTRAN 77 For Engineers and Scientists" just in case.

It was very easy to pick up for someone who had only used AppleII or TRS-80 BASIC.

<comment><USER10> I used to have Fortran77 notepad for hand writing code — later I would type it in. Always began in the 8th column if I remember right?

<comment><USER11> Yep -- old-school fixed-format Fortran had one column for the "c"(omment) marker, seven for the statement number (maybe 5 plus spaces on either side?), then 72 for the code before you fell off the end of the punch card.

<comment><USER12> No, you get all 7 spaces for the statement number; live it up a little!

Don't know if it's still the case, but in FORTRAN IV you don't need spaces between keywords and variable names. So when the compiler sees "FORI=2" it has to look still further ahead to decide if this is a for-loop (FORI=2TO9DO) or an assignment to a variable named FORI. Decidedly not a context-free grammar; you can't even figure out the tokens without the ad-hoc parser getting involved.

<comment><USER13> No. In fixed format form, statement numbers are columns 1-5. "FORI=2TO9DO" is an unclassifiable statement; try "DOII=...".

<comment><USER12> You're right! I was remembering columns 73-80 reserved for "card number".

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The most notable thing I spotted is they have deleted the arithmetic IF from the language, which must be one of the more characteristic features of classic FORTRAN.

<comment><USER15> I agree. The non intuitive reason stated is that there is a standard that specifies a sign for zero, and numeric IF doesn't distinguish between them, and it depends upon labels which are hard to optimize.

Another notable capability is that procedures default to recursive and there is a way to state they are non_recursive.

</comment></comment><comment><USER16> What's the degree of backward compatibility with FORTRAN releases? I imagine most FORTRAN codebases as being huge and old, so it makes me wonder how many can adopt the latest versions.

<comment><USER17> Each new standard usually removes a very small number of features, but Fortran 2018 is mostly a superset of Fortran 77. Most compilers retain absolute backward compatibility, so they can compile a superset of Fortran 66 to 2018, and often some custom language extensions on top.

<comment><USER18> Only some of the real ancient pre FORTRAN IV stuff has been removed.

</comment></comment></comment><comment><USER19> I've been really interested in learning Fortran for a while- I work doing a lot of computational stats/ML and typically my tools are python, R, or Golang. Is there any use-case for Fortran in production settings or should I just accept it would be purely a personal satisfaction project?

<comment><USER20> It's very fast and there is a new Manning book about to come out on Modern Fortran that is all about parallel Fortran.

In addition to being fast, I find it considerably easier to read than C++ as it isn't as low level and doesn't have as much noise (at least the later versions like Fortran 90).

It also makes writing numerical code easy as it was truly built for high performance scientific computing.

A lot of older scientific projects run on Fortran and although I know some projects that were migrated to C++, it wasn't due to any defect from the language besides it not being taught very often in colleges now outside of some astrophysics classes where it was once a mainstay in engineering and science curriculums.

There are several compilers available, but a lot of them are commercial and some are expensive. There are free versions as well of course.

<comment><USER21> Though the main reason (for a while) that Fortran compilers could produce faster code was that they were allowed to assume that variables (including arguments to your functions) don't alias each other.

See [http://beza1e1.tuxen.de/articles/faster_than_C.html](http://beza1e1.tuxen.de/articles/faster_than_C.html)

<comment><USER22> I don't understand the "Though" part of this. The only reason any compiled language may be faster than another is because a compiler knows/assumes more about the code (either through users specification, or restrictions of the language).

<comment><USER21> Yes. That's the remaining reason when compilers for the languages in question have gotten as good as they can get.

</comment></comment></comment></comment></comment><comment><USER23> WATFOR anyone? My first programming language in college. Spring 1969. [https://dl.acm.org/citation.cfm?id=363059](https://dl.acm.org/citation.cfm?id=363059)

<comment><USER24> I used WATFIV in 1982.

</comment></comment><comment><USER25> Fortran 77 was the language I used in my first job in 92 on DOS and Unix. Can't see the benefits over other languages like C, Go, Python though. Unless you've got some specific high performance floating point ops requirements?

<comment><USER11> Quite a few scientists and engineers have those requirements. I wouldn't choose it for writing a web server or text processing, but Fortran is actually a pretty nice language for dealing with numbers and arrays. It also has decades' worth of well-tested numerical libraries, which can be very subtle and hard to get right.

<comment><USER21> Thanks to the magic of computer science, we can package up a lot of those libraries for use with other languages as well.

<comment><USER11> Sort of, but we haven't figured out how to make language boundaries disappear. For example, row- vs. column-major ordering of arrays is an eternal pain when communicating between C and Fortran.

Numpy, R, Matlab, etc. are good scripting languages for a lot of Fortran, but if you ever need to peek under the hood...

<comment><USER26> Not in C++, thanks to the power of user defined types.

</comment></comment></comment></comment></comment><comment><USER27> I just love it that Fortran is #1 on the front page.</comment>


Finch – local port forwarding - <AUTHOR> https://meetfinch.com/ <comment><USER2> Looks pretty similar to ngrok, aside from the fact that ngrok has an unrestricted free tier.

(Looks like ngrok.com is down at the moment: [http://web.archive.org/web/20140504031732/https://ngrok.com/](http://web.archive.org/web/20140504031732/https://ngrok.com/) )

<comment><AUTHOR> It looks also very similar to Localtunnel ([https://localtunnel.me](https://localtunnel.me)), except that Localtunnel is free and open source, so that you can run it on your own server. But Finch seems to be a little more user-friendly (easy forwarding of url's, for example).

<comment><USER3> And that localtunnel.me is a Node.js "port" of the original localtunnel (which has been superceded by ngrok): [https://github.com/progrium/localtunnel](https://github.com/progrium/localtunnel)

</comment></comment></comment><comment><USER4> It's important to know that your content, intellectual property, and possibly confidential user data including full http request/responses are being proxied by this service. Their privacy policy is vague about what they will do with this information other than to say they will collect and process it:

[https://meetfinch.com/privacy](https://meetfinch.com/privacy)

"In running and maintaining our website we may collect and process the following data about you:

Information about your use of our site including details of your visits such as pages viewed and the resources that you access. Such information includes traffic data, location data and other communication data. Information provided voluntarily by you. For example, when you register for information or make a purchase. Information that you provide when you communicate with us by any means."

<comment><AUTHOR> I think that all of these type of services are able to access your content. Maybe the don't do so, but unless you run this on your own server, your data is in principle accessible by the service.

<comment><USER4> Agreed. Just want to point it out to those that jump in head first without understanding the consequences of that action. You might get fired from your job for doing this or severly reprimanded. You might unwittingly cause a production data breach for some reason you never even imagined. So it's a message of be careful and understand fully what you are doing.

</comment></comment></comment><comment><USER5>
        ssh -R 80:localhost:8080 ubuntu@some-ec2-instance -i key.pem

<comment><USER6> This has been my technique for a long time. I usually add -N, since there's usually no need to do anything on that host.

</comment></comment><comment><USER7> Or give everything an ipv6 address and just use DNS. Once you get accustomed to every VM and every container and every little experiment having a routeable IP address life gets easier.

<comment><USER8> Would you happen to know of any good tutorials for this? Are you talking about using something like Docker?

What exactly is your workflow?

Thank you.

<comment><USER7> Allocate a /64 to any machine that runs VMs or containers. Then I tend to just run radvd which will broadcast the prefix so that hosts can auto assign; for virtual hosts letting them auto assign based on mac address is usually fine, as the mac address is random or you assign explicitly (explicit is often easiest). Its fairly simple, just get ipv6 and start using it...

</comment></comment></comment><comment><USER9> If you're using vagrant v1.5+, there's vagrant share: [http://docs.vagrantup.com/v2/share/](http://docs.vagrantup.com/v2/share/).

Requires a vagrantcloud account, free during beta: [https://vagrantcloud.com/](https://vagrantcloud.com/)

<comment><USER10> I want to jump in here and officially say that Vagrant Share in its current form will likely be free forever.

<comment><USER11> Awesome, that's good to hear!

</comment></comment></comment><comment><USER12> Its crazy the data people will hand over to total strangers for the promise of a little convenience.

</comment><comment><USER13> Looks like [http://proxylocal.com/](http://proxylocal.com/) (and others), but implemented in Node.js ?

Would be interesting to see a chart & timeline of similar services and products reimplemented each time a new tech comes around...

<comment><USER3> [http://john-sheehan.com/blog/a-survey-of-the-localhost-proxy...](http://john- sheehan.com/blog/a-survey-of-the-localhost-proxying-landscape)

I guess I need to update this now.

<comment><USER14> If you're updating it, could you note that the PageKite client and server are open source?

[https://pagekite.net/wiki/OpenSource/](https://pagekite.net/wiki/OpenSource/)

<comment><USER3> Adding now

</comment></comment></comment></comment><comment><USER15> Huh. And here I figured Finch was command-line pidgin. What happens when names collide in open source world?

<comment><USER16> Basically one of either outcomes happen: 1\. Maintainers of both projects fight it out and one project gets renamed. Users are happy. Packagers are happy.

2\. Maintainers of both projects fight it out and neither compromise. Users of both projects (intersection of the sets, rather than union) are pissed. Packagers are even more pissed, and put in an annoying and difficult situation, and forced to come out with weird hacky solutions to appease users. ([https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=614907](https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=614907))

To any of you who read this and find yourself naming a project in the future, do your users some justice and at least do some cursory Googling before settling on a name. And please don't pick annoying-to-Google names like + or * or - or _ or some other one- or two-character name.

</comment></comment><comment><USER17> The name looked familiar... then I realized, there's multiple Finches. [https://developer.pidgin.im/wiki/Using%20Finch](https://developer.pidgin.im/wiki/Using%20Finch)

</comment><comment><USER18> Some of the subdomain URLs it creates are pretty hilarious. I got [https://massive-boys.usefinch.com/](https://massive-boys.usefinch.com/)

</comment><comment><USER19> As yet another alternative Runscope Passageway [https://www.runscope.com/docs/passageway](https://www.runscope.com/docs/passageway)

<comment><USER3> It's a crowded space :) [http://john-sheehan.com/blog/a-survey-of-the- localhost-proxy...](http://john-sheehan.com/blog/a-survey-of-the-localhost- proxying-landscape)

</comment></comment><comment><USER20> How is it different from Pagekite? (Apart from requiring node.)

</comment><comment><USER21> FWIW, if you just want to forward a port you can run:

        natpmpc -a 9077 9000 tcp 36000

which will forward 9077 to 9000 for 3600 seconds.

<comment><USER22> Mac user (or at least Airport Express)? NAT-PMP is a competitor to uPNP which is more likely to be implemented on a consumer grade router.

[http://v2.nat32.com/upnpc.htm](http://v2.nat32.com/upnpc.htm)

It looks like the upnpc and natpmpc apps are in the same package though.

<comment><USER21> Yeah, I came across `natpmpc` when I discovered the Airport Express at the office does not support uPNP. Our new Asus N66U supports NAT-PMP so I thought maybe it was more common these days.

</comment></comment></comment><comment><USER23> It would be nice to make a upnp version of this for when you're on the same network, you just don't want to mess with finding your ip

</comment><comment><USER24> This looks cool but I couldn't imagine putting a development concept through someone I don't know's server.

</comment><comment><USER25> You appear to have 10 hours of traffic a month right now, while it's in beta:

[https://meetfinch.com/pricing](https://meetfinch.com/pricing)

Once they roll out paid plans, their 20 hour/month plan is $15/month. And (at least based on their pricing page now) you don't get reserved subdomains until the $25/month option, so you end up getting a random URL whenever you set a site up (again).

</comment><comment><USER26> I've been using Finch for quite a while now, and I absolutely love it. As a lot of people have pointed out, there are several alternatives and/or competitors. But, as @lachgr points out, Finch is very user-friendly, which—to a designery type like me—is invaluable.

</comment><comment><USER27> I've made the trip from localtunnel to pagekite to ngrok.. Ngrok is the greatest of all time. Being able to intercept, modify and replay is a life safer when debugging webhooks.

[https://ngrok.com](https://ngrok.com)

Good there's competition though.

</comment><comment><USER28> Like I said for the last one of these, your own VPS or server plus 2 lines of Nginx config plus ssh -R gets you the same thing with no additional dependency. And you control the domain name.</comment>


Jim Weirich – Connascence Examined - <AUTHOR> https://distill.engineyard.com/video/jim_weirich

<comment><AUTHOR> I was able to meet Jim, albeit briefly, at Distill Conference last year. He gave one of my favorite talks of the conference (the link posted). It's useful advice for all programmers. He also performed 'God Writes in Lisp Code' with his ukelele during one of the lightning talks. Hopefully, there's video of that floating around as well. RIP Jim.</comment>


Cloudflare Workers Is Now on Open Beta - <AUTHOR> https://blog.cloudflare.com/cloudflare-workers-is-now-on-open-beta/ <comment><USER2> Starting to work on it and maybe built solutions on it without knowing the price is kind of risky...

</comment><comment><USER3> Does this worker make me fill out a captcha twice a day to use the internet?</comment>


Mesosphere (open-source Nintendo Switch kernel) now boots most commercial games - <AUTHOR> https://old.reddit.com/r/emulation/comments/hygtnx/mesosphere_opensource_nintendo_switch_kernel_now/ <comment><USER2> This isn't ready for mass usage. Simply put this will replace the original kernel and allow users to use it just like they do with the current ReiNX or Atmosphere packages. Just stating that progress is being made and it's very close to being ready to release (that could still mean months away though).

</comment><comment><USER3> zero instructions on installation. Nonexistent documentation.

</comment><comment><USER4> you mean Atmosphere?

<comment><USER5> Mesosphere isn't even mentioned on the GitHub readme, but it does appear to be a component of Atmosphere.</comment></comment>


Why You Need a Degree to Work for BigCo (2013) - <AUTHOR> http://braythwayt.com/homoiconic/2013/12/28/why-you-need-a-degree-to-work-for-bigco.html <comment><USER2> I've worked for BigCo and startups, and don't have a degree. It has never been an issue, anywhere I've worked, ever. I've asked. They don't care. The only time it would matter is if it was a legal requirement for professional engineering (anything involving safety).

Yes, BigCo wants to hire middle of the spectrum folks who live in the suburbs and do a decent job for a fair wage. But they also want to (and do) hire hackers.

<comment><USER3> It can be tricky to work at BigCo as a hacker among middle spectrum folks. They want people to slot right in.

<comment><USER4> I usually advise hackers to work in a BigCo at least once. I think it's really important from the perspective of learning how to manage your manager an how to interact with people who aren't as excited by technology as you are.

<comment><USER3> I can definitely see why you'd recommend it. I suppose mileage will vary though.

In my experience, things worked out moderately well for a little while, and then burned me out, leaving me unable to find my way back into a lucrative gig to this day. I don't regret it, but regret not leaving earlier.

</comment></comment></comment></comment><comment><USER5> Lame.

What happens when you're over thirty and want to marry and have kids? Are you then not cool because you need/want to have a stable home? Are you not enough of a hacker, not 1337 enough, because you want to work for a company that might be around in 3 months?

It never ceases to amaze me how many people, who consider themselves very smart no less, by default consider anyone even five to ten years older than them complete fools for making choices that would be irrational to a 20 year old. Got news for you, you'll grow up one day, if you're lucky.

<comment><USER6> The author, who speaks of himself in the third person, was a parent and in his forties when he wrote that.

Perhaps the article is not a comment on whether making conservative life choices is or isn't cool. Perhaps the article is not a comment on whether a degree in CS does or doesn't provide personal edification or improves your programming.

Perhaps the article is nothing more than what it claims to be: A comment on why a certain type of conservative company requires a degree, and _their_ opinion of people who embrace or eschew conservative life choices.

<comment><USER7> Large companies employ many people without degrees, it's really front line managers that handle those requirements. Further, while self taught programmers are often very good they tend to be weaker _at working with other developers on large scale projects._ So, many managers have examples of both and still prefer people with degrees for most projects.

<comment><USER8> Do they teach how to work with other developers on large scale projects in CS degrees? Or is the problem that people without those degrees can't get hired BG big corps with large scale projects and can therefore never get the experience?

<comment><USER7> It's a set of skills that's indirectly taught in many CS programs. You can debate the relative importance of for example a shared vocabulary, but it's clearly useful.

</comment></comment></comment></comment></comment><comment><USER9> This reminds me a lot of a book I read a while ago called "Disciplined Minds" by Jeff Schmidt. It focuses on the sociological aspects of hiring practices & performance evaluation measures in the knowledge economy. It's a rather obscure book but I found it fascinating.

Basically, one of the central conclusions is that many of the metrics by which knowledge workers are evaluated are really less about measuring actual technical competence or domain knowledge and much more about detecting the propensity for conformity and obedience.

Maybe that's not too surprising for some, but what's even more interesting is that this can often be the case _without the evaluators /managers/people in power even being aware of it_. In many cases they genuinely believe they are evaluating for domain mastery / technical skill, but are fooled by the hidden signal that correlates to what they see as "desirable" outcomes.

<comment><USER10> Do we know that people with degrees conform at greater rates than people without degrees?

Is an uneducated blue collar worker, for example less likely to conform to authority than a person with a degree or advanced degree?

<comment><USER6> I think we have to ask that question _in the context of a job where degrees are the norm_ (whether justified or not).

It could be, for example, that a person with a degree working nights as a security guard is less likely to conform, while a person without a degree who gets a job that traditionally requires a degree is less likely to conform.

Maybe it's all about being "intentionally different."

</comment></comment></comment><comment><USER6> Author here. This originally appeared in 2005, when I blogged on a different platform.

<comment><USER11> Did you change the layout since the original publication? The quotation marks at the beginning of every other paragraph are vaguely confusing.

</comment></comment><comment><USER12> > Because quite honestly? I'd read your business plan any day. Your résumé > would look better on top of a funding proposal, than under a cover letter.

Wow, what a way to sum up such an topic! Thanks.

</comment><comment><USER13> I think the reason big companies will ask more often for a degree is that they are more risk averse. More exactly the people working there are more risk averse and hiring someone without a degree would require some explanation since it's not common practice. Also people sometimes need to hire for roles they don't know much about and having a degree provides some kind of assurance about the candidate's knowledge. It's true you can be better at doing your work without a degree but the article makes it sound like it's a bonus, which is not, at least to my eyes. BigCo doesn't care that you are going to stay there for years, most probably it would prefer higher rotation rates.

</comment><comment><USER4> Well, I sometimes wonder about this. I have a Master's Degree in Computer Science from RIT, and I despise working at BigCos. I spent a decade doing "cog development" and I learned I hated it. It was boring, stifling, draining, and unfulfilling. Perhaps the 2 most exciting times in my career were when I was working for 2 startups, when we were building news systems, putting in our own processes, and solving interesting problems.

I will admit I could do more on the side in terms of blogging, working on open source projects, and learning new skills, but I do have a family I need to raise and house to repair and improve. It's something I am working on.

</comment><comment><USER14> This really makes you ask 'What on earth am I doing with my life?'. The article is well said ,they want you to be too scared to leave,much like a well cared for house slave would. They even trick you into believing "benefits" are a valid form of compensation.

That being said,not all corps are like that. Some take in people like me with no college education(hah!) And give us opportunities to prove ourselves.

<comment><USER15> May I ask what field you are in and how you managed to get your foot in the door without a college educations?

<comment><USER14> Would love to answer,however not in a public forum like this. I can say that I paid my dues and had people take a chance on me.

</comment></comment></comment><comment><USER16> What college proves is that you have the ability to think and execute on at least a 4-year horizon. Modern day devs where a "framework" is obsolete in 2 years when a new fashion comes along, will obviously not see the value.

<comment><USER17> Aren't most of these modern day developers 4-year Computer Science graduates though? They seem awfully short sighted to me by following every latest fad.

</comment></comment><comment><USER18> Some businesses are based primarily on credentials, others on performance.

With a broad spectrum in between, this can make it difficult for an outsider to know where they would stand or even if they could be allowed into the organization.

The bigger the business, the more it can get by on credentials alone, or sometimes on the parasitic action of the credentialed on the true domain performers.

Especially "institutions" which became "too big to fail" before anybody living was even born.

</comment><comment><USER19> Very well said!</comment>


When a Fatal Grizzly Mauling Goes Viral - <AUTHOR> https://www.outsideonline.com/2396854/grizzly-mauling-yukon <comment><USER2> Honestly, when you're dealing with the scale of the Internet, ie. billions of people, do the disgusting comments of a few dozen, hundreds or even thousands of people matter? It's not something you encounter in the "real" world, but it feels like we need to change our scales logarthimically when talking about Internet comments.

Probably a million people read about that article and 99% didn't think those horrible thoughts, but maybe less than 1% did and commented on social media. Just by sheer numbers, you're going to get a lot of terrible comments, it seems like this is the "new normal" and growing thicker skin is something we all need to deal with, unfortunately. To a regular person, a few dozen shitty comments will be hard to take from real people, but when considering the scale of the Internet, it's probably not significant and it's something we all need to learn, unfortunately.

<comment><USER3> Even in person you'll probably get a considerable number of awful comments, there are simply a large amount of insensitive people out there. It doesn't help that they feel emboldened by anonymity.

<comment><USER4> Insensitivity, I think, can be a coping mechanism for some. I was a teenager during 9/11\. I remember having a good cry about it and then spending the rest of the day looking at and sharing wildly inappropriate photos (that we now call memes).

<comment><USER3> I agree. Perhaps evidenced by yourself, the people who we call insensitive or trolls today, could be the pillars of society tomorrow. We should be very careful when trying to answer the question "what do we do with these people?".

</comment></comment></comment></comment><comment><USER5> Is the comment of "she should have had a gun" really that insensitive? I say this as someone who grew up in bear country and knew people that had bear spray readily accessible when outdoors. I'm sure some of them would've carried handguns if Canadian gun laws were less restrictive and not dictated by urbanite easterners out of fear.

<comment><USER6> I don't know in which bear country you grew up, but good luck killing a grizzly attacking you by surprise with most guns. Not that this is fundamentally impossible (her husband did it, after all) but not with a handgun. These guys are nothing like the black bears you may see in other parts of America...

<comment><USER5> Grew up in Alberta, but spent a lot of time as a kid in the Kootenays in British Columbia, so no stranger to grizzlies. I've seen a few while hiking as well, very scary.

I think the idea that a handgun cannot penetrate a Grizzly's skull is a myth anyways. Plenty of accounts of people shooting attacking grizzlies dead with a large calibre handgun. Bear-spray can work but what if it doesn't or what if there's wind working against you?

<comment><USER6> Sure, it is not _literally_ impossible to kill a grizzly with a handgun. But, to quote yourself:

> Handgun can work, but what if it doesn't?

The point is not that it should be forbidden to bring guns when you hike in grizzly territory, but that by experience, many people who do are also the least knowledgeable about bears (and I say it that way to stay polite). Who cares if I let meat leftovers next to the campsite, I have a gun! Who cares if I go down a trail rangers explicitly told me not to because of the bear presence, I have a gun!

</comment></comment></comment></comment><comment><USER7> "In the aftermath, I found myself surprised and disturbed by the amount of attention the attack received. I felt intensely protective of my grieving friends and my shocked, horrified community—I wanted to shield them from the intrusive phone calls, the strangers creeping into their social-media profiles, the awful, cruel comments appended to every news story."

...so I wrote an article in Outside magazine about the other bad people writing articles about it.

<comment><USER8> You seem to think that this is ironic, but I fail to see how you came to that conclusion.

</comment></comment><comment><USER9> It seems like the other comments in here are proving her point. Hacker News, too, proves to be an insensitive place.

</comment><comment><USER10> > Later, after he had used his Garmin InReach to contact the nearest > detachment of the Royal Canadian Mounted Police (RCMP)

Did this read to anyone else like an extremely odd product placement advertisement? Why not just say 'satellite phone'?

<comment><USER11> It's a publication for outdoor enthusiasts (and armchair enthusiasts too) who care about such details (equipment and its capabilities). Not all satellite products work in all regions, and readers might be interested in what worked in this case, as well as what someone might choose Also, it's not a sat phone, it's a sat messenger (no voice, only text messages), as well as emergency beacon (though the article does not go into enough detail about whether he used the emergency functionality or just the texting).

<comment><USER10> That makes sense, thanks.</comment></comment></comment>


Technical Debt Is Like a Tetris Game - <AUTHOR> https://www.fluentcpp.com/2020/01/17/technical-debt-is-like-a-tetris-game/ <comment><USER2> The best analogy for technical debt is debt - that is where it got the name from! Just like financial debt, technical debt is not necessary a bad thing, but a tool - and something to manage, control and track. And just like financial debt, taking out too much technical debt without paying it back can crush you.

There is nothing wrong with taking out a mortgage (and thus getting into debt) to buy a house - you just need to understand how to pay it off. Similarly, if you start a startup trying to find product-market fit before running out of money, there is nothing wrong taking on technical debt to do so, as long as you understand what you are doing.

<comment><USER3> The difference though is that financial debt is very easy to measure and quantify but technical debt is not.

I like the Tetris analogy because that game has a type of debt that anyone who has played it can understand, yet is not as easily quantifiable as financial debt.

<comment><USER4> It's like financial debt, but we can can't tell you what the interest rate is.

<comment><USER5> or if you'll ever have to pay it back. Just because you have some tech debt doesn't mean you'll actually have to ever deal with it.

<comment><USER6> I was going to say the opposite, just because you'll "pay it off later" doesn't mean you're not paying for it now, with every single change taking longer than necessary.

<comment><USER5> why not both?

</comment></comment></comment></comment></comment></comment><comment><USER7> Software with significant technical debt is like a car held together with duct tape and kept moving with WD-40.

1\. You wouldn't pay good money for it if you knew what was under the hood.

2\. Most mechanics are reluctant and embarrassed to work on it.

3\. Maintenance is going to cost more than you think, probably by a wide margin.

4\. You wouldn't expect a major manufacturer to ship a brand new vehicle this way.

5\. Nobody who knows what they're doing will ever brag about having a hand in creating it.

</comment><comment><USER8> It's a good analogy, but if this is what it took to get through to your PM what technical debt is, I think you should look for another job, stat. This is a core concept anyone with that kind of power over your work hours should understand deeply already.

<comment><USER9> >This is a core concept anyone with that kind of power over your work hours should understand deeply already.

If the individual(s) with power over ones work have spent time writing code then they will most likely have an understanding. If they haven't then it often takes analogies of this nature to help them begin to understand what technical debt is and how it has an impact on the future of the product.

</comment></comment><comment><USER10> In this kind of discussions I read the same two or three positions rehashed over and over again that are highly dependent on the situation(s) the wielder of such opinions has found themselves in previously.

One thing I've never seen properly stated is the difference between technical debt as usually described (building code that is doing the job but might not be as flexible, easy to change or fix or might not account for all corner cases appropriately) and then the kind of debt I've experience more often which is "model debt". In the field of business applications, modeling a problem correctly is 80% of the solution, and new companies usually do that job very poorly. Over time as business experience accumulates, some of those mistakes become evident. For example, how to model the identity of the users of an application, that's where the most mindless decisions I've experienced do the most damage. Let's say you assume the only type of user you're gonna have belongs to "companies" and your customers are companies. Then you discover those companies make heavy use of consultants or contractors, and all of a sudden most of your management tools and UI doesn't quite fit. You can hack it, but you end up with a large slice of your users having to manage 20 different emails to interact with your system. Just an example.

"model debt" is the most expensive and potentially fatal type of debt a new piece of software can incur, and my suggestion is for every new project, focus on building a real good model of what reality looks like before too many other technical calls are made, or you're in for a world of hurt.

<comment><USER11> Model debt a new name for product-market fit? And you are describing pivoting (maybe on a smaller scale)

<comment><USER10> Not at all, reread what I wrote. It's getting the data model wrong for the problem at hand.

<comment><USER11> You admit yourself the data model is ("80% of...") the product.

<comment><USER10> and if you get it wrong and need to fix you're not pivoting, you're just fixing bad design. "Pivot" means something different.

</comment></comment></comment></comment></comment><comment><USER12> I tend use the "Leaning Tower of Pisa" metaphor. If it leans too much, the tower will fall down. If it doesn't tilt at all, you won't sell tickets to tourists.

The art is to find the sweet spot.

<comment><USER13> > If it doesn't tilt at all, you won't sell tickets to tourists.

I dont know about that... Eiffel tower is vertically straight and sells a lot of tickets.

<comment><USER14> That's because it's unique. The tower of Piza is like several other towers if you take out the leaning part.

<comment><USER15> It's beautiful and also a very important piece of Romanesque architecture. It's probably the greatest example of circular bell tower. I'm sure that if it was not leaning, it would be still very appreciated, maybe not by the postcard turists but surely not considered "like several other towers".

<comment><USER14> > _it 's probably the greatest example of circular bell tower._

Yeah, but in Italy those are a dime a dozen.

</comment></comment></comment></comment></comment><comment><USER16> Here it is:

> The analogy with technical debt is that each new fix or development is like > a new block coming in, which you need to integrate with the existing code. > If you hack it in a quick and dirty way, it's like leaving holes in the > Tetris structure: you're making life more difficult down the line.

</comment><comment><USER17> This same analogy was made by Eric Higgins in May in this popular post: [https://medium.com/s/story/technical-debt-is-like- tetris-168...](https://medium.com/s/story/technical-debt-is-like- tetris-168f64d8b700)

</comment><comment><USER18> Might actually be the best metaphor I've seen on this topic

<comment><USER19> Like with Tetris sometimes you find a block that allows for retirement of a lot of old stuff. But maybe this block never comes. Or maybe it comes only after you papered over the debt and the solution does not work anymore.

<comment><USER20> Then there is the false sense of security coming from a skilled player deftly obviating tech debt.

Until that player departs, and the team is buried.

<comment><USER21> That's an interesting analogy and it has two sides. A skilled player might hide a lot of technical debt without even realizing it.

An unskilled one might see a lot of it that doesn't even exist.

<comment><USER20> There is a certain subjectivity in play.

Is Duff's Device technical debt?

[https://en.wikipedia.org/wiki/Duff%27s_device](https://en.wikipedia.org/wiki/Duff%27s_device)

</comment></comment></comment></comment></comment><comment><USER22> Technical debt is risk. Just like in financial systems, taking on SOME risk is how you make money, but you need to measure it and minimize it and be prepared for if the risks taken all end unfavorably. This product risk (see also dependency risk) is intertwined with the combined risk of other projects going on, whether they're public relations risk, technical risk, staff risk, etc. and taking on too much risk means you have too many flipped coins in the air to count on them all landing favorably for you, even if they're weighted.

</comment><comment><USER23> Tech debt is more nuanced than explained by most analogies.

In reality there is a lot of tech debt you can get away for free and never have to pay back. The code can be a mess but the functionality works and doesn't need updating.

Other tech debt can infect and cripple a system if it isn't contained early.

If you demonstrate that you know how to prioritize the most important tech debt then it is easier to convince management to work on it.

The concept of doing more work now to make future easier is universal. Delivering on it is the hard part.

<comment><USER24> If it never costs you anything, it's just a design decision, not technical debt. Plenty of projects never upgraded C versions, so old C is maybe not technical debt. But plenty of projects are upgrading python versions now, so old python is often technical debt.

<comment><USER25> No, there is an important difference. It's technical debt because you _might_ have to pay it back, but it might also turn out that you will be switching directions altogether and in that case the debt gets forgiven.

<comment><USER24> All code _might_ need to be tweaked though. Even talking about stable C, the toolchain under it might become unsupported, requiring a port. That means every system include and compiler definition is technical debt.

<comment><USER26> There's a difference between a toolchain becoming unsupported, and putting a hack around a feature that later becomes obsolete due to business decisions. That hack could certainly be technical debt, up until it isn't. If the code that it was implemented in is no longer used in the future, you didn't incur any cost to it.

Not an original idea but I can't remember where I heard the idea. Technical debt is the best kind of debt, because it's the only debt that you might not have to pay back.

<comment><USER24> It doesn't have to be a hack to be technical debt. Anything with a shelf life, even out of date design, has risk and costs. The old python 2 is technical debt even if it wasn't a hack. Something needs to be done, it's just a question of what and when.

</comment></comment></comment></comment></comment></comment><comment><USER27> Analogies create a false sense of meaning. Nothing new is gained other than an isomorphism. There is no logical transfer of new information because the analogy only works if you already understand both concepts. Additionally, analogies may over simplify concepts but usually people are too enamored by the isomorphism to really see it.

Think about this famous analogy: "Life is like a box of chocolates. You never know what you're gonna get."

I clearly know about how life and a box of chocolates can be random at times. This is dead obvious information to the point of pointlessness. Yet in church or in meetings you see people nod their heads in agreement as if something insightful was said. Here's reality: Nothing insightful was said, the person who was comparing life to a box of chocolates is literally mentally retarded.

Analogies are used to manipulate, not to inform.

<comment><USER28> Isomorphism can yield eye-opening insights and inspire new behaviors. Drawing connections between similar ideas in different domains can be an enjoyable and creative mental exercise.

<comment><USER27> Yes in this sense it's good. But usually for analogies it's just relating one obvious fact to another obvious fact and the relations are so flush with each other that you fail to see that all you're being told are obvious facts.

</comment></comment></comment><comment><USER29> >Even if you leave a few holes in, it's ok if you manage to have compact rows above them that will clear out and allow to fill the holes later. This is similar to technical debt, that is ok to build up if it's under control and you have a plan to pay it back later.

That's a very low-tier understanding of Tetris. At an intermediate level of play, you'll want to deliberately leave gaps that you could clear at any time, but you choose to wait until it is strategically advantageous to do so.

At an advanced level of play, you'll want to leave oddly-shaped gaps that can only be cleared with a _Clever Hack_ which not everyone is able to understand, let alone perform. (T-Spin)

Similar concepts do exist in programming, they are cynically referred to as "Job Security" but I doubt that the author intended to encourage that sort of behavior.

</comment><comment><USER30> People talk about technical debt like it accumulates to a point where you can't go on, but as someone who has worked at a company with totally overwhelming, malignant tech debt, teams can and do go on, for some definition of "going on." Don't get me wrong, it is an absolute miserable place to be. It's like a software purgatory, where things "work" but also mysteriously don't work sometimes. Will you be punished for implementing new feature X? Nobody knows--that's for the tech debt monster to decide.

I believe that learning how to identify a team that is drowning in tech debt is a valuable interview skill.

</comment><comment><USER31> This is an ad for a book on dealing with legacy code. The preview of the book [1] is more useful than the forced Tetris analogy.

Reading the table of contents of the book, it seems to assume everything is done by hand. There are some power tools for dealing with legacy code in C/C++, but I don't know which ones are any good and for what. A book which covered most of them and _wasn 't_ a fan piece for one tool would be helpful.

[1] [https://leanpub.com/legacycode](https://leanpub.com/legacycode)

</comment><comment><USER32> Technical Debt is a term used by non-professionals as a euphemism for their own incompetence. I say this not to cut people down but with all due desire for us to get better at our work.

It's a lot harder for someone to say "I didn't know how to solve this" and much easier to say "It would take longer to solve it the right way." Because of this you should take claims fo "Technical Debt" with serious suspicion -- and given how fuzzy the general concept is and how enabling it is, I think the proper response is to find it useful far more for personal ego management than as a respectable tool for thinking about execution of software projects.

There is no innate conflict between solid decision-making in a software system and execution time. Generalizations take longer but generalizations or lack thereof do not imply sound architecture; this is orthogonal concerns. But solid execution (decoupled components) is a skillset question. In fact if you have the skillset it often takes longer to make a bad decision.

Technical Debt doesn't respect this (i.e. skills/mastery) and is only good for deflecting from our incompetence and thus keeping us from acquiring the necessary skillset.

</comment><comment><USER33> Types of technical debt are not made equal.

Implementation technical debt (the code) makes it harder for devs to work in a given service, slows down velocity and increases the risk of bugs, but is at least contained to a given service and can be rewritten as a known quantity.

Architectural technical debt will crush your product or your stack, often quickly.

</comment><comment><USER34> Technical debt for me means I will have a job fixing it at my current company for many years to come (If I want it).

There will almost always be technical debt to some degree when it comes to software. Nothing is perfect and we always dont have the time to create the perfect fix..and instead need to just create something that works.

</comment><comment><USER35> I think my favorite analogy for technical debt is uncovered option, which, compared to just technical debt, adds the information that it might or might not be required to pay it back. Of course, to be able to use, your non-coder interlocutor needs to know the relevant vocabulary.

</comment><comment><USER36> It so happens I've been thinking a lot about the debt analogy recently and decided that the simplest improvement is to think of it as an interest-only loan.

Sure, that balloon is just sitting there, but every single day you don't pay it down, you are still paying interest. It slows you down when it causes confusion, when it makes integration more difficult, and when everyone is afraid to make improvements that might require changes to That Godforsaken Class.

And if instead of paying it down, you decide to add more debt, then the interest payments go up / the drag just gets worse.

And let's be honest, arguing that tech debt is not bad comes up way more often over adding more than deciding not to start paying down.

</comment><comment><USER37> Was waiting for the ultimate analogy : Plugin a tetris vertical bar is like a carefully planned ahead refactoring. It's the most effective strategy as it clean out 4 lines of technical debt in a single move.

</comment><comment><USER38> Every project needs to treat tech debt differently, for example working alone vs working with 20. How many requirements there are already, what state it was in when you arrive to see the code(most devs are not the original coders). How good the unit tests are, how proj Managment sees value in refactoring, company run way if it's a start up. Is very difficult to apply single analogy to all projects. I see programming like life, it's different every time so you have to approach refactoring to fit the situation every time

</comment><comment><USER39> I thought this was copied from my friend who wrote this article last year which became popular:

[https://medium.com/s/story/technical-debt-is-like- tetris-168...](https://medium.com/s/story/technical-debt-is-like- tetris-168f64d8b700)

Although he references a 2017 article that says the same thing so I guess it is a meme floating about.

<comment><USER40> Yes, I thought we'd had this discussion before...

[https://news.ycombinator.com/item?id=19353352](https://news.ycombinator.com/item?id=19353352)

</comment></comment><comment><USER41> > But technical debt becomes a problem when it gets out of control. > Accumulating technical debt consists in piling up hacks on a piece of code, > making it harder and harder to maintain. Every incremental change requires > an intense reflexion and is more and more likely to cause regressions.

Can anyone explain to me what reflexion means in this context?

<comment><USER42> In German it means to think about something. I'm assuming the author isn't a native English speaker.

But to reflect on something exists in English as well, just spelled differently.

</comment></comment><comment><USER43> Kelsy Hightower has used a similar analogy in regards to resource allocation which covers a little on the tech debt side of things.

[https://youtu.be/HlAXp0-M6SY?t=654](https://youtu.be/HlAXp0-M6SY?t=654)

</comment><comment><USER44> Technical debt: the horrible metaphor meant to explain a project to non- technical people but that only technical people adopted.

And then everybody needs a better metaphor to explain the bad metaphor to non- technical people.

</comment><comment><USER45> Like a tetris game where you (often) just see the top row of every column.

<comment><USER46> That would be 3D Tetris on the Virtual Boy! [https://en.m.wikipedia.org/wiki/3D_Tetris](https://en.m.wikipedia.org/wiki/3D_Tetris)

(One of the better games on there. Not a large selection.)

</comment></comment><comment><USER38> Also to be fair, if you watch masters play Tetris they always build up "tech debt" before clearing them all to the bottom magically

<comment><USER42> They take pay day loans. Because they know they can earn more money in that time. But they pay it back rapidly.

</comment></comment><comment><USER47> LOL. I've actually often referred to shitty piece placement in my well as "technical debt" when playing Tetris.

</comment><comment><USER48> I'm working on migrating a 10+ year old site into a new environment right now. The technical debt is crushing.

</comment><comment><USER27> Here's the insidious part of technical debt. There's two types:

Known and unknown.

If you are not knowingly accumulating technical debt, then 90% of the time you are accumulating it unknowingly. This is the most insidious form of debt.

I have searched my entire career in software engineering for the solution to unknown technical debt. The problem isn't just solving it, it's also clearly defining what is happening to your software over the years even when you spend the utmost care in not allowing technical debt to accumulate.

I think I sort of nailed down what's going on in a fuzzy way. I also sort of have a fuzzy solution to the problem. Allow me to elucidate:

Eventually most projects will hit a point where you realize that your initial design was poor. You are given a new feature and your old design is simply not flexible enough to accommodate the change. In order to put the feature in, you either do a massive rewrite or you hack it in.

In this way the technical debt that was accumulated unknowingly may force the programmer to begin accumulating debt knowingly. In fact they often forget about the unknown technical debt. They think that the only proper solution is to contemplate between the cost of a hacky shortcut or a massive rewrite without thinking about what caused the need for the massive change in design. What exactly is the thing that is causing the "need" for the massive rewrite?

What's happening is, whenever you design something you are predicting the future. You are assuming your design can handle certain current requirements and future ones. However, the future is actually unknown, there is very little chance you can ever predict the future in an accurate way. Thus by your lack of ability to predict the future, your design will usually in the majority of cases fail to predict the future and this problem will always occur.

That is all that is happening with unknown technical debt.

The best solution (not a full solution) to this is to design all your projects with the maximum flexibility possible. That means every corner of your code that can be factored into multiple modules or be easily factorable in the future. By coding this way, you maximize the reusability and reconfigurability of your code giving the best possible insurance for an unknown future.

If you heard of ravioli code, this is it. It has bad connotations but ravioli code is my best known solution to unknown technical debt. Most people feel ravioli code is hard to read or maintain... In a way it is, but the key here is deal with the program in layers of abstraction. Your complicated ravioli code of 100 primitives at the lowest layer must be able to "compose" into higher level layers where you only have to deal with a manageable 20 primitives.

So the key isn't just ravioli code, but ravioli code with highly compose-able modules you can use to simplify your code into layers. Think of it like a slider between flexibility and simplicity. The higher the flexibility (more primitives) the more complex your program is; the lower the flexibility (less primitives) the more simple your program is... A good design is one where at any moment in the projects life time you can move from layer to layer and readjust the flexibility and simplicity of the program at will.

Unknown to most people there is a programming style that does the above almost mechanically:

Typed Functional programming.

You may have done some FP and seen it get messy (especially with JS), but to really see why this is the solution you should take a look at Typed FP using the point free style. The point free style will help you understand the true nature of a compose-able primitive.

</comment><comment><USER49> Great analogy!

</comment><comment><USER50> Technical Debt is a bullshit term for people who want to get away with not finishing their work and still want to sound like they are reasonable.

<comment><USER24> > ...people who wants to get away with not finishing their work

In my experience the people making the debt don't use the term as much as the people pointing out the pile of ignored work.

<comment><USER50> Yes.

... or wants to get away with shitty work because they don't want to admit they don't know how to do it right and be vulnerable ...

</comment></comment></comment><comment><USER51> Analogies and metaphors are pointless. Whenever you use them, they'll just respond with their own counter metaphors they pull equally efficiently from their own rear ends, with a tone of indignation, implying you're trying to trick them.

The only thing that works with technical debt is to aggressively uncover and strike down any short term incentivisation from an organization perspective, and to set in absolute concrete terms what the irrevocable code maintenance policy is, and punish those who don't follow it. Everything beyond that, TD measurement tools and TD backlogs (which you interlace at a minimum ratio) are just details.

But the last thing that'll help you is talking about Tetris in front of your client / PO / boss / whatever. Just call it "maintenance work". And if they're hostile to even that, it means they're stupid enough that you can just do it anyway and call it something else and they'll never know.

<comment><USER52> _" Just call it "maintenance work". And if they're hostile to even that, it means they're stupid enough that you can just do it anyway and call it something else and they'll never know."_

That is quite true. Unless you are working in a jira ticket sweatshop just do it.</comment></comment>


The Design and Implementation of a Log-Structured File System - <AUTHOR> http://muratbuffalo.blogspot.com/2010/09/design-and-implementation-of-log.html

<comment><USER2> LFSes also have the nice property that they have a smooth CPU usage profile. Traditional FSes improve perceived performances by batching writes and flushing them periodically, leading to occasional spikes.

An LFS can pretty much flush a write as it comes to hand.

It turns out that LFSes are awesome for ... logging :D</comment>