Hacker Newsnew | comments | ask | jobs | submit | gilgoomesh's commentslogin

This is being presented as a good thing? I'm sorry, I take no pride in having humans replace robots for repetitive manual labor.

The story is either a weird marketing ploy, or it's misreporting, or it's downright stupid. You do not need to replace robots with humans to improve manufacturing processes.

Perhaps the reality is that they're simply hiring more manufacturing and operations experts to oversee continuous process improvements and this hiring is being misinterpreted?


wpietri 2 days ago | link

No, this article is very much in line with Toyota's roots.

Toyota's history is one of treating their workers as valuable participants who use their brains at least as much as their hands. They eschew all sorts of fancy technology, not just robots, because technology is relatively inflexible. This approach allowed them to kick the asses of the US car manufacturers in the post-WWII period, continuing to increase productivity per worker long after US manufacturers leveled out.

Their approach isn't to hire experts. It's to turn their workers into experts on their work, and on improving that work. This has been literally incomprehensible [1] to US car companies because it's of the dominant US paradigm, managerialism [2].

See, e.g., Toyota Kata for more on how Toyota approaches this.

[1] http://www.thisamericanlife.org/radio-archives/episode/403/n...

[2] http://www.amazon.com/Confronting-Managerialism-Business-Eco...


Why can't Windows officially include standard versions of this library? You know, like Windows already does with .NET versions since Vista or every other OS does with libstc++ or libc++? Forcing every C/C++ program to bundle their own MSVCRTXX.dll is pretty silly.


api 5 days ago | link

I must confess to statically linking my Windows binaries. It's better than making the user click through extra installers-within-installers to install the right MSVC redistributable.

It also seems to paradoxically improve load times. Shrug.


stinos 5 days ago | link

click through extra installers-within-installers

the crt can be installed silently just like any other self-respecting installer out there, and normally the tool you use to create installers does support this as well. I mean, even something basic as WinRar allows you to create silent extract-install combos.


_wmd 5 days ago | link

There's little paradoxical about it.. if you link against 20 DLLs, that turns into 20 directory lookups and then random paging potentially across the entire drive, whereas a .EXE is more likely to appear contiguously on the drive, and after the first page of it is loaded in, the OS readahead mechanism might opportunistically snarf something like the next 256kb worth of pages for free as part of the same IO.

Ignoring IO, and depending on the size of the app (particularly C++ apps though), the linker might be spending a huge amount of time on symbol fixups.


slashdotaccount 5 days ago | link

How do you track and fix security issues in the libraries that you statically link?


e12e 5 days ago | link

I don't think it's so much how you (as an active developer does it) -- granted having to redistribute your app everytime any of (say) 10 bundled dependencies need an update is an inconvenience -- the biggest problem is when you have some old software (without vendor support) that is statically built with some overflow "built in" from an old version of a library.

Granted, at some point patches probably won't be backported, but it is convenient to be able to upgrade libssl, restart a few services and be done.

Of course, if you bought that software under GPL, you might be able to fix the issue yourself...


jevinskie 5 days ago | link

Yes, resorting to static linking is a pretty good solution for executables. Pitty about the bloat, but it works! How would static linking work with libraries? Would you get multiple heaps?


delhanty 5 days ago | link

Sometimes you do get multiple heaps, but it can be made to work if one is careful not to allocate on one heap and then free on the other heap. One example is a C/C++ COM addin for Excel say - instead of freeing the Excel allocated memory directly the addin DLL invokes addRef/Release appropriately on the IUnknown interfaces to the various objects it gets handed by Excel. That can be automated a bit with ATL and CComPtr. A similar factory / smart pointer API can be made to work for any DLL that wants to maintain its own heap.


CamperBob2 4 days ago | link

Sometimes you do get multiple heaps, but it can be made to work if one is careful not to allocate on one heap and then free on the other heap

Agreed, and it's sad to think how much confusion and grief would have been saved if they'd just made this a mandatory policy from day 1.

Windows developers regularly jump through an entire maze of hoops -- and make their users do the same -- just so they can call free() on a pointer they got from some random DLL, or do other goofy things that they shouldn't be allowed to do.


sourkremlin 5 days ago | link

I've used delhanty's example in a large codebase and it worked well.

