Man to 3D Print His Own Home in His Own Home - <AUTHOR> http://3dprintingindustry.com/2014/05/14/3d-printing-home-rudenko/ <comment><USER2> Awesome! Thanks ph0rque for posting this, it looks like it will get lost but it totally made my day. At some point I was sketching a version of this that would use just styrofoam beads and concrete in the head. Great to see someone is actually doing this.</comment>


Much shorter working weeks needed to tackle climate crisis - <AUTHOR> https://www.theguardian.com/environment/2019/may/22/working-fewer-hours-could-help-tackle-climate-crisis-study <comment><USER2> 9 hour work weeks? Here is something I can get behind for the good of humanity.</comment>


Working with Binary Data in Python - <AUTHOR> http://www.devdungeon.com/content/working-binary-data-python <comment><USER2> If you've got something simple like a binary file full of uints (e.g. a raw image), then numpy provides fromfile which is incredibly simple to use. If you have tabular data in a known format, you can also pass fairly complicated datatypes.

np.fromfile('data.dat', dtype='uint8')

[https://docs.scipy.org/doc/numpy/reference/generated/numpy.f...](https://docs.scipy.org/doc/numpy/reference/generated/numpy.fromfile.html)

EDIT: Obviously you have the added benefit that your data is returned into a numpy array for easy reshaping etc

</comment><comment><USER3> This is a good article, but what I've been struggling with recently is dealing with literal binary data in Python.

What I mean by that is I literally have data stored in memory, and I want to deal with it in arbitrary groups of bits.

Sometimes 1 bit, sometimes 7 bits, rarely 13 bits.

My Google's haven't turned up much precedent.

</off topic complaint>

<comment><USER4> Have you tried bitarray[1]?

[1]: [https://pypi.python.org/pypi/bitarray](https://pypi.python.org/pypi/bitarray)

<comment><USER3> It was that easy? Man. Looking forward to giving these a shot...

<comment><USER5> I've used it quite heavily to parse data that comes in 85- and 1275-bit chunks and it works _awesome_.

Edit: sorry, it was bitstring, not bitarray. bitstring.BitArray :).

</comment></comment></comment></comment><comment><USER6> It's rough, but I recently explored/compared various struct-like packages [https://github.com/moreati/structlytyped](https://github.com/moreati/structlytyped)

<comment><USER7> Very cool. Any conclusions from the experiment?

Disclosure: I'm the primary author/maintainer of suitcase ([https://github.com/digidotcom/python- suitcase](https://github.com/digidotcom/python-suitcase)). In your example, you can shave off a line by doing the following:

        example = FIDOAttestation.from_data(a)

<comment><USER6> No conclusions yet, the script (together with [https://github.com/moreati/parsedover](https://github.com/moreati/parsedover)) is mainly a dumping ground/personal notes while I try various parsing approaches. [https://github.com/moreati/structlytyped](https://github.com/moreati/structlytyped) was a diversion into parsing binary data.

I'm trying various not-regex syntaxes. My motivation is: we all agree regex is bad, but we keep using it because it's available everywhere and hence the least common denominator (a schelling point). What would it take to get beyond regex as the goto pattern matching/parsing? At least for casual use.

</comment></comment></comment><comment><USER8> I found construct quite good to parse binary data too. Had used antlr with java but needed something simpler and for python.

[https://pypi.python.org/pypi/construct](https://pypi.python.org/pypi/construct)

<comment><USER9> Here's an example of fairly extensive use of construct:

[http://amnesia.gtisc.gatech.edu/~moyix/minidump.py](http://amnesia.gtisc.gatech.edu/~moyix/minidump.py)

Explanation:

[http://moyix.blogspot.com/2008/05/parsing-windows- minidumps....](http://moyix.blogspot.com/2008/05/parsing-windows- minidumps.html?m=1)

</comment></comment><comment><USER10> While I understand the ease of use pure Python provides, I think when manipulating real binary or in memory data, a little bit of C would really simplify and speed things up.

Writing raw C extensions can be a pain, but with Cython or CFFI using C from Python has become extremely easy.

<comment><USER11> > _when manipulating real binary or in memory data, a little bit of C would > really simplify_

In what sense? Accessing an octet in a buffer and performing basic bitwise operations on it is equivalent:

       # C _and_ Python
       some_buffer[idx] & 0x80

Reading a buffer in Python is slightly _less_ error-prone, as errors are automatically converted to exceptions, which can be caught at a more centralized location in the code; in C, one must check for errors (and manually propagate those errors) at every read; this applies a bit less in C++, though even there, the stdlib leaves some things to be desired (but generally speaking, they can be wrapped away).

Text encoding/decoding, struct packing, and base64 aren't in C or its standard library.

Now, in terms of speed, C wins hands down. (I wrote a minecraft file parser in both C++ and Python, and the difference was several orders of magnitude.)

</comment></comment><comment><USER12> This is one of those articles I want to "save" in my hn account but I don't know how.

<comment><USER13> If you upvote a story, it will be saved on your profile page under the "saved stories" link.

<comment><USER14> Can't believe I haven't heard of this before. Thanks!

</comment></comment></comment><comment><USER15> I wish I had this while doing my assignment on implementing DES. I switched to java for the next assignment which involved manipulating binary data

</comment><comment><USER16> This type of work is much easier in Python 3.

<comment><USER17> It's still very cumbersome, especially compared with state of the art. You may want to look at how it works in Erlang.

<comment><USER18> Erlang's binary matching is beyond awesome, and OCaml has a pretty good implementation of it as well (Bitstring) [1].

Cool thing about Elixir is of course that awesome Erlang binary handling is available and very easy to use.

Lots of people have been lobbying for something like this in Rust, given its low-level orientation, but there's been resistance to the idea from the core devs, who want it to be done using syntax extension.

1\. [https://rwmj.wordpress.com/2010/02/03/on-the-awesomeness- of-...](https://rwmj.wordpress.com/2010/02/03/on-the-awesomeness-of-ocaml- bitstring/)

</comment></comment></comment><comment><USER19> The cases which one would work with binary data are few and far between. And for the purposes of preserving sanity across architectures, I often find using a cross-platform file format like HDF5 helpful.

<comment><USER20> I disagree. The cases where I would do so _voluntarily_ are limited, but I've been forced to deal with binary data on several occasions. HDF5 is also my goto if I am in control, but sometimes you're given data that is only in some obscure binary format.

Unless you were implying that such work is best done in another language. I can buy that, but I found Python to be a convenient choice for it.</comment></comment>


Colorizing and restoring old images with deep learning - <AUTHOR> https://github.com/jantic/DeOldify <comment><USER2> The most interesting exhibit for me is "People watching a television set for the first time", where everything is colorized _except the TV image_ , which correctly remains B&W. I wonder what kind of a training set provided the neural network with this notion.

<comment><USER3> Author here- So I'll just be brutally honest on that one- not all renders are doing that. I cherry picked the one that did that because yeah, it's amazing. There's a simple explanation for why it sometimes doesn't pick up on the guy on tv to color it- The source material is fuzzy and small.

I wish I could claim it was something more awesome than that but that's the truth! I'm treating these outputs as an art of selection to a certain extent because it's simply not 100% consistent yet. That's one of the things I'm going to continue to try to improve upon.

<comment><USER4> If you had like to brutely honest, you should put randomly selected set, along with the hand-picked set - labeling each set how it was selected. This is a cancer in current deep learning research. You see paper with such a glowing cool examples but in reality they are just hiding all problematic cases while being fully aware of it. If this happened anywhere else in any other domain people would say they got ripped off and outright lied to.

<comment><USER3> I understand the frustration and in fact share it to a certain extent with science in general. Keep in mind that this wasn't intended to be published as a paper or anything like that. I'm just a software engineer who picked a problem and found a pretty cool solution.

Primarily I thought it was cool because it should be useful in many other image modification domains. And then it blew up in popularity today (didn't expect that). But yeah in the notes in the readme at github I do say this:

>To expand on the above- Getting the best images really boils down to the art of selection.

I added that after getting some feedback similar to yours, because before that, this disclaimer wasn't quite cutting it apparently:

>You'll have to play around with the size of the image a bit to get the best result output.

So yeah I'm trying to stay honest here. I'm not going as far as picking completely random samples, admittedly, but really what I'm trying to drive at here is you can produce cool results with this tool. It's not perfect, but it's a tool. And even if you pick at random, they still look pretty damn good. Just sometimes it renders the tv as color and sometimes it doesn't, and i picked the cool option.

</comment></comment></comment></comment><comment><USER5> I've to admit I have no clue about machine learning, but what I notice is that this seems to have preferred colors for things that can actually have many different colors, most notably clothes. They're almost always this blueish slightly purple color here, even the samurai. Don't get me wrong, this is still awesome and I might try this on some old photos from my grandparents. I'm just wondering if and how one can prevent these things from picking this one ideal color for something and instead have it randomize a bit, since obviously you can't really know what color some jacket really was. (except maybe if the picture is a black and white photo of a PAL TV program.)

<comment><USER6> The Seneca Native in 1908 example seems the most absurd to me. I know the software has no notion of a "fabric" or "clothing" but it's very rare for brown or beige things to fade to blue (or vise versa). In real life things when transition from brown/beige to another color that other color tends to be a red orange or yellow. I know from the known issue that it likes blue but it still seems very odd that it chose to fade from brown to blue like that.

<comment><USER7> To me the Seneca native's skin on the hand seems a bit to reddish. I find these photos to have very high saturation. I think this could be adjusted and get subtler effects. It's still amazing that this is possible with no human intervention but at the same time, from a different perspective, I find that the originals have their own charm that I would leave it like that.

<comment><USER8> Is it unthinkable that the seneca girl actually had her hand painted red, for decoration or as a symbol of something? Perhaps her father/brother etc was a fighter and this was a way to keep spirits up while he was in the war?

<comment><USER9> If you compare the tone of her hand to her face in the black and white image you can clearly see that the colors are different.

</comment></comment></comment></comment></comment><comment><USER10> Very interesting... seems to basically learn that:

Faces -> some variety of flesh-colored from light to dark

Fabric/clothing -> blue

Sky -> blue

Vegetation -> green

Wood -> brown

Blank -> turquoise or tan

Small details -> fascinating variety of colors, but often a brilliant red

Which all seems fairly reasonable. For many things (like wood or skin) it seems accurate.

Obviously things like clothes come in such a variety of colors that there's simply no way at all to predict accurately, zero meaningful signal -- so if it settles on whatever the most common color is, it doesn't surprise me that would be blue.

<comment><USER3> Author here. Yeah you're basically right. GANs vastly improve the situation though because being safe with "green for grass, blue for sky, brown as default" doesn't work in the Generative-Adversarial setting. The critic will assign lower scores if the generator keeps outputting brown. Now I'd think the generator would get more creative than going for blue constantly but that might just be a matter or more/better training (...?)

</comment></comment><comment><USER11> I know this is HN and we always hope machines will help us anywhere but i suspect (and hope too) that the human perspective will always be needed. Photography is as subjective as anything can be.

By hand colorization: [http://www.marinamaral.com/portfolio-2/](http://www.marinamaral.com/portfolio-2/)

</comment><comment><USER12> When I saw "restoring" in the title I was expecting higher resolution. For example seeing in modern photo level detail eyelashes, wrinkles, etc. I get that, like the colors, this would require the adding lots of made up information about scene and feature details but IMO it would blur the lines between restoration and reconstruction/storytelling in a really awesome way. Old photos are cool in their own way but their lack of detail makes them seem so alien. Would be exciting to get a hyper real reconstruction.

Are there examples of ML doing something like that? (also know little about ML)

<comment><USER13> There reminds me of a recent 99% Invisible episode [1] in which they discuss the same topic in the world of dinosaurs. It details how dinosaurs used to be depicted with the goal of only showing the things that we are confident in being true (although what we are confident in obviously changes over time). This results in mostly just greenish-brown skin draped over a muscle structure attached to the fossilized skeletons.

In recent decades there has been a push to show the animals more realistically. The fossilized evidence is studied and compared to the skeletal structure of animals that exist today. Inferences and educated guesses are made from there to project a more realistic but more subjective image of the dinosaurs. We now get much more varied and interesting depictions with feathers, bright coloring, fat deposits, and other features that can neither be completely confirmed or ruled out based on the evidence.

[1] - [https://99percentinvisible.org/episode/welcome-to- jurassic-a...](https://99percentinvisible.org/episode/welcome-to-jurassic- art/)

<comment><USER12> Hah yeah I just listened to that a couple days ago but didn't make the connection. Probably was rattling around my subconscious when I wrote this question because yeah it is very similar. That's a particularly interesting comparison too because the whole point was that just filling in conservatively based on experience misses a ton a real-world crazy and interesting diversity. The best example was how if we were imagining what elephants looked like just based on their fossilized skeletons, they wouldn't have trunks!

</comment></comment></comment><comment><USER14> One of the reasons why these photos look so convincingly realistic is the same reason [https://en.wikipedia.org/wiki/Chroma_subsampling](https://en.wikipedia.org/wiki/Chroma_subsampling) is done --- the human eye has less sensitivity to colour resolution, and so even relatively vague blobs of colour can evoke the right perception as long as there is sufficient _luma_ detail (provided by the original monochrome image); but if you inspect the photos closely, you'll see there are plenty of unnatural gradients in clothes and such, and the colours of objects blend into each other.

<comment><USER15> This was my thought too - it may not matter if the colors are 100% accurate as long they are enough to trick the human eye and brain into filling in what's missing. Besides, the reality is, these are not color source photos and will never be. A black and white photo does not contain the color information, it was never captured. All we really can do is use historically accurate colors and afaik, that is the same thing professionally recolorists do as well.

Really neat work!

</comment></comment><comment><USER16> This seems almost too good to be true. One thing I find very striking is how it gets skin tones very plausible across people of different ethnicities (though the majority of subjects in the picture appear of european descent).

Unless a) my brain is applying more interpretation to these pictures than I realize or b) the author (intentionally or not) picked out pictures that show the best results

<comment><USER17> Yeah some of the details are absurdly good, especially the picture of the "Texas Woman", how it gets the dogs ears perfect, perfect colors on the apples, and renders the copper pot a perfect copper hue.

<comment><USER18> Unfortunately her hands are grey. Otherwise, it is very good.

</comment></comment></comment><comment> user-x It's interesting to see how the algorithm seems to turn aerial photos into romantic paintings. My guess is that the model was trained on mostly up-close photos and that the colors don't map exactly to aerial photos because color intensity fades over large distances.

On that note it is cool to see how the algorithm does work for both indoor and outdoor photos. Indoor settings tend to have dark backgrounds and outdoor settings have light backgrounds.

Very cool project.

</comment><comment><USER19> Colorizing single images will always been a bespoke task. There are just too much missing data in the image to be able to create high quality colorizations from the photo alone.

However, I think the real application here is colorizing frames of movies. Imagine being able to turn black and white historical footage into color. It won't be as good looking as a single image, but it would be good enough i bet.

<comment><USER20> I imagine applying this to a video will perhaps be better than the stills, motion helps to hide errors.

</comment></comment><comment><USER21> There's an active subreddit dedicated to manual colorization:

[https://www.reddit.com/r/Colorization/](https://www.reddit.com/r/Colorization/)

</comment><comment> Sol- As amazingly plausible the pictures look, I personally have some dislike towards such applications (nothing against the author of course, just about ML in general) because I always feel a bit as if I'm being duped by the neural net. When I see image restoration, I'm subconsciously expecting historical fidelity even if I'm just marveling at the nice colorization. But of course such historical accuracy is not the primary goal of the GAN.

Maybe another cool avenue to explore would be combining models like this with some NLP approach that parses a historian's rough description of how the scene should be colored and biases the generator with prior information that way. (Maybe related to visual question answering or something.)

</comment><comment><USER22> 15 years ago I was in the first cohort of a brand new college program in Digital Imaging Technology. I spent the cost of a college diploma and over 10,000 hours learning to do this by hand. Now it's AI on Github for all. The Times They Are A Changin'

</comment><comment><USER23> This is one of the few colorizing algorithms that I've seen which creates desirable output. The images really do look like old colorized images. I wonder how the authors dealt with the differences in spectral sensitivity of their source material. There's clearly some orthochromatic plates or film being used. The image of the Seneca native 1908 is a good example. Notice how dark the field is on the patch on her skirt. With orthochromatic emulsions, the patch could have been either black or red since the emulsion isn't sensitive to red. It's most sensitive to blue, which is part of the reason skies look so white in old photos.

<comment><USER3> Author here. Easy to answer that one- altering the training photos with random lighting/contrast changes (yet keeping the color targets the same) really helped to deal with varying qualities of photos. But also neural networks are just particular good at picking up on context, so that has a lot to do with why the results are so robust.

</comment></comment><comment><USER24> The colorized photos on [https://www.reddit.com/r/Colorization/](https://www.reddit.com/r/Colorization/) are just marvelous. If that could be combined with the AI colorization to colorize old BW movies, that would make them so much more watchable. Other attempts at colorizing them, like what Turner did in the 80's, were a commendable attempt but didn't turn out well.

</comment><comment><USER6> Is it just me or do the example images seem overly biased toward coloring clothing as blue?

<comment><USER12> Well it has to pick something right? Am I wrong in thinking the color, except for very specific known items, is simply lost and can't be inferred by any level intelligence? Maybe the solution is "If I_HAVE_NO_IDEA -> randomColor()" which I realize doesn't jibe with how ML works (does it?)

</comment></comment><comment><USER25> > And yes, I'm definitely interested in doing video

As someone familiar with the libraries space, I'd actually be very interested in seeing a machine learning model that could deal with "cleaning up" old film (I've actually brought this up w/ several of my ML friends occasionally). One of the biggest challenges in the world of media preservation is migrating analogue content to digital media before physical deterioration kicks in. Oftentimes, libraries aren't able to migrate content quickly enough, and you end up with frames that have been partially eaten away by mold.

As a heads-up, these are some of the problems you might encounter on the film front (which you might not otherwise find with photos due to differences in materials used, etc):

[https://www.nyu.edu/tisch/preservation/program/05fall/physic...](https://www.nyu.edu/tisch/preservation/program/05fall/physical- properties.pdf)

[https://www.filmpreservation.org/preservation- basics/vinegar...](https://www.filmpreservation.org/preservation- basics/vinegar-syndrome)

<comment><USER26> I believe that Peter Jackson's recent endeavour in cleaning up WW1 footage employs significant ML for de-noising, frame interpolation, and colorising. I haven't seen the final film, but some of the clips are staggeringly good: [https://www.bbc.com/news/av/entertainment- arts-45884501/pete...](https://www.bbc.com/news/av/entertainment- arts-45884501/peter-jackson-lord-of-rings-director-s-ww1-movie-they-shall-not- grow-old-opens)

Edit: Here's maybe a better link -- [https://www.bbc.com/news/av/entertainment- arts-45803977/pete...](https://www.bbc.com/news/av/entertainment- arts-45803977/peter-jackson-world-war-one-footage-brought-to-life-by-lord-of- the-rings-director)

<comment><USER27> I'm actually not sure much ML was involved here - depends where you draw the line I guess, but denoising and interpolation for restoration typically use more traditional wavelet and optical flow algorithms. The work for this was done by Park Road Post and StereoD, which are established post-production facilities using fairly off-the-shelf image processing software. The colorisation likely leant heavily on manual rotoscoping, in the same way that post-conversion to stereo 3D does.

I'd love to hear otherwise but I'm not aware of any commercial "machine learning" for post-production aside from the Nvidia Optix denoiser and one early beta of an image segmentation plugin.

<comment><USER26> Huh, I recall seeing an article at one point (can't find the link) where it said or suggested that ML was involved. Of course this could have just been a journalist failing to make the distinction; I've seen everything from linear regression on up naively lumped into the ML bucket.

In any case the results are damned impressive -- can't say I've seen anything like it before.

</comment></comment></comment></comment><comment><USER28> This is quite interesting!

The pictures were basically perfect to myeyes, until I scrolled down to the "gotchas" section, at which point I started to notice a lot of details that are wrong, mostly fading colors, on clothes or otherwise.

Now, there seems to be a distinct loss of details in the restored images. The network being resolution-limited, is the black-and-white image displayed at full resolution besides the restored one?

What I would like to see is the output of the network to be treated as chrominance only.

Take the YUV transform of both the input and output images, scale back the UV matrix of the restored one to match the input, and replace the original channels. I'd be really curious to look at the output (and would do it myself if I was not on asmartphone)!

Nevertheless, that's some awesome work, and I can't wait to see where it goes!

<comment><USER3> Author here. That's actually what I find quite fascinating myself about the results- that they look almost perfect at first glance, yet you drill down a bit closer and you see another "zombie hand". The resolution issue you mention is definitely something I'm painfully aware of- it just comes down to lack of memory resources to support bigger renderings. That's going to be something I'm going to try to attack next.

<comment><USER28> Hey, thanks for replying!

However, I feel like you glossed over the proposed workaround, which I feel is appropriate (though more complicated if you want to implement"defade"), and extremely easy to implement.

I took a couple minutes to write an octave script that implement the workaround [1], it would have been even easier if both images had already been distinct files, and perfectly aligned.

The basic idea here is the same as the one behind the YUV transform: our brains are much less sensitive to the chroma channels than the luma channel. So I separate those, and keep the original luma channel, while I use the reconstructed chroma, which is lower-resolution.

Judge the results by yourself, but it seems to me that the end results are a whole lot better: [https://imgur.com/a/n2sBYCi](https://imgur.com/a/n2sBYCi)

And it could still be improved a lot more (by using the original high- resolution image, and avoiding to hand-align the images).

Edit: also, ironically, the Indigo dye (thus blue clothes) didn't become common before the 1900s [2], so the bias might produce historically-inaccurate images!

[1] [https://gist.github.com/MayeulC/626bafbaf925fb3a3c80fdba76b7...](https://gist.github.com/MayeulC/626bafbaf925fb3a3c80fdba76b7e8be)

[2] [https://en.wikipedia.org/wiki/Indigo_dye#Synthetic_indigo](https://en.wikipedia.org/wiki/Indigo_dye#Synthetic_indigo)

<comment><USER3> Oh shit yeah that really does look good! Amazing really. Ok...I'm going to put these notes on the project board.

Yes..I definitely glossed over the proposed workaround and I apologize. Thanks for this.

<comment><USER28> No problem :)

Although I would have made it a fully-fledged github issue, with a link in your board, instead of a text entry, to add supplementary material in the issue thread.

Bonus: if you are only interested in chrominance, you can train your network to use YUV as an input instead, and output only UV. I suspect this might lead to substantial gains in the training time and network complexity.

<comment><USER3> Update: I got this working, and dude- it's so awesome in every way. This is the most substantial improvement I've seen yet. Most importantly- it massively reduces memory requirements. Thank you so much. I'll commit within a day or so and make sure to mention you, on Twitter.

<comment><USER28> Hey, thank you a lot, that's awesome! One more thing I recently thought about, but didn't get around to mention, is that you can probably reduce the input of your net to the Y (luminance) channel (with UV-only output), to trim it further ;)

But that might already be what you are doing, for all I know. I am just really glad I could be of any help! And this feels like an "free-lunch" improvement.

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> >> BEEFY Graphics card. I'd really like to have more memory than the 11 GB in my GeForce 1080TI (11GB). You'll have a tough time with less. The Unet and Critic are ridiculously large but honestly I just kept getting better results the bigger I made them.

Wow!

<comment><USER30> This basically sounds like "the more I let the machine memorize, the better it did." Not necessarily bad, mind you, just amusing.

</comment></comment><comment><USER31> This is a cool application of ML. Not to diminish the work, just to point out that humans are more sensitive to luminance than color (hence YUV encoding [1] and others), so it might make inaccuracies less visible.

For example, in "Interior of Miller and Shoemaker Soda Fountain, 1899" the colors from the counter and chairs blend, but the luma help our eyes to separate it.

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

</comment><comment><USER32> This is great work! And,

> The model loves blue clothing. Not quite sure what the answer is yet, but > I'll be on the lookout for a solution!

Just throwing a thought out here that you might have considered, but, maybe it's because traditional black-and-white film is over-sensitive to blue? It's why when one uses traditional black and white films one usually uses at least a yellow filter and if you have blue sky in a shot you use a red filter. This may or may not be useful; either way, keep up the awesome work!

</comment><comment><USER33> Anyone else left wondering if the hand really was red in the photo?

<comment><USER34> I think the issue is that the hand is round-ish and surrounded by wood texture, the model might apply learnings from photos apples or other fruit on trees.

</comment></comment><comment><USER35> How stable is the result with respect to augmentation?

If you get an image with a funny artifact, like a super-red hand, can you fix it by running the network on a slightly augmented image? For this kind of work, it seems reasonable that you could keep re-colorising an image until you got one that was acceptable (as in the case with the B+W TV).

</comment><comment><USER36> Seems like an easy problem for DL, as you have an enormous amount of data available (just take any color image, convert it to grayscale and you have a pair of training images).

(This is also the case for e.g. the superresolution problem.)

<comment><USER37> You probably need an enormous GPU (24GB RAM) as well to make as large model as possible for as good generalization as you can (there are so many different types of objects/surfaces/fabric and their compositions).

<comment><USER30> Something amusing about needing a ridiculously large model to claim good generalization. Analytical models typically go the other way, right?

<comment><USER37> It's Deep Learning, not much to do with any analytical model, it's not thinking like a human :-(. Recently even good NLP processing needs 24GB+ for training (won't fit into 16GB), a good quality colorizing (no spills, natural colors) could be expected to be as demanding.

From the article:

"BEEFY Graphics card. I'd really like to have more memory than the 11 GB in my GeForce 1080TI (11GB). You'll have a tough time with less. The Unet and Critic are ridiculously large but honestly I just kept getting better results the bigger I made them."

<comment><USER30> I get that. I just have a hard time thinking that is "generalizing" the model, so much as making the model all encompassing.

<comment><USER38> It's the difference between the sense of training the model to be a _" generalist"_ and it doing "generalizing".

I strongly doubt that you can "generalize" colourization in the sense that you talk about (over a wide variety of subject matter).

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> There is a HN discussion about a similar model from 2016: [https://news.ycombinator.com/item?id=11403653](https://news.ycombinator.com/item?id=11403653)

</comment><comment><USER39> There is something wrong with that woman's hand. It is either extremely swollen, a glove, or not a real hand (wooden?). Perhaps your model didn't make a mistake after all

</comment><comment><USER40> How it works for modern color photos which have been converted to BW? It would be interesting to see how the colors change compared to the original color photo.

</comment><comment><USER41> some nice research on computer-assisted colorization from some years back: [http://www.cs.huji.ac.il/~yweiss/Colorization/](http://www.cs.huji.ac.il/~yweiss/Colorization/)

works on video. don't suppose anyone knows if a photoshop (or gimp) plugin of it was ever made?

</comment><comment><USER42> It blows my mind what deep learning can do, however I wonder if this optimism can be extrapolated into super ai...

</comment><comment><USER43> Facial recognition and recommendation engines don't work, let's see what it can do for movies.

</comment><comment><USER44> The sample images seem too small to tell if it can color within edges accurately.

</comment><comment><USER45> Very nice, but it looks like the blues are kind of off in several pictures.

</comment><comment><USER46> What happens with modern black and white photos?

</comment><comment><USER47> > Granted, the model isn't always perfect. This one's red hand drives me nuts > because it's otherwise fantastic

Plot twist: It was actually red in reality.

</comment><comment><USER48> Can someone run this against some manga?

<comment><USER49> Google "colorize manga neural" and you'll find many projects for AI-assisted manga colorization.</comment></comment>


States want strong action against Google, Possible Ad break up - <AUTHOR> https://news.bloomberglaw.com/mergers-and-antitrust/states-want-strong-action-against-google-possible-ad-break-up <comment><USER2> [https://news.ycombinator.com/item?id=23431824](https://news.ycombinator.com/item?id=23431824)</comment>


Ask HN: Does using React while disliking FB create cognitive dissonance for you? - <AUTHOR> Just wondering. Never been in this situation before with a framework. <comment><USER2> I like think of React as a project led by some open-source developers that happens to be sponsored by Facebook. Even if I don't like the company, the folks building out the code for React seem nice enough.

</comment><comment><USER3> Not at all. Microsoft is a horrible company, but C# is a brilliant (open source, cross-platform) language. Facebook started in PHP. Never trust a company that uses PHP.

<comment><AUTHOR> This is how I feel but I'm just curious. Things are as polarized as the Snowden leaks right now.

</comment></comment><comment><USER4> If I was working with React it would, but I'm aware that this is a perfectly irrational sentiment and I couldn't really defend it.</comment>


Microsoft Execs Expressed 'Shock and Disbelief' at Internet Address Shortage - <AUTHOR> http://blogs.wsj.com/digits/2015/05/14/microsoft-execs-expressed-shock-and-disbelief-at-internet-address-shortage

<comment><USER2> It should be pointed out the 'Shock and Disbelief' re: this shortage wasn't about the more publicized shortage of public IPv4 addresses but about a shortage of private RFC1918 IPv4 addresses within the company. Something that most people probably take for granted due to NATs etc...</comment>


Is the "Magic" Alternative Energy Bloom Box for Real? - <AUTHOR> http://www.dailytech.com/Is+the+Magic+Alternative+Energy+Bloom+Box+for+Real/article17752.htm

<comment><USER2> One would hope if smart VCs put in $400M over eight years.</comment>


Lion Launches Tomorrow, July 20, On Mac App Store - <AUTHOR> http://www.macrumors.com/2011/07/19/lion-launches-tomorrow-on-mac-app-store/ <comment><USER2> If history is any indication, it would be wise to hold off on immediately updating to Lion. Give Apple a few weeks to work out any kinks the beta testers missed before spending the money for something that might not work as advertised just yet.

<comment><AUTHOR> I needed a new MBP by the end of this summer, so I actually hurried up to buy one yesterday. That way, I can stay on SL while any kinks in Lion are smoothed out.</comment></comment>


Generation Y the least engaged - <AUTHOR> http://www.management-issues.com/2008/8/11/research/generation-y-the-least-engaged.asp

<comment><AUTHOR> So true. I can relate pretty close, doing an internship and seeing these exact traits.

</comment><comment><USER2> I'm just in this borderland. I'm born in 1978, and I notice lots of people around my age feel very little responsibility about the job they are doing. They try to get by doing minimal effort, and expect to get maximum compensation.

Unfortunately, this actually works in a job market with a major shortage in the work-force. Some of them gets paid more than I do ;)

<comment><AUTHOR> Great point. Did not consider the competitiveness aspect. There are ~50 students majoring in CS in my graduating class, ~40 class below, <30 below that...

dear god, our field is already challenging enough, though we could use some competition amongst us in corporate! :P</comment></comment>


What I Learned from Public Speaking Class? - <AUTHOR> http://asmithblog.com/public-speaking-productive-meetings

<comment><USER2> That's a great personal approach!</comment>


Video of Michigan State professor ordering a pizza using a computer in 1974 - <AUTHOR> http://www.freep.com/article/20130123/NEWS06/130123107/Michigan-State-University-professor-ordering-pizza-on-computer

<comment><AUTHOR> Proud Spartan here. I can remember witnessing a demonstration in the same era of an IBM 360 reading morse code that astounded me at the time. Now I can get an app for my phone that does the same thing.

Brings to mind the Bill Gates quote: "The path isn't always there. Sometimes you have to make it. Sometimes people will think you're crazy. Sometimes you are just ahead of the curve. it's a dream for a reason, and sometimes making your dreams happen takes going out on a limb and giving your all for what you believe in."</comment>


Atlassian debuts new Jira Software Cloud with timeline view, configuration flow - <AUTHOR> https://venturebeat.com/2018/10/18/atlassian-debuts-new-jira-software-cloud-with-a-timeline-view-configuration-flow-and-new-apis/ <comment><USER2> Well, that's fun. The linked blog post doesn't seem to exist. I can find no mention of this new release on Jira's blog anywhere. Plus, there's no release date for these features (which seem like desperately needed improvements) anywhere. Matches my experience with Jira so far.

Our PM team recently requested we move from Waffle to Jira, since Waffle has no backlog management and Github's is lacking from a PM point of view. As a developer, this is a giant leap backwards.

Jira is a terrible mess of throw spaghetti at the wall and hope it works out. A jumble of all the features you could possibly want, half-assed and thrown together with terrible UX. The data model is non-sensical (everything is shared between projects - if you create a status, a field, an issue type, it becomes the one true object shared by everyone), making the damned thing impossible to configure.

The way kanban boards currently work is that they don't scroll. They adjust their horizontal scaling to shove all the columns on to the screen. Dragging cards between them frequently fails, because when you are dragging, you can end up scrolling and that will knock Jira's awareness of the card's position out of whack. When you drag the card, it greys out the board and highlights the columns you can drop it in in green - which is how I know that Jira's position tracking gets out of whack. After I've dragged to cause an accidental scroll, the column I'm hovering over will fail to highlight, but the one two columns over will highlight.

The whole thing needs to refresh every time you make a change. Or when someone else makes a change, instead of just showing the change you get a little box saying "please refresh me". To see your PRs attached to a card, you have to click into the card, then click into the PR list. It doesn't list which repo each PR belongs to anywhere, so you have to put that in the title yourself if you want to be able to see it from Jira. You can't see review status or comment status from Jira, so you have to click straight through to the PR if you want to see how the conversation has moved.

And yeah, right now, you have to configure your workflow independently of the columns and then attach the the statuses to the columns. Figuring that out took a solid day of clicking around in the nightmarish admin sections. Now that I'm using it and not trying to configure it, it's annoying, it's definitely slowing me down over waffle, but it's... manageable. But god I miss waffle.

These changes, if they actually exist look like they would salve some of these pains... at least a little.

<comment><AUTHOR> > Well, that's fun. The linked blog post doesn't seem to exist. I can find no > mention of this new release on Jira's blog anywhere. Plus, there's no > release date for these features (which seem like desperately needed > improvements) anywhere. Matches my experience with Jira so far.

It feels like Venturebeat messed up a news embargo. My bet is that it'll be announced shortly.

<comment><USER3> :)

</comment></comment></comment><comment><USER4> Roadmap is exactly what I've been wanting in Jira for years, and have either convinced devs to build for me at internal hackathons, or hacked together myself, or bastardized in Google sheets. Can't wait to try this!

</comment><comment><USER5> The link is down but you can find the article on the webarchive: [https://web.archive.org/web/20181018123152/https://venturebe...](https://web.archive.org/web/20181018123152/https://venturebeat.com/2018/10/18/atlassian- debuts-new-jira-software-cloud-with-a-timeline-view-configuration-flow-and- new-apis/)

</comment><comment><USER6> Is JIRA almost unusably slow for anyone else? After a bunch of trial and error, I've landed on a workflow I like with JIRA, but it painfully slow (we run on their cloud).

</comment><comment><USER7> I highly recommend clubhouse. It's like Jira, but won't make you break out in fits of rage. [http://clubhouse.io/](http://clubhouse.io/)

<comment><USER8> They should offer a single user free plan. If I start using these tools for my own personal projects it's a lot easier for me to bring it up to others because I've had months/years of experience using it myself.

</comment></comment><comment><USER9> We used Jira for a year doing a "semi-Scrum" development framework ... you know the one where you throw Agile terms around like you have any idea what they mean ... it went well enough but I and my lead engineer wound up going to Scrum Master training. We left Jira and went to Axosoft. Each had pros and cons of course. Pro-tip: the best software in the world will not help if your business users do not understand anything but waterfall methodology.

</comment><comment><USER10> A simplified configuration flow sounds too dangerous to me. IMHO, making it easier to "configure" is not necessarily a good thing, and in this particular context, is THE source of a ton of software development bad practices, low SNR and micromanagement.. </rant>

<comment><USER3> That's why we needed to break down the permissions model to enable more local control at the project level while still giving administrators the ability to set the global guardrails. Jira historically has been a more globally focused permission model.

</comment></comment><comment><USER11> I have to use their jira cloud offering because of my workplace. I'd already be happy if it didn't need 5 seconds to load even essentially empty pages. It's painful.

<comment><USER12> Jira PM here. Sorry to hear about your experience.

We're constantly working hard to make performance improvements on different fronts.

The new 'next-gen' projects are more performant due to a tech stack update - the interactions and are snappier and updates are near realtime. Come check it out by creating a new 'next-gen' project in your Jira Cloud instance.

Outside of 'next-gen' projects, we're currently working on general performance improvements that will benefit all users.

We're currently making transitions between different parts of the product a lot faster through data pre-load and pre-render techniques. We're also working on optimising the front-end and back-end calls for faster loadtimes in general. We're looking at investing in more datacenters to keep lag times down for you.

Please keep a lookout on performance improvements. It might be hard to notice this day to day, but we have been and are always investing on this.

With age we've incurred some technical debt but rest assured we are unwrangling the complexity everyday so we could optimise our software for you.

</comment></comment><comment><USER13> I'm using Aha (it's pretty good, I'm only a paid user) in place of missing JIRA roadmap functionality.

Aha is worth looking at on its own, or it integrates with Jira quite deeply yonavoidbsome of these messes.

</comment><comment><USER14> I wonder which (and when), if any, of these improvements will trickle into their on-premise offerings, given Cloud and Server have diverged quite a bit.

<comment><USER12> Jira PM here. We're thrilled to hear you're digging the new improvements on Jira Cloud.

We can't promise when (or if) specific features will be deployed in Jira Server, but the Jira Server team is investigating and learning from customer feedback on Cloud.

We'll be balancing the well-received parts of the Cloud experience with priorities around performance at scale and advanced configuration options in Jira Server.

</comment></comment><comment><USER15> Looks like VentureBeat launched this before Atlassian got a chance to...link is now dead.

</comment><comment><USER16> still no markdown support :-(</comment>


Intel to Acquire eASIC: Lower Cost ASICs in FPGA Design Time - <AUTHOR> https://www.anandtech.com/show/13075/intel-acquires-easic-lower-cost-asics-in-fpga-design-time <comment><USER2> This is just bizarre - seems like corporate insanity to me. TO give some background to this, Intel's PSG is what Intel renamed Altera. Of course Altera was the FPGA company, and as part of their Stratix III/IV/V range they did 'HardCopy' which, basically was a structured ASIC! They canned it because in reality whilst customers want to be able to go ASIC in theory, it never really made much sense in practice. So what? They're buying a company that is doing something people don't want?

That's what really worries me - because if the acquisition were going into the group that builds Xeons, basically as an enabling technology for an internal team that makes sense. But being part of PSG means that they're going to try and sell this to customers (again).

For investors what you need to watch for is whether what they're really doing is buying growth. It's a classic move - buy small, similar companies and use get growth by upselling their product to your existing companies. But once all the customers have either bought or rejected you're back to brass tacks, the core business is missing growth/margin targets.

<comment><USER3> Intel needs more customers for it's fabs.

<comment><USER4> It can't even fab 10nm chips for its own business.

<comment><USER5> Most potential fab customers don't want or need 10 nm.

<comment><USER6> This 2017 survey supports your point:

[http://eecatalog.com/chipdesign/2017/11/26/semiconductor- ip-...](http://eecatalog.com/chipdesign/2017/11/26/semiconductor-ip- survey-2017-holds-surprises/)

Most are at 28nm-45nm with some at 55nm-65nm. The things they say they're concerned about also have some overlap with what eASIC's tech makes easier. That's on top of the number of companies that might be able to develop a FPGA but not full ASIC. eASIC's often a cheaper option for companies doing what's basically a bit faster and lower-power offering.

So, there's definitely potential here for Intel. I hope they realize a good chunk of it. Who knows if they will.

</comment></comment></comment></comment></comment><comment><USER7> Article mentions that eASIC replaces SRAM based routing with a scheme that uses via. What is "via"?

<comment><USER8> If you read up on the structure of an FPGA lookup table (LUT) in detail, you'll see that most of their size is taken up as memory. A Xilinx 7-series LUT6 Configurable Logic Block (CLB) is a 64-entry 1-bit sram, read out with a 6-bit address.

If you don't need the ability to reconfigure the system any more, you can hardwire each of those 64 entries to the VDD and VSS rails instead. Its not nearly as efficient as the circuits you can get with a set of dedicated logic cells, but its much more efficient than the baseline FPGA fabric.

If the customer has already validated their logic on FPGA fabric, then its also much cheaper. You just ask these guys to "burn" it into an ASIC and you suddenly get a few hundred extra MHz.

Why are they called 'vias'? Because ASIC layout is somewhat similar to PCB layout - transistors go on one layer, and there are a dozen or so layers of routing wires below them, with vias in between the layers. So you can replace the transistors that would have been implementing SRAM cells for read/write LUTs with vias to power/ground layers instead.

</comment></comment><comment><USER9> McAFee, Infineon, Havok, ZiiLabs ( Or previously more widely known as 3Dlabs ), Altera, Recon Instruments, Mobileye.

Or Name me one thing good that Intel has ever done with their Acquisition.

There is something seriously wrong with Intel.

</comment><comment><USER10> Imagine a CPLD that is hardwired.</comment>


Why Your Dog Can Get Vaccinated Against Lyme Disease and You Can't - <AUTHOR> http://legacy.wbur.org/2012/06/27/lyme-vaccine <comment><USER2> How often do drugs get removed from the market by completely unjustified public outrage? I'm sure that all those people who complained after receiving the vaccine didn't really have horrible un-treatable lifelong consequences from it. Around the turn of the century, I worked with a guy who was foolish enough to agree to be vaccinated. He suffered greatly for it, and spent the rest of his days wishing that someone would invent a time machine.</comment>


Facebook (the website) is down - <AUTHOR> https://twitter.com/search/facebook%20down <comment><USER2> Homepage loads fine for me, but I'm not logged in.</comment>


Three fake call centres in mumbai made rs 500 crore by duping us citizens - <AUTHOR> http://economictimes.indiatimes.com/news/politics-and-nation/three-fake-call-centres-in-mumbai-made-rs-500-crore-by-duping-us-citizens/articleshow/54710487.cms <comment><USER2> Edit your headline please.</comment>


Darling – macOS Translation Layer for Linux - <AUTHOR> https://www.darlinghq.org <comment><USER2> What would be amazing is if Darling could join forces with the long-running GNUstep project in order to provide access to the Cocoa APIs. This would provide a means to run Cocoa apps on Linux, which will make Linux a more attractive operating system for prospective Mac converts and may also increase the popularity of GNUstep. Also, with many Mac users expressing anxieties about the future of the Mac given Apple's business decisions under Tim Cook, a combination of Darling and GNUstep would provide Mac users an option to still use the apps they have invested in, just in case Apple neglects the Mac or makes radical decisions that would negatively impact Mac users.

However, the last time I looked into this matter, GNUstep still has quite a way to catch up to macOS Mojave's version of Cocoa. At the risk of going off topic, I still don't understand why GNUstep never seemed to have reached critical mass despite all these years of development. I was just a kid during the mid-1990s, but KDE and GNOME took off around this time while GNUstep kept pressing on. Here's my thoughts: maybe in 1995 and 1996 the OpenStep API might not have been attractive to developers in a world where Windows completely dominated the desktop, but this doesn't explain the decision of the KDE developers to use Qt instead of GNUstep (as well as the decision of the GNOME developers to use GTK+). There may have also been much uncertainty in 1997 following Apple's purchase of NeXT about the future of OpenStep. Such anxieties would be alleviated sometime during 2001-2003 when Mac OS X was released and started gaining popularity, but by then KDE and GNOME (and their respective underlying GUI toolkits) were firmly established in the Linux desktop ecosystem, and to this day they remain the dominant Linux desktops, and many less popular desktops still rely on Qt or GTK.

<comment><USER3> The problem with replacing MacOS is that its key value lies in aspects that the open source community have yet to succeed in, or are structurally unfit to succeed in.[0][1]

— System-wide UI consistency, especially in the fine details

— Singular UI/UX vision eliminates points of confusion and everything-is-a- compromise choices for third party developers

— Navigable by non-experts, even when things turn to shit

— Nominally "perfect" hardware support

— Robust colorimetry

— Millisecond audio latency

I use Linux extensively, but I'm not aching to leave macOS as my primary platform. Yes, they did start to go a bit loopy and off-track around Mac OS X 10.7–10.9, but from my vantage point it has been all uphill again since Mavericks.

The idea of running Mac apps in a Wine-like compatibility layer sounds worse than anything Apple could ever do to macOS. Yes, I like free. And yes, I like personal choice. But I value my time and I'm sorry to proponents of other platforms, but macOS just values my time more than any other platform.

________

[0] The achilles heel of the open source community stems from the lack of a unifying vision and a top-down approach. This has major advantages as well as major disadvantages. But nonetheless it affects the result. And depending on your priorities, the advantages might outweigh the disadvantages or vice versa.

[1] And to be fair it's equally true in the opposite direction. Open source succeeds in many aspects like robustness, hardware compatibility, longevity and transparency/deep trust. Hence why it has utterly destroyed the server market. These areas of success are not accidental or arbitrary.

<comment><USER4> > _— System-wide UI consistency, especially in the fine details_

> _— Singular UI /UX vision eliminates points of confusion and everything-is- > a-compromise choices for third party developers_

I mean, first-party GNOME applications are as consistent as first-party Apple macOS applications; and third-party macOS applications are as highly customized as third-party applications one might run on GNOME. Not sure what you base your experience on but this is not really any more of an issue for those looking for consistency over all else.

> _— Properly accessible by non-experts, even when things turn to shit_

I'd like an example, not really sure what you're talking about here. In my experience, when things go wrong on macOS, you're prettymuch SOL until the broken feature is either fixed, reimplemented, or removed in a subsequent major release of the operating system. In my experience, Apple doesn't respond to bug reports any more than other desktop OS vendors, including open source ones.

> _— Nominally "perfect" hardware support_

The graphics drivers on macOS are very poor. Apple's decision to neglect and then subsequently abandon OpenGL is pure laziness, and their implementation was already bad when they were still maintaining it. Furthermore, hardware compatibility with random gizmos on macOS leaves a lot to be desired in comparison to Linux, in my experience, though I guess your mileage may vary.

> _— Robust colorimetry_

colord works just fine for me, no amount of software is going to profile your monitors for you though.

> _— Millisecond audio latency_

I'm pretty sure CoreAudio frames are not less than 44 samples.

What I will give Apple credit for is a great set of graphics manipulation libraries which make it simple to use high quality scaling and manipulation algorithms, and making sure it's a conscious choice to use cheaper, faster ones, and their implementation of seamless suspend-to-disk with full disk encryption is admirable (though honestly, dispensable at the end of the day). Their shaping and font rendering libraries are almost as good as Harfbuzz and FreeType 2 (though I think they've just started using FreeType at least on some platforms). Accessibility features are also pretty good, and depending on what disability you have, it's a tossup between GNOME and macOS.

<comment><USER5> CoreAudio round trip latency can be under 5ms.

<comment><USER3> And maybe you can get something comparable on Linux. Maybe? Do I have to think about which distro I use? Do I have to think about which audio hardware I use? Do I have to think about which audio apps I use?

On Mac, you get that insane latency without having to put a moment's thought into any part of your architecture. I get that insane latency even if I never bothered to learn why latency matters.

"Just works" is more than ease of use. It's productivity. It shows respect to your mental load and mental priorities. And it is worth money to anyone whose time is valuable.

<comment><USER6> Ubuntu Studio just works.

</comment></comment></comment></comment></comment></comment><comment><USER7> The main attraction of Apple products is the certainty that, no matter what you do, they cannot be made to do what you would like. The consequence is that you feel no urge to spend time tinkering to get there, and instead adapt yourself to what it actually does. This reclaims all the time and attention that you would have spent on tinkering.

Since what Apple products do has proven adequate for a large number of people, and you are no less adaptable than they are, you know you can adapt, too.

Having once chosen to adapt to what Apple has chosen to offer, you find it easier each time, until it becomes wholly unconscious. Each time Apple takes away something you had used, you might momentarily balk at the "upgrade", but always acquiesce in the end.

[Edit] So, the appeal of Mac emulation is very limited, because it starts out with tinkering.

<comment><USER8> I disagree entirely with that. I think Apple sold people the idea that what they provide is really cool and 'just works' and that you want to be in their 'ecosystem.' It worked, people bought the allure and then just stopped looking at other solutions because Apple said they don't need to.

I think your post highlights exactly that: a buy-in to the brand so strong as to not even try and look elsewhere when issues arise, just adapt and accept.

<comment><USER9> Do you really believe that? That people are so incapable of independent thought that they will subservantly obey the wishes and demands of Apple?

Come on.

<comment><USER9> ps. I used to have an iPhone, now I have an Android phone.

</comment></comment></comment></comment><comment><USER10> Something like this is sorely needed by the open-source, not-for-profit, shoestring-resources, cross-platform development community...

For example, let's say that I'm writing some cross-platform open source software. And let's say that I am developing this software on a Windows or Linux Box.

Now, let's say that for whatever reason, I don't have and can't afford a Mac (a scenario like this is more common than you would think, especially in developing countries...)

OK, so now how do I compile/run/test the Mac version of my software -- without having that Mac?

?

That's why your software is so important.

Anyway, if you can get this fully operational (GUI and everything), you'll solve that problem for that group of software developers...

If you're successful, if you prevail... Apple shouldn't sue you... they should help you, because _additional software for their platform ultimately benefits their platform_.

Also, judging by the source, you've done an amazing amount of work so far... I hope you can find the additional developers/contributors you need to take this thing to completion...

<comment><USER11> > Now, let's say that for whatever reason, I don't have and can't afford a > Mac.

Rely on some developer(s) spend 10,000 hours of their time for free developing a Mac emulation layer, or go on eBay and buy a $600 used Mac to test on...

<comment><USER12> Or use one of the CI providers that will test your stuff on macOS (alongside Windows, FreeBSD, ...). Possibly for free, if your stuff is open source. I use that for Windows, which I don't personally use at all, and it finds bugs and problems all the time. I wish someone would provide free (!) CI for some rarer OSes and CPU architectures too, but I can dream.

<comment><USER13> You can't fully test things this way. Not enough to make a serious release anyway. You can easily pass all tests while not being able to even start the app. You need at least one person with the real hardware to do testing.

<comment><USER14> This really depends on the tests you're running.

<comment><USER13> True. But in context of: "tests in a CI environment which costs you less than a MacBook", I don't believe anyone would go to the level that avoids those issues. It would take a lot of work and resources to replicate a "real run in clean, real environment".

<comment><USER14> Again, this depends on the tests you're running and how you've set up your CI environment.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I wish I had the time to contribute to this. Getting Logic running on linux would let me ditch the Apple hardware.

It's usefulness is entirely limited to the implementation of the core library frameworks such as Core Image, Audio, MIDI, Animation, Data, etc...which will be very, very difficult, I think, while maintaining FOSS status.

<comment><USER16> Linux audio latency really isn't great, having another layer in between your app and the kernel probably won't help.

<comment><USER17> It's actually quite good, or at the least it's better than Windows 10 on the same hardware for me, even if using wine (Apple is still the best here obviously)

</comment></comment></comment><comment><USER18> This extra layer (and wine) are always going to be garbage.

If you need Mac or Windows, your best bet is not to move to Linux in the first place.

If you do mostly development or scientific computing, then you've probably dealt with more pain on those platforms, that melts away on Linux.

Best tool for job wins.

</comment><comment><USER19> Maloader[0] is a similar (smaller, easier to understand) project that runs in userland. It's a nice code base to read and there's this nice presentation about it[1].

[0] [https://github.com/shinh/maloader](https://github.com/shinh/maloader) [1] [http://shinh.skr.jp/slide/ldmac/000.html](http://shinh.skr.jp/slide/ldmac/000.html)

</comment><comment><USER20> I'm puzzled, wont most console apps already cross compile without much modification? Isn't this basis of brew/etc? The GUI piece seems like the key, but without it I'm failing to understand why this is significant.

<comment><USER21> It says that it "does not yet" run GUI applications, so it seems like they plan on it. Additionally, if no one ever talked about software like this before completion, they'd have a pretty hard time getting enough developers interested to ever reach completion.

As for making the front-page of HN, the HN crowd probably consists disproportionately of technology enthusiasts who find interest in technology beyond its immediate usefulness.

</comment></comment><comment><USER22> I wonder where humanity would be, if people (including me) instead of arguing on forums, actually did something useful :)

Like Darling could be already polished product.

</comment><comment><USER23> > At this point, does not yet run macOS application with a GUI

Which makes it rather pointless, for now. Practically all non-GUI software that runs on Darwin can be made to run on Linux too and thereby even Cygwin. What I would much rather see is library support for some BSD standard functions that are missing from Linux. Trying to migrate software that uses funopen(3) to Linux gives me an ulcer.

</comment><comment><USER24> Will this enable Linux servers to build iOS apps?

<comment><USER25> How is iOS and macOS the same thing? It's not even running on the same architecture.

<comment><USER26> He means running xcode to produce iOS binaries

<comment><USER25> Then that's different. This won't work, xcode is heavily integrated with macOS only libraries and as far as I'm aware, it requires GUI interaction at some point to produce the iOS binary.

</comment></comment></comment></comment><comment><USER27> Been experimenting using this to run legacy software and while it seems to work great with command line tools, as soon as you progress onto gui stuff you quickly run into missing functions and libs.

Still insanely cool though.

<comment><USER28> Especially for MacOs, where you can expect apps to stop working after a new new major OS versions, this is really nice. Meanwhile, Microsoft maintains an amazing degree of compatibility. I haven't tried, but I have a feeling Office 97 works in Windows 10.

<comment><USER29> Traditionally, that was the case, but recently older applications have been breaking in recent versions of windows. And windows and macos both have hacks in place to fix older versions of popular applications (ms office, adobe suite, etc.).

<comment><USER30> While Windows's backwards compatibility is sadly getting worse, it's also still pretty incredible. I can run lots of obscure Windows programs that 2+ decades old!

Mac backwards compatibility isn't as bad as some people say—I have a decade- old program that still works in Mojave, for instance—but Windows is a lot better.

The platform with _awful_ backwards compatibility is iOS. And there, you don't even have the option to dual boot or downgrade. The fact that no one cares says something about how much we value mobile software...

<comment><USER29> Honestly, the only time ios has broken backwards compatibility is with 32->64 bit. And—not to minimize that, that is quite major, but that's pretty much the only time it's happened.

<comment><USER30> Have you ever actually tried to run early iOS apps on iOS 10?

I have. I had an iPod Touch for a couple of years as a teenager, but then left iOS until I got an iPhone in college. Once I had the iPhone, I decided to go through my purchase history and re-download the apps I'd used on my iPod, for nostalgia's sake if nothing else.

To my dismay, _exceedingly_ few of the old apps worked, and most of those that did had major graphical glitches. (Not including apps which had been updated by the developer more recently, of course.)

<comment><USER29> > To my dismay, exceedingly few of the old apps worked, and most of those that > did had major graphical glitches

Link them to me and I'll try them out. I've never had that experience.

<comment><USER30> I took a look, and it seems like a lot of them were removed from the App Store. If you happen to have any of these in your purchase history:

* Convertbot

* Tap Tap Revenge Classic / 2.5 / Dance

* Roland 2

There were definitely way more, but I don't remember which ones, and now that I'm on iOS 12 I can't test any of them (all 32 bit). These are the three I specifically remember not working.

<comment><USER29> Hmm, those seem to be gone and I never downloaded them before.

Hah, guess the reason I've never noticed any compat issues is they removed the apps they broke compat with.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> for reference a link to the previous conversation is here:

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

</comment><comment><USER32> The comments here sound like they are from Android users who go on about how great Android is because they can spend hours tweaking their phones and rooting them and side loading them. LOL. "made to do what you like". Dudes, just get Windows 10 and install WSL and tweak away.

</comment><comment><USER33> I really want something like Hammerspoon, but for Linux

<comment><USER34> Surely there's something equivalent...?

I've used Linux on desktop exclusively ~95-07. Switched to MacOS after that. Tried out mythical "Linux on the desktop" in 2018, was amused to find that iTerm2 has grown so much, and there's hard to find a good replacement for it under Linux. Of all the things I'd expect it to handle well... 8)

<comment><USER35> One of the most sophisticated Linux terminal emulators I worked with is Konsole, the KDE terminal. However, I never worked long enought with iTerm2 to learn all the features. My feeling is that there is a growing crowd of Linuxers who go for "minimalism", like tiling WMs and minimal terminal emulators, and using tools like tmux or zsh to streamline their experience.

Regarding Hammerspoon (which reminds me very much on what you can do with AppleScript), you certainly can do many of the examples ([https://www.hammerspoon.org/go/#spoons](https://www.hammerspoon.org/go/#spoons)) with modern-day frameworks like xdg, dbus, libevent, inotify. My feeling is that (for instance) Python PIP has pretty comprehensive libraries which allows you to use it as a glue language for all that interfaces. I would not be surprised if that even feels slimmer and more powerful then Lua in the end, but it's a matter of taste. As always.</comment></comment></comment>


Which HN members were able to grow a site from 0 to a Million unique visitors? - <AUTHOR>

I would love to meet some hard working HN members who were able to grow their sites from 0 to 1,000,000 unique visitors a year.
What is your site?
What did you do to get that traffic?
How long did it take?
What would you do differently next time?
Thanks so much!
Dave Craige www.tugboat.io <comment><USER2> I did it with a Horoscopes app on Facebook. I don't own it, my employer does. In October of last year it was at 12,000 users a day, and now it is 1.8 million users a day.

I did it by having a really nice app, really understanding how to grow an app on the Facebook platform, and a combination of black magic and luck.

If I had to do it all over again, I'd do a couple things: try to get into the build-measure-learn loop faster, and once inside BML space try to loop around faster. Second, for funnel optimization focus on removing or rearranging steps, as opposed to optimizing the conversion from one step to another.

<comment><AUTHOR> @idoh - awesome job. 1.8million users a day is fantastic!

if you want, feel free to link us to the app. would love to see it.

keep us posted if you work on another great app like that.

<comment><USER2> Here is the link: <https://apps.facebook.com/horoscopes/>

It is also on the iOS app store: [http://itunes.apple.com/us/app/horoscope- astrology-experts/i...](http://itunes.apple.com/us/app/horoscope-astrology- experts/id522194871?ls=1&mt=8)

For iOS it launched on Aug 28, and it was at #5 for the Lifestyle / Free section for a while. It's been a really fun ride and I've learned a ton about growing apps on FB and mobile.

</comment></comment></comment><comment><USER3> I've gotten over 25 million unique visitors to my site, WreckedExotics.com since I launched it 10 years ago.

Here's a screenshot of the google analytics: <http://i.imgur.com/gz9hJ.jpg>

It's missing 3 years worth of data - and those were some of the highest traffic years, so essentially, the site has done over 1 billion pageviews. Best month was 1 million visitors. I run the site by myself.

I also created <http://www.exoticspotter.com> which attracts over 1 million visits per year and am working on a 3rd site that attracts about 500,000 visits per year.

I was just lucky to get the traffic - basically started a site that was naturally viral. I don't know how to program, I just know how to code HTML/CSS, so I've been running it as a completely static site this entire time. It needs an update badly.

The traffic took off almost immediately, I had it on a hosted server that crashed and I got a bill for almost $1,000 for overages. Moved it to a dedicated server and the rest is history.

<comment><AUTHOR> @ilikecars - awesome job. love your sites.

what would you recommend is the quickest way to get to 1m for people just starting out?

best,

</comment></comment><comment><USER4> This would be a great Quora question. Why don't you go ahead and ask there and post a link here?

<comment><AUTHOR> @alpb - Your wish is my command! [http://www.quora.com/Startups/Which-Quora- members-were-able-...](http://www.quora.com/Startups/Which-Quora-members-were- able-..).

I'd still love to hear if anyone here at hackernews has any tips or stories.

<comment><USER5> The above link is incomplete, its throws a 404 Not Found error. Here is the corrected one [http://www.quora.com/Startups/Which-Quora-members-were- able-...](http://www.quora.com/Startups/Which-Quora-members-were-able-to-grow- a-site-from-0-to-a-Million-unique-visitors)

<comment><AUTHOR> nivla,

thanks! yea the link got cut off.

you are right, the correct link is: [http://www.quora.com/Startups/Which- Quora-members-were-able-...](http://www.quora.com/Startups/Which-Quora- members-were-able-to-grow-a-site-from-0-to-a-Million-unique-visitors)</comment></comment></comment></comment>


US Government Makes Slight Concession in Twitter's Warrant-Canary Suit - <AUTHOR> http://justsecurity.org/20850/government-slight-concession-twitters-warrant-canary-suit/

<comment><AUTHOR> The article also is a good overview of the legal issues around warrant canaries, from an actual lawyer and faculty member at an institute that focuses on these kinds of things.</comment>


Parallel tests. Use all your processor cores to speed up your development - <AUTHOR> http://iafonov.github.com/blog/parallel-tests.html

<comment><USER2> It used to be that parallel tests bundled up the tasks in "groups" and went one group at a time. e.g. 12 tests on 4 cores ==> 4 groups with 3 tests each.

The problem was that some of the groups might have ended up with tests that take 5 minutes each (finished after 15 minutes) and other groups end up with the 20 second ones (finished after 1 minute). Did that balancing every change?

Another question: How does this work for different RSpec formatters? (specifically: junit xml output or html output). Will it still result in a single file?

<comment><USER3> And just like that, we're on the cusp of reinventing batch scheduling! :D

In all seriousness though, I think that a look at OS scheduling would provide useful inspiration for test scheduling.

<comment><USER2> Just a queue that forks processes would work fine, no need to get into OS details :D

</comment></comment></comment><comment><USER4> I guess I will have to come up with a new excuse when I get caught browsing HN now.

</comment><comment><USER5> Are there any similar tools for Python?

<comment><USER6> If you're using nosetests, there's a --processes=NUM option that comes from the multiprocessing nose test plugin, but you should make sure all your tests are safe to parallelize, which, might be very tricky if you didn't think about parallelization before hand.</comment></comment>


Cool new technology - Fotowoosh Will Turn Any Picture Into A 3D Image - <AUTHOR> http://www.techcrunch.com/2007/04/15/fotowoosh-will-turn-any-picture-into-3d-image/ <comment><USER2> Is this the same group of people that I met at startup school, who were showing their stuff to Mitch Kapor, or a whole other group of people working on the same thing?</comment>


A Complete Program - <AUTHOR> http://richardmavis.info/a-complete-program <comment><USER2> > Some might see the expansion of a single compound command into a nearly > 200-line script as a sign of everything wrong with modern software > development. And, on one hand, that's a fair point. But, on the other, the > result is pretty nice.

I wouldn't call it "everything wrong with modern software development", but I do think that some of the spirit of the Unix philosophy, with small, simple tools that can be composed in gestalt to get something useful, is lost with this solution.

<comment><USER3> Not to mention that this is a solved problem with the "at" and friends commands.</comment></comment>


5 reasons Not to choose Atlassian JIRA for agile projects - <AUTHOR> http://sensinum.com/blog-post/5-reasons-not-to-choose-atlassian-jira-for-agile-projects/ <comment><USER2> I love also the other part about why JIRA might not be the perfect tool :)</comment>


Where will humans live if Earth becomes uninhabitable? - <AUTHOR> https://www.ft.com/content/5312d95a-b796-11e9-8a88-aa6628ac896c <comment><USER2> K2-18b is a possibility, but it's 111 light years away, and the fastest we can go right now is 692 thousand KPH (the Parker probe), or 0.06% of the speed of light, and that is not sustainable over a long journey. Even if we could get to 12% speed of light [2], it would still take close to a millennium to get there (925 years). Theoretically possible in a generation ship, but even more could go wrong with a ship then with a dome colony, and there would be no raw planetary resources to use for repairs.

K2-18b was recently found to have water and be the most likely habitable planet we've discovered so far[1].

The problem with dome solutions (Mars and Moon) is that there is a lot that can go wrong with a dome. Eventually it likely will suffer a catastrophic failure, at which point you hope there have been sufficient redundancies built in and they work. Mars might be terraformed, but there's also the question of should we do that if we've found indicators for the potential of life?

Mars is our best bet though, for migration in the next 200 years, which may be needed at the rate global warming is occurring. Best of course would be to mitigate climate change as much as we can.

[1] [https://www.cnn.com/2019/09/11/world/water-atmosphere- exopla...](https://www.cnn.com/2019/09/11/world/water-atmosphere-exoplanet- scn/index.html)

[2] [https://www.livescience.com/55981-futuristic-spacecraft- for-...](https://www.livescience.com/55981-futuristic-spacecraft-for- interstellar-space-travel.html)

</comment><comment><USER3> Nowhere.

If Earth becomes uninhabitable, mankind will die out.

You can imagine all sorts of 'pie in the sky' scenarios, but the bald truth is that mankind can only exist on Earth for any worthwhile length of time. (Which is why all those 'Let's Go to Mars' expeditions will be in reality 'Let's Die on Mars Very Soon from Lack of Food, Water and Oxygen' expeditions.)</comment>


Ask PG:  What makes the Wufoos such animals? - <AUTHOR>

74 days ago, you said:
"the Wufoos are such animals that, on their territory, no one could compete with them, not even Google"
I asked:
"Can you be a little more specific? Maybe 5 or so bullets. What kinds of things should the rest of us be focusing on to be more Wufoo like competitors. I'd love to be so good that pg would never want to have me as a competitor."
You responded:
"Thanks; I think I may have just figured out what to talk about at startup school."
The link:
http://news.ycombinator.com/item?id=110725
Since you changed your mind about your Startup topic, how about a bonus essay?  Or even a short answer here.  Aspiring animals want to know.
Thanks. <comment><USER3> Small story:

I was investigating wufoo.com one day, and was mightily impressed - <USER2> impressed that I sent them an email nitpicking some extremely minor issues (the first and only email of its kind that I've sent).

The grammar issue I raised was fixed almost immediately, and fixed by completely replacing the problem word and all of its various forms.

The searchbox alignment was changed perhaps a week or two later, probably with an unreasonable effort to benefit ratio (good old HTML/CSS issues).

Their response showed me that the wufoo guys care, and that they know how to debug problems instead of just superficially fixing symptoms.

That search bar still has some minor flaws though. I get a hand pointer over the search icon, but clicking it does not illicit a response. And I also get a hand pointer over the right corner of the search bar, which is a little weird (clicking there also does nothing).

I don't know exactly what it is, but there is something about that website that resonates with me (I actually have never used the service), and it drives me to pipe up with crap like this, which is not typical of me.

<comment><USER4> Did they ever respond to your email? When I sent them nitpicks their reply was all snippy about it.

<comment><USER5> Hey Aaron, for that, I'm going to have to take the blame and offer my apologies. (I think I apologized before, but here it is again). Your nitpicks were actually really great feedback and addressed the kind of design details that make all the difference between what's good enough and what's great in an interface. Unfortunately, they were 1) covering stuff that was near the bottom of our priority stack because we were just trying to launch at that point 2) I was still an asshole during that period and hadn't fully learned the value of users yet: [http://particletree.com/notebook/reflections-of-an- interface...](http://particletree.com/notebook/reflections-of-an-interface- designer/)

I offer no excuses. Thanks again for taking the time to help us then and I'm sorry that I left a bad impression for my reactions.

<comment><USER6> You are awesome.

Seriously. Users are fucking awesome, but people like you, people who understand users and are completely transparent about their process are even more awesome.

Thank you for the inspiration.

</comment></comment></comment></comment><comment><USER7> The final talk grew out of that idea. I didn't end up mentioning the Wufoos by name, but they are extraordinarily dedicated to their users.

<comment><AUTHOR> I can't imagine a better answer.

The good news: I feel better already because I have always been extraordinarily dedicated to my users.

The not so good news: I'm so dedicated that I'm often afraid to release soon enough. Just last week, a customer accused me of being a perfectionist and said, "Just give me what you've got." Ewww. I have to find a happy medium.

<comment><USER8> Some years ago I was trying to deliver a product in the face of rampant perfectionism - the kind that never delivers - when, so the story goes, I said "There is a level of mediocrity people are willing at accept, and I'm all for delivering it."

I cringe every time it's quoted back to me - usually after I've heaped scorn on some prematurely released product. I was trying to make the point, of course, that after six months in the bat cave our product would benefit from some customers more than the customers would benefit from our product. (It's now #1 in its market thanks to those same customers).

Knowing when to pull the trigger is an art. There really is a level of "mediocrity" where no amount of spit and polish trumps getting a product in front of customers.

</comment></comment></comment><comment><USER9> I saw this in the wufoo FAQ:

We've done everything possible to ensure the safe keeping of your data and the data you collect. Our servers are located at 365 Main and backed up onsite and offsite–every 12 hours in Toronto and every 24 hours in Virginia.

i'm using opera 9.26 with automatic character encoding on.

(sorry, this may not be the best place to submit such feedback...)

</comment><comment><USER10> What makes you think he changed his mind about what to talk about at Startup School?

<comment><USER11> My guess is because your competitor having "benevolence" does not exclude you from having it. It is not a scarce resource that only n parties can use.

<comment><USER10> And yet, none of their competitors has as much benevolence as Wufoo (certainly not Google). The Wufoos are on a mission from God, and you really don't want to get in the way of people like that (you can see what happened to all the cops chasing Jake and Elwood...those guys never stood a chance). Wufoo is kinda like that.

It seems pretty obvious to me that pg's talk was exactly about what makes Wufoo such a terror. They have a near infinite supply of morale built right into how they approach their business...they can't fail because it would never cross their mind to accept failure because what they're doing is The Right Thing--as long as they do The Right Thing, they have succeeded. And as long as they have that approach and you don't, you wouldn't want to try to beat them in their space. And, of course, having "beat Wufoo" as one of your guiding principles you would have already lost.

pg may be getting a bit zen on us, but I think there's a real kernel of truth in there.

<comment><USER11> I have some reservations about your claim that "having "beat Wufoo" as one of your guiding principles you would have already lost.". Namely, it scares me that we're so willing to just assign the high ground to one group, and say that they trying to dislodge them is not "being good".

I realize that what you are saying is that your goal should be to "be good", and that if your goal is to beat Wufoo, then your goal isn't to be good. But that's a slippery slope. My goal might be to make the best product in this market, and that implicitly means that I want to beat Wufoo by the simple virtue of being better than them.

(Disclaimer: I have nothing against Wufoo. I haven't really used their product either).

<comment><USER10> "Namely, it scares me that we're so willing to just assign the high ground to one group, and say that they trying to dislodge them is not "being good"."

You've misinterpreted my intent (and are easily scared). If you knew me, and the way I talk about competitors of Virtualmin and VM2 (who, generally, are not doing good by their users), you'd know that I don't have a problem with taking aim at competitors. But, it's an issue of mindset and morale, which is a core part of pg's talk. If you decided you have to "beat Wufoo" in order to be successful, every day that you aren't beating Wufoo is a day that you've lost. As another speaker at Startup School pointed out (in a different context, but it applies here) losing all the time really sucks. So, if you're thinking "I've gotta beat Wufoo" and Wufoo is thinking "I've gotta make an awesome product for my customers" you will lose and by losing you will find you feel more and more drained every day. While your competitor that is thinking "I made my product more awesome today and users loved it!" is going to feel great. They will come back the next day ready to do it again, while you'll come back the next day thinking, "This sucks."

That's all I'm saying. No one has a monopoly on "good". But, if a market already has a product that clearly meets the definition, it might be wise to pick another market. Nobody is saying you can't possibly beat Wufoo...but, pg said he wouldn't want to try. You, or anyone else, are welcome to go against that advice, but you may find it's a harder row to hoe than you expected.

<comment><USER11> I think we agree more than we disagree, and I'm sorry for doing a bad job of getting my point across.

I agree that if you set out to "beat Wufoo", then you are not going about it the right way, and you'll probably lose. What I worry about is that if you set out to "make the best product for your customers", and you don't believe Wufoo is it, then in some way, you have an implicit goal of "beating Wufoo", but one which I find acceptable.

I also entirely agree that a market which has a "good" product (both in terms of the product, and in terms of the intentions) might be the wrong market to enter (Google and search is also an example). However, I think we both agree that it is a market that you CAN enter, and you CAN win, even though it might be harder.

Hopefully that makes more sense.

<comment><USER12> I am reminded of the poem by Matsuo Bashou -

古人の跡を求めず、

古人の求めたるの所を求めよ。

 _kojin no ato wo motomezu,

kojin no motometaru no tokoro wo motome yo_

Seek not to follow in the footsteps of the wise;

seek what they sought.

(aside: argh! typsetting poetry with the HN markup facilities available is frustrating.)</comment></comment></comment></comment></comment></comment></comment>