Modern CMake short tutorial and best practice - <AUTHOR> https://codingnest.com/basic-cmake/#fnref6 <comment><USER3> It still boggles my mind that CMake was the thing that won for the next generation of build systems. Its syntax is probably even worse than bash (except that it didn't have decades of compatibility to blame that on), making it the single worst language I've ever written code in. I struggle to understand how one could sit down to create a language and come up with something that bad.

There was apparently at one point effort to replace its frontend with Lua, but that sadly never took off. (I, like everyone else, still hold my nose and use it, but man ... like ... bwa?)

<comment><USER4> The problem I have with CMake & autotools is that every project writes their build process from scratch, and everyone does things slightly differently making their project a snowflake.

Certain platforms, compilers, and dependencies need special handling and workarounds, and this knowledge isn't shared and has to be repeatedly rediscovered by every project.

Rust's Cargo, perhaps accidentally, has found a fantastic solution to this. The build process itself is built out of packages. I don't have to know how configure MSVC compiler, I just use an existing crate for it. I can use existing package to find and configure libpng — the work to handle its own quirky pkg-config replacement has been done once, and now every downstream project can benefit from it.

Package manager in the build system may sound strange, but it's actually fantastic. It works so well that I switched my C projects to Cargo to be able to build them on Windows.

<comment><USER5> Your critique is fair for autotools but not CMake, which encodes a ton of platform and compiler specific knowledge [1]. cmake modules can also be used to find libraries, e.g. FindPNG for libpng.