Another approach is to create a static library that overloads global memory operators (new, delete, and their variations). Link this static library to every DLL that you make, and have the implementation of these overloaded global memory operators use the heap of a single DLL. There may still be multiple heaps, but only one will be used.


pjmlp 5 days ago | link

Because .NET has version mechanisms built in. The code will make use of the right version if available.

You can do the same with WinSxS and manifests, but again too many lazy developers.

Doing that would be the same as .so hell in GNU/Linux regarding libc versions.


derefr 5 days ago | link

> You can do the same with WinSxS and manifests, but again too many lazy developers.

I'm surprised Microsoft hasn't put a feature in the "Customer Experience Improvement Program" that scans the applications installed on a system for what versions of DLLs they try to load, collates all that data together, and then automatically generates "default" manifests for those apps, locking them to the specific versions of DLLs they were already requesting+using anyway. It'd be like wrapping each installed app in a Docker container based on the current working system config.


Respecting the right of someone to have a belief does not mean ignoring that belief when deciding if you like them.

1. Eich is absolutely allowed to be against gay marriage.

2. The Mozilla community is absolutely allowed to be against Eich because of his position on gay marriage.

This is not a discrimination case where Eich is being excluded from a job because of beliefs unrelated to his job. This is a case where Eich is being elected to a job where his job is to represent the Mozilla community. But he doesn't obviously represent the community – potentially disqualifying him from the job.


joelrunyon 15 days ago | link

> This is a case where Eich is being elected to a job where his job is to represent the Mozilla community.

Is the Mozilla community asking him to represent their views on marriage?

If he's making the donations as a private citizen, then it strikes me as odd that he's somehow unqualified to talk about software.

Is the next step asking people to step down because they voted for the losing candidate who represented slightly less than 51% of the voting public? (That's a serious questions & a logical next step in an increasingly partisan ideology that thinks in black & white rather than shades of grey).


letstryagain 15 days ago | link

> Is the Mozilla community asking him to represent their views on marriage?

No, but why does that matter? The community doesn't want anything to do with him because he's a bigot. He's allowed to do what he wants and the community is allowed to shun him if they want.


Class inheritance should be about the data not the behavior. If you're looking for "IS-A" inheritance, you should look at: what parameters does the class require on construction. If your implementation isn't fundamentally based around the same construction parameters, then it shouldn't be a derived class.

For example: HTTPResponseHandler IS-A TCPResponseHandler because its primary role requires a TCP socket on construction. The only inherited methods should be management of the data from construction.

Problems with this only arise when people use subclass to gain the interface but not the data. You should never need to do this and it's a problem with using classes instead of interfaces for your parameter declarations – it's not a problem with class inheritance.


This graph of The Simpsons illustrates (for me at least) that IMDB is more reflective of the viewing community's weird quirks and biases.

Honestly: is "Homer the Smithers" the best episode of The Simpsons? I doubt anyone would truly put it on their "best ever" list. It's really more "solid" than great. Most importantly: it doesn't rub anyone the wrong way.

Is "Saddlesore Galactica" one of the worst episodes ever? No. It's extremely funny and the story is structured well. It gets lots of very low votes from viewers who favor realism over humor (the episode is implausible with the horse racing then gets silly/fantasy). The episode's score reflects a community desire rather than an objective opinion.


wodenokoto 18 days ago | link

>Is "Saddlesore Galactica" one of the worst episodes ever?

No, and the graph in no way show that. From around season nine, episodes are mostly rated between 6.5-7.3, with a fair amount lying considerably lower than that and only a few outliers in the other direction.

But as a 6.5'er, "Saddlesore Galactica" is a solid "poor" episode, like many, many others. But there are a substantial amount of episodes well below that one, and they are also scoring considerably lower.

The clip shows are the truly "worst", despite having all the best punchlines. So one could argue that objectively they are the best. But that is also a poor argument.


gabemart 19 days ago | link

> The episode's score reflects a community desire rather than an objective opinion.

I don't really understand your point. You think it's biased for audience members to rate an episode poorly because they didn't enjoy it and didn't think it was funny?


corkill 19 days ago | link

People that disliked something are more likely to vote on that episode to voice their dislike.

For example if the episode makes fun of christians you may have a heavy amount of christians vote the episode down even though it was a good episode. The people that thought it was good aren't as motivated to vote as the people offended.

This is also common with service providers and internet reviews. If the service is good there is no need to go online and post a review. If it's bad you are much more likely to take the time.


naturalethic 18 days ago | link

"objective opinion" ?


gilgoomesh 26 days ago | link | parent | on: Objective Next

Dear OP: why do you think the Win32 C APIs still exist? Microsoft have offered .NET for Windows since 2001. It does everything you're requesting but it hasn't replaced the completely hideous Win32 C APIs.

Bluntly: there is a class of programmers and programs that cannot be written without:

* C linkage

* Calling of and calling from C

And a further class of programs where:

* Garbage collection

* Significant runtime

* Safe code

Make acceptable performance impossible. This class of programs includes .NET itself which is entirely written on top of the Win32 C APIs.

If you want a runtime on top of Objective-C, you're welcome to write one yourself. It could offer everything you're requesting without needing to change anything about Objective-C.

Oh wait, there are literally dozens of runtimes on top of Objective-C. Not to mention official bindings to Python and other languages. Sure, none of them are very popular but if you want to write in something else: go ahead.


pjmlp 26 days ago | link

I would like to add all of that is possible without C and has been achieved multiple times back when C was UNIX only.

It is just the historical legacy fact that the majority of modern OS ABI == C ABI that keeps us have to link with it.


bunderbunder 26 days ago | link

Well, that and C is a nice lowest common denominator; virtually any language can manage a fairly decent foreign function interface with C code without too terribly much friction.


jbrennan 26 days ago | link

Author here: Objective C is far and away mostly used for creating user-facing software. I want a better way to do that. That’s what the essay is about.


gilgoomesh 26 days ago | link

Have you considered PyObjC for programming Mac OS in Python?


Or Xamarin for programming iOS using Mono/C#?


Or F-Script for programming Mac OS X from a command-line shell?


All three are quite well established and work pretty well for what they do.


In this context, it's really a weasel term. He's functionally given no explanation.


buro9 29 days ago | link

I would give little explanation too nowadays.

In the past I've given lots of information about requests to moderate or otherwise remove content from forums I run.

Then I was hit with a cease and desist, and again provided transparency of it. The very predictable Streisand effect kicked in, and then I was hit with a harassment case too (for disclosing the details even though I knew it would likely trigger Streisand).

It was all resolved quite peacefully, but one fire-fights these things reasonably over the years and get to learn that the other party is usually not being reasonable. You can either result in escalation, or you can calm things down.

It's a lot easier to pick the option that calms things down if it's available to you. And in case above, that was apocalyptic, to close the list without disclosing detail behind it.

The last straw really breaks the camels' back. Once broken, it's not getting up to fight on. Life is too short.


goatforce5 29 days ago | link

"I don't want to do this any more" is enough of an explanation to be honest.

Receiving legal threats (either real of vague promises of one), being accused of censorship and denying someone's right to freedom of speech (and having to explain that's not how free speech works), cleaning up spam and trying to sort out fights between users really wears you down after a while.

A lot of work goes on behind the scenes of running a 'community' and it can be stressful, draining and generally not fun.

You are free to try to step in to the gap created by the closure of this list and run a replacement service. I'm sure someone will.


fnordfnordfnord 29 days ago | link

It's a message to his listserv users, not a press release. More context can be found in the archives, or from someone who follows the list closely.


asuffield 29 days ago | link

Seems pretty clear - burnout. After 12 years of abuse he's had enough.


woof 29 days ago | link

If you care about context, read the list....


gilgoomesh 29 days ago | link | parent | on: Moto 360

They clearly don't have a working model, yet. All of the physical devices they showed in that clip were engineering prototypes (CNC or 3D printed plastics) with no electronics.


gilgoomesh 29 days ago | link | parent | on: Moto 360

To be fair though: the Moto 360 is still a work in progress and neither the promised apps nor the device itself exist at all.


gilgoomesh 42 days ago | link | parent | on: 2014 Goals

There aren't many details on the page. It seems like a very long slogan/mantra/core-values more than an actual plan.



Lists | RSS | Bookmarklet | Guidelines | FAQ | DMCA | News News | Feature Requests | Bugs | Y Combinator | Apply | Library