MacBook 16-inch Fan Noise (2019) - <AUTHOR> https://discussions.apple.com/thread/250878229 <comment><USER2> This appears to be a software bug in macOS or AMD's drivers. Plugging in an external monitor at certain resolutions (1440p@60Hz in my case) will cause the AMD GPU to draw 18-20W constantly, no matter what it's doing. This causes the total system draw to increase from ~10W to ~30W. All that heat has to go somewhere. If I change the resolution of my external monitor to 1080p the AMD GPU drops to ~4W and the fans are quiet again. A lot more information available in this long MacRumors thread: [https://forums.macrumors.com/threads/16-is-hot-noisy-with- an...](https://forums.macrumors.com/threads/16-is-hot-noisy-with-an-external- monitor.2211747/page-22)

<comment><USER3> This is a bug on Macbooks in general, as I understand it. I have a 2019 MBP with a 4k monitor, and if I change the resolution to anything except the default, there is massive system-wide lag. God forbid I use PyCharm on 4k scaled resolution – a full second between typing and seeing the text.

<comment><USER4> That seems unrelated; I think Mac OS is the only place where non native resolutions use GPU-accelerated scaling. The other operating systems just set whatever resolution you asked for and let the monitor handle it.

This seems to be excessive GPU use when simply connecting an external monitor at its native res.

<comment><USER5> I use my 2015 MBP with an external 4K monitor every day and it works like a charm. No delay, no fans going off, etc.

<comment><USER6> Does it have two GPUs it switches between? One high perf and one integrated?

When I had a MBP 2015 I rarely had the fan come because it only had and and used an integrated GPU.

With a 2018 MBP the fan frequently kicks on because it switches to the Radeon high perf GPU when doing things like connecting to an external monitor.

<comment><USER7> The MBP 2015 with discrete GPU is hardwired to output video signal through AMD M370X. It can get quite noisy when just connected to an external display.

</comment></comment></comment></comment></comment></comment><comment><USER8> What can I say as a person somewhat close to electronics engineering:

Look at that single skinny heat pipe, it will get saturated very fast. Second to that, look at those tiny radiators, they are clearly not capable to discharge the full heat flux.

I simply don't see any signs of proper thermal engineering there.

Apple says "we are listening now, and here is a new cooling design," then it comes out to be even less adequate that the old one. I can't think of anybody else capable of trolling up their customers like that.

If anybody wants to dish out something on an order of $1.5m to do a contract manufacturing run for a properly designed full sized laptop, give me a note. I do have some tricks in mind how to make 40W+ CPUs work in a _relatively_ compact case.

<comment><USER9> If I had to guess they know what they're doing engineering wise, but they're taking a calculated (and poorly thought out, in my opinion) risk that a small percent of people will regularly peg the cpu at 100% usage, and they're further relying upon clock rate throttling and the cpu die thermal sensor to keep things from melting down. Or the management/product design group has overridden the input of the people who actually know how to design thermal solutions, because the laptop CANNOT be 2mm thicker.

Whenever I see a laptop with a >15W TDP CPU in a super slim package with a tiny heatsink/fan unit, no matter if it's from Apple or another vendor, I'm very suspicious. At least the 12 inch Macbook from a few years ago which was truly fanless uses an appropriately low powered CPU.

disclaimer: used to do systems engineering for a server manufacturer a long time ago, after you've gone through a dozen iterations of ways to mount skived copper heatsinks on dual socket motherboards in 1U cases, with various fan solutions, you realize that everything that is not acoustically terrible is some sort of compromise. People are trying to put CPU+GPU+RAM packages that are anywhere from 25W to 45W TDP in laptops that are physically too small for them.

<comment><USER10> That's why I buy gaming laptops for my work needs even though I don't play games. Their heatsinks are generously sized resulting in good thermals and acoustics.

<comment><USER11> I use a similar trick: I try to find a laptop that comes in both discrete-GPU and integrated-GPU configurations, and both version must share the identical chassis.

This way, when I buy the integrated version, I know the chassis has been designed with the heavier airflow of the discrete-GPU version in mind. If I'm lucky, my integrated-GPU config might even use the identical size heat-sinks as the discrete-GPU version.

<comment><USER10> That's interesting. Any model you can recommend?

<comment><USER12> Dell XPS 15's and Precisions 55xx's allow this trick.

You can buy them from the manufacturer with no discrete graphics cards.

I have one with a card which is physically turned off for the same trick.

<comment><USER13> Do you mean the XPS 13? I've never seen an XPS 15 in recent years without an NVIDIA card. The cheapest XPS 15 from 2019 that I can find still comes with the mobile NVIDIA GeForce GTX 1650, as does my own XPS 15 9560 from 2017.

<comment><USER12> I'm 2 days late! I'm so sorry!

If you go to dell.com and select one of the more entry level varients you can customise more things:

[https://i.imgur.com/deQFdyU.png](https://i.imgur.com/deQFdyU.png)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> There isn't anything wrong here.

One of the confusing issues is that people say, "I'm only using 15% of my CPU, the fans should not be coming on."

What they don't realize, is that using 1 core running at turbo speeds is only going to show up as 15% of the CPU, but draw enough power and create enough heat to trigger the fans!

Another thing that some of these posters are not aware of, is that running these temperature/fan speed monitoring applications can use quite a bit of power! They're drawing all these fancy graphs, the applications are usually poorly optimized. Even the Mac OS Activity Monitor is a hog in Catalina for some reason and can take 15-20% of a CPU all by itself.

And that doesn't even take into consideration all the other apps people have running. You can see in their screenshots or menu bar they have Dropbox, 3rd party wireless keyboard/mouse programs, they might have 10 things running in just their menubars! They need to look in the Activity Monitor's Power section to see what the real culprit is.

Plugging an external monitor into your MacBook will enable the dGPU and that will create more power draw, this is nothing new:

[https://i.imgur.com/9KmLPMX.png](https://i.imgur.com/9KmLPMX.png)

It's the workload, not the monitors you have plugged in.

I posted a picture in the MacRumors thread with 4 externals (4K, 2x1440, 1x1080) plugged into my base model 16" and it idled in the 50 degree range with no audible fan noise. Once I started streaming video and opening apps, the fans then started, as expected.

<comment><USER15> My 2019 15" mbpro makes quite a bit of noise on login screen with nothing connected to it. It's not a made up issue. USB 2.0 devices disconnect randomly which is a no-go for musicians. Touch bar freezes. The list goes on. I'd abandon it a long time ago but music software is macs first. Plus Logic is decent. It's so sad that they don't give a damn because market takes a while to adjust.

<comment><USER16> That touchbar freezing issue is a pet peeve of mine. It's been happening for years now. I've personally witnessed over it perhaps 10 times over multiple hardware/OS revisions.

Perhaps it's time for Apple to admit defeat and just build a watchdog service that runs every 30 seconds and if things aren't working: kill and restart whatever process and/or driver that runs the touch bar.

<comment><USER17> The reason nobody really notices the touchbar issue is because almost nobody uses the Touch Bar!

<comment><USER18> hahaha true

</comment></comment></comment></comment></comment><comment><USER19> Been using Mac primarily since 2011 and sad to see everything keep declining with Apple's software and hardware quality. When programming an app and its backend with react native/clojure my 2015 Mac Pro gets way too hot and slow.

Just built a Ryzen 3600 desktop with 32 gigs of RAM for about 1/4th the price as the cheapest 16 inch Macbook. Windows with WSL2 has been extremely good and I'm satisfied with my development environment. Key things were disabling automatic updates via group policy, setup autohotkey to keep all my MacOS keybindings, use X410 to display emacs and using the new windows terminal. Development is super fast, compilation is fast, git is fast, everything just works. Attempted to switch with WSL1 awhile a year ago or so and while it was okay, I wasn't very happy with it.

My mac just sits there now mainly being a coaster until I need to test iOS builds.

<comment><USER20> I think you are underestimating the cost of your setup. There is no way in my opinion that you can build a decent PC with 1/4 price of a MacBook Pro. European prices might be higher, 2699 official price for base 16" (you can actually get it for 2399 from official resellers). But still 675 Eu for a proper setup is impossible. Just the CPU and RAM will cost you a bit over 300. I know you are just making a point, but it is a false statement that people constantly make when discussing prices of Apple hardware and this thing is getting quite annoying. Yes, they are more expensive, but when you look at the exact components, specs, you will find that Dell or Lenovo could be only around 10 to 20% cheaper in best case scenario.

<comment><USER21> I mean, it's not that outlandish. It's such an apples to oranges comparison but performance for dollar is still in the "build your own desktop" side of the arena, as it's always been.

[https://pcpartpicker.com/list/rfLcGc](https://pcpartpicker.com/list/rfLcGc)

<comment><USER22> My guess is Naomarik didn't buy a case, power supply, or new SSD.

</comment></comment></comment></comment><comment><USER23> What's disturbing is that Apple seem to be deleting posts:

 _After attempting to be part of the solution; spending a ton of time testing, providing information in the community, communicating with Apple Engineers and Apple Business Team, our most recent post was deleted as "Speculative".

We have spent over $300,000 on Apple hardware over the years both business and consumer and now our voice has been muted. How can we move forward using Apple? Instead of deleting our posts, how about send it to management?_

<comment><USER24> > How can we move forward using Apple?

And why should they? What's wrong with trying out something like Thinkpad X series[1] instead? Or Thinkpad P series, which can now come with Ubuntu LTS pre-installed. I wonder, if they would have invested so much time in fixing Dell's issues for Dell. Probably not. Why? Because there is no Dell's lock-in.

[1] [https://www.lenovo.com/us/en/laptops/thinkpad/thinkpad-x/c/t...](https://www.lenovo.com/us/en/laptops/thinkpad/thinkpad-x/c/thinkpadx)

<comment><USER25> Oh come now, you surely understand that you cannot just drop in a Windows or Linux PC as a replacement for a Mac, just like you couldn't do the opposite. Organizations have management tools, single sign on, and software that may only run on one OS.

Suggesting a ThinkPad or Dell as a replacement is naive.

If an organization wants to change the computers it gives it's employees so dramatically, it will take some transition time, and a lot of fighting. We're not just talking about your personal laptop here.

<comment><USER26> I switched from Mac to Windows 10 and it was painless.

<comment><USER27> I'm curious about how long you were using Mac and how much of the ecosystem you were taking advantage of. Specifically were you using Apple messaging, photos, and / or email?

Also, did you take advantage of handoff or airdrop?

I imagine if you were strictly using cloud services, it was a relatively painless transition.

</comment></comment></comment></comment></comment><comment><USER28> I was planning to buy MacBook 16-inch as I am still on 2014 edition which in my view were one of the best MacBooks.

I simply hate that unnecessary Touch Bar, was hoping Apple will remove it but didn't. Thought then of getting 16-inch as they have an esc key.

Waiting for this kind of review, I will put on hold purchasing it until get a clarity on fan noise. My current old MacBook fan do make some noise but only under load of games.

Hope Apple can go back to basics and redo the MacBook Pro to make it similar to 2014 with new hardware.

<comment><USER29> I went from late 2013 13 inch to the 2016 16 inch (maxed everything but the graphics). I also hate the touchbar. Things like volume control that used to be a tap away are now hidden in sub screens. You can switch it to only function keys but they are missing the icons for volume etc and you can't touch feel where the buttons are so I have left it in full touchbar mode. Some functions of it are actually quite cool but it should exist as well as the function keys not instead of. I haven't had any of the issues described anywhere. Mine works flawlessly. Very very happy with the machine overall. A huge improvement on the 2013 mbp i came from which i agree was an excellent machine.

<comment><USER30> You can tweak the touch bar to put e.g. volume control on the 'home screen' if you prefer; it's hard to find though, it's under Keyboard, then the Customize Control Strip button at the bottom.

<comment><USER29> I just checked. Unless I'm missing something there is no simple volume control like on the physical keyboard? I already have the volume button on my touchbar home screen however tapping it opens a slider. I don't want or need a slider and have to do a tap and then slide to get the volume down whilst before it was one press of a button. This usually requires me to look away form what I'm doing. It's definitely a step back in terms of UX. It was perfect before the touchbar.

Thanks for pointing that feature out though. Have replaced Siri with the play button :)

Edit: Just playing around with this a bit more I noticed the expanded view now has all the normal icons. Either I missed it before or I changed something. Is there a way to make the expanded view the default?

<comment><USER31> You can tap-hold-slide to adjust across the whole range, rather than tapping then hunting for the slider. You can also set the touch bar to show an expanded control strip by default (which includes a volume up/volume down/mute triple) if you want.

<comment><USER29> The tap and hold works well. I guess I will settle on expanded view with fn key for app controls. Probably the best for my usecase.

</comment></comment></comment></comment></comment></comment><comment><USER32> I waited multiple years to upgrade from a MacBook Pro 2014, but was disappointed year after year, because I read about heating issues, the bad butterfly keyboard or the useless touch-bar.

In 2019 I felt like things are not going to get any better, so I bought a MacBook Pro 2019. Was quite unhappy that I didn't wait a bit longer after I saw the 16inch version coming out a few months later, because it had an escape key (which I really miss on mine), but now I am kind of happy that I have the 2019 15 inch version where the heating problem does not appear.

The touch-bar really is completely useless, I find myself tapping the wrong "keys" all the time. Changing volume was so easy before, now it became really hard. But most of all I miss the escape key. If it wasn't for macOS I had long picked a Windows laptop.

<comment><USER3> I feel your pain. This may help: [https://www.haptictouchbar.com/](https://www.haptictouchbar.com/)

</comment></comment><comment><USER33> Cook is a complete businessman, best at cutting costs, increasing profits and attracting customers to buy more. Don't forget that memory began to weld on the motherboard because this can only be replaced and not upgraded. He was a businessman, not an engineer or a designer, and that was the beginning of apple's decline.

<comment><USER34> This cliched argument is quite ironic and insane. A leader doesn't have to be visionary all the time. Just last week there was a news about Apple selling more Watches than the entire Swiss industry and no one would talk about Cook there but when things go wrong, we forget that it's someone in QA or Product but all the blame goes to how Cook isn't a Product guy.

<comment><USER35> > A leader doesn't have to be visionary all the time

Yes they do. If they're not visionary, then they're just a manager.

Apple grew because of a visionary, and now it shrinks because the best a manager can do is try to maintain the status quo in the face of changing factors. It's fundamentally a losing battle.

<comment><USER36> Cook has overseen just shy of 1 trillion dollars worth of growth for Apple. They routinely have quarters larger than Apple's entire year back in 2011.

<comment><USER35> Cook is riding on the upward trajectory that was set before he took his role. Brand image carries a lot of inertia, and as a manager rather than a visionary, cook focused on getting the most use out of that pre-set trajectory while it lasted.

It has run out of energy. If AR doesn't pay off, it's all downhill for Apple from Q4 this year onwards.

<comment><USER37> This argument gets more and more ridiculous as time progresses. Apple is worth nearly ten times what it was eight years ago. It's launched a watch which has, in a few short years, overtaken the _entire_ Swiss watch industry in revenue.

This is just another take on the tired argument that Apple is only successful because of a core group of fanboys/girls who will buy anything just because it's Apple, despite Apple's customer base being an order of magnitude greater today than it was back then.

<comment><USER35> I set some fairly short term and trivially verifiable predictions. Save this comment and come back to it at the end of this year.

Unless Apple's AR play succeeds, they're going to be left in the dust by Chinese offerings with better functionality at half the price.

Cook has had the better part of the decade to come up with something new, and has failed to deliver anything except incremental minor updates which are increasingly convergent on competitor offerings. There is clearly no vision.

<comment><USER37> Are you just going to pretend the AirPods and Apple Watch don't exist? By themselves they'd be a Fortune 500 company.

"Minor updates". You have to be joking.

<comment><USER35> Are you going to pretend either AirPods or Apple Watch are meaningfully competitive against other offerings on the market?

There are headphones with better spec than airpods at half the price available right now. They're not locked to any ecosystem. Apple has no idea how to continue competing in the envelope of modern hardware because competitors either beat them or match them on every move but without the premium.

Save my comment. Check back in a year. It'll be a good lesson.

<comment><USER38> > Are you going to pretend either AirPods or Apple Watch are meaningfully > competitive against other offerings on the market?

The definition of meaningfully competitive is growth, revenue, and market share. You're implying they're not competitive, which implies you think they're not making money. By what metric are they not competitive?

> There are headphones with better spec than airpods at half the price > available right now. They're not locked to any ecosystem. Apple has no idea > how to continue competing in the envelope of modern hardware because > competitors either beat them or match them on every move but without the > premium.

This claim has always been made, for 35 years, and has always been true of all Apple hardware. Yet they compete and make a lot of money. What you're demonstrating is you don't understand what Apple is making or why people buy their products. What you're demonstrating is that better spec cheaper hardware isn't enough to beat the competition.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> One thing I miss about Steve Jobs is that he hated fan noise. The fact that Macs only made noise under extreme load was something that I really appreciated.

I'm at a loss for what I'm going to do for my next laptop. Windows 10 still has performance issues that Macs don't have, but Windows laptops clearly have better hardware.

Anyone make the switch back to Windows? (Every time I try Linux it feels like a dumpster fire, even though I want to like it.)

<comment><USER40> I've been considering both Linux and Windows (with the linux subsystem, obviously) but so far can't bring myself to do it. I'm leaning towards Linux. My main beef with both ecosystems is the high amount DYI and tweaking needed to get things functioning and that I actually need to make an indepth study of exactly which variants of which hardware to get in order to get a linux setup that works.

With windows I have no love for Windows specifically but would appreciate access to a wider selection of games. For work, all I need is docker and access to linux/unix tooling. Homebrew and docker for mac cover my needs but I've been hearing good things about windows and the linux subsystem. Obviously that kind of stuff works great on Linux as it all runs natively there.

IMHO the big problem with Linux is that people are still thinking about distributions like it is the early nineties. It does not make sense to me for small (or even bigger) linux distributions to even pretend to be able to maintain huge software repositories with distribution specific builds of all OSS known to mankind. What's needed here is people just agreeing on how to package up binaries such that they can be run on any linux distribution after their developers test, sign and release them.

I saw this in action when one of my favorite OSS tools released a major version a few weeks ago and I was able to install the mac build while world + dog was complaining about a lack of pre-packaged binaries for their favorite Linux distros (pretty much all of them). I'm talking about Darktable, which is one reason I'm seriously considering a move to Linux because I absolutely love it and it runs best on Linux. I installed it within 2 hours after it was tagged on Github. That for me sums up the problem with Linux: the application ecosystem remains a mess of incompatibility and middlemen adding dubious value (mainly verifying it does not clash with their other customizations for other packages).

IMHO this is a reason why the most widely used consumer versions of Linux are basically things like Android, ChromeOS, and a wide range of software for TVs and other embedded hardware; none of which involve a mainstream Linux distribution or package manager. The only package managers you need on a mac are for installing OSS software. Normal software is just a simple drag and drop to install and move to trash to uninstall. Apple nailed this already with OS 9 before Linux was a thing. MS with its need for custom installers never figured this out either.

Docker is kind of doing this for servers these days and snaps look promising but still a bit flaky. I think it's telling that the hope for gaming on Linux is basically Steam doing the hard work of providing a way to install software on Linux that is compatible with the goals of software developers that want to release software directly to users instead of to some middlemen that need to repackage, modify, an tweak a custom package of your software.

<comment><USER41> I find that I'm spending more time tweaking MacOS than the two others.

At my previous job I was lucky to use a workstation. It was running a plain Ubuntu LTS provisioned by my IT using Puppet. Zero maintenance on my end.

For the handful of applications where I wanted the latest versions, getting upstream or PPA packages was usually enough. I don't know why you think Snap packages are flaky, they're great for things like Jetbrains IDEs. Never had a problem.

I admit Homebrew gives me access to the latest binaries quickly, but it's also the slowest and most brittle package managers I've been using.

</comment></comment></comment><comment><USER42> I have an issue with an external monitor, confirmed with multiple users on MacRumors forums [1], that looks like a software bug.

When using opened Macbook with an external screen power usage by discrete GPU is not less 19W almost no matter what (resolution, screen size, etc.).

In my case, with new LG 5K, GPU power usage in clamshell mode is near 5W and with the lid open – 19.5W (and the laptop is too noisy to be usable as an additional screen).

[1] [https://forums.macrumors.com/threads/16-is-hot-noisy-with- an...](https://forums.macrumors.com/threads/16-is-hot-noisy-with-an-external- monitor.2211747/page-22)

</comment><comment><USER43> The thermal design of Macbook pros just isn't adequate for >4 core high clock speed CPUs, especially with a discrete GPU thrown in the mix too.

I had one of those i9 2018 MBPros and it was always super hot. Much happier now with a 13" 4 core MBpro, it runs quite cool and without any fan noise most of the time.

Built a separate AMD 3900x PC with an Nvidia GPU for heavy lifting, and can use that remotely with the MBpro if needed.

<comment><AUTHOR> For what it's worth, this only occurs when connected to an external monitor -- which causes the discrete GPU to overheat, even with no apps running. Using the built-in display (with the discrete GPU on) is fine.

<comment><USER44> I'm using 2 external displays (one 4K) and it's not overheating and the fans are completely silent.

My 16" i9 is MUCH quieter than my 15" 2015 Macbook pro, and it's not like i'm browsing Facebook: i'm constantly compiling and running tests on every file save.

My macbook feels warm but not hot, even when I touch it at the fan exhausts. I do notice my battery only lasting about 2,5 hours though.

Playing games it runs great and while you can hear the fans, it's much better compared to my 15" 2015.

Personally i'm really impressed with the cooling and performance of the 16"

<comment><USER45> This has been my experience as well. Fans kick on on long compiles, and that's about it.

</comment></comment></comment></comment><comment><USER46> To be fair, I run 2 4K monitors at 60hz and I don't hear my fans doing normal work (Excel, Firefox, PyCharm, Jupiter Labs). I use a DisplayLink hub (idk if that matters, but I've heard DisplayLink is driven by CPU)

However, when I watch a 1080p movie, no matter what player, on just the laptop display, the mouse cursor feels sluggish and my fans are on 50-75% at all times.

<comment><USER47> I have this happen too, on my 2014 at work. In Chrome, like clockwork, any time I watch a video that isn't on YouTube my fans spin up to the point where it's distracting. Not sure if I've had it affect my mouse cursor, though. I do have a 1080p monitor plugged in but I never have fan issues outside of watching videos.

</comment></comment><comment><USER48> Just to add my two cents, I drive a 4K monitor in a quiet room and don't notice any significant difference in operation compared to my previous 2016 model.

Perhaps this is a driver bug that hits some configurations or situations?

The thermal design of the 16-inch seems adequate especially when compared to outgoing 15-inch models, so I think it's something they can fix in software.

Something to note: all recent discrete GPU MacBooks will switch to discrete graphics as soon as you plug in any external monitor. Higher power consumption and heat should be expected to a reasonable extent (everyone's definition of reasonable is different).

</comment><comment><USER49> My new i9 15" is a lot cooler and more silent than the i7 2015 it's been replacing. I guess doing a completely clean install with nothing else than using iCloud to sync data from the old machine fixed a lot of software related performance issues that piled up on the old one. I expect the 2015 to be a lot better again after a clean install. I think most of the problems on the 2019 are software related.

Not seeing any of the heat / performance problems mentioned by other people, the only really weird thing I've seen is that the color palette was way too dark getting out of sleep until I minimized and maximized brightness. That helped until the next sleep where it was too bright this time and the brightness trick didn't work anymore. Finally fixed it by switching between another color profile and back.

Otherwise TouchID was pretty good, don't really notice the touchpad in any way good or bad and the touch bar goes largely ignored just like the row of keys it replaced. Keyboard action is nice, it's slightly more clicky than the 2015 but still has about the same travel.

I really doubt anybody still on a 2015 or older will regret getting the 16". Probably the software problems get ironed out over the course of the next months.

</comment><comment><USER50> I really hope they haven't finally replaced the 'revolutionary' keyboard only to throw in a 'revolutionary' new fan system...

<comment><USER51> Would it be a pun to call a fan revolutionary?

<comment><USER50> Haha. I guess all fans are revolutionary then.

But this one is is comes with extra revolution for every USB-C port you use.

<comment><USER30> Makes me wonder if there's technology for fanless fans, moving air without spinning fans.

<comment><USER52> Dyson's visually look like this. [https://www.dyson.com/fans-and- heaters/dyson-cool-overview.h...](https://www.dyson.com/fans-and- heaters/dyson-cool-overview.html)

<comment><USER53> These have fans in the base.

</comment></comment></comment></comment></comment></comment><comment><USER54> This isn't even the bad part. Apple have a massive batch of faulty macbook pro 2019 16" machines and aren't admitting it. I'm on my 3rd $7000 replacement 2 months after purchase, this third still faulty so now swapping for an early 2020 model when it comes out. I'm lucky if it lasts longer than an hour without restarting. Terrible during renders. [https://discussions.apple.com/thread/250905859](https://discussions.apple.com/thread/250905859)

Funny thing is, when I do eventually get a machine that isn't faulty, I still have to deal with Catalina, since the new macbooks can't be downgraded and Catalina has a lot of sleep bugs that restart also: [https://discussions.apple.com/thread/250826263](https://discussions.apple.com/thread/250826263)

Every single 2019 16" macbook owner has also experienced the speaker popping issue, which after 2 system updates has simply lowered in volume instead of being loud and noticeable.

PopGate. GPUgate. KernelGate. T2Gate. It is actually far beyond a joke, this was the true cost of apple become the world's first 'trillion dollar company'. They cut so many corners all they can produce are lemons now.

</comment><comment><USER55> I have the same issue with a 2016 15" model. When I plug an external monitor, the place you put your wrists on gets super hot. I had to buy an external keyboard/trackpad long before my keyboard started to fail.

</comment><comment><USER29> >I have noticed that Chrome is a problem

I use Firefox and my machine is silent. Typing on it now. 20+ tabs open and about 20 others apps open. I can't hear my machine without putting my ear against it.

</comment><comment><USER56> I've got the 16" MBP and definitely echo many of the same frustrations that others have noted here.

Owning Apple products nowadays is a bit of a masochistic endeavor in many ways - a year ago my local Linux group had me write a funny book on "Escaping the Cult of Mac" that talked about this ([https://github.com/jasoneckert/CultOfMac](https://github.com/jasoneckert/CultOfMac)).

</comment><comment><USER57> Just about a week ago, there was another thread about Macbook 16-inch Fan [1]

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

There are tools that can measure some sensor temp and control the fan speed according to that on Mac. I was using it on my older MacBook Pro and the fan usage was relatively better than when it was set to auto.

</comment><comment><USER58> I went from a MacBook Pro 13" late 2013, to a 2019 16" and I have the same issue, running the exact same development setup, and I hear the fan much much more on the new machine. I know it's faster etc so it can't directly be compared, but still, I feel like I notice it now, every single day multiple times, where with the old 13 inch I never really noticed it at all.

*Same setup and dev env on new MacBook as on the old

</comment><comment><USER59> I have the Macbook Pro 16 and have been using it for a few months now. Overall, I think its pretty bad laptop for how expensive it is. Yes Apple fixed many things people were complaining about but it is a perfect example of how Apple has stopped innovating and stopped caring about the MacBook line. In fact, I dislike it so much I have started using my 10 year old MacBook Air instead of my brand new Macbook Pro.

Things I dislike about the MBP 16:

\- Still has the touch bar

\- Screen size is awful. I like to work with windows size by size and the 16 inch screen size is awkward because most website won't re-size properly.

\- Its heavy as hell, slightly thinker than the old ones.

\- Its slow. Yes, all the RAM and CPU and the thing is laggy. I don't know why but it just has a bad "feel" to it.

\- Touchpad is too big. Its gigantic and I often end up touching it by accident.

\- Its crazy expensive

In the end, I will end up selling it and using my 10 year old Macbook Air until it dies. After that I'm not sure.. maybe I will try the newer Macbook Air and see if its tolerable. At least it doesnt have a touchbar.

<comment><USER60> My experience has been quite different from yours, so I figured I'd share mine as well.

\- Yep touchbar just sucks, I've spent too much time messing around with with the default version, bettertouchtool, and pock, and I cannot find anything its good at. Worse yet, the volume slider often will freeze the touch bar completely.

\- The screen size and format is wonderful. I hate how Dell and Thinkpad laptops I've used in the past, have these widescreen formats, where very few lines of code can be visible at a time due to the limited vertical space.

\- I didn't realize this until you pointed it out, but it's definitely very heavy compared to my 15-inch 2018 model and thinkpad x230. This haven't bothered me at all, however.

\- It feels significantly faster than my 2018 model, and the CPU temperature stays much lower under the same workloads.

\- I know a lot of people have trouble with this, so if you've previously had this problem the 16 inch doesn't change that. Both my hands rest on the touch pad while typing, and I have not had this problem once. Your mileage may vary.

\- I got mine discounted down to roughly 2k. Pretty ridiculous yeah!

\- The battery life is insane. On a simple workload it will last me an entire day. On my full workload (Flutter development with android and ios simulators open) it lasts about half a day.

In the end I'm very happy with my purchase. I wouldn't be surprised if I'm still using this laptop 8 years from now.

<comment><USER61> How did you get that discount?

<comment><USER60> Student discount on top of a sale on all apple products in the university store that happened a week after the 16 inch release.

</comment></comment></comment></comment><comment><USER62> I like to keep my macbook on an elevated stand when its connected to monitor/keyboard/mouse. Does anyone know of a passive cooling stand (no fans) that works with macbooks? Maybe just something with a giant finned heatsink that presses right up against the middle of the case or something?

<comment><USER63> I use a Rain Design mStand. It's basically just a raised chunk of aluminum. It probably passively cools to some extent (it claims it does), but I have no metrics to say how much.

(Of course, you could possibly also lay a freezer pack on the bottom of the stand, and maybe it would wick heat away even faster, and still passively...)

<comment><USER62> So I'm just checking out a video review of that stand. It looks like there's rubber pads that maybe raise the laptop up a bit off the plate. Can you tell me if your laptop is actually laying flush against the aluminum plate, or is there an air gap?

</comment></comment></comment><comment><USER64> I laughed at OP misspelling "fan talk" in the throwaway account's name. Then I flagged this, because it's the third time this past week that someone has tried to rabble-rouse about fan noise with a link to poor data and/or extensive discussion threads with terrible quality data and no summary.

A meta-analysis of this discussion would have been super interesting. A link to Apple's equivalent of a Reddit post is not, especially from a throwaway account.

I feel bad for the people with fan noise but this is not the way to handle it. Please do better. Collect data, measure power draw, and most of all _document how you performed your tests_ so that you can start asking others to perform those exact tests, to your specifications. More science, less complaining, please.

<comment><AUTHOR> LOL, no. I've been a HN reader for years, and this MBP fan issue is driving me nuts for a while now, I wanted it to get some attention. Then I realized I don't remember my HN password, that's why the new account.

My name is Antal. K is the initial of my last name.

Glad we cleared that up.

But the last part of your message is noted, thank you. Next time I will do so.

<comment><USER64> Apologies re: name assumption. There's always a lot of throwaway accounts with blank profiles and they're impossible to tell from genuine content with any certainty. I'll not comment about account names in the future, it was a bad call.

</comment></comment></comment><comment><USER65> I got one, heard the fan, felt the heat. Switched on "Automatic Graphics Switching" in the power saver options and as I type it's on my lap as quiet as a mouse and as cool as a cucumber.

<comment><USER66> For me (and at least one other commenter in this thread), the issue occurs when plugged into an external monitor. The linked thread seems to indicate the same. Any thoughts on that? I'll check the relevant setting.

<comment><USER67> I think graphics switching only works when running on battery power. Wonder if there's a way of make it still work when plugged in...

<comment><USER65> Ahh - probably true. It was annoying me playing world of warcraft and I turned down the settings to shut it up - I forgot that.

Not an option if you are using it for your "work" workflow.

There must be a kill switch somewhere; I'll have a look.

<comment><USER65> right - I've had a look and I found [https://github.com/codykrieger/gfxCardStatus](https://github.com/codykrieger/gfxCardStatus).

I cloned it and then compiled it with xcode. I found one problem which is a badly encoded file, which I fixed using the file inspector to set the encoding and then saved it. After that it built and runs. On my 16' 2020 MBP it allows me to turn off my 5300M. When I open WOW it refuses to allow the card to be turned off, its web site says that's what it will do with an external monitor too.

</comment></comment></comment></comment></comment><comment><USER68> There's a video by Max Tech which digs deeper into the topic (along with possible fixes): [https://www.youtube.com/watch?v=EkmdHVfk4XE](https://www.youtube.com/watch?v=EkmdHVfk4XE)

TL;DR: 1) It seems this is Intel's fault not Apple's 2) For fix - use TGPro (or something similar) to create your own fan speed profile (I use TGPro since many years without any issues)

</comment><comment><USER69> I just installed and set up Ubuntu after a long time. IMO both Windows and Linux have totally caught up to OSX and while their hardware is still marginally better, that gap is on a downward trend as well.

With mobile, I think Android is close on software and far superior on hardware.

I wonder what happens to Apple stock if they don't get a new product line that takes off - cars, TVs etc. Will ApplePay eating PayPal and Stripe offset this downward trend enough?

</comment><comment><USER70> I'm on a 15" MBP and I'm really missing the physical escape key (especially as a long time vim user).

I was considering the 16" MBP, but I think I'll just go ahead with my Hacking- tosh build instead! I spend 99% of my productive time at my desk. For anything on the move I'm more inclined to go "light", a 13" Air perhaps`. I was hoping iPad would cut it, but I'm afraid iPad OS is too limiting.

</comment><comment><USER71> I have a MBP 16 with a Philips 48.8" 5120x1440 monitor, running with the lid closed. I have the extra 8GB on the GPU. The only time I've noticed fan noise was when I was running Minecraft with Optifine and a very aggressive shader pack. At first I thought the hissing sound was from rain in the game. Apart from that I haven't really heard anything.

</comment><comment><USER72> related only by brand...

I upgraded from a 2013 iMac to a 2019 model recently for two reasons, the primary being my 2013 used an Nvidia 780m chipset and Nvidia no longer made compatible drivers and Apple wasn't doing any real updates either. Second I wanted he higher resolution screen.

However, the fan which I rarely had come on in the 2013 is hyper active at times in the 2019 even with similar content. Oddly it is not consistent. Now I did go from i5 to i9 which do run hotter but they are very spiky as in the seem to flare a core or two enough to excite the fan logic.

The GPU while getting warm (Vega 48) will less likely cause the fans to spin up past 2k than a random cpu spike. So either the fan logic is wonky or the processor logic is. While I understand that core balancing is complex it just seems to randomly jump single channels far more often than load across the whole

</comment><comment><USER73> FWIW, disabling Intel Turbo Boost (using Turbo Boost Switcher) has solved all my 16" MBP fan noise issues with no noticable performance impact for my daily tasks - you can even disable it in Bootcamp Windows (by setting CPU to 99% in power settings) and still get good framerates in Destiny 2.

</comment><comment><USER74> My ASUS GA502 makes all kinds of noises. It has a loud coil whine when the keyboard backlight is off/dim, and the audio chipset is constantly popping the speakers by turning on and off to save power.

I bought it open box; the buyer probably went insane from the noise before they could even set up Windows.

</comment><comment><USER75> However you look at this, it is bad engineering from a company that can afford to to proper engineering but don't.

Boo.

</comment><comment><USER76> Interesting. I have an Acer Swift 1 with passive cooling and just the integrated Intel graphics, and it seems to run a couple of degrees hotter when I've got an external monitor connected. Not so much that it worries or bothers me, I just think it's kind of strange.

</comment><comment><USER77> Hmm, I have the 6-core i7 version of the 16-inch MBP, and I'm driving two 2560 x 1440 displays (in addition to the built-in display). I have Chrome open with dozens of tabs, lots of other apps running, etc. and I haven't noticed any unexpected fan load.

</comment><comment><USER78> I'm only getting 4-5W usage on the 5500M GPU at 3440x1440@100Hz, fwiw. Which is a fairly high refresh rate for that res.

However, I only get the low power usage when in clamshell mode. Driving the built in display plus my monitor makes it shoot up to 20W usage.

</comment><comment><USER79> On a related note, I have a 2018 MBP touchbar and it's currently out at Apple so they can replace the bulging battery. My guess is that it runs too hot sitting on my wooden desktop.

Anyone have any great recommendations for quiet cooling systems?

</comment><comment><USER80> Again why isn't there a single good premium Linux laptop in the market yet?

<comment><USER47> There is... a single one

[https://arstechnica.com/gadgets/2020/02/dells-2019-xps-13-de...](https://arstechnica.com/gadgets/2020/02/dells-2019-xps-13-developer- edition-the-best-linux-laptop-til-the-2020-version/)

</comment></comment><comment><USER81> I've found if I push the MacBook 16 at a certain point on the bottom of the chassis, it makes weird squeaking noises like there's a bird trapped in the machine. Other than that, a perfect machine so far!

</comment><comment><USER82> I'm going to miss Turbo Boost Switcher Pro, when apple kills it...

</comment><comment><USER83> My biggest painpint with mbpro 15 2018 is double keystroke problem. Just driving me nuts. Apart from that, I would never change mbpro for any other machine.

<comment><USER26> I agggree! MaccbookPPro is the bbest! I ffeel sorrry for those Windozze peopplee.

</comment></comment><comment><USER84> Mine seems fine. I have not noticed any more fan noise than any previous macbook. I use it for 8+ hours a day, open, usually with a Luna Display connected.

</comment><comment><USER85> This isn't surprising at all to me. All Apple has to do is put "i7" on the box and their customers will eat it up and then just browse Facebook and YouTube. Their whole shtick for years has been selling "pro" devices to regular consumers who aspire to be pros.

</comment><comment><USER86> an other report from someday ago [https://news.ycombinator.com/item?id=22207018](https://news.ycombinator.com/item?id=22207018)

</comment><comment><USER87> Oh boy we've never seen this issue with macbooks before...

</comment><comment><USER4> So did they at least fix the keyboard?

<comment><USER88> yes, it's a lot better. first time a new MacBook Pro shipped with a new keyboard that is actually better to type on.

</comment></comment><comment><USER89> to me this is not any more complicated than not getting a MBP

</comment><comment><USER90> oh oh</comment>


On Git's lack of respect for immutability and the Best Practices for a DVCS - <AUTHOR> http://www.ericsink.com/entries/git_immutability.html <comment><USER2> Here's, I think, the big philosphic difference: Some people only want _good_ code in the repo. Some people want _every_ change in the repo.

I'm in the second camp. I'll gladly commit broken code and then fix it later. I don't _push_ broken code, of course, but sometimes it's useful to have a snapshot of the broken code before you start fixing it.

For example, let's say I'm accepting a patch from someone or I found a useful snipit of code on the internet. I integrate the code and it breaks a unit test in some non-obvious way. _I_ like to commit the code as it was from the original source before I start trying to fix it. That way I can quickly revert if my fix attempt is way off base.

Further, I have in my history who / where the code came from _and_ how it was fixed (in a later commit, complete with an easy to get diff).

I'm not saying Eric's best practice is _wrong_. Some people prefer to only commit good code, some prefer to commit early and often. I don't think either practice is inherently better than the other.

Edit: I realize I didn't really respond to the immutability issue... I don't really have an opinion on that.

<comment><USER3> I kind of think you did respond, actually. Once you're committed to allowing broken code into the repository, as long as you don't push it, then you're _de facto_ in the immutability camp, since rebasing not only doesn't offer you anything, but destroys what you're trying to deliver.

</comment></comment><comment><USER4> Git is actually as immutable as the next DVCS. Check out "git reflog"; it records the state of the repository for most, if not all, cases where it changes something around. Pragmatically, this allows you to recover from a botched rebase -i or something.

Where git differs is not in its mutablity, but in how it allows you to move around the head of a branch in a more free fashion than most other DVCSs. (I don't mean "more free" as a value judgment here, just an observation that it is a superset of typical capabilities.)

It should be pointed out this only address about a half of the objections you can raise for this re-writing; it is not true that you lose things because of the re-writing, because you can get them back from the reflog. But it is of course still true that history rewriting in the sense that most people mean it is true.

Basically, from a _technical_ point of view this is a non-issue, but from a _human_ point of view it still can be.

Personally, I'm willing to concede this is a powertool and perhaps isn't for everyone, and by the definition given it's not a "best practice", but I don't think I'm willing to accept that definition in general. I'd prefer something more relative to the local user set, not go for a global definition. Perhaps some teams would do nothing but shoot themselves, but in my experience with my team and the local related teams, history re-writing is a net gain in terms of how it impacts how we work. And it's hard to convince me of a point my personal experience doesn't correspond to.

<comment><USER3> I don't mean this personally, but I'm getting a bit tired of git users pointing to the reflog as protection against data loss. The reflog _does_ serve as a way to access no-longer-extent commits--until those reflog entries expire, at which point they are garbage collected and no longer exist anywhere, period. By default, this expiration time is two weeks.

Yes, the reflog can help recover from certain classes of errors, but its band- aid over git's emphasis on destructive history rewriting is incomplete, and can, and does, crack in real-world cases.

The correct solution, I think--which none of the distributed version systems implement--is to provide a way to group related changesets into an übercommit. This übercommit may still be sliced and diced back down to the buggy micro- commits that detail its dirty development, but, by default, will be presented as a single monolithic changeset to the user. No history is lost, and none is rewritten; you're simply altering its presentation.

<comment><USER4> "I don't mean this personally, but I'm getting a bit tired of git users pointing to the reflog as protection against data loss.... By default, this expiration time is two weeks."

So, set it to ten years, and lose nothing of interest. (It's not a Y2K-like problem because the value of a commit decays over time. Nobody will need to go back in time ten years to recover a commit that wasn't in the main line, because nobody will even know enough to ask a question that could be an answer to.) Does that answer your objection?

"This übercommit may still be sliced and diced back down to the buggy micro- commits that detail its dirty development, but, by default, will be presented as a single monolithic changeset to the user. No history is lost, and none is rewritten; you're simply altering its presentation."

You could do that with git now. Branch for every commit, and squash it back down onto the main branch. Tag the final HEAD of the branch and include the tag in your squash commit record, and you can use it to recover all the component commits. If it bothers you that git still won't understand what that means, you're just a couple of shell scripts away from having the functionality fairly well supported.

(git, thanks to its heritage, shell scripts fairly well, and of course anything else that can do "shell-script-like" things (Python, perl, etc.) can handle it too. We have several simple scripts that sit on top of git and help us impose policy on our branch management. So, I'm not terribly sympathetic to criticisms of git that are one config change or a quick shell script away from being fixed. Although, probably not for the reason you think; it's not because I think those who don't customize their VCS is automatically a lazy developer, it's because everybody has their own unique needs.)

<comment><USER3> > So, set it to ten years, and lose nothing of interest... Does that answer > your objection?

No. It's still lossy. To turn the question around: if Subversion expired changesets after a given length of time, I think you would complain. Likewise, if git expired mainline commits after a certain length of time, you would also complain (I sure hope). git is lossy, and I happen to think that's entirely the wrong thing for a VCS to be. Making it "less" lossy is kind of like trying to keep your teenage daughter "less" pregnant.

> You could do that with git now. [Lengthy explanation follows]

I can also do that right now in Mercurial using the group extension ([http://www.selenic.com/mercurial/wiki/index.cgi/GroupExtensi...](http://www.selenic.com/mercurial/wiki/index.cgi/GroupExtension)), which is possible because Mercurial, being written in Python, is trivial to extend. But that's not the same as being part of the Mercurial workflow, any more than the bookmark extension in Mercurial prior to hg 1.1 counted as a real answer to git topic branches, or Loom counts as bzr's answer to Mercurial's mq now: it's not part of the VCS. Yes, I can make these all work however I wish--but as much as people have now forgotten, it's also relatively easy to make CVS and Subversion work in similar ways through tools such as Quilt (<http://savannah.nongnu.org/projects/quilt>), which allow for rebasing, offline commits, and many other features that you think of as git/hg/bzr- specific. We've abandoned those tools for good reasons: they required extensions, shell scripts, and odd workflows to work in distributed environments. We will do the same to our existing VCSes unless they can approach a more ideal workflow.

</comment></comment></comment></comment><comment><USER5> What VCS doesn't support mutability? With svn, you can just "svnadmin dump", edit the file in your text editor, and "svnadmin load". Same idea as "git reset", just much more difficult to do. People do it every day, though.

Anyway, the great news is that if you have a central repository, you can deny non-fast-forward commits. That then gives you the same "immutability" or "security" as Subversion or anything else.

The moral of the story is, if you don't want to do something, don't do it.

(As an aside, I think this article is a classic case of, "SEE MY PRODUCT IS STILL RELEVENT!!!11". Would he be saying this if he didn't have an inferior product to sell?)

<comment><USER3> Ease-of-use does count for something. You're of course completely correct; I can remove history by using "svnadmin dump", or editing the RCS files backing CVS, or probably hacking Perforce's BDB file manually. But that's not part of the default workflow, whereas "git rebase -i" seems to be an important part of the daily git workflow. It's not a throwaway distinction, and has real implications.

</comment></comment><comment><USER6> As has been mentioned in other comments, almost all VCS allow you to change the history in some way, shape or form that probably wouldn't satisfy strict "audit" requirements. There's usually a good reason for it, including one in post's author's own product. [The usual reason is that it allows you to correct something obscenely stupid.]

And usually it's only available as an "admin" feature (at least in the commercial tools I've used). So it's not as if it's an everyday thing developers would use or have access to.

The difference with Git is that you're the admin of your local repository and can pretty much do what you will with it.

But there's a difference between your work repository located on your laptop, workstation, etc. and the "reference" shared repository that's used by your team+. So go and set all kind of hooks to prevent history rewrites (in the form on non-fast-forward pushes and the like) on it. What happens in that case is you can mess around all you like and clean up locally but once you've decided to push up and share, your commit history isn't going to be changing.

+If there isn't a difference between the two repositories then either you're prematurely optimizing your development and shouldn't worry about this issue OR you've got larger separation of role issues to deal with beyond being able to change your repository's history.

</comment><comment><USER7> Totally off-topic gripe: "And then I encrypted it with Schneier's latest cipher" --- kill this meme. Schneier is many things, but the top cryptanalyst/cryptographer in the world he is not.

<comment><USER8> Schneier is already known to be a cryptographer and many people know this. If you want to start a new meme with Wang Xiaoyun or someone else, go for it, but I really doubt it'll catch on.

Plus, the reason people know him is because he's a pop security author first and consciously strives to make a name for himself. Actual cryptographers are too busy working with ciphers to build a reputation.

<comment><USER7> That you are right about both of these points is not a refutation of my point. If we can't eradicate the meme, let's go for ring vaccination.

</comment></comment></comment><comment><USER9> You can't be everything to all people.

Git is aimed at people who know what they are dong.

Others will benefit from a more restricted feature set.

The bottom line for me is, that criticizing Git for not being immutable is like criticizing Ferrari for being too damn fast.

<comment><USER3> It's more like criticizing a file system for lacking journaling, and then having its users respond that it does so because it gives you extra power to do things that a journaling file system would stop you from doing--or to implement your own if you see fit.

<comment><USER5> It's not really like that.

It's like the guy sells a commercial non-journaling filesystem, and he is trying to argue that journaling is a horrible idea... while everyone switches to his competitor's journaling filesystems.

It's sad when your product is no longer relevant, but that's no reason to make up reasons to attack its competitors. That just makes you (and your product) look stupid.

<comment><USER9> I wouldn't be so harsh as to say his product is not relevant, it's just relevant to a different market.

What I've seen in corporate America, makes me think his product is far too permissive for a lot of places, places which won't dare touch Git.

<comment><USER5> _What I've seen in corporate America, makes me think his product is far too permissive for a lot of places, places which won't dare touch Git._

These people are silly, though. I don't know of a single version control system that doesn't let you change history in a straightforward manner.

At least in Git, the cryptographic commit IDs will change or be invalid when a commit is changed out from under you. Most other VCSes are blissfully unaware of history rewriting, and thus someone nefarious with access to the central repository can easily forge history.

I bet that never makes it into the marketing literature, though.

<comment><USER9> _I don't know of a single version control system that doesn't let you change history in a straightforward manner._

<http://www.accurev.com/>

It has an _append only_ db.

<comment><USER5> Are the revisions cryptographically validated, and are there other copies of the repository to compare against? If not, it doesn't matter, you can just edit the disk blocks.

(Yes, maybe you don't care about history _that much_. But if history is a tool for developers rather than the legal team, you shouldn't care if the developers mutate it.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Sounds like a case of "if you don't like it, don't use it" to me. It's not like "--patch" was a mandatory flag.

</comment><comment><USER11> I think a large part of git's history rewriting stems from the desire to be able to mail features around as atomic commits. You don't want to be cluttering up your patch set with spurious interim changes.

<comment><USER12> As a git user, I appreciate being able to squash commits together to keep things tidy for those who pull down my changes later — rather than seeing scattered changes that is merged with their own work, possibly interleaved with their own local un-pushed commits, they get one atomic commit for a feature.

That being said, I'm pretty sure Hg gives the same ability through the use of patch queues, which probably makes more sense.

<comment><USER3> Mercurial's patch queues ultimately provide very similar benefits and drawbacks to git rebasing, except that:

1\. Patch queues may be version indefinitely, since they are their own Mercurial repository, rather than eventually expiring, like rebased commits in the git reflog; but

2\. The above requires you maintain discipline in committing the state of your patch repository

Although the second can be trivially automated, the default behavior-- rewriting your patch whenever you issue `hg qrefresh`--is far from optimal.

<comment><USER5> Your post is making the site difficult to read (horizontal scrolling). Can you reformat the bullet points to not be in a code block?

Edit: thank you :)

<comment><USER3> Done.</comment></comment></comment></comment></comment>


Into the Forbidden Zone: Varosha, Ghost City of Cyprus - <AUTHOR> https://ragpickinghistory.co.uk/2013/03/30/into-the-forbidden-zone-varosha-ghost-city-of-cyprus/ <comment><USER3> I had a chance to visit the UN-controlled buffer zone [not the city mentioned in this article] well over a decade ago when I stayed with some soldiers over there. In the buffer zone is the old Nicosia airport, complete with 1970s planes sitting at a disused terminal. There's also a car showroom which is preserved with new (1974 season) cars. You can't wander about much since the whole area is mined and they warn you not to walk off the paths or to touch any "unusual" objects on the ground. I have photographs, but they're on film so I'm going to have to get them digitized some time ...

Edit: Found an Atlantic article with much better photos than mine: [https://www.theatlantic.com/photo/2014/04/frozen-in-time- the...](https://www.theatlantic.com/photo/2014/04/frozen-in-time-the-cyprus- buffer-zone/100714/)

<comment><USER4> > _We 'll fly you to the ends of earth!_[0]

WOW!

[0] [https://cdn.theatlantic.com/assets/media/img/photo/2014/04/f...](https://cdn.theatlantic.com/assets/media/img/photo/2014/04/frozen- in-time-the-cyprus-buffer-zone/c05_RTR3KOMS/main_1200.jpg?1420503703)

</comment></comment><comment><USER5> Visited Varosha a few years back.

[http://ninjito.com/_2015-04-14-Varosha](http://ninjito.com/_2015-04-14-Varosha)

Our goal was to traverse the entire city, and to then rooftop a hotel on the beach. The military presence is very real, and the city has a beautiful "slipping back to nature vibe" to it. We typically imagine that cities will decay into jungles, but curiously enough, it's the slow spread of garden species plants growing bigger and establishing more foothold.

<comment><USER6> Is the military presence more than just the perimeter guards this article mentions?

<comment><USER5> Absolutely. The Turkish army occupy a few buildings on the "main road", with regular patrols, floodlit streets, etc. When we were there, there was also a UN presence, about 1km down the road from the Turkish HQ.

There's a constant flux of hardware (tanks, etc) in the area: 35,122934, 33,950381 / [https://binged.it/2IlXXAV](https://binged.it/2IlXXAV) \- which we saw rumbling around a bit.

At strategic points throughout the entire city there are watchtowers, some of which that are very, very well placed (impossible to see them before they see you)

</comment></comment></comment><comment><USER7> Now that the city is occupied by the Turks, why haven't they used it? It's a bit late now (and many buildings are no doubt no longer safe), but why didn't they use it then? There's a lot of investment in the structures in the city.

<comment><USER8> Turkish never intended to use the city, actually army didn't want to push this far neither. When they were able to, they just wanted to use Varosha as a bargaining chip to keep Turkish population in north safe in the negotiations -since city was important for Greek Cypriots-

None expected negotiations would take decades.

</comment></comment><comment><USER9> That "Mysterious object in a room in Varosha" (picture 10) looks a lot like the leftovers of a Strohpferd (horse made of straw)

</comment><comment><USER6> It's hard to imagine a modem city of tens of thousands being evacuated in the wake of a hostile army's invasion.

What's holding back this city from being resettled by it's rightful owners?

<comment><USER10> > What's holding back this city from being resettled by it's rightful owners?

Its "rightful owners" are greek cypriots. During the invasion of Cyprus in 1974 it became part of the turkic-occupied sector, but rather than resettle it Turkey set it aside as a bargaining chip assuming negotiations would begin soon.

So what's holding back this city from being resettled is that it's a forbidden zone regularly checked on by military patrols.

<comment><USER11> And in this case by "resettling" it is meant making the robbery official?

<comment><USER12> What robbery?

<comment><USER11> Well. These buildings as well as the tens of thousands of buildings in the "Occpied zone" have lawful owners. In civilised societies items often have owners - in the case of important items such as a beach-line hotel in a seaside resort, the ownership is accompanied by a document called a "deed".

These buildings have owners, who can produce those deeds, yet the owners are denied ownership. This did not happen (and is still happening up to this day) through a purchase or another legal act, but through violence, so I call it robbery. This is what it is.

<comment><USER12> You are not clearly communicating what you mean in your original post. Do you think the TC's are robbing? The GC's? I am not sure anyone is talking about resettling Varosha, so I don't really understand your point. In any case, the is no _money_ to resettle Varosha should the Cypriots every get it back.

</comment></comment></comment></comment></comment></comment><comment><USER13> Wow first time I see my home country on HN.

</comment><comment><USER8> If anyone have questions for a Turkish person for this event, can answer without going too much into politics.

<comment><USER14> What's your opinion on the role of the British in this conflict? I have some interesting opinions from Greeks, it would be interesting to compare.

<comment><USER8> In the times of Cold War, Cyprus was an important base for NATO and UK therefore to keep them there with none-to-low amount of legitimacy it was beneficial to keep Cyprus somehow divided.

There are also 'conspiracy theories' that British intelligence had agenda of creating unrest intentionally on the island so they can keep the bases, but that sounds too much of 4d chess, since this unrest led into Greece leaving military part of NATO and made western alliance look shaky against USSR.

also worth reading : [http://news.bbc.co.uk/2/hi/europe/4632080.stm](http://news.bbc.co.uk/2/hi/europe/4632080.stm)

</comment></comment></comment><comment><USER15> Another abandoned Greek/Turkish city... [http://turkishtravelblog.com/the- ghost-village-of-kayakoy/](http://turkishtravelblog.com/the-ghost-village-of- kayakoy/)

</comment><comment><USER16> This somehow makes me really curious about which construction techniques make the longest-lasting buildings.

<comment><USER17> These are a few contenders in the countries around the Mediterranean - <USER2> suspect that the building shown won't last thousands of years.

</comment></comment><comment><USER18> Everyone please stop copy-posting .../amp/ links. Here's without: [https://ragpickinghistory.co.uk/2013/03/30/into-the- forbidde...](https://ragpickinghistory.co.uk/2013/03/30/into-the-forbidden- zone-varosha-ghost-city-of-cyprus/)

<comment><USER19> We've changed to that above.</comment></comment>


Ask HN: How does IPFS help the interplanetary Internet of the future? - <AUTHOR> IPFS (Interplanetary File System) is marketed as a New Internet: an HTTP replacement.
Content hashing, deduplication, data resilience/permanence, and P2P content downloads/uploads are all excellent features, and IPNS is a layer on top that gives the system a more human interface.
However to me this feature set makes IPFS sounds like a supercharged CDN, rather than a new kind of Internet.
If we're going to set up a lunar base, or start a civilisation on Mars, is IPFS actually going to make connecting them to the Internet easier? (Assuming connecting the networks of the Moon, Mars and Earth is something we want to do.) Is it going to improve our/their experience of the Internet?
How well does IPFS actually solve (or help solve) the problems of connecting and maintaining an Internet distributed across huge amounts of open space? <comment><USER2> Yes you are correct about the supercharged cdn part. I think it can help in a way that you don't need the server to be hosted in a nearby location as long as a peer/peers have the hashes you request. This however will only work for read only access.

You can imagine say a satellite (or multiple satellites) between Mars and moon is a peer that contains hashes to your website content. Rather than make the full trip to earth you can just get that hash from the satellite instead drastically decreasing load times.

</comment><comment><USER3> IPFS is overrated, if we are going truly decentralised hosting for files then something like sia, or whatever blockchain crap that incentivises users to actually store the file, would be better longterm. An easy wrapper around BitTorrent would be of more value than IPFS.

Wouldn't worry about interplanetary shit, it's marketing bs.

<comment><USER4> > if we are going truly decentralised hosting for files then something like > sia, or whatever blockchain crap that incentivises users to actually store > the file, would be better longterm.

If I understand you, you're describing a problem that IPFS is not intending to solve.

OP is right, IPFS is _(tasked with being a)_ largely a supercharged, local- first CDN. The thought is that the web as it is designed is not scalable, and seamless locality of the data is important.

Personally I agree with that, it's a bit silly that we download from non-local sources constantly. However long term storage as you cite is not something that IPFS aims to be. Nor is it a problem I think inherently needs solving.

In your view, why do we need a permanent internet? What is that solving, and who is hosting it?</comment></comment>


The 3 key parts of news stories you usually don't get - <AUTHOR> http://www.newsless.org/2009/08/the-3-key-parts-of-news-stories-you-usually-dont-get/# <comment><USER2> These really fit into what is known as the Gatekeeper Theory of the media; that is, a journalist receives billions of points of information and has to decide which are the most important to share.

Formally, this is done through an Inverted Pyramid style of news story writing - the most important information is communicated first, and the further into the story you go the less important the information is. In theory (and like anything, in practice things like personal experience and bias come into play) this means the story can be ended at any point and the most important news will be conveyed.

Where the story ends depends on News Hole (also what a lot of bloggers probably call MSM journos). This is the amount of space that needs to be / can be filled with news. _The beauty of the internet is that it removes many of the factors that traditionally limit newshole, primarily the amount of space that can be supported by advertising._

And ultimately, it's this final point which may address the '3 key parts' identified in this article. When space is abundant, that information can be shared. And since it's often easier to write a longer article than a shorter one, in many cases the information discussed exists in early drafts and is later cut for space, meaning a lack of cutting provides extra information while actually saving time.

Don't get me started on the Janus view of the press, and how it will influence online media, however.

Credentials - Australian Press Council Prize Winner 2000; University of Queensland Journalism Prize Winner 2002. Google or Wikipedia key terms to find links to more detailed papers.

<comment><USER3> Journalists could impart more information by writing more concisely.

<comment><USER4> "I didn't have time to write a short letter, so I wrote a long one instead." - Mark Twain

"Remember that time is money." - Benjamin Franklin

<comment><USER5> "Time is a waste of money" - Oscar Wilde

</comment></comment></comment></comment><comment><USER6> News is based entirely on novelty, which is much more closely tied to entertainment than it is to importance. Not only do you miss out on the all important background information for reported stories, but you miss out on very important stories all together if there doesn't happen to be anything new about them.

Tens of thousands of people dying of cancer or car crashes is not news, but a single person dying in a terrorist attack is not only front page news, but a reason to turn your life upside down.

Popular notions of what matters and what doesn't are really screwed up. That's largely human nature, but Journalism certainly reinforces it.

</comment><comment><USER7> This is a great summary of the problems that I have with newspaper articles. I've had a problem with the way news was reported ever since I learned to do real research. usually, my argument revolves around two points:

\- Lack of Context; this actually can be split into the first two points that this article makes: "The longstanding facts" and "How journalists know what they know".

\- The Monopoly of the Associated Press. The argument against monopoly is hardly unique to the press, though.

When I read an article in the newspaper, there are many questions that come to my mind.

In the worst case scenario, I'm reading an AP article which _omits the author's name_. WTF? The author's credentials and background (including their history of previous articles) are very important in certain cases (and at the least gives me some idea of where they are coming from).

Any technical researcher who writes a paper _must_ provide references to be taken seriously. Journalists should also have some obligation to cite background materials. If they take a quote out of context, they should tell me where I can find the full discussion. If there is some important historical background to the story, I'd like a reference to that information as well.

<comment><USER2> >In the worst case scenario, I'm reading an AP article which _omits the author's name_. WTF?

Would you also expect the sub-editor's name, both from AP/AAP or Reuters _and_ from the publication which edited the wire story? The chief-of-staff probably assigned that story over the alternatives, which would have been biased (because she's human too) - so do you want her name? And don't forget the section editor, the primary editor, the publication's owner (or owners).

It's a nice suggestion in theory. In reality, having the author's name can be more misleading than having none at all, since it assumes they have more control than they really do.

<comment><USER7> You make two good points:

1\. Yes, I would like to know the editors of each article.

2\. " _The chief-of-staff probably assigned that story over the alternatives, which would have been biased (because she's human too) - so do you want her name?_ "

I don't want only her name, I also want to know the reasoning she used to chose these particular stories over the others.

Although I realize that you are [probably] being critical, I do believe that you have some good suggestions. Even if this introduced more overhead per story, I believe the quality of each story would increase dramatically.

</comment></comment></comment><comment><USER8> The author of the article has a good point on the limits of knowledge: journalists seldom ponder their argument's proneness to fallacy. The author also well emphasises that it is important to have at least a little bit of information about how the news story was created. This gives the reader a greater possibility to assess the plausibility of the story.

However, the author did not cover the issue of interpretation: the journalist always writes from her personal standpoint. This raises several questions: can the journalist write "neutral" news stories? how her political and cultural background affects the news story? how could she clarify the background for the reader?

Knowing how the journalists know what they know is not enough. I would like to know something about the journalist's scheme of interpretation in order to understand the news story she wrote.

<comment><USER2> Journalists, and particularly formal journalism training (eg, a Degree over a Cadetship) really plug Objectivity as being this skill that can be developed and an ideal that must be achieved.

As long as journalists are human beings, that theory is bullshit. Bias and censorship, _usually unconscious, unintended, and not impacting on the story_ are natural parts of journalism.

Journalists should understand that (most don't). The public should understand that (and read everything skeptically as a result).

</comment></comment><comment><USER9> Seems like magazine journalism is much less susceptible to 1,2, and occasionally 3.

I wonder how much of the missing information he describes is due to the lack of time and words that journalists face when they're working in a short cycle.</comment>


Confession of a Haskell Hacker - <AUTHOR> http://r6.ca/blog/20120708T122219Z.html <comment><USER3> This post is a representative of everything that I both love and hate about Haskell:

1) It is certainly true, and I've had the experience many times, that "if it compiles, it's correct" applies frequently to Haskell. Even better, I've frequently written code for the first time, hit the compile button, and had it work first time - something that almost never happens to me with Java or C. 2) The huge, HUGE caveat to that is that it's only true for pure and sufficiently polymorphic code. If you're writing anything in the IO monad, or if you're using specific data types (e.g. Int, []) rather than writing polymorphic code, then all bets are off.

There's only one way (ignoring ⊥) to write the forward pipe operator (|>) :: a -> (a -> b) -> b in Haskell. If your code compiles, it's guaranteed to be correct.

There are many, many ways to write the isPrime :: Integer -> Bool function, which differ widely in correctness, understandability and efficiency. Once you move from type variables to concrete types, you open yourself up to many more potential errors.

There are even more ways to write the function deleteFile :: FilePath -> IO (), including but not limited to (i) deleting the file and doing nothing else, (ii) deleting the file and its containing folder, and (iii) wiping your entire filesystem. All of these would type check. Sure, you probably wouldn't make these mistakes, but the point is that _the type system won't help you here any more than it would in <insert untyped language here>_.

I think Haskell is an incredible language. It's certainly the language I have the most fun with, and I find its approach to parallelism, concurrency, I/O and state to be natural and appealing. But there's a real danger of overstating what Haskell is capable of, and turning off newcomers to the language in the process.

<comment><USER4> Your description on deleting files not being protected by the type system is the result of side effects at runtime.

The point of the OP was discussing the safety that can be achieved from pure code.

<comment><USER3> I feel like I addressed this fully in my comment. I agree with the OP - <USER2> can do great things with the Haskell type system, _if_ you're writing pure code and _if_ you're writing sufficiently polymorphic code. I think this is awesome!

 _However_ , aside from a few libraries and a smattering of very heavily theoretical work, no code satisfies both of those predicates. If you want to write a 'real world' application in Haskell, you're going to have to get your hands dirty with IO and with concrete types, which means that the ability of the type system to prevent you from shooting yourself in the foot is severely curtailed.

</comment></comment></comment><comment><USER5> I find this happens a lot with Haskell. I can write hundreds of lines of code and have them work perfectly as soon as I get a error-free and warning-free compilation.

The type system is definitely a big part of this, but almost as important are algebraic data types and compiler checks for exhaustivity when scrutinising values of such types.

<comment><USER6> This just screams "bad development practice", IMO.

Maybe I've only worked with amazing super hero developers (not likely), but the type of bugs avoided by Haskell's type system just aren't a big problem in any of the projects I've ever worked on.

The difficult bugs are almost always mistakes in the requirements and design errors, which become even more difficult to fix when you have a bunch of code.

On the other hand, I guess I could see type errors being a problem if you often write hundreds of lines of code before trying to compile and run it...

<comment><USER7> Bad requirements and design errors can't be fixed by a perfect programming language.

Those are certainly the biggest problems in building software, but not the types of problems _this particular article_ is talking about overcoming.

(I think we're both in agreement on this)

</comment></comment></comment><comment><USER8> This is supported by the parametricity theorem. That is a big word, but it boils down to this: let's say you wrote an identity function of type "a -> a", and it passed the type checker. Then it is correct: you simply can't do much with a value of type "a", because you don't know anything about it.

If an identity function is too simple, consider "compose :: (a -> b) -> (c -> a) -> (c -> b)". I think it can be proven that if you write an implementation that passes the type checker for this signature, the implementation is necessarily correct.

<comment><USER9> That's not quite true, it must either be correct or bottom.

I can write:

      id :: a -> a
      id = id

<comment><USER8> This is why Haskell is evil and you should use ML.

<comment><USER10> This is why Turing-complete languages are evil and you should use Agda.

</comment></comment></comment></comment><comment><USER8> From the article: "The types are so polymorphic that I conjecture that there is only one way to write functions matching the required types such that all parameters are used non-trivially and recursion is not used."

He is not arguing "it works if it compiles" in general. He is arguing "it works if it compiles", because types are so polymorphic. Polymorphic part is actually important. If you don't get that part, you are missing the point.

</comment><comment><USER11> Ah, a Haskell circle-jerk waiting to happen and a confession that's really a way to act superior about Haskell's type system. Listen, it's a great language and I've spent a few years deep in it, but I find this post arrogant and not even accurate.

The libraries he is talking about are for data types, something that the type system (almost by definition) is perfectly adequate for testing. So yes, he's tested it by compiling it. But for any real world Haskell program the type system alone is not enough.

<comment><USER12> I think your reply is inappropriately negative ("circle-jerk", "real world"), and that the negatively of your post detracts from what value might be derived from the article.

The author of the post provided an amusing example of a case where he posits the type system is sufficient and valuable. He didn't claim that the type system would be sufficient for a complete real-world application.

<comment><USER11> Well, I guess I'm just old enough and ugly enough to call things like I see them. Haskell is a neat language, but it is frustrating to listen to these sorts of brag-posts about the language because they're filled with dangerous hubris. The type system is amazing for certain kinds of problems. Hey, if you're writing a compiler then Haskell is probably the best language out there. Or in memory data structures. Hm. Or parsers. . . . It's a great language for CS research.

The term "real world" is not meant to slur, it's meant to be accurate. I've shipped code written in Haskell and I deeply understand the huge pain in the arse it is to use in production for applications that are not toys.

<comment><USER13> Sorry to burst your bubble, but I wonder if your experience is clouded by the (past) inadequacy of your skill set and learning level. We use Haskell in production across a number of domains and it has produced solid results. So do a number of other very serious companies out there (as an example, most banks have varying degrees of Haskell in production for critical systems).

Also, how are parsers or in-memory data structures NOT real-world tasks? You never had to parse some bit-stream or stage a sophisticated-enough computation pipeline that required lots of different, intermediate data types?

I'm not sure why you're seemingly dying to make negative blanket statements based on how "it was a pain in the arse" for YOU.

</comment></comment></comment></comment><comment><USER14> What are functional lenses?

[http://www.haskellforall.com/2012/01/haskell-for- mainstream-...](http://www.haskellforall.com/2012/01/haskell-for-mainstream- programmers_28.html) <http://stackoverflow.com/questions/8307370/functional- lenses>

</comment><comment><USER9> I think the interesting point here is that Haskell provides such a high static assurance out of the box that what you write is correct that this can happen. You'd never hear of a ruby programmer releasing a gem without trying it.

<comment><USER15> With the serious caveat that the program you are writing must only be vulnerable to the kind of errors which Hindley-Milner can show aren't present. ie: no IO, no non-deterministic concurrency, no non-total functions, etc, etc.

<comment><USER16> I wish this caveat were attached every time someone mentioned the "once it compiled it worked first time" bit. Not because there's no truth in the works- if-compiles idea, but because getting smug about it is sure to bite you in the ass sooner rather than later.

Now that I've said that, I'll state what should be obvious (and probably is to many/most): failure to compile due to type errors is a big clue I am thinking about something incorrectly or incompletely. It's not like I just twiddle stuff until it compiles. I look at it and say, "Duh! That was dumb of me!" It's like using Unit Analysis working out a long physics problem... errors in your thinking about it are very likely to show up in unit analysis. The chance of you coming up with a bogus equation that passes unit analysis is pretty small. When it doesn't pass, you have a good look and find where you went wrong rather than merely tweak.

<comment><USER17> That little connection sent me on a Google quest.

Interesting paper along those lines:

"Types for Units of Measure: Theory and Practice": [http://research.microsoft.com/en- us/um/people/akenn/units/CE...](http://research.microsoft.com/en- us/um/people/akenn/units/CEFP09TypesForUnitsOfMeasure.pdf)

<comment><USER16> Oh! I am so glad you looked that up. Thank you!

</comment></comment></comment></comment></comment><comment><USER18> I have some open source projects that I've released on multiple occasions without having tested them. I think people make the assumption that things that have adequate documentation and comments/support tickets, etc. that indicate use, that they are tested before release. That is simply untrue. You get what you get. That is true in the world of both paid and unpaid open- source and closed-source software and well as life in-general.

Something that helps in this regard is travis-ci. It's a free CI server and if you have at least some level of testing, you have some level of confidence.

</comment><comment><USER19> Why did you write it if you have never run it? Was it just for people who read your article and might want to run the code?

<comment><USER20> Probably as an intellectual exercise.

<comment><USER21> But what point is there to an intellectual exercise if you don't know whether you've done it right in the end?

<comment><USER22> "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Knuth

<comment><USER21> Touché. I see your point.

</comment></comment></comment></comment></comment><comment><USER23> That's not very surprising; Haskell's type system is really that ridiculously powerful. But I suspect many hackers working with other languages would be able to state the equivalent: "I released a library which I only unit-tested, without writing any helper project that actually uses it".

<comment><USER24> except that they had to write unit tests - whereas the compiler/type system automatically checked the type safety of the code this guy wrote.

(Not that writing unit tests for haskell code is a bad idea - QuickCheck is WAY more powerful than junits, for example)

<comment><USER25> QuickCheck and JUnit have different purposes. QuickCheck is not a unit testing framework.

<comment><USER23> > QuickCheck and JUnit have different purposes. QuickCheck is not a unit > testing framework.

Indeed. What I meant was that basically:

        P(HaskellCodeCorrect|Compile+QC+UnitTest) =~= P(OtherCodeCorrect|Compile+UnitTest)

while the distribution of effort between compilation (if any) and unit tests in other languages are quite different than in Haskell, i.e. skewed towards tests in the former and getting code to compile in the latter case.

</comment></comment></comment></comment><comment><USER6> And that's something he's proud of?

If I never ran my code, it wouldn't have any bugs either, no matter what language I was using.

I guess it does help explain all the half-assed packages on Hackage.

</comment><comment><USER26> Hindley-Milner is powerful, but there are usually multiple ways to construct a value of the correct type. Only one of those ways is the correct way, and I'd want to test my functional code to make sure that this was the way that I chose.

<comment><USER27> As sanxiyn points out in <http://news.ycombinator.com/item?id=4215055>, although there are certainly many ways to produce a value of any _concrete_ type, sufficient polymorphism will often guarantee ( _via_ the parametricity theorem) that there is only one total function of a specified type.

</comment></comment><comment><USER28> nothacker, you are "dead"/"ghosted". I am reposting his comment here:

nothacker 42 minutes ago | link [dead]

I have some open source projects that I've released on multiple occasions without having tested them. I think people make the assumption that things that have adequate documentation and comments/support tickets, etc. that indicate use, that they are tested before release. That is simply untrue. You get what you get. That is true in the world of both paid and unpaid open- source and closed-source software and well as life in-general.

Something that helps in this regard is travis-ci. It's a free CI server and if you have at least some level of testing, you have some level of confidence.

</comment><comment><USER29> Minor aside, is "I conjecture" valid English?

I'm not criticising, just curious and in the pub.

<comment><USER30> 'Conjecture' is a verb as well as a noun. But I'll admit it sounds weird — by French inflection one would expect "I conject", which seems to be obsolete...

<comment><USER31> Yep. Dictionary.com calls it obsolete. Webster wants me to pay, and OED can't find it.

conject late 14c., obs. verb replaced by conjecture (v.). Also in form congette.

<comment><USER32> my _concise_ oxford dictionary (dead tree, c 1984) lists conjecture as a verb (not marked as obsolete).

<comment><USER10> It's the word "conject" that's obsolete, not "conjecture".

<comment><USER32> oh, sorry, mis-followed the conversation.

</comment></comment></comment></comment></comment></comment><comment><USER33> As someone who is interesting in writing more Haskell, I've heard all the "if I get it to compile it works perfectly the first time", and I wonder if people are missing out on what proper TDD can bring them.

At first TDD becomes a way to assert your code does what you expect. After a few years you begin to use it as a design technique, and the correctness argument becomes less and less of a reason for using it. It's more of an (albeit nice) side effect at that point. I can write code that I test after the fact and still get the same correctness benefits, but the feedback I get from testing my design is gone.

Maybe I'm missing something, but I don't know if just having an excellent type checker is enough to provide the same quality feedback loop as well executed TDD does.

<comment><USER10> You can use the types the same way--define your types and write type signatures for your functions before implementing them.

I've found this particularly useful when writing really confusing code (like a Prolog interpreter, for example). Coming up with the types on a function clarifies what it has to do and shrinks the space of possible solutions significantly.

Types are a symbolic way to reason about code. Using types, you can get additional insight into how your function can be written just by following some simple rules. A good example of this is realizing that a function you're working on is actually a specific version of a more general function--you can see this if the type signatures look similar. This lets you reuse very high- level, generic code easily.

Going back to the Prolog example, I was having some trouble figuring out how the resolution algorithm should work. Then I realized that the sub-part I was having problems with was just special type of fold. This helped me get a very concise version of the function by reusing an existing library function.

So types can provide exactly the same sort of benefits as TDD.

</comment></comment><comment><USER34> This is why Hackage is full of junk and Haskell is unapproachable for real- world projects. Everyone's throwaway toy file is published as a package, and the useful well-documented packages get lost in the mix.

<comment><USER10> Ignoring the baseless FUD in the first part of your post, your last point is actually valid: it _is_ hard to find good, maintained packages on Hackage. Right now the standard solution seems to be just asking somebody with more experience, but this is clearly not scalable.

Happily, a new version of Hackage creatively called Hackage2 is being worked on which should ameliorate this problem (along with some other improvements). Improvement is just around the corner.

<comment><USER34> Hackage2 has been around the corner for years. The "public testing instance" doesn't exist. <http://hackage.haskell.org/trac/hackage/wiki/HackageDB/2.0>

If someone's actually _working_ on it again, that would be delightful.

</comment></comment></comment><comment><USER35> As somebody who knows Haskell only superficially, this line of code and the author's statement makes me wonder if people can read their own or somebody else's code after some time.

<comment><USER16> Yes, you can. I'm not a Haskell guru, and I haven't played with it in some time. I can read that line of code just fine. I don't actually know what it's doing, because I don't know the functions involved, etc., but the form of the line is easy enough to grok. Like any other language, it looks mysterious if you haven't read and written enough code in it, or in a language with a similar style.

<comment><USER36> "I don't actually know what it's doing"

Sorry, but that means you couldn't read it.

<comment><USER37> No it doesn't:

        foo(bar(x))

Can you read that code? Yes? But you don't know what it is doing, because you don't know what the functions foo and bar do. Same deal with the haskell code in question. Just because you don't know what Compose and getCompose do, doesn't mean you can't read the code.

<comment><USER36> I don't feel it's so clear cut. Haskell fuzzies the difference between syntactic and semantic elements. What in your piece of code is the parentheses might very well be defined as functions in Haskell. For instance, the ($) and (.) functions, but also I would call StateT and perhaps Compose and WrapMonad (while not knowing what they do) such things too.

So, I still feel that understanding a piece of Haskell means that you will need to understand the individual functions at least superficially.

<comment><USER37> You feel wrong. There is no such fuzzy. StateT, Compose and WrapMonad are functions. They are just like foo and bar in my example. Just as in a C-style language you need to know the parens mean function application, in haskell you need to know spaces and ($) are function application, and (.) is function composition. The code is perfectly readable even if you don't know what the functions being used do.</comment></comment></comment></comment></comment></comment>


Ask HN: What are the some of the best general programming videos you've watched? - <AUTHOR> <comment><USER2> LearnCode.academy's Redux playlist is really good [https://www.youtube.com/watch?v=1w-oQ-i1XB8&list=PLoYCgNOIyG...](https://www.youtube.com/watch?v=1w-oQ-i1XB8&list=PLoYCgNOIyGADILc3iUJzygCqC8Tt3bRXt)

</comment><comment><USER3> The first ~150 hours of Handmade Hero are great if you are interested in learning some neat C tricks (like hot reloading, SIMD, etc) and/or low level gamedev basics

[https://handmadehero.org/](https://handmadehero.org/)

</comment><comment><USER4> Games with GO [https://gameswithgo.org/](https://gameswithgo.org/) is a good series to learn some GoLang. Have not finished watching it yet, but enjoying it a lot!</comment>