Skip to main content

World's Biggest Iceberg Breaks Up After 40 Years

2 months ago
The world's largest iceberg is now breaking apart rapidly in warmer waters after nearly 40 years adrift. "Earlier this year, the 'megaberg' known as A23a weighed a little under a trillion tons and was more than twice the size of Greater London," reports The Guardian. "It is now less than half its original size, but still a hefty 1,770 sq km (683 sq miles) and 60km (37 miles) at its widest point..." Scientists expect it to completely disintegrate within weeks. From the report: A23a calved from the Antarctic shelf in 1986 but quickly grounded in the Weddell Sea, remaining stuck on the ocean floor for over 30 years. It finally escaped in 2020 and, like other giants before it, was carried along "iceberg alley" into the South Atlantic Ocean by the powerful Antarctic Circumpolar Current. Around March, it ran aground in shallow waters off distant South Georgia island, raising fears it could disrupt large colonies of adult penguins and seals there from feeding their young. But it dislodged in late May, and moved on. [...] Iceberg calving is a natural process. But scientists say the rate at which they were being lost from Antarctica is increasing, probably because of human induced climate change.

Read more of this story at Slashdot.

BeauHD

CodeSOD: Adding to the Argument

2 months ago

David G saw a pull request with a surprisingly long thread of comments on it. What was weirder was that the associated ticket was all about adding a single parameter to an existing method. What could be generating that much discussion?

How could adding an argument add to an argument?

registerFooWrapper: function(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { bar.when('bar-event', function(context) { context.foo({ arg1: arg1, arg2: arg2, arg3: arg3, arg4: arg4, arg5: arg5, arg6: arg6, arg7: arg7, }); }); }

This is the original version of the JavaScript function. The parameter names have been anonymized. That aside, this still isn't very good. Seven parameters is likely too many, and based on what I see in setting the context, there is an object type that holds them all, so maybe we should be passing the object around in the first place? Still, this isn't a WTF by any stretch, and since it's already deployed code, changing the interface significantly is a bad idea- maybe just adding a parameter is the right choice here. So what generated so much discussion?

This revision:

registerFooWrapper: function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, notArg8) { if (notArg8 === true) { bar.when('bar-event', function(context) { context.foo({ arg1: arg1, arg2: arg2, arg3: arg3, arg4: arg4, arg5: arg5, arg6: arg6, arg7: arg7, arg8: !notArg8, }); }); } else { bar.when('bar-event', function(context) { context.foo({ arg1: arg1, arg2: arg2, arg3: arg3, arg4: arg4, arg5: arg5, arg6: arg6, arg7: arg7 }); }); } }

Okay, so if notArg8 is true, we pass false to the context. If it's any other value, we don't past arg8 at all. I do not understand what I'm looking at here. If the goal is to ensure that arg8 is either true or not set, there are clearer ways to express that idea. But also, the goal of the ticket was not to do that- it was simply to add another parameter, which means you could drop the condition entirely and just add the parameter. context was already receiving arg8 as undefined, so it could clearly handle an undefined value.

David made some comments on the pull request, but the original developer just ended up going radio silent on it. One of the juniors on David's team approved it, for some reason, but nobody ever actually hit merge. Instead, a different developer simply made a version that took arg8 as a parameter, passed it down to context, and called it a day. It worked, the tests passed, and everyone was happy.

Well, except the original developer, but again, who knows what they were trying to do?

[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.
Remy Porter