1: [https://cmake.org/cmake/help/v3.11/manual/cmake-compile- feat...](https://cmake.org/cmake/help/v3.11/manual/cmake-compile- features.7.html#supported-compilers)

<comment><USER6> The bundled Find* modules are great, but once you go beyond what's included you often run into problems.

In converting a recent project to CMake (so as to use CLion), I encountered all of the following:

\- find_package modules that didn't support REQUIRED or VERSION options

\- Lack of standardization on whether find_package variables include recursive dependencies

\- Some modules supply imported targets, some don't - requires different consumption

The fact is, I can't simply rely on find_package doing what I expect - I have to read each and every Find*.cmake I use.

On top of that, there's a bunch of conflicting information out there - <USER2> your source list include header files? Some older blog posts suggest it's necessary for dependency calculation, newer ones don't seem to mention it; I honestly have no idea what the right answer is.

<comment><USER7> > should your source list include header files?

IMO yes. Part of CMakes usefulness is IDE integrations, so listing your headers means they show up in your IDE.

As for your points about find modules not working, that's not really CMakes fault. I've spent days fixing bad autotools/premakr/scons/custom scripts, (not to mention third party code in general).

<comment><USER6> I agree that it's not CMake's fault, but it does fit the grandparent's statement that "everyone does things slightly differently".

It's also very fixable - a central site for collecting find_package modules and enforcing certain standards should be doable, and would improve CMake's UX significantly.

<comment><USER7> Yeah agreed, a site of find package modules would go a long way towards helping, but only if they're vetted in some way, otherwise nothing r ally changes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> While CMake is verbose I don't think it's terrible. The complexity of building a simple flat source project vs a multi-stage build project scales very well. One thing that amazed me was how simple it is to script up the creation of generated libraries.

For school I had to generate a build step that would allow me to embed Duktap and link to a library called Glad. Both needed to be generated with a python script. Doing this was dead simple [1]. I didn't have to do anything crazy to locate the path to python, the source folders I want to output into, etc. CMake has magic for that.

Granted I spent just as much time reading the really horrible docs to find out how to use these magic features as it took me to complete the assignment. I think like many amazing technologies it's blocked by a steep learning curve and a long long history of worse ways of doing things. Every time you google for how to do something you'll get an answer from a different part of the project's lifespan.

[1] - [https://github.com/gravypod/solid- snake/blob/master/CMakeLis...](https://github.com/gravypod/solid- snake/blob/master/CMakeLists.txt#L22-L41)

<comment><USER9> This is a great introduction to CMake for a single project/repo. You could add a section on installing the project. Although that probably isn't required for the student projects.

What I'm still searching for is a nice way to build multiple repos, which have dependencies on each other, in a cross platform way, that's distribution friendly. What I mean by distribution friendly is: you shouldn't be bundling your dependencies.

But it's nice to compile your own dependencies and link to that for debugging. So I want something that easily allows the upstream developers to download, compile and debug their dependencies, but doesn't do that when distributions (Debian, Fedora) go to compile and release your code. And it'd be nice if this was part of the CMake, so new dev's don't need to run some bash script to get setup, or follow a long list of instructions in a document to download, compile and install said dependencies. I'd also like to keep my existing CMake as horrible as it is at times, I'm not sure if switching to Meson is really worth the effort. Especially since I'm still stuck with C/C++ anyways.

<comment><USER10> Daniel Pfeffier's effective cmake talks about how to do that. Setup each project standalone and get the dependencies with find_package. Then create a superprojects thats add each dependency with add_subdirectory and override find_package to be a no-op for dependencies added with add_subdirectory, since the "imported" target is already part of the build:

[https://m.youtube.com/watch?v=bsXLMQ6WgIk](https://m.youtube.com/watch?v=bsXLMQ6WgIk)

Now, overriding a builtin function is not the best idea so in boost cmake modules we have a bcm_ignore_package function which will setup find_package to ignore the package :

[http://bcm.readthedocs.io/en/latest/src/BCMIgnorePackage.htm...](http://bcm.readthedocs.io/en/latest/src/BCMIgnorePackage.html#bcm- ignore-package)

<comment><USER9> Just watched that video, long but awesome. I'm not sure on how exactly his strategy is supposed to go, but it sounds like the superproject is another repo. I don't really want that. What I'm thinking right now is to use the same overall idea, but instead of a superproject, I use the same repo, and use: [https://cmake.org/cmake/help/latest/module/ExternalProject.h...](https://cmake.org/cmake/help/latest/module/ExternalProject.html)

But put that behind a flag, that defaults to off, so it doesn't interfere with the distributions. And it supports patching so I can patch whatever dependency's CMake, in the event that they don't (yet?) support the same strategy so it can work transitively without having to boil the ocean. Granted, you would need to write patch files, for basically all your deps initially because nobody else is doing it that way.

For reference, I'm trying to help convert an existing open source project from autotools to cmake, but at work I'm the resident cmake expert, and we have multiple products, which effectively are built as different 'distributions' (not always Linux based) so I've been searching for a good way to do this for a while, even though I just started contributing to OSS.

</comment></comment></comment></comment><comment><USER11> If you liked this piece, please also consider reading [https://pabloariasal.github.io/2018/02/19/its-time-to-do- cma...](https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake- right/), which is a modern (2018) guide to what you should and should not do in CMake.

It's very enlightening.

</comment><comment><USER12> Honestly CMake is just as bad as it's predecessors. Today I use meson, which isn't perfect but is far better than CMake.

<comment><USER13> How does meson's find_library compare to CMake when it comes to finding libraries on Windows? That, and the very nice GUI tool that comes with it are my two killer features of CMake.

<comment><USER14> I don't use Windows and don't care about Windows, you'll have to see for yourself.

<comment><USER15> Thought so.

If you're primarily a *NIX user, there are a bunch of reasonable build system alternatives out there, but if "supporting Windows" is even a little bit of a priority, I have found CMake to be far and away the least painful way to build multi-platform software on Windows, especially if you're a novice.

Until Meson even approaches being as easy to use on Windows, I feel like it's going to continue to be second fiddle.

<comment><USER14> It may be second fiddle for people who care about Windows, but thankfully they seem to be few and far between these days. There's no reason to support Windows when they won't even pretend to care about standards compliance. Although even then, having to draw the ignorant masses of Windows devs out of their GUIs would be quite a task.

<comment><USER16> I don't know how common I am, but literally everybody that's ever paid me to do any development work has wanted support for Windows. (I'm a bit worried that this might date me, but my first time coding for coins was 20 years ago.) Tools that don't support Windows are just not useful to me.

I'm not even sure which standards you're worried about, either. VC++ supports C++14 pretty thoroughly, and you've got various builds of gcc or clang if you want whatever extra support they give you. We're long past the dark days of yore when support was hit or miss and MS didn't give a shit.

If you want POSIX, you are out of luck, but that's fine, because Windows isn't a Unix, so POSIX doesn't apply. My view is that this is actually a pretty good thing, but reasonable people may differ - e.g., by thinking that this is a fantastic, amazing, excellent and extremely good thing ;)

Overall: the really weird thing is that Windows support is no harder to arrange than support for any other platform. But because it's so unpopular with a certain brand of nerd, it's somehow OK to just code for POSIX, complain when your code doesn't build on Windows, and blame the whole affair on Windows. But, dear people that do this, I'm afraid you appear not to have noticed that portability is _your_ job, not platform vendors'.

<comment><USER14> >But, dear people that do this, I'm afraid you appear not to have noticed that portability is your job, not platform vendors'.

That's rich. CPU manufacturers ship C compilers and virtually every operating system other than Windows provides a POSIX interface (and in fact, so did Windows at one point!).

Consider the math; if the platform supports portable interfaces then the vendor did a small amount of work to support a large number of programs. If the programs support the platform then a large number of programs have to do the work to support a single platform.

Windows is quickly losing what little relevance it has left. Today's most relevant platform is the web and end users are accessing it on their phones - and we both know how Windows for phones ended. Windows Server is a bad joke and the servers which power the platforms of today are run on Unicies and programmed by engineers on Unicies. Windows is dying quickly and is simply not important anymore. What few end users they have left are being driven away to Chromebooks and Macbooks by unwanted updates, advertising, and a non-stop barrage of annoying bullshit.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> The generator expression used here isn't necessary:

add_test(NAME plain-run COMMAND $<TARGET_FILE:vector-test>)

You can just use:

add_test(NAME plain-run COMMAND vector-test)

Since the <COMMAND> is an executable target.

</comment><comment><USER17> I also found this to be a decent reference (mostly the videos):

[https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4...](https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1)

Also, some of the Kitware projects on GitHub.

</comment><comment><USER18> While I appreciate the need for DSLs, in many cases I feel like I'd rather use an API. At least, an API imposes no constraints on the features of the language itself. (So, imagine a DOM for VS solutions and projects; writing your own script would be a breeze...)

</comment><comment><USER19>
         Make is horrible because it does not handle spaces in paths

Putting spaces in pathnames is idiotic to begin with. I have written Perl scripts that are 3x more complicated just to deal with spaces in pathnames. You might as well blame Make for not handling UTF-32 characters in pathnames -- I mean, someone might want to put a GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL (U+03FF) in their path -- Make would suck if it didn't allow this.

You missed the most egregious problem with Make -- the fact that commands must begin with a friggin' TAB! No other whitespace will do. Think of every manual writer who has to somehow convey that the whitespace you (don't) see is a TAB.

<comment><USER20> > Putting spaces in pathnames is idiotic to begin with.

The thing that's idiotic is not being able to handle valid paths. Yes, all of them. Yes, including ones containing GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL (but also apostrophes, backslashes, quotes, dollar signs). It boggles the mind that a tool that does everything through a shell can't be made to pass arbitrary information to that shell in a reliable manner.

<comment><USER21> GNUMake handles UTF-8 just fine. I was able to replace spaces (character 0x20) with non-breaking spaces (character 0xA0) and it just worked ([https://news.ycombinator.com/item?id=16527084](https://news.ycombinator.com/item?id=16527084)).

<comment><USER20> Sorry, didn't mean to imply it couldn't; just pointing out that it's important to handle despite the way the parent suggests it's a ridiculous expectation.

</comment></comment></comment></comment><comment><USER22> CMake is absolutely terrible if not destructive for non-trivial projects that require frequent build system updates and restructuring (especially those tied to cross-compilation).

GNU Make might have its share of issues but compared to CMake, it's dead simple and I've never once in 20 years of programming encountered a build issue I could not debug.

CMake has had me throw up my hands and give up in despair far too many times. It boggles the mind that people continue to use such a rotten tool. Probably because it looks attractive, superficially, but if one examines it in more detail any possible justifications for using it should completely fall apart.

<comment><USER5> How do you use create a portable non-trivial project with make? How do you do discover what libraries, headers, functions, etc. are available?

<comment><USER23> That's what the autotools are for. Yes, they're horrible. The problem is horrible and the autotools are worse. But they work.

<comment><USER5> Autotools do work, but what autotools user can sneer at cmake? So I guess OP is using something else, which is why I asked.

</comment></comment></comment></comment><comment><USER24> I'd suggest everyone to check out bmake. It has a very nice standard library of makefiles with which often your makefile can be a couple lines long, one of which just includes the relevant library.

<comment><USER25> It's it fully compatible with CMake and will consume thousands of CMake built C/C++ libraries out there?

</comment></comment><comment><USER26> I think it's recommended to avoid set(...) in modern/best practice cmake because it's global. Use the target_* functions.

<comment><USER9> The author does discuss this in a footnote: [https://codingnest.com/basic- cmake/#fn4](https://codingnest.com/basic-cmake/#fn4)

In this case, I think I agree. Otherwise ya, try to avoid set. Except for CACHE variables, I think.</comment></comment>


iMac Pro Available Now - <AUTHOR> https://www.apple.com/shop/buy-mac/imac-pro <comment><USER2> I wouldn't buy one of these with my own money, but I might try to get one for work. We don't upgrade anything. All of our PCs and Macs now are leased for three years and replaced. Maybe I can get one on our next refresh cycle. It's true, from a user's perspective, the configuration may not be the best, from a certain accounting perspective, it works out.

</comment><comment><USER3> 1TB SSD increase costs $800. 2TB SSD increase costs $2000 (from 2TB to 4TB).

Apple tax hits hard.

<comment><USER4> For reference, 1TB NVMe SSDs retail for $600+ and 2TB NVMe SSDs retail for $1700+. Lower-priced 2TB NVMe SSDs will probably come out soon, driving the cost down hard.

<comment><USER5> Apple is famous for paying less for hardware than any other manufacture so I don't see how MSRP is pertinent.

<comment><USER6> Sure. But, from his numbers, if you were buying it at MSRP as a consumer, the $800 upgrade would cost you around $1100.

<comment><USER7> Except that if there are problems with the ssd and it was built in, it's covered by the Apple warranty.

<comment><USER6> So it's both cheaper and covered by Apple warranty (which tends to be quite good). Your point being?

<comment><USER8> It's not cheaper. $2000 is the price difference to go from the 2TB upgrade to the 4TB from Apple. $1100 is the price difference to go from 2TB to 4TB if you paid retail.

Apple is getting all of the profit that a retailer would, plus an additional $900 profit on top of that.

With the money you save you can self insure because the SSD isn't guaranteed to fail.

<comment><USER9> What numbers are you looking at? I don't see how you follow this:

> 1TB NVMe SSDs retail for $600+ and 2TB NVMe SSDs retail for $1700+.

with this:

> It's not cheaper. $2000 is the price difference to go from the 2TB upgrade > to the 4TB from Apple. $1100 is the price difference to go from 2TB to 4TB > if you paid retail.

<comment><USER8> I misread the above post as prices for 2/4TB SSDs instead of 1/2 TB SSDs. My bad.

The real difference between Apple and DIY is $300. On their configuration page, Apple's prices are +$800 to go to the 2TB SSD, and +$2800 to go to the 4TB SSD. That's a $2000 price jump to add 2TB. If I did it myself I could add 2TB for $1700. That means that Apple gets all the profit that a retailer would, plus $300.

A $300 premium is still a little gougey from Apple considering it takes them all of five seconds to slap the extra SSD in on the assembly line.

<comment><USER6> Is it 2x2TB or 1x4TB, though? Obviously, it'd be cheaper to do 2x2, but there's a decent chance you're actually getting 1x4 on the iMac.

<comment><USER8> The biggest NVME drive I can find is 2TB. Apple might be offering a 4TB option, but isn't that less good? You lose all your data at once instead vs losing half.

I doubt they are hurting for real estate with that screen size, it might just be better to add another M.2 spot on the board. Then they wouldn't have to push manufacturing limits to source a 4TB drive and can get higher yield 2TB drives.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> When is Apple going to recognize that we want Nvidia GPUs? Come on Apple. People are literally buying outdated MacBook Pros to have a CUDA compatible GPU.

<comment><USER11> It won't matter, because the NVidia driver provided by Apple would only talk Metal Compute anyway.

I don't see them doing otherwise.

<comment><USER12> NVidia provides drivers, I'm using one on a Hackintosh now.

[http://www.nvidia.com/object/mac-driver- archive.html](http://www.nvidia.com/object/mac-driver-archive.html)

<comment><USER11> The golden question is if they would be allowed on an actual macOS image without hacks, Hackintoshes don't count.

<comment><USER13> What? The page linked has drivers for macOS. They work on a hackintosh and on any regular Mac. Nvidia wouldn't release official drivers that only work on a hackintosh.

<comment><USER11> Today, the OP question was about a future Mac Pro.

</comment></comment></comment></comment></comment></comment><comment><USER14> I just don't get it. How can you make a tool for the pro market with no thoughts about price/performance or upgradeability?

Apple seems to think that deviating from their consumer oriented design philosophy is anathema, even when dealing with pros.

<comment><USER5> Who in Professional Video Editing world should trust Apple in regards to Hardware anymore? More and more video production is moving back to Windows and for good reason, hardware and Apple's handling of Final Cut Pro X years ago still scares everyone.

In graphic design I see this as a good solution for those shops, but video really has been leaving Apple.

After their meeting to set the record straight in April 2017 about Professional Hardware and Apple support for the industry with Phil Schiller, Craig Federighi they give people this? This is not what a workstation should be. It isn't upgradable GPU, and it is using ports again like the Pro of 4 years ago.

<comment><USER15> This was very far along when that April meeting occurred. Many people speculated that this _was_ going to be their answer to the Pro market, but they took the feedback, held that meeting and promised to release a new "modular" Mac Pro.

So, this isn't what they are releasing in response to that feedback or what they were discussing in that meeting.

<comment><USER16> however with modular people are reading too much into it. Apple more likely meant modular for them, as in being able to adjust to changes in technology where the previous Mac Pro could not be changed.

I doubt we will go back to the old tower style similar to PC versions

<comment><AUTHOR> > the previous Mac Pro could not be changed.

Apple could have changed it rather easily.

</comment></comment></comment></comment></comment><comment><USER17> Are there really people willing to pay $5,000 for a computer built in to a monitor? If you want to run 2 screens, then they won't match.

<comment><USER18> If you going to build the same exact spec it's not that far off from the actual BOM for the parts, in fact going for the exact same build will cost you more that that what Apple is charging.

So Vega Pro 64 (Vega FE equivalent) 8 core Xeon-W build from Apple is $5599

If you would build the same PC it would be:

~$1200 for the CPU (Xeon W-2145, not available to the public yet)

~$400 for 32GB ECC 2666mhz RAM from a good vendor

~$500 for a Xeon-W workstation motherboard

~$480 for 1 TB PCIE SSD like the Samsung 960 Pro

~$1000 for VEGA Frontier Edition

~$250 for a good case

~$220 for a good power supply

~$120 for CLC water cooling for the CPU

~$100 for case fans

~$1300 for a professional 4K monitor

This comes out to the total of ~$6870

Sure you can build an almost comparable PC from other parts at a fraction of the price but if you want to replicate the build in the iMac it will cost you much more.

Also AFAIK you can connect a second screen the TB ports do support Thunderbolt displays and DisplayPort.

<comment><USER19> I think you're inflating prices. You can get a really good 4k 27" monitor for about $500,

<comment><USER20> Same thing there: to get the actual thing: a 5120 x 2880 IPS LED screen you have to pay a pretty hefty premium. Quick search shows the LG is around $1300-$1500. (?)

You can get a computer with "80-90%" the specs of this, and pay 50% the price. But the point is if you want to match 100% of the spec you'll likely pay 100% if not 110% of this price too.

<comment><USER18> Yep 70-80% for 50-60% of the price is about right, you can replace the Intel Xeon for a cheaper i9 or even cheaper AMD TR or even cheaper Zen if you don't care about matching the performance.

TBH most of the savings are from the CPU/motherboard once you drop the Xeon.

<comment><USER20> You quickly get into the whole "It's definitely not professional without ECC" and the stupid intel market segmentation. Intel makes it really hard and expensive to build quick (as in single core quick) workstations with ECC. If you are absolutely hellbent on 5K and a 4Ghz+ with ECC then it's going to cost a bit. So while you could get a lot of the _performance_ at a lower price point, things like the ECC makes it hard to compare in some aspects.

<comment><USER18> I don't think ECC is needed for FinalCut Pro or similar workloads but then I never had a render fail at the 11th hour so I wouldn't know.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> I wonder how many of these will end up in VC's offices, running Excel.

<comment><USER22> *Outlook and Apple Calendar

</comment></comment><comment><USER23> It appears that an Nvidia GPU is not an option, so this machine cannot be realistically used for deep learning.

<comment><USER11> Sure they can.

[https://developer.apple.com/documentation/coreml](https://developer.apple.com/documentation/coreml)

</comment></comment><comment><USER24> Team at Apple:

So we ran into heat sink problems with MacPro. Also, people wanted a pro machine to be extensible and upgradeable.

We learned from our mistakes. We give you the non-upgradable non-extensible iMac Pro that is also a heat sink problem.

(Note: I'm aware there's a MacPro coming sometime next year. And still...)

</comment><comment><USER8> Just for fun, I added every possible option to the configurator (including VESA mount and software). Nearly $14k.

Since my work (statistics) is compute heavy but data transfer only happens once, I'll be sticking with EC2 at <$5 per hour. An iMac Pro would require me to upgrade before I worked off the difference. EC2 has the upgrading factored into the price and has CUDA GPUs.

I get that not everyone is like me (video editing would be real slow if you had to transfer all the files over the web), but I find it hard to justify when I could hire a kid to build me a comparable system for much cheaper. Sure, Apple's warranty is better, but is is worth as much as the price difference says it is?

</comment><comment><USER25> Do All Professional Video / Gfx Editor uses large 27" monitor? For Video definitely, but i heard no one is using Apple's hardware for Video any more because they dont give a damn about the Mac. But surely we not everyone in the Gfx side needs a 27". Not everyone has the space to afford the 27" Size. The volume consumed by those component should fit in 21", surely this isn't a technical problem.

And are those Keyboard are butterfly keyboard? ( I hope not )

<comment><USER26> The keyboard is butterfly. I've gotten used to mine on the macbook pro, but it is definitely louder which can annoy friends and family.

<comment><USER27> Having used both side by side, the desktop butterfly keyboards are markedly different from the mobile ones. They don't even seem to use the same switches or tech. I have the newest version of both

</comment></comment></comment><comment><USER28> I've never used a Magic keyboard. Is it a lot like Macbook keyboards? Do people prefer it over a mechanical keyboard if they want their wrists to not hurt after a day-long use?

<comment><USER29> Its basically what the Macbook keyboards should be. Much more reliable with a little more travel distance, but with the same key stability as the butterfly ones.

<comment><USER30> Its the other way aournd.

</comment></comment></comment><comment><USER31> Looking at my use cases, I rarely need something of this power, but I'm excited that some of the advances will trickle down into the regular iMac line...

</comment><comment><USER32> I've been watching eBay for space grey magic keyboards / trackpads since they won't sell them individually. No luck.

<comment><USER33> Has that been officially stated? I've been hoping to get a set of the keyboard and trackpad in grey.

<comment><USER34> Yes -- the configuration page states: "Space Gray accessories are available only at the time of your iMac Pro purchase.".

</comment></comment></comment><comment><USER35> Curious how it's available now? Local pickup is Jan 2 or 3, delivery after Christmas at earliest. Just wondering

</comment><comment><USER35> Are they selling a standalone monitor? The brochure mentions connecting 2 screens, is that 2 full iMac pros?

<comment><USER36> LG Ultrafine 5K, same size/resolution

<comment><USER35> Nice, have a dead one under my desk. Can get it warrantied, but lg won't ship a box, been too lazy to sort it out. Need to take care of that...

</comment></comment></comment><comment><USER37> Just for fun, I maxed out the configuration all the way--just to see--and the price was $14,000. :o

</comment><comment><USER38> Notice no 64GB LR-DIMMs. I even sent an email to Cook and Federighi about that one today.

</comment><comment><USER39> Finally we can build a proper compile/render farm! Oh wait.

<comment><USER22> Built in KVM for every node in your cluster!

</comment></comment><comment><USER40> at this price tag, I would have expected a frameless screen.

</comment><comment><USER41> >10Gb Ethernet

Does any consumer isp offer speeds faster than 1gb?

<comment><USER42> Maybe not, but a 10GbE connection is useful with higher-end NAS models. A well-configured storage array can easily saturate a 1GbE connection.

<comment><USER43> Modern NAS don't even need to be configured in a special way. I have a HP Microserver Gen8 (from 2013 with an old Intel Pentium) with HDDs and FreeNAS. My ZFS RAID-Z pushes 1G easily on sequential reads without any special things like SSD caches.

</comment></comment></comment><comment><USER44> This is not a pro machine, no one can upgrade the RAM or open this up for anything. This is suitable for rich YouTubers. Apple is now pretty much clueless.

<comment><USER45> Why are you so sure that upgradability is a requirement for a pro machine? I'm asking genuinely, not because I'm a "pro," but because I've read annecdotes of people who use Macs professionally but do not feel the need to upgrade their internals over the life of the machine. Perhaps Apple has recognized that.

<comment><USER44> Really? I upgraded by Macbook's hard drive and RAM because I can and it was available to sped up the performance, I'm still able to use it up until now and it's an old machine but the upgrade is making it last longer.

I also upgraded my parent's iMac after the hard drive failed and also installed additional RAM to speed up their experience. Those aren't pro machines but day-to-day computing needs.

For this price point I would have expected to be able to do these things, and knowing pros use their machines heavily and rely on it, it's a pain in the ass not to have this ability. Perhaps it's already great out of the box and nothing else is needed, it's perfectly future proof. But honestly, if the option is available to upgrade parts -- I'm sure people would love it more.

In addition -- the commenter above, I'm not bashing on Apple. In fact, I am an Apple stockholder. I am only saying they have failed in many ways to satisfy the customer's needs but instead make decisions now based on the marketing and profit. You can only do that for so long until your supporters start jumping ship. My comment is more of frustration not bashing.

</comment></comment></comment><comment><USER46> We're playing a game here where someone shouts out a 5-digit number and we have to guess the configuration (s)he picked.

Impressive, but a bit depressing considering that it's a closed system that you'll never be able to upgrade.

More thoughts here: [https://mjtsai.com/blog/2017/12/12/the-imac- pro/#comment-279...](https://mjtsai.com/blog/2017/12/12/the-imac- pro/#comment-2796595)

Edit: gender neutrality

<comment><USER47> Wow, that sounds like a really boring game.</comment></comment>


GIMP 2.8: Preview  - <AUTHOR> http://nicubunu.blogspot.com/2012/04/gimp-28-preview.html <comment><USER2> This is _excellent_! Not only does single-window mode look much cleaner and more organized (to me), but we'll finally be getting support for high color depth images. That's one of the biggest reasons many photographers have stuck with Photoshop. These are probably two of the largest, most significant changes to Gimp to come about in a long time. I'm surprised the version number wasn't bumped to 3.0.

 _edit:_ Is the GEGL backend port only partially complete? If so, how long until it's in place?

Other tweaks are nice and cosmetic: tooltip progress indicators for transforms, on-image text editing instead of awkwardly doing it in a separate window, etc.

Layer groups are another important organizational touch.

I'm very much looking forward to this. Great work, Gimp team!

<comment><USER3> Straight from the article, note that it explicitly says you won't have the high color depth image support:

 _What's really important, but maybe less user-noticeable, is behind the scene: library work. GIMP 2.8 is an intermediary step in the progress for GEGL integration (GEGL is a graph based image processing framework that will provide the core for GIMP, allowing for much advanced features). This process started with GIMP 2.6, advanced with 2.8, will be finished in 2.10. Expect the real meaty features (like high depth color channels) in the release after 2.10 (is not know if it will be labeles 2.12 or 3.0). For now GEGL is used in some UI elements and some optional filters and tools_

That also answers most of your questions.

<comment><USER4> It's funny, because we had this in the mid-90s.

And by funny, I mean sad.

</comment></comment></comment><comment><USER5> The article is a little bit out of date. The 16bit colors will already be available in the next release (2.10). Michael Natterer and Øyvind Kolås had three-week hackathon and now 90% of the work is done.

source: <http://gimpfoo.de/2012/04/17/goat-invasion-in-gimp/>

This is also on the official GIMP, but you cannot link to individual news items there. :(

<comment><USER6> According to all the docs and pages I see online anywhere, GIMP won't support 16-bit/channel color until version 3.0, and your source doesn't really contradict that AFAICT. (None of them give a good estimate what time frame that is.)

But in any event, GIMP's lack of support for real, powerful color management features, high bit depths, CMYK – much less CIELAB or other perceptually relevant color spaces (ideally they should use CIECAM02 or IPT) – etc. make it pretty much useless for any of my own photographic workflows. GEGL doesn't look likely to overcome the main deficiencies, and so GIMP remains a cute toy more than a power tool.

Here's Graeme Gill from approximately 2 years ago:

      Graeme Gill:
      > Rupert Weber wrote:
      >> (Then again, nobody complained so far and probably
      >> nobody would ever notice if we did it Right(tm)...)
      >
      > You've got a catch 22 situation: If Gimp doesn't
      > handle color conversions accurately, then noone
      > interested in accurate color transforms will use
      > it, hence you will get no complaints about not
      > doing in Right. So if you want to persuade people
      > who value accurate and reliable color
      > transformations to use Gimp, you need to do it
      > Right, otherwise they will continue to use something
      > else. (I certainly can't use Gimp in my work, which
      > revolves around checking color space
      > transformations.)
      >
      > Graeme Gill.

<comment><USER7> I think the source comes close to contradicting that without being explicit:

'GIMP 2.10's core will be 100% ported to GEGL, and all of the legacy pixel fiddling API for plug-ins is going to be deprecated. Once the core is completely ported, it will be a minor effort to simply "switch on" high bit depths and whatever color models we'd like to see. Oh, and already now, instead of removing indexed mode (as originally planned), we accidentally promoted indexed images to first class citizens that can be painted on, and even color corrected, just like any other image. The code doing so doesn't even notice because GEGL and Babl transparently handle the pixel conversion magic.'

</comment></comment></comment><comment><USER8> In 1997, me and my beige box PC spent about a day building the GIMP alpha, excited for a Photoshop killer. Now it's 2012, fifteen years later, and we're high-fiving GIMP for the single window interface.

<comment><USER9> For an app meant for the creative types, GIMP sure is ugly.

I also thought we were over mystery meat navigation, but it seems to be going strong at GIMP. Not only does having icons for each tab make it look incredibly busy, but it also makes it harder to learn and wastes a ton of screen space. I can't see a single benefit other than it doesn't look like Photoshop.

I wonder how hard it would be to redo the entire interface from scratch. I would love to design it, but no way do I want to navigate their bureaucracy.

<comment><USER10> I doubt theres much bureacracy, there are not that many core developers - probably going onto the mailinglist and providing some patches might be a start.

</comment></comment></comment><comment><USER11> Single window mode is definitely the step in the right direction towards what I think GIMP should be doing: ripping off Photoshop wholesale. Perhaps GIMP has some features that are arguably better than Photoshop, but the problem is that a huge number of people are very used to Photoshop's interface. Just about everyone has messed about with Photoshop at some point either professionally or just for fun (be it legally or illegally) and Photoshop's interface (for better or worse) has become second nature. I would actually argue that the lack of a familiar Photoshop alternative is holding back mainstream adoption of Linux. Open Office or Libre Office are good enough replacements for most people (and they have obviously gone for the wholesale rip off tactic) but GIMP just does not suffice - the main thing being the interface, not lack of features.

There are really simple things that could be done like making the toolbar the same as photoshop's. I mean it's great that you can resize however you like, but having it unresizable makes it easy to remember the button layout and instinctively grab for a tool. The fact that completely different symbols are used for the same actions does not help. eg: knife is crop in GIMP and slice in photoshop.

Once Linux/GIMP has achieved good market share over mac/photoshop then it's time to start thinking about improving the photo/vector publishing paradigm and boy is there much remove for improvement. Adobe has pretty much had the monopoly on 2D graphic design tools for the last couple of decades. With almost no competitors - what incentive is there to truly innovate? I mean compare the sophistication of something like 3D studio max or Maya compared to illustrator. (3D being an area where stiff competition still remains) Why is Photoshop and Illustrator even two completely separate pieces of software? because they can sell two things separately for a combined total price greater than one?

<comment><USER12> a verbatim copy of the Photoshop UI is a lawsuit waiting to happen. and Photoshop is not the paradigm of UI design, is just something a lot of people know how to use.

<comment><USER13> It doesn't even need to be a verbatim copy, just give users a similar workflow. Just like LibreOffice gives you a similar workflow to MS Office 2003.

<comment><USER14> A much better workflow would be even better.

<comment><USER4> Wrong in one. That type of thinking is why the GIMP has been a painful program to use.

Don't let the best be the enemy of the good.

<comment><USER14> > Wrong in one

(I don't like these quick put downs, they imply a finality that doesn't exist)

That The Gimp has been unsuccessful with a different interface to Photoshop does not mean a different interface could not be successful.

Imagine that an amazing new interface was developed that was so much better than what any product has now. Everyone asks why this has not been thought of before. Now imagine that it belongs to version 3.0 of The Gimp.

Just because one alternative interface didn't work, doesn't mean we should all give up and use the same interface. With that advice, nobody would ever try anything new.

<comment><USER4> Replied to above.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I'm depressed that so many of the comments here focus on the single window mode, instead of being thrilled about GEGL/Cairo. Those are the killer features that will underpin the GIMP's next few years of awesome features.

Also, layer groups ftw

<comment><USER16> They've been promising GEGL for so many years now it's hard to be excited that it's _almost_ here.

</comment></comment><comment><USER17> OK I haven't read the article yet, but I was pretty disappointed the main picture was large shot of cleavage. What is this, Business Insider?

<comment><USER18> Why do you care? A picture of cleavage is just as valid as a picture of anything else.

<comment><USER17> It's pretty sexist if you ask me. A general complaint of mine: tech news (and in this case this blog post) include meaningless pictures of woman in a way that is embarrassing to the industry. I'm getting tired of clicking links on HackerNews and LinkedIn today that look like US/People Magazine to any casual observer walking by. We're better than that.

<comment><USER19> The majority of the article is doing touch up work to a woman, which is a very common task. There is nothing sexist about this work, and it's idiotic to claim so.

<comment><USER17> Why have the main picture a shot of cleavage? He doesn't touch up the cleavage anywhere in the picture. If he did, it'd probably make for a pretty weird demo. The point of the picture was to illustrate the single window mode. It seems like there would be a common sense test where you think: "Is this really how I want to represent myself and this software?"

<comment><USER19> It's a female in a bathing suit! There's nothing sleazy about touching up a female or male in photo editing software. In fact, these are probably two of the most common things touched up for photo work.

<comment><USER12> not even a bathing suit, she is wearing a corset <http://photoblog.nicubunu.ro/2012/04/siamb-2012-denisa.html>

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> We don't really need anything new in this space, though.

We need a free/open Photoshop clone. We need a direct, one-to-one monkey copy of Adobe's product.

We don't need flights of fancy, we don't need to retrain existing users of image manipulation programs, we don't need to experiment. Adobe already has all the legwork done for us--the answer looks a hell of a lot like Photoshop and its interface.

There is zero--ZERO--reason to try to come up with a new interface when there is a perfectly good one in existence that just happens to be poorly distributed.

The place where GIMP has screwed up (and Blender and the like along with them) is in not parroting exactly the common tools in the ecosystem.

There are weird programs (Wings 3D, Paint.NET, etc.) that are able to significantly depart from conventions, mostly because they have very narrowly- defined functionality (something I don't believe anyone would ever accuse the GIMP of).

The GIMP developers should either focus on making a monkey copy (and ignoring everything else until feature/UX parity is achieved), or stop working on the project entirely so they can do something else for a while. Once the monkey copy is done, then innovate. Until then, stop wasting time with things nobody cares about.

I used the GIMP as my primary art asset creation tool for several years. It was miserable. The filters and procedural image generation stuff was awesome, but everything else was at best hard to use. Eventually I switched to Photoshop because it was a (comparatively) clean, tight tool with all the bullshit removed.

<comment><USER20> Good shout with Wings 3D! It's definitely weird and awesome. For starters, it's a desktop app written in Erlang. I recommend people bookmark it if they think they will ever need an intuitive way to do basic-intermediate 3D modelling.

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

<comment><USER4> I've used Wings3D to do static meshes for over five years. It's very, very, very good at the type of modeling that it does--and miserable for anything else.

But for UV pelt mapping, for box modeling, for those sorts of tasks? It shines like a diamond.

It's got probably the most minimal interface I've ever seen on a modeling program and, despite a few oddities, probably the most discoverable/fastest.

</comment></comment></comment><comment><USER21> For those who haven't used GIMP, the big fix of single window mode is probably one of the most important steps they're taking. I have occasionally used the fact that I can stack the windows atop each other for hiding purposes, but much more often I'm saying, "dammit, where the hell is my layer bar? Where the hell is my toolbar now? augh! switching to my reference picture in the browser has upset my window order" and so on.

On-canvas text editing and cage transforms might be useful; we'll see.

<comment><USER22> It's even more painful in a tiling window manager.

<comment><USER23> Huh? Since I switched to using tiling window managers, I actually prefer multi-window interfaces for the first time ever because, to me, when tiled they essentially work like single window interfaces, except I have a lot more control over it.

(I use a manual-tiling WM, not an automatic-tiling one - I wonder if that makes a difference in this case)

<comment><USER22> maybe.

I'm using awesome and I will get funky stuff like the toolbox maximized on occasion. But I'm still new to tiling window managers so maybe it's me.

<comment><USER23> awesome is also dynamic tiling, while I use a WM that does manual tiling (though I can make it dynamically tile by window class, application and other parameters - though I have to write scripts to do it - its not automatic out of the box) and maybe this is the difference: I can lay the windows out precisely how I want, while if I understand dynamic tiling WMs correctly, they will try tile the windows for you, which may not work well for multi-window interfaces.

</comment></comment></comment></comment></comment><comment><USER5> Layer groups! This makes loading those PSDs the graphic designers send around much more bearable. At least I assume that the PSD import can map the PSD Layers to Gimp Layers.

</comment><comment><USER10> This needs to come out soon so I can start the wait for 2.10 :)

Seriously though, this is a great step in the right direction, I can't wait till post 2.10 when the geglfication is complete, then some really interesting features should be possible.

<comment><USER12> go to <http://gimp.org/> to download and install the Release Candidate

</comment></comment><comment><USER24> I'm undecided about save/export in applications that support multiple formats. I think users should certainly be warned if they're making a lossy save, but perhaps they should all be in the same dialog.

<comment><USER25> The drawback of making it a single dialog box in the user experience is that the "current name" changes when you use "Save as...". So if you do a "Save" next time, you save it as the exported name and format instead of the original one. If, for example, your export format is .png, and your original format is layered, this could bite you. Also you keep flipping between two names.

Sometimes an "autoexport on save" feature would be nice. Export it to the derived format as well as save the original file with one keypress.

</comment></comment><comment><USER26> Hopefully these new changes will make Gimp nicer to use. At the moment, the way it handles fonts (or doesn't) is probably my biggest annoyance.

</comment><comment><USER27> GIMP is some high quality software. I love it. An amazing achievement.

</comment><comment><USER28> One thing I don't like about GIMP is the dragging and dropping of selections. Doesn't feel intuitive compared to other packages.

</comment><comment><USER29> Name it Gimp 3.0 please

Just a stupid number but with enough magnetism to attract new users (like me) curious about this 'new point oh' version.

<comment><USER30> this is a transitional release. giving it a big version number bump wouldn't make a lot of sense.

and since when do users start using a software just because the version number changed?

<comment><USER31> Since always. Major releases just about always lead to an influx of users. This may be less true on Linux — I don't know — but it is generally true from everything I have ever seen.</comment></comment></comment>


I Had Asperger Syndrome. Briefly. - <AUTHOR> http://www.nytimes.com/2012/02/01/opinion/i-had-asperger-syndrome-briefly.html?src=me&ref=general

<comment><USER2> _The biggest single problem with the diagnostic criteria applied to me is this: You can be highly perceptive with regard to social interaction, as a child or adolescent, and still be a spectacular social failure._

Hey, that's me! I'm a nerd, I don't like smalltalk, I find people to be exhausting. But I'm not oblivious.</comment>


How well can you live in India on $2 per day? - <AUTHOR> http://www.slate.com/id/2218586/ <comment><USER3> The article didn't actually say very much at all about how well (or not well) you could live in India on $2 per day. I somehow feel even less enlightened than before.

<comment><USER4> My thoughts exactly. It would have been interesting to hear the details of how someone in India would spend the $2 during the course of a day (or $14 during a week);

<comment><USER5> For a rural setting or tier-2 city in India I wouldn't be surprised - ppl get paid less than that. Even in an urban setting it is definitely feasible to lead a respectable life - no need to beg/ borrow.

$2 a day or $60 a month for a working individual is comfort life, for a family one needs more.

Rent: Urban - $20 + $5-8 (other expenses). In a rural setting $20 would be fairly comfortable housing.

Food: (rice/wheat bread(roti) + vegetables/dal) - this is considerably 'good' food, 1 person would need ~6 kilo of rice + 2-3 kilo of dal + misc items, cheaper options: $6-7 + cooking gas etc $2

Urban setting would mean travel and other expenses of $10-$15.

So effective a urban individual would hardly have $5 as saving. In a rural setting one can save upto $20.

People buy clothes or other items occasionally. Twice in a year is considered fairly lucky. And you can buy clothing for as less as $1-$2 these days.

<comment><USER6> So if I took $5000 to India, how long would that last me (assuming it weren't stolen or lost)?

<comment><USER7> "if I took $5000 to India, how long would that last me (assuming it weren't stolen or lost)?"

In Bangalore it would last you about 2-4 months depending on how exactly you live. (I assume you want a decent pad, internet connectivity, cellphone, eat out occasionally and so on) In cheaper places you could get by for 6 - <USER2> months. If you want to just "subsist" (eat well + roof over your head and you don't care where you live in India) you could go a year or even two.

(PS a lot of people live on less, but then a lot of people own their own hoouses or are really poor and malnourished etc)

<comment><USER8> In Pune/Hyderabad/Bangalore, 1.Rent (a descent house in good neighbourhood) : $2400/per year 2\. If you cook your food and avoid restaurants, food expenses will be around $720/per person 3\. Electricity bills: $240/per annum 4\. Unlimited broadband(3G - usb): $240/per annum 5\. Petrol (Gas)- Assuming you travel 13-km per day : $360/per annum

Total expenses: $3960/per annum

As the matter of fact, entry level salary for software engineer in an ordinary company is $5000 per annum. Moreover, if you share your apartment, you can still reduce your expenses, and in fact save lot of money.

<comment><USER7> "Total expenses: $3960/per annum"

This is simply not true _in Bangalore_ (I don't know about Hyderbad/ pune). (I've been living "decently" in Bangalore for the last 15 years). But hey if you can manage it, good for you.

"entry level salary for software engineer in an ordinary company is $5000 per annum."

people being hired out of college campuses (in other words n their first job) $10,000 - $12500 these days - and that too for the generic body shopping companies.

Government jobs (often with free housing and other perks) get you 5000 $/annum as a starting rate. Software jobs pay _considerably_ more. If you are getting 5000$/ year for programming, you are _significantly_ underpaid.

For anyone planning to come to Bangalore with 5k$, be warned, you will be scraping by. So, unless you plan to live very (VERY) cheap , iow "roughing it" , plan on about 10,000 $/ year for Bangalore. Bangalore is arguably the most expensive place to live in India (Some parts of Bombay are costlier).

I have had many expat friends stay in Bangalore for long periods. I just chatted with a couple of them as I was writing this post and they agree that 10k is enough for a decent (not great) year in Bangalore fr a year.

My advice, talk to someone who's relocated here from the USA and stayed a year or more and let them fill you in (vs getting dubious advice from a forum, even HN).

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Instead of answering the question directly, I will tell you how much you nee per month to live here in India as a start up founder.

In most of the major cities you can find decent accomodation for below $60 per month. Food will cost around $150 (You will get very good food with this amount). Electricity + unlimited broadband will cost you 24$ per month.

So you can live in any major city for around $250 per month.

If you are ready to share accomodation, internet etc and cut the costs here and there, you may be able to save more.

</comment><comment><USER10> You can survive comfortably but not entertain yourself. Movie tickets, for example, cost at least $1 in most cities. So does eating out at a decent restaurant (by local standards).

</comment><comment><USER11> ah!

I'm a bit surprised that the Indian govt's above-poverty level is set at somewhere around $1 (~Rs.48). Its too low to live with basic needs.

Out of curiosity I just dug up the official docs on the Labor ministry website of India, and found this <http://labour.nic.in/wagecell/welcome.html>

That page contains a PDF file with a table somewhere in the middle that mentions minimum wages for different kinds of work. It's highest for people employed in the field of Agriculture. Their minimum wages is specified as Rs.107 (~$2.3). Most fields of work have close to $1(Rs.66) as mentioned in the article.

But daily wage construction workers around me get paid around Rs.250 a day (~$6)

</comment><comment><USER12> it depends on the place where you live, you can rent a house here (with three rooms) with only $180 a month, but in sousse (another town, same country) it's more than $2500. it's the same in any place on the world.</comment>


Scalr - Self-Scaling Hosting Environment utilizing Amazon's EC2 - <AUTHOR> https://scalr.net/ <comment><USER2> I'm not sure if I understand the pricing explanation...

1) Cloud computing minus the sky-high prices

2) just $99 plus AWS charges

So it's cloud computing plus the sky-high prices?

Typo?

<comment><USER3> Funny, I hadn't thought of that.

:-)

</comment></comment><comment><USER4> Scalr has been around for quite a while.

I'm not sure why to use it when there's now load-balancing/scaling of instances built into ec2 itself. Maybe the monitoring and the database stuff.

<comment><USER3> Scalr scales your sql database, with master-slave separation, replication between nodes, and soon application transparent partitioning (sharding). So if you're not into the whole DBA / sysadmin fun, it's worth it.

It also lets you restore a website version to a previous state if you get hacked, use traditional (cheaper) hosting solutions which burst on the cloud when needed, and manage app versions, backups, etc. in a more organized way then homegrown solutions.

</comment></comment><comment><USER5> Maybe things have improved since this post, but this was my experience.

<http://news.ycombinator.com/item?id=550692>

<comment><USER3> Sorry that Scalr didn't work out for you. From the date your comment was posted (beginning 2009) Scalr was still a young open source project.

We now have a development version available at development.scalr.net, if you would like to try it out again.</comment></comment>


How Mozilla Is Still Better Than Its Competitors - <AUTHOR> http://browserfame.com/56/how-mozilla-better-than-gogole-chrome <comment><AUTHOR> [http://weblogs.mozillazine.org/gerv/archives/2011/07/mozilla...](http://weblogs.mozillazine.org/gerv/archives/2011/07/mozillas_competitive_advantages.html)</comment>


Upgrading to macOS Sierra will break your SSH keys - <AUTHOR> https://medium.freecodecamp.com/upgrading-to-macos-sierra-will-break-your-ssh-keys-and-lock-you-out-of-your-own-servers-f413ac96139a <comment><USER2> No, Sierra will not "break" your old DSA keys.

But recent versions of OpenSSH disable these by default, for good reason. You can (temporarily, I would suggest) reenable these with a one-liner in ~/.ssh/config. See for example [http://www.openssh.com/legacy.html](http://www.openssh.com/legacy.html)</comment>


Ask YC: "Staging" for startups? - <AUTHOR>

I was reading about the practice of young chefs routinely taking time off from work to "stage" or work at other restaurants and it occurred to me that would be a wonderful experience as a developer.  It would be similar to an internship, except for working developers.  It doesn't take long to come up with a list of companies I would gladly volunteer at for a month or two just for the experience.<p>Does anyone know of such a practice?  If not, would it work?  Would you do it? <comment><USER2> It's called "open source".

<comment><USER3> True, but you don't get the experience of being in the working environment of another company. Things like...

* Exposure to thier culture

* Viewing and understanding thier office setup and why

* Hardware/software setup

* Working practices they use

* The fun of coding with others in person

* Social interaction

* Social interaction (x2 as I think it is very important)

...are important and really beneficial to appreciate first hand.

<comment><USER4> Then it's called:

Consulting.

You should get paid for that, too. Please don't do it for free and destroy the market for the rest of us who have to make a living at it.

Daniel

<comment><AUTHOR> Consulting is sharing your own expertise with someone else. I'm looking for someone else to share their expertise with me.

That aside, short-term stages would not destroy the market. Chefs have been doing it for years. They come out of it as better chefs and then have more earning power.

</comment></comment></comment></comment><comment><USER5> I'm self-employed since 1996 and did and do this from time to time. And I learned a lot of useful things about both the topic and the different business cultures. And got valueable contacts. I do this especially when I enter a (more or less) new discipline for my next big project. Often I feel my knowledge from lifelong ongoing university education (distant teaching) is not enough and I need a kind of an "internship" to know "how they do it".

So my advice is: Be well prepared (know at least the basics so you can get the advanced stuff out of it) and do it only between projects of any kind (development, education, ...) so you're not distracted by parallel duties.

</comment><comment><USER6> If you want to dive into a budding rails ecommerce startup drop me a line (see my past posts for some hints about who we are / what we do!)

You would gain a wealth of experience in every aspect of business / being a startup... at this point everyone wears a bit of every hat (which is fun!)

</comment><comment><USER7> We are definitely interested too if you want to dive into Lisp. (No prior Lisp knowledge needed)

</comment><comment><USER8> My team has a pretty cool new data project... if anyone is curious about staging with us, just send an email. We would pay you of course, I've never heard of a technical employee doing an unpaid internship at a for-profit company.

</comment><comment><USER9> This might work for a developer but definitely not for 'aspiring executives.'

<comment><USER10> Knowledge work looks a lot like volunteer work, assisting a non-profit in organizing volunteer labor is a reasonable proxy for organizing work in a startup.

</comment></comment><comment><USER11> If people are really interested in doing this, I'm sure there are some companies on this board that would love volunteers. I know mine would :)

</comment><comment><USER3> Is anyone in the UK offering this?

<comment><USER12> <http://www.lokku.com/jobs/intern.html>

</comment></comment><comment><USER13> sure, you want to sort corn in my basement for a month? free is better than the 12 cents i'm paying these chinese orphans.

<comment><USER14> I assume you feed them the left-over corn?

<comment><USER13> at ethanol subsidized prices? they get milled flax cut with sawdust and praise god everyday they aren't in china.</comment></comment></comment>


JavaScript Promises in Wicked Detail - <AUTHOR> http://mattgreer.org/articles/promises-in-wicked-detail/

<comment><USER2> Maybe I've gotten so used to callbacks and taming them into elegant code, but I have yet to see examples of promises where I'm like "ah-ha, that's an awesome example of when this looks a ton nicer". Most examples feel quite trivial and contrived (i.e. foo/bar/baz examples and doSomething() examples).

Can some one please point me to fairly complex examples comparing and contrasting a sample of code that uses callbacks to perform a task and another same that uses promises to accomplish the same task? Thanks in advance.</comment>


Ask HN: Do you trust a company with a website built with Twitter Bootstrap? - <AUTHOR> Today I found myself doing further research about a service I was about to subscribe just because they were using bootstrap. I am wondering, what could be the psychological effect to a developer/ designer regarding using a service using a website built with twitter bootstrap? Would you provide your card details with the same ease you would on a different website? <comment><USER2> Personally, I make certain assumptions of a site using Bootstrap, all of which revolve around product maturity: if a site has identifiable Bootstrap design, then I assume they haven't been old enough/profitable enough to afford a new coat of paint.

That being said, unless you're creating a service specifically for picky designers/developers, it doesn't matter. 99.8% of the Internet has no idea what Bootstrap is.

(ps: the folks who first made Bootstrap worked at Twitter, but Twitter let them take the ownership of the product with them as they left.)

<comment><USER3> So, Twitter isn't mature at all with that initial argument. Bootstrap powers many parts from Twitter, the maturity argument doesn't apply because of the use of a framework.

To be honest with you, I think the only valid argument in here would be design taste: "that project is using mostly the standard bootstrap design,they don't invest in x yet" and that would be a valid just in half. The truth is there is a lot of projects that, even with different code, they all look the same with little variantions. In the end, it doesn't matter the skeleton, what it matters, imho, it's the service they offer.

<comment><USER4> And the quality of the service they offer is greatly shaped by their design.

Of course Twitter uses Bootstrap—it was made by/for Twitter. However, Bootstrap's defaults are based on Twitter's brand guidelines. That's part of the problem: with Bootstrap 1 and 2 basically every website made with Bootstrap looked a lot like Twitter. Bootstrap 3 alleviates that by encouraging customization and shipping with a flat appearance, but sites made with Bootstrap are still very similar to each other—developers don't customize it, and don't try to change some of Bootstrap's easily recognizable idiosyncrasies.

It reminds me of 2004/2005 when every web app was more or less trying to copy the aesthetics of 37signals apps.

</comment></comment></comment><comment><USER5> Are you serious? Isn't this like asking whether you would trust the coffee from a coffee shop because they had a sign on the door printed in Papyrus or Comic Sans? Good or bad design decisions aside, who cares? What could that possibly have to do with the coffee?

There are endless websites with terrible web designs that provide valuable, reliable services. And there are endless more websites with good-looking, hand-built designs that offer no service of value and, could have their (plain-text) password database cracked tomorrow and disappear off the net forever.

Even if you are going to judge an entire company by the web framework it chooses to use, Bootstrap could be a good sign, as they are at least tech- savvy enough to know what that is, as opposed to using the default Wordpress theme!

</comment><comment><USER3> "Sacrilege!"

Unless you're a code auditor, where you have time to spend looking and analyzing the code, there's no reason to not trust anyone who didn't code the website from 0. Bootstrap as well other frameworks are just that: a conjunction of best practices and some other modules that proven to work well across several browsers and devices.

We can argue speediness and all the yada-yada, but in the end, pro developers repeat the same things even missing one bigs when do all from 0. Using frameworks is a way to avoid those mistakes and, to have a development line well documented. You still can extend, trim the framework as you want.

Think other professions never distrust anyone because he's using that library, that gem, that framework. In the end everyone has limited time to execute work, so if other programers enjoy those libraries why the frontend ones don't?

</comment><comment><USER6> In some cases you won't even recognize Bootstrap. For example YC-company [https://kippt.com/](https://kippt.com/) uses Bootstrap, but wouldn't guess it without knowing it.

Anyway, I think Bootstrap default theme (or slightly modified, but recognizable) is alright for young products targeted to "normal" people who have no idea about Bootstrap. I think it matters more for developers and designers and products targeted for them should invest in creating custom theme.

</comment><comment><USER7> Where's the beef? If it is a Web design company, web prefab is an issue because that's their beef. If the company sells something else and the site looks/works great, I would only give them credit for saving time/money/energy by using prefab.

</comment><comment><USER8> Twitter Bootstrap is the best CSS framework but you mean rather a website with a default theme. There are a lot of themes and templates of Twitter Bootstrap that don't look like Bootstrap, for example on wrapbootstrap.com.

</comment><comment><USER9> Twitter Bootstrap is a CSS framework which makes site presentable. If the intent of the site is not design innovation, why bother. Personally for me, I am allergic to CSS and so bootstrap is great for developers like me.

</comment><comment><USER10> I don't care with which tech stack a website was built. The _really_ interesting thing for a quick check is more: does the website use SSL for sensitive data?

</comment><comment><USER11> >Would you provide your card details with the same ease you would on a different website?

The only thing I'd look for would be EV SSL. No "green bar", no credit card.

<comment><USER12> That's a bit over the top. Virtually the only sites with an EV certificate are financial institutions. If that was your standard, you wouldn't be comfortable shopping with Amazon or Wal-Mart.

<comment><USER11> I make an exception for Amazon as they are a big, known site. I mean "shady site I've never seen before". I'll see if it has EV SSL. If it doesn't, it depends how badly I want the item it's selling. Most stuff can be bought on Amazon.

By the way, some non-financial websites use EV SSL, such as Twitter. I don't see why Amazon can't get a cert.

</comment></comment></comment><comment><USER13> developer/ designers don't pay for web services anyway :) It's only the rest of the population that pay for things. Said developer/ designers find open source alternatives.

Who cares what tech stack a web app is written with. It's like saying you wont pay for services that use rails, prototype instead or jquery, or a color palette you don't like.

</comment><comment><USER14> It depends if they also run some random version of Linux.</comment>


The Implementation of Functional Programming Languages (1987) - <AUTHOR> http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/ <comment><USER2> I've read (part of) this book and used it to implement a toy compiler. It helped me a lot in getting a better understanding of Haskell and other functional languages. This is really an amazing book, well worth investing some time into. It starts from simple definitions and concepts and builds up on them - very easy to follow even with little to no previous knowledge of the field.

<comment><USER3> I'm on a mobile device so can't view the book. Is familiarity with Haskell is one of the prerequisites to follow this? Thanks!

<comment><USER4> It wouldn't hurt, but given this paper predates Haskell by 3 years I think you're safe.

Would be more a history lesson of what eventually led to Haskell. IIRC Miranda might be a more apt comparison.

</comment></comment></comment><comment><USER5> Although this is quite an old book, the topic is still very relevant even today. The ideas are timeless and worth reading. I'm impressed by the authors that made their books survive in a very long time.

<comment><USER6> The Prentice-Hall Series in Computer Science has a lot of timeless content. C.A.R. Hoare was an outstanding editor.

</comment></comment><comment><USER7> Once you get to the final chapters, where an intermediate representation of lambda calculus is presented (G-code), read this accompanying paper [1] and wonder where we could be now if the market and hardware manufacturers took a π degree turn to fully support functional paradigms.

[1] [https://www.doc.ic.ac.uk/~wl/icprojects/papers/reduceron08.p...](https://www.doc.ic.ac.uk/~wl/icprojects/papers/reduceron08.pdf)

<comment><USER8> > π degree turn

So a bit over 3 degrees?

<comment><USER9> I think that's half of a τ turn. [http://tauday.com/tau- manifesto](http://tauday.com/tau-manifesto)

</comment></comment></comment><comment><USER10> I am very suprised to see the association of the word microsoft, 1987 and functional programming. As far as I remember, Simon Peyton Jones research (and this book) has made him famous. I was very sad that such a talent was hired by the "devil" microsoft.

That is old story. He has managed to do great things inside Microsoft and since the departure of Balmer, my opinion about Microsoft is a lot more balanced. The association seems an anachronism.

<comment><USER11> Microsoft has been very involved in the development of Haskell for quite a while now, and functional languages in general, with projects like F# and F*. Several of the big names in the Haskell community work or have worked for MSR.

</comment></comment><comment><USER12> This looks pretty promising from the table of contents! It was also written by one of the main authors of GHC, the most widely-used Haskell compiler.

</comment><comment><USER13> This is an amazing book. We need more people with writing capabilities like SPJ. Reading this book is almost like inventing compilers for lazy functional languages yourself. There really is no substitute other than actually doing it yourself.

</comment><comment><USER14> 1987 was the year I first got access to Usenet (via FidoNet). It's interesting to think how long it would take to download a 30MB book at the time. Of course it would have been considerably smaller since it would have probably been a text file or perhaps LaTeX.

When a CS book is relevant this long, I feel like these kind of ruminations put me in the right headspace to receive it.

<comment><USER15> Well, there's a perfectly fine 6MB djvu file - only one fifth the infinite download time!

<comment><USER16> Also, as the page states it can be text-searched. A version not consisting on scanned pages would be neat, but I guess the author lost the sources long time ago.

</comment></comment></comment><comment><USER17> Anyone got this in EPUB format?

<comment><USER18> Calibre is free and converts easily between all the major formats, I use it on OS X.

Just FYI, I know I was glad to have it linked to me when I asked a similar question a few months ago.

</comment></comment><comment><USER19> Bryan O'Sullivan (Haskell, Facebook) mentioned in a talk that he got into the whole Haskell ecosystem while interning for Simon P.J. (the author of this book) and this book helped him get started back then.

</comment><comment><USER20> Here's an implementation of a toy compiler targeting LLVM (with very basic Erlang interop), which was created with the help of that book: [https://github.com/pkaleta/kivi](https://github.com/pkaleta/kivi)

</comment><comment><USER21> I would think that, while tempting, you'd want to avoid recursion in your implementation.

<comment><USER22> Why?

<comment><USER21> I'm not an expert... but you don't want your C/C++ code stack overflowing or running out of memory in an uncontrolled way. Your C/C++ can do graph reduction by working on a structure in a loop. Then you'll be able to better monitor resources.

<comment><USER23> There is normally no deep recursion in compiling a program. The compiler would recurse over recursive program constructs, like nested if statements. Programmers normally do not nest constructs very deep.

<comment><AUTHOR> This may be true for human programmers, but compilers also must compile machine generated code, which often looks very different. As an example, I can't remember the source on this, but I have read somewhere that the original C++ compiler (cfront) compiled C++ into C code, and this generated code exposed many bugs in the C compilers of the time, as it was very different than how a human would have written that code.

<comment><USER23> Running out of stack space compiling a machine generated program would be a bug in the automatic source code generator then.

<comment><USER23> In the same sense that running out of stack space compiling a human generated program is a bug in the programmer.

<comment><USER24> If human-generated programs compete head-to-head with robot-generated programs for blowing up the implementation, that human has a _worse_ bug than the robot.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> If you've done some Scheme (or Lisp (or Haskell (or Curry))) then you will find this very readable. Section 2.4 has a good explanation of the Y combinator. I'm going to try and get through the whole book.</comment>


DynamicTyping - <AUTHOR> https://martinfowler.com/bliki/DynamicTyping.html <comment><USER2> Is it fair to choose Java and C#, essentially the same language, as the representatives of static typing?</comment>


Theranos fires 41% of staffers - <AUTHOR> http://money.cnn.com/2017/01/06/technology/theranos-layoffs-41-percent/index.html <comment><USER2> Previous thread:

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

</comment><comment><USER3> I feel like any bad news about Theranos (or Yahoo) is just piling on what I perceive as the corpse of a company.

Am I the only one who is just mostly surprised that it's still around, and enough people on Hacker News care about it?

<comment><USER4> > and enough people on Hacker News care about it?

Sadly I feel the reason why it's still clinging on to Hacker News is because of Al Bundy syndrome. Some people like watching others fail because it makes them feel better about their current situation. Of course, I could always be completely wrong; I just don't have any other explanation as to why boring and predictable news gets voted up on HN. I'm just happy that it didn't get too much upvoting.

<comment><USER2> Better known as Schadenfreude:

[https://en.m.wikipedia.org/wiki/Schadenfreude](https://en.m.wikipedia.org/wiki/Schadenfreude)

</comment></comment></comment><comment><USER5> What is really galling about the whole saga is that this will end up costing lives and pain.

1\. Some people might have gotten incorrect blood work results as a consequence of hyped-but-BS techniques like the nano-tainers. Some portion of these will result in unnecessary treatments/pain/suffering.

2\. Any future player in the same space must now work triple hard to bring real changes to healthcare stuff - this means delays and lives lost that would have been otherwise saved.

Elizabeth Holmes belongs in prison - plain and simple. There is blood on her hands.

<comment><USER6> I think this is a little overstated (not much but a little).

I just read through their Yelp reviews (shockingly they're pretty good). What surprised me most was that doctors were sending people to Theranos centers to get tested. Perhaps the doctors should be similarly liable? FDA certainly screwed up also.

You're second point feels like a bigger issue. VCs seems to make some absolutely awful and huge investments in healthcare/science/biotech. Throw 100s of millions at companies based on the CEOs personally, and seemingly do little to no DD. I don't get it.

This attitude crushes many potential companies. Particularly science-based startups with CEOs with the ability to execute, and good technical background but who can't sell as well as someone like Holmes.

If we could get VCs to make saner decisions in health care that would be a major step forward for society.

</comment></comment><comment><USER7> What's the merit of using 'fired' instead of 'laid off' in this round?

<comment><USER8> 100% more click baity. If you look at their url it says laid off, so someone changed the title after it was published.

cnn.com/2017/01/06/technology/theranos-layoffs-41-percent/index.html

<comment><USER9> _Theranos said on Friday it has fired 155 employees_

If you read the article it says fired. This is also reflected in the title, and in the headline.

<comment><USER8> Oh really. Well if you actually go read what they said on their website:

[https://news.theranos.com/2017/01/06/company-re-engineers- op...](https://news.theranos.com/2017/01/06/company-re-engineers-operations/)

"company has identified a core team of 220 professionals to execute on its business plans, and informed 155 employees that their positions have been eliminated"

The company does not say it fired anyone, they use the word eliminated. Firing usually means someone is terminated for cause. Not that they are being let go because the company does not need them any more.

<comment><USER10> Good grief. They don't use the word 'terminated' either. They just say the positions were 'eliminated'.

</comment></comment></comment></comment></comment><comment><USER11> Their technology is a sham, the company literally does nothing but busy-work for investors. How did they not fire everyone?</comment>


Another bug on Twitter? - <AUTHOR> http://twitter.com/#search?q=Share%20your%20first%20tweet%20with%20the%20world <comment><AUTHOR> If you delete your latest tweet, Twitter asks you to "Share your first tweet with the world!"</comment>


Why Apple's Innovation Is Under Threat - <AUTHOR> http://blog.bilaw.al/post/41488028482/why-apples-innovation-is-under-threat

<comment><USER2> Apple under Jobs was chaotic, but it worked -- because it was Apple under Jobs.

Apple under the Cook is focused and prioritized. Every single decision by the company is collated and quantified, and some actions taken by the new CEO, such as the Maps apology, would never have occurred under Jobs due to his arrogance.

It also puzzles me why some people who have no inside knowledge of how Apple works or what the executives' psyches hold find it necessary to publish articles seemingly attempting to predict the fact. Leave Apple in peace. They're a technology company like any other, and the gravitas of the hype surrounding them is slowly fading, as it should. Grandiose and ostentatious product unveilings are a thing of the past, but I doubt that Cook has forgotten how Apple is supposed to work -- that the hype is supposed to die down after a few years, and then after two or more years when things are going steady, the controversial bombshell will hit.

And that is something that Jobs would never have overlooked while appointing Cook as CEO.

<comment><AUTHOR> Well it's the chaotic Jobs we all seen that emphasised his authority. Sure, Cook hasn't forgotten, but it doesn't take much to realize that he has had to operate Apple differently as CEO. This isn't about inside knowledge, it is a perspective that arguably has some validity to it.</comment></comment>


Bitcoin Relays – Part 1 - <AUTHOR> https://galaxsis.com/posts/bitcoin_relays_part_1/ <comment><USER2> no talk of falcon? [https://www.falcon-net.org/](https://www.falcon-net.org/)

<comment><AUTHOR> I went over it a little, left it for part 2 :) thanks for bringing it up, its definitely going into the next part</comment></comment>


Wiki creator reinvents collaboration, again - <AUTHOR> http://www.infoworld.com/article/2880204/collaboration-software/wiki-creator-reinvents-collaboration-again.html <comment><USER2> For the more pragmatic ones you might want to look into Fossil SCM by Dr Richard Hipp, author of SQLite.

      * Distributed VCS, tickets and wiki
      * You can link artifacts together
      * Single statically linked binary
      * Works on Linux, Mac and Windows
      * Not dependent on Javascript
      * Easily themeable, looks good (important, this means you
        can slap in the logo and colors from the company web
        site and avoid lots of questions.)
      * Easily hackable

(That said, I don't think the template system is aiming for any awards in the near future.)

<comment><USER3> > Works on Linux, Mac and Windows

That's quite some understatement, it freakin' runs on toasters (i.e. ~everywhere where you can run SQLite, the only hard requirement I'm aware of is there has to be a C compiler for the platform).

</comment></comment><comment><USER4> It seems like almost every project I work on could benefit from a general- purpose library for storing JSON documents along with a change history, including the change timestamp and author. Also the ability to merge two divergent branches and flag merges that need manual attention. I feel like this has been re-invented again and again. It's a bit like embedding git in your application---and maybe that's even the best way to go. It would sure be useful! So I wonder if this Wiki project will have some way to extract just that bit of functionality. The distributed nature makes me thing probably not, but who knows?

<comment><USER5> Check out PouchDB. That's exactly what it's designed for: JSON document storage with remote synchronization capabilities.

<comment><USER6> Isn't that tightly-coupled with CouchDB though?

<comment><USER7> PouchDB uses the CouchDB sync protocol to sync to multiple servers (or other PouchDB databases). PouchDB is also planning on offering a lightweight server- side PouchDB that runs in Node.

FWIW any database could potentially implement the CouchDB sync protocol. [http://dataprotocols.org/couchdb- replication/](http://dataprotocols.org/couchdb-replication/)

<comment><USER8> There actually is a PouchDB Node server already: [https://github.com/pouchdb/pouchdb- server/](https://github.com/pouchdb/pouchdb-server/). Installing it is as easy as `npm install -g pouchdb-server`

Also, Drupal recently announced that they're going to offer a CouchDB- compatible server. So yeah, anybody can implement the sync protocol. :) [http://wearepropeople.com/blog/a-content-staging-solution- fo...](http://wearepropeople.com/blog/a-content-staging-solution-for- drupal-8-and-more)

<comment><USER6> Thanks! How did I miss this?

</comment></comment></comment></comment></comment></comment><comment><USER9> I was hoping the next generation of wikis (especially as used by wikipedia) would introduce an underlying 'fact unit' [1] layer on which articles are built, effectively separating edit wars from verification wars.

[1] Not the same as a 'knol', which as defined by Google was _not_ a unit. A real knol would be a single atomic fact.

<comment><USER10> Try listing the atomic facts (ignoring, for simplicity's sake, their underlying facts, or any references to authoritative sources) for the following statement. As an exercise that may possibly illuminate why that hasn't happened.

"37 minutes ago hilyan was hoping that the next generation of wikis (especially as used by wikipedia) would introduce an underlying 'fact unit' [1] layer on which articles are built, effectively separating edit wars from verification wars.

[1] Not the same as a 'knol', which as defined by Google was not a unit. A real knol would be a single atomic fact."

I will interpret a lack of responses as evidence for failure. ;)

<comment><USER11> This should be compiled to a flat list of facts:

        (declare hilyan-hope)
        (declare footnote-constraint)

        (let [t universal-timestamp]
             (said AndrewOMartin t
                   (status hoping hilyan
                                  (- t (minutes 37))
                                  hilyan-hope))
                   (said google (undefined-past)
                         (let [knol (gensym)]
                              (not (unit knol))))
                   (let [knol (gensym)]
                        (single-atomic-fact knol)))

        (def hilyan-hope
             (let [next-wiki-generation (gensym)
                   fact-unit (gensym)
                   article (gensyn)]
                     (introduces next-wiki-generation fact-unit)
                     (underlies next-wiki-generation fact-unit)
                     (footnote-constraint fact-unit)
                     (underlies fact-unit article)
                     (cause fact-unit (separate verification-wars edit-wars))))

        (def footnote-constraint [fact-unit]
          (let [knol (gensym)]
               (!= knol fact-unit)))

The DSL could be improved :)

Edit: So a couple of things about this exercise: yes, it took me more time (and space) than your phrase. On the other hand, I specified some extra information. Some ambiguities about your phrase needed to be explicit, so that's a win for a more formal language. Also, there's some more effort involved, so I could have the time to think more about what I say. It would be great to have an interactive tool to think and write in a more formal language, even if it is not meant to be compiled to assembler.

I have a side project that touches this tangentially (the code is made up, though!), but I can't find a lot of time for it :(

Does anybody know if something like this exist? Somethig like a wiki/REPL/mindmap sandbox for concepts.

<comment><USER12> Take a look at Attempto Controlled English.

<comment><USER13> I need an IDE for this.

</comment></comment></comment></comment></comment><comment><USER14> I always have a little weird felling about local storage. I can save stuff on my computer but I don't know where it is going, so I can't back it up nor can I keep it if I format the computer.

<comment><USER15> To be clear, the use of local storage in this context is expressly intended to be temporary, to store a draft locally while editing, then you publish to a stable server.

But your comments about Local Storage are spot on. Use it as a cache, not a file system.

</comment></comment><comment><USER16> Great Project!! The user experience on the page is quite nice--a bit like Trello crossed with GitHub; turning traditionally static wiki content into interactive content.

On a related note, I'm curious to hear what others think about the trend of sending data over-the-wire and rendering HTML on the client. I just started working with Meteor, coming from a traditional web development background, and I see major benefits regarding multi-device rendering and real-time updates. However, I'm still on the fence regarding this paradigm and continue building new projects with traditional server-side rendering and DOM manipulation.

Playing with federated wiki is very convincing that data over-the-wire is the future.

<comment><USER17> > The user experience on the page is quite nice

I wonder if we used the same page. I just got a welcome page. When I input 'patterns' into the search box and hit return, nothing happened. When I clicked on 'Recent Changes' I see a gray bar reading 'activity,' with no contents.

It appears to be a broken test site to me.

> On a related note, I'm curious to hear what others think about the trend of > sending data over-the-wire and rendering HTML on the client.

I think it's evil, given that it requires me to allow code execution in order to read content.

<comment><USER18> Try [http://c2.fed.wiki.org/view/welcome-visitors/view/topic- base...](http://c2.fed.wiki.org/view/welcome-visitors/view/topic-based- subsets) It can take a while for the individual pages to load [1], some progress notification would be nice.

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

<comment><USER17> > Try [http://c2.fed.wiki.org/view/welcome-visitors/view/topic- > base...](http://c2.fed.wiki.org/view/welcome-visitors/view/topic-based- > subsets)

Nope, that just results in a vertically-divided blank white page, with the non-functional dark-grey bar below. It remains blank after minutes.

(This is probably because the wiki doesn't work without JavaScript, making it useless to anyone use lynx, links, elinks, emacs-w3m or NoScript, which is to say anyone concerned with security)

<comment><USER18> Indeed, doesn't work without Javascript.

<comment><USER19> Welcome to the future.

Seriously though, C2 people were the last I'd expect to move toward JavaScript-powered thingies apps, especially when it's uncalled for.

</comment></comment></comment></comment></comment></comment><comment><USER20> You can find the previous discussion about this (from last month) here: [https://news.ycombinator.com/item?id=8983158](https://news.ycombinator.com/item?id=8983158)

</comment><comment><USER21> The side by side articles reminds me of TiddlyWiki - a self-contained personal wiki.

It's a feature I would like to see more use of, as the context of a subject is often spread across multiple pages.

</comment><comment><USER22> We've been working on a similar idea for a few years now. We have a distributed version called P2Pedia: [http://www.nmai.ca/research- projects/universal-peer-to-peer/...](http://www.nmai.ca/research- projects/universal-peer-to-peer/p2pedia)

and a centralized version as a Moodle plugin called Social Wiki: [http://www.nmai.ca/research-projects/socialwiki](http://www.nmai.ca/research- projects/socialwiki)

You can try out Social Wiki online (there's a link to a demo site on the above link).

The UI needs work, but I'd say Social Wiki is functional. Just need to install Moodle first.

</comment><comment><USER23> > Wiki creator reinvents collaboration, again [!!!!!!]

[Insert prior-art reference probably involving PARC here]

<comment><USER24> Please do insert prior art reference, if you have one.

As far as I know, no one disputes the creation story of the first wiki as being by Ward Cunningham.

<comment><USER23> Mostly it's a knee-jerk reaction that all popoular things are usually just the tip of a huge iceberg of incremental improvements and other attempts at virtually the same stuff... But I did find something PARC-related:

[http://dl.acm.org/citation.cfm?id=215706](http://dl.acm.org/citation.cfm?id=215706)

Note the use of collaborative editing of text, and optimistic concurrency control for local changes.

> As far as I know, no one disputes the creation story of the first wiki as > being by Ward Cunningham.

Nor that the first Model T Ford was created by Henry Ford :)

</comment></comment></comment><comment><USER25> " _A conventional wiki, says Mike Caulfield, is "a relentless consensus engine." A federated wiki may eventually yield consensus, but it promotes what Ward Cunningham calls a chorus of voices._"

<comment><USER26> wow, I was trying to quote the exact same sentence! It's the key of the whole article.

<comment><USER27> I don't see what's wrong with that, though. For the most parts, relentless consensus (by Wikipedians, who usually are smart folks) is reasonable information.

<comment><USER28> Nothing wrong but maybe Ward Cunningham wants a platform that does not converge toward consensus too much.

<comment><USER27> Why is it bad to converge toward consensus? Or rather, consensus from the scientific community (which more often than not _is_ the wiki-writers).

<comment><USER29> In a field with some form of rigorous proof underlying it* converging towards consensus is good, though I still enjoy reading the outliers (not the cranks, the ones who could be the next Pauli).

But imagine if you're trying to converge towards consensus about a historical event. Every historian has their own interpretation and different emphasis. The facts should be the same for all, but the reading of the event and its meaning isn't. And for that reason, support for tracking diverging views would be very useful.

* For various definitions of science

<comment><USER30> _I still enjoy reading the outliers (not the cranks,_ _the ones who could be the next Pauli_ _)._

(emphasis added)

Yes. If everything operated on a pure consensus basis, progress would come to an end.

This doesn't even have to be at the fringe; for decades, just about every textbook claimed that normal human cells have 24 pairs of chromosomes. The correct number (or maybe I should say the currently-accepted number) is 23. This was even stated in textbooks that had accompanying photographs that clearly showed 23.

Consensus is a useful tool, but it's not infallible, and sometimes it goes spectacularly wrong.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> There's a bit of late 00's-style chrome junk in the default design – would love to see this smoothed out.

<comment><USER32> Your comment is useless without elaboration.

<comment><USER31> Do you mean to say that you would like me to elaborate?</comment></comment></comment>