JAB Code – A high-capacity 2D color bar code - <AUTHOR> https://github.com/jabcode/jabcode <comment><USER2> for those decrying the limited use of 2d barcodes in the US or in europe, you've never set foot in a manufacturing environment.

2d barcodes are used for cradle-to-grave inventory tracking by systems like Glovia and SAP. everything from transmission gears to soda pop are tagged during manufacture with numerous 2d barcodes that change at different stations, and at different times.

it doesnt matter what your new standard claims to achieve, it is useless without industry adoption. Toyota, Honda, Yamaha, Ford, Dell, and countless other manufacturing titans have invested collective billions into the QR implementations of their factories and arent going to re-tool just because your standard has colors.

QR is also massively resilient to failure. Try this experiment: cut a QR code in half, try to read it. It will succeed. This resilience is pivotal in harsh environments and especially during international/trans oceanic shipping.

black and white QR can be engraved on shipping containers and is resistant to corrosion, solvents, and the environment around it. QR codes are regularly burned at thousands of degrees as part of the heat treatment process for hardened steel, and still perform. Vision systems for forklifts and robotic cranes at shipping yards (most are robotic yards these days) rely on near/far vision systems developed by Intermec and other companies to read a code the size of a postage stamp from up to 150 meters away.

<comment><USER3> I suppose that color-based codes have more density per "pixel" (2-3 bits), so they can be used to encode relatively large amounts of information. Try encoding 1kb as a QR code; it will become pretty unwieldy, if it's possible at all. Think about the size of a reasonable cryptographic public key; would it be nice to have it optically readable sometimes?

Tagging things during manufacture is a different application area, with different constraints and requirements. Bar codes are not gone because QR codes are here, QR codes won't be gone because color codes appear.

<comment><USER4> A B/W randomart image which uses alphanumeric and special characters, like the one used in ssh-keygen itself when generating keys, would be enough. With current tech, Adding colors is just a recipe for disaster in environments which need maximum reliability.

Personally, I think QR codes are just fine for manufacturing but as for encodings meant for end-users, I think we should be focusing on making them more human-readable or at least visually comparable, without sacrificing bit- depth.

Still, this tech was really neat to play around with and I hope something good comes out of all the work put into it.

<comment><USER5> Some kind of symmetry would already really enhance how nice QR codes look to people.

</comment></comment></comment></comment><comment><AUTHOR> To copy a comment from a Github issue [1], comparing the different implementations:

\- CRONTO, PM-Code and HCCB and AuthPaper are proprietary. CRONTO has attracted some usage mainly by banks, PM-Code looks like vaporware, AuthPaper seems inactive and HCCB is dead [2].

\- CobraKing seems to be a 2012 research project, unmaintained

\- HCC2D seems to be mainly academic exploration

Papers and results similar to HCC2D pop up periodically (i.e. [3]), but unfortunately nobody has released any (experimental) source code. It quite frustrating. For example, AuthPaper implemented their solution on top of ZXing, but they never contributed back. They apparently thought they could make some money out of it, but now that their venture is inactive, their ZXing modification is in limbo as well.

From my one-hour research, that makes JAB Code the only actually FOSS implementation of a high capacity 'barcode'. If you know of other (FOSS) implementations, please let me know.

I'm quite surprised JAB Code has existed for so long in a fairly production- ready state without attracting much attention. It deserves much more, looking at the rest of the field.

[1] [https://github.com/jabcode/jabcode/issues/2](https://github.com/jabcode/jabcode/issues/2)

[2] [https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode#Di...](https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode#Discontinuation)

[3] [https://pdfs.semanticscholar.org/95c7/fe455a084b0f0ce9923e99...](https://pdfs.semanticscholar.org/95c7/fe455a084b0f0ce9923e996652156c1f7998.pdf)

<comment><USER6> Thanks for doing this research! I've long dreamed of making a "print to binary to paper" backup system, but all the 2D barcodes I considered had patent encumbrances.

<comment><USER7> This was the motivation behind what I tried to make: [https://github.com/lf94/blots](https://github.com/lf94/blots)

<comment><USER8> related: [https://github.com/cyphar/paperback](https://github.com/cyphar/paperback)

</comment></comment></comment></comment><comment><USER9> People here seem to think that this is someone's weekend project, not the result of serious engineering from an institute of the Fraunhofer Society (which it is).

The spec can be found at [https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/...](https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/TR03137/BSITR03137.html) (63 pages, the BSI is the German Federal Office for Information Security, a government agency), and this is slated to become an ISO standard.

Here's the Google translation (original in German provided somewhere else by @JdeBP) of an article introducing the tech:

[https://translate.google.com/translate?hl=fr&sl=auto&tl=en&u...](https://translate.google.com/translate?hl=fr&sl=auto&tl=en&u=https%3A%2F%2Fwww.ident.one%2Fde%2F2018%2F07%2F30%2Fjust- another-barcode-jab-code%2F)

I agree with others that the master/slave terminology is unfortunate in new tech like this. Otherwise this looks pretty good.

<comment><USER10> So it is some research institutes weekend project. The process of making something an ISO standard is not as rigorous as IETF or IEEE. ISO has over 250 technical committees, cranking out useless standards all the time. Most members vote to approve whatever comes down the pipe if it doesn't impact them directly.

Looking closer at the spec you linked, it is tacked on to a standard for visual checksumming of printed documents. It isn't even moving forward on its own merits as a reasonable 2D barcode implementation.

<comment><USER11> I've just skimmed over the both specifications and haven't noticed anything that would indicate that this is a "weekend project". In fact, I'm impressed enough that I might work on an implementation in my preferred language (assuming a decent testing dataset is available).

What exactly are the technical issues that make you dismiss this project so harshly?

</comment></comment></comment><comment><USER12> One of the nice 'features' of QR codes is they're instantly recognizable as QR codes due to the 3 registration marks, and so it's obvious you could pull out your phone and scan one (not that anyone does that).

JAB codes just look like a jumble of colored pixels -- it's not obvious it's encoded data, if you were to see this "in the wild".

It kind of misses another potential feature, which is registration marks could also establish a baseline for colors, which a reader/scanner could then use to compensate for differences in color reproduction (due to printing / screen settings / etc).

<comment><USER13> Technical specification is here: [https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publicat...](https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/TechGuidelines/TR03137/BSI- TR-03137_Part2.pdf?__blob=publicationFile&v=2)

Every JAB code has four registration patterns in the corners, as well as multiple color pallets at fixed locations.

<comment><USER14> I think OP's point was that _humans_ can't recognize those features.

Edit: I should have said _untrained humans_.

<comment><USER13> I can recognize those features. Sure, you need to look for them, but why would anyone care to? Surely after encountering only a few RGB codes the average person will have no trouble inferring that a jumble of colored blocks against a white background is likely to be encoded data. Same "training process" as needed for QR codes - although in this case the quiet zone is not needed, so you _could_ use these in a deliberately obscure fashion if you wanted, which isn't a shortcoming.

<comment><USER15> Yes, you're able to realize that any given RGB mess-of-pixels printed somewhere is "likely to be encoded data", but maybe, you'll think, there might be _multiple_ standards for RGB-encoded data (there are) and so, what standard does this code obey? Is it one your phone can parse?

QR codes are able to be recognized _as_ QR codes, which means you're able to think "I could definitely scan that", rather than thinking "that is some data there, that I could maybe read or maybe not."

It's the same as the difference between saying that data on the wire is "a TCP packet" vs saying it's "HTTP." Yes, either way, you know that you've got some packets—but if you want to _parse_ them, you'd better be able to recognize the _format_ of those packets.

<comment><USER9> There are also multiple standards for black and white 2d bar codes.

This is backed by the Fraunhofer Society and the German government, and on tracks to become an ISO standard. It will be implemented in scanners (hardware and software).

<comment><USER16> Yes, and most people are not aware that there are multiple barcode standards, even with 1D barcodes. Ask anyone what the difference is between Interleaved 2of5, Code 39, Code128, UPC/EAN, PostNet, etc. and they'll be hard-pressed to identify any of the distinguishing characteristics that are immediately obvious to the trained eye.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> Reminds me of Microsoft's High-Capacity Color Barcode: [https://www.microsoft.com/en-us/research/project/high- capaci...](https://www.microsoft.com/en-us/research/project/high-capacity- color-barcodes-hccb/)

Wikipedia: [https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode](https://en.wikipedia.org/wiki/High_Capacity_Color_Barcode)

<comment><USER18> Microsoft comes up with a lot of neat little ideas. And also some bad ones. But mostly good ones.

<comment><USER19> Their "Household of the future" lab consistently shows off amazing tech that could be world changing, but the number that actually seem to come to production always seems remarkably low.

</comment></comment></comment><comment><USER20> I wonder what throughput it can give when used as an animated sequence of codes? I experimented with animated QRs for data transfer last week and the real maximum I've achieved was around 9KB/s. [https://divan.github.io/posts/animatedqr](https://divan.github.io/posts/animatedqr)

Using colored high-capacity encoding should yield much better results, given the decoder is as fast as QR one.

<comment><USER21> Cool. How does Apple's iPhone-to-Watch pairing animated graphic work? Maybe their technique has higher bandwidth.

<comment><USER22> Speaking of screen-to-watch data transfer, the Timex Data Link watch somehow accomplished this in the mid-90s. There must have been some dark magic to make it work on a watch-battery powered processor at the time.

[https://youtu.be/2VmtPaiOBwI](https://youtu.be/2VmtPaiOBwI)

<comment><USER20> That's definitely a dark magic! Thanks for sharing this.

</comment></comment></comment></comment><comment><USER23> My bank uses some colored pixelcode not unlike this one. I scan a code on my screen using a little device that I insert the bank card into.

It's cool, it works well and it's fancy, but every time I do banking I have to turn off my computer's "night light" mode.

I assume lots of people use color filters for various good reasons. Are these codes resisent to that? Else I'd truly prefer oldschool monochrome QR codes, to be honest.

<comment><USER24> This is pretty easily fixed by doing white balance correction. One piece of the barcode is always kept white, and it is used for color calibration. assuming the color transformation is constant across the entire code (which is the case in your example) you can undo some pretty large color shifts.

</comment></comment><comment><USER25> In case anyone missed it, a very interesting link explaining how QR codes work was posted on HN a few days ago[1]. I wish there was some explanation like this on this JAB code and how exactly it gives high capacity over the b/w code.

[1] [https://www.nayuki.io/page/creating-a-qr-code-step-by- step](https://www.nayuki.io/page/creating-a-qr-code-step-by-step)

<comment><USER26> Well, there is this:

> _The technical specification of the barcode is available as BSI TR03137 - > Part 2_ [0]

It's apparently research done by the German Federal Office for Information Security.

[0] [https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/...](https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/TR03137/BSITR03137.html)

</comment></comment><comment><USER27> How well does it hold up in adverse conditions, like outdoors in bad weather, or dark light, or a drunk person trying to take the photo?

<comment><USER28> It doesn't appear to have anything to correct for orientation like the 3 corners in a QR code.

Edit: ok, found the docs/description of the finder patterns: [https://imgur.com/a/ZXXLtQ0](https://imgur.com/a/ZXXLtQ0)

<comment><USER29> > A JAB Code contains one master symbol and optionally multiple slave symbols. > Master symbol contains four finder patterns located at the corners of the > symbol, while slave symbol contains no finder pattern

</comment></comment></comment><comment><USER30> Yet again another barcode / QR proposal.

Can't speak for the Americas, but here in Europe QR codes aren't used that much, I feel, except maybe for mobile payments. Compare this with China, where QR codes are in literally every store, each taxi driver has a printed one nearby and even street food cards use them to pay. I can't see this one becoming popular, given how many are printed on glossy / dirty paper (often using black and white printers as well). I am amazed though how well the standard QR code works in most cases, even with everyone adding an icon in the middle of it (and basically removing error correcting redundancy).

An interesting QR thing I picked up last time I was there is how circular QR codes are becoming more popular, see e.g. [https://irf.fhnw.ch/bitstream/handle/11654/17880/Fokusreport...](https://irf.fhnw.ch/bitstream/handle/11654/17880/Fokusreport_stamm.pdf?sequence=1) and [https://en.wikipedia.org/wiki/ShotCode](https://en.wikipedia.org/wiki/ShotCode) for earlier approaches but WeChat has started using its own thing, kind of like Facebook and Snapchat are doing: [https://chinachannel.co/wechat- launches-new-mini-program-qrc...](https://chinachannel.co/wechat-launches-new- mini-program-qrcodes/)

<comment><USER31> I think it's the same for the Americas, but just because the average person doesn't use QR codes very much that doesn't mean that such technologies aren't being used in ways that aren't widely reported. For instance, I know someone who placed small barely-visible QR codes in videos that get passed off to editors so that each clip and frame number(and other info) can be detected programmatically despite editing software stripping out metadata. I think QR is one of those things that solves very niche problems that even the average engineer might not be made aware of.

People are quick to point out "nobody uses QR" but it's not exactly fair to expect ubiquity from something like that. My response would be the same for those in this thread saying "people can't recognize JAB codes like they can with QR." Well, those who find a use for JAB codes are _probably_ going to be the people using them 99% of the time(maybe more than QR because of data density), thus they're almost certainly know to know how to recognize them.

<comment><USER32> _People are quick to point out "nobody uses QR" but it's not exactly fair_

I think everyone uses them, but they just don't know it.

Pretty much every label on every consumer good (in America, at least) from cough syrup to Coca-Cola to computer chips has a tiny QR code on it. But since people don't actively engage with the code, they don't realize that it's there, and is a big part of the process of getting things from raw material to store shelves.

</comment></comment></comment><comment><USER33> An eight-colour code does not seem smart for printed codes where most printers use only four inks. A colour code using cyan, magenta, yellow, white and black might be more reliable (although yellow could easily be confused with white). The PDF suggests 256-colour codes are supported, but that would mean luminosity is a factor, and I can't see how that would ever be reliable if the code is intended to be scanned with a camera.

<comment><USER34> The codes have palettes embedded to adjust to different lighting and ink.

</comment></comment><comment><USER35> Tried a few times with the "Scan" demo on [https://jabcode.org/create/](https://jabcode.org/create/) using Firefox for Android, but it appears to just get stuck displaying a loading spinner.

Seems to work in Chrome, so not sure what's wrong with the implementation to make it not work.

<comment><USER36> To add to this, I am getting vague error messages with any text of a certain length (longer than 100 characters or so) if I tweak any, or at least several, of the advanced settings.

</comment></comment><comment><USER37> Demo ([https://jabcode.org/create/](https://jabcode.org/create/)) worked on the first example I tried, then I tried using advanced settings and it threw an "Error Something went wrong" every time.

This was in Chrome.

<comment><USER38> With Advanced Settings you control the format and capacity of the code, so if you specify too many characters or too high of an error correction level it will fail (with that rather unhelpful error). Try increasing the version (which adds more pixels in the X or Y direction), or adding a few slave blocks.

(The above is based on my quick exploration with it on Safari, YMMV)

</comment></comment><comment><USER39> Their code generator makes codes that look quite pretty (if they're large). I imagine the patterns come from redundancy for error correction?

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

</comment><comment><USER40> What's the capacity of this thing? Don't see it anywhere obvious.

<comment><USER41> It's on page 13 of the spec. Up to 27kb.

<comment><USER42> It's actually indefinite by adding more slave blocks, the spec example shows how this works up to 60 blocks, but the algorithm holds beyond that.

</comment></comment></comment><comment><USER43> Imagine downloading a manifesto or something from a protest sign in a newspaper or on TV.

Imagine downloading a working application from a barcode (perhaps assuming you have the "reader" app which includes a set of software libraries to do some of the heavy lifting / batteries included) -- gameboy did it. It might be useful in a disaster, or an oppressive regime scenario, but at worst, it would be fun.

3D models? Retro game console with games distributed on paper?

My imagination is limited, but I have a feeling that barcodes are something waiting to meet some newly-possible potential with the advent of handheld scanners and very high capacity barcodes.

We tried VR and PDAs and cellphones and stuff in the late 80s/early 90s, but it wasnt until the 2010s they became something really useful; I wonder if barcodes will find some new life in the future, now that more capable and available hardware exists.

</comment><comment><USER44> Every screen and printer will display/print colors differently. This is not a good idea.

<comment><USER45> Every HN comment thread is full of armchair critics. Maybe the designer actually thought of this!

If the colors are quantized into a constellation, even significant error could be corrected.

<comment><USER46> Except if said colors fade over time or change their hue due to UV exposure like most pigments used for printing.

<comment><USER47> QR codes printed on thermal paper also fade over the course of a year and would be unreadable. There are always uncorrectable adverse conditions.

<comment><USER46> Sure. And if you light the paper on fire even 24pt Helvetica becomes unreadable.

But I'm sure you too feel that the failure modes of this colored barcode form a proper subset of the failure modes of its monochromatic counterpart.

<comment><USER48> Well, if your machine-readable color key fades as well, maybe it's not so much of a showstopper if the colors fade.

The primary problem I see is that so many industrial cameras today are black and white. B&W cameras can send at a higher framerate and you don't need to convert to greyscale as your first step in your algorithm, so it saves time to use b&w cameras.

</comment></comment></comment></comment></comment></comment><comment><USER49> A what point is someone just going to reinvent Piet [1]?

[1] [https://en.wikipedia.org/wiki/Esoteric_programming_language#...](https://en.wikipedia.org/wiki/Esoteric_programming_language#Piet)

</comment><comment><USER11> What is JAB's patent situation like? One of QR-codes most important attributes (for us, at least) is that patent threats are relatively low.

Has research been done to see how safe implementations are from infringing on currently-valid patents?

</comment><comment><USER50> Is it just me or is that uglier than a QR code?

<comment><USER51> on a phone with average brightness, it's okay. on a big monitor, it hurts my eyes looking at it, like green text on a red background. so i genuinely hope these never get used.

</comment></comment><comment><USER52> Seems similar to my ChromaTags approach from 2015:

[https://austingwalters.com/chromatags/](https://austingwalters.com/chromatags/)

My post goes a bit into more detail on how it works, and why for instance - the given colors were chosen. It appears they too use the Lab color space for instance.

<comment><USER53> I don't think they use the Lab color space, except if you define your own colors to use in the palette, did you see a reference to it?

From their encoding spec: > In order to optimize the decoding of JAB Code, the used colors shall be so distinguishable as possible. Therefore, the used colors shall keep a distance from each other in the _RGB color space cube_

> In case of 256-color-mode, the color channel R and G take eight values, 0, > 36, 73, 109, 146, 182, 219 and 255, and the color channel B takes four > values, 0, 85, 170 and 255, which will totally generate 256 colors.

Which is too bad, because your idea of using Lab with ChromaTags to enable quick and accurate finding of the symbol was a really insightful technique. The decoding algorithm they suggest seems like it would be slow, and their use of RGB seems like a whole bunch of issues due to color-selective fading, shadows, damage, lighting, incorrect printer calibration, etc.

</comment></comment><comment><USER54> There is more information at [https://www.ident.one/de/2018/07/30/just- another-barcode-jab...](https://www.ident.one/de/2018/07/30/just-another- barcode-jab-code/) .

</comment><comment><USER21> Is there a "human readable" bar code variation? I want something that's both scannable and typeable.

One use case is those placards for artworks at museums and galleries. I want to print something that's both easy to scan and easy to jot down.

<comment><USER32> _Is there a "human readable" bar code variation?_

Like a UPC code? Those have the contents printed right underneath.

</comment></comment><comment><USER55> How does this relate to the standard of the German ministry for Information Security (BSI) linked at the bottom of the README?

Note that isn't just one of many independent implementations as both the repository links to BSI _and_ vice versa.

</comment><comment><USER56> I am trying to think of possible use cases. If you came across an image like at [https://moonsun.gitlab.io](https://moonsun.gitlab.io) would you stop to scan it using your phone?

</comment><comment><USER7> I had this exact idea about a year ago: [https://github.com/lf94/blots](https://github.com/lf94/blots)

Basically: cheap consumer printers suck. Don't bother.

</comment><comment><USER32> Somewhat off topic, but does anyone know the name of the crazy circular moving barcode thing that Apple uses to pair an Apple Watch with an iPhone?

</comment><comment><USER57> Isn't the colour a problem because of the white balancing and the way cameras "change" the colour when taking a shot?

</comment><comment><USER58> People print codes on glossy papers or try to scan them in various light conditions. This is not alternative for outdoor placement.

<comment><USER59> All barcodes can be printed on glossy papers, so that's not a unique challenge. Various light conditions aren't terribly difficult to account for, especially when known colors are involved (as they are here).

</comment></comment><comment> r-w Very cool! How's it work on a smartphone camera? ;)

</comment><comment><USER60> The website [https://jabcode.org/](https://jabcode.org/) gets a solid 100 in Lighthouse - NICE!

</comment><comment><USER61> So, how many bytes can this encode? I found no reference for that.

</comment><comment><USER62> > master symbol and slave symbol

nooo

<comment><USER63> Laughed hard

</comment></comment><comment><USER64> I wonder if the 'Master'/'Slave' terminology is necessary here? Aside from being problematic, does it really describe the setup more than 'Primary'/'Secondary'?

<comment><USER65> Is it problematic outside of the US? That said, possibly not the most immediately illustrative choice of terms; master/slave usually implies who's in charge, not a spatial relationship.

<comment><USER59> Slavery/human trafficking is not a US-only thing.

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

</comment></comment></comment><comment><USER66> Cameras only see one colour per pixel (i.e. Bayer colour filter array). Because our eyes are not so acute at resolving colour compared to luminescence this tradeoff works well.

But in this context I'm not sure at a pixel level how much 'extra' information is added by _removing_ red/green from the blue pixels, green/blue from the red etc.

In other words, if the image came from a digital camera, to actually stuff more information into the same number of pixels, colour may or may not help. In any case working with the raw CFA bayer source image would almost certainly be beneficial over interpreting the image after it has been converted to a normal RGB image (losing information in the process)

<comment><USER13> This is an interesting point, but it assumes perfect optics. If the image is slightly out of focus, I think three lower resolution images in different spectral regions is a big win.

<comment><USER66> I think it depends on the context - if you're designing the whole system from bar code to camera, I'm not sure that the color will help. But in that case you can assume close to perfect optics and I'm not sure if you would find an improvement or the opposite over a monochrome setup with better SNR.

On the other hand if you're stuck with things like mobile phone cameras, and can only control the bar code side, then Id imagine you'd see some improvements as you say.

An interesting middle ground would be if you could get the raw image from the sensor before a generic debayer algorithm gets applied.

Good luck, keep up the good work... i've worked commercially on optical barcode systems and it's a super interesting topic (tho looks like my post has been downvoted out of existence so maybe you wont see this).

<comment><USER13> I don't want to represent myself as one of the inventors! I just saw this on HN, skimmed the technical report, and found a bunch of comments on HN that could be answered with my cursory knowledge thus gained.

What I can offer is that it is now possible to get memory buffers containing "raw" sensor data from mobile phones. I've only done it on iPhone so far, but the "camera2" API on Android looks to support this as well. It only works in single-shot photo mode - I suspect there isn't the bandwidth to do 30 fps streaming, and they rely on the ISP for debayering and color space conversion in video mode.

iPhones seem to have negligible chromatic aberration in their raw output, weirdly, so that isn't a blocker for full sensor resolution grayscale imaging. Someone could exploit this to write the world's greatest mobile phone QR reader app.</comment></comment></comment></comment>


Scared to Travel to 'Dangerous' Places? Don't Be - <AUTHOR> https://www.bloomberg.com/opinion/articles/2019-09-04/world-s-most-dangerous-countries-to-travel-to-aren-t-that-scary <comment><USER2> So is it like base jumping? There are plenty of nice places to visit which are not very dangerous. Why would you want to go where the chances of violence are much higher?</comment>


Whitespace Steganography - <AUTHOR> http://darkside.com.au/snow/ <comment><USER2> Whitespace is good, but with Unicode you can do even better by using invisible characters such as ZERO WIDTH SPACE (U+200B) and ZERO WIDTH JOINER (U+200D). I once made a proof of concept[1] using those two characters. It can converts arbitrary data into invisible text by using U+200B as bit 0 and U+200D as bit 1.

Most platforms (Twitter, Reddit, Hacker News) accepts those characters so you can paste invisible messages there. The illusion falls down as soon as you use a low-level text editor such as vim which marks exotic characters in a specific manner (by displaying their hexadecimal codepoint, as it happens). This is where whitespace can be more powerful, given its mainstream usage.

[1] [https://github.com/foobuzz/ium](https://github.com/foobuzz/ium)

<comment><USER3> This is slightly more recognisable though. One of the key things you're trying to achieve with steganography is for an adversary to not even notice you're trying to send a message, and ideally even if they suspect something you have plausible deniability (which may or may not be enough).

Steganography in the wild: [https://www.youtube.com/watch?v=BgelmcOdS38](https://www.youtube.com/watch?v=BgelmcOdS38)

</comment></comment><comment><USER4> Even better, you can use spacing within a line to create a 3-D effect to emphasize certain words: [https://en.wikipedia.org/wiki/ASCII_stereogram#Text_emphasis](https://en.wikipedia.org/wiki/ASCII_stereogram#Text_emphasis)

<comment><USER5> I fail to see a secret message. What exactly should I be looking for?

<comment><USER6> It's a stereogram, you have to cross your eyes (or relax to infinity, I could never get that right) to see it. In the one linked, it shows 'John Smith is responsible' pretty clearly. Like the Magic Eye books... but in text. Works quite well actually.

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

<comment><USER7> Compared to some single image stereograms, it's pretty easy for me to see the 3D effect either way. The "straight" view shows the message in front of the rest, cross-eyed it's behind.

Of course, it's not particularly "secure", there would have to be layers of encryption of some kind if the goal is keeping the message hidden.

</comment></comment></comment></comment><comment><USER8> If you want your Perl files to be invisible, Acme::Bleach hides all of your source code by encoding it as white space: [http://www.perlmonks.org/?node_id=967004](http://www.perlmonks.org/?node_id=967004)

<comment><USER9> A major problem with being a Perl developer is that nothing impresses me any more

</comment></comment><comment><USER10> Earlier use of whitespace coding: [http://www.templetons.com/tech/proletext.html](http://www.templetons.com/tech/proletext.html)

... Invisible formatting information is embedded in trailing spaces and tabs on the ends of lines in an ordinary looking document. In addition, "blank" lines contain spaces and tabs with hidden formatting meanings. Assuming typical 60 column lines, one can have over 300 different codings on the end of a line without going past 80 columns. (Far fewer are needed.) On a blank line, almost a billion codings are possible.

Documents with invisible formatting always start with a magic line, which begins with "<SP><SP><TAB><SP><SP><TAB>" followed by version encoding. Thus documents can be spotted and formatted even without a Mime Content-Type header for this new text type. This otherwise useless combination of spaces and tabs on a blank line should virtually assure that random documents are not treated as formatted. ...

</comment><comment><USER11> This neat and very readable page layout is rather pleasant. It's not often that you find sites like these anymore.

I also looked at the page's source to see if anything was hidden in trailing whitespace there, and wasn't disappointed by what I saw either.

</comment><comment><USER12> Until you run into that one Whitespace <[https://en.wikipedia.org/wiki/Whitespace_(programming_langua...](https://en.wikipedia.org/wiki/Whitespace_\(programming_language\)>) programmer that has syntax highlighting turned on.

</comment><comment><USER13> Reminds me of an underhanded code submission I saw a couple of months ago, where it looked like a 1-liner script, but the malicious part was encoded in the number of spaces trailing each line of the file.

</comment><comment><USER14> I wrote a tool to do this for fun and to learn node: [https://github.com/wjessup/secret-js](https://github.com/wjessup/secret-js)

</comment><comment><USER15> And it all falls apart if one is using a text editor which highlights trailing whitespace (like emacs).

The point of steganography is to hide that there is even a message; this fails at that.

<comment><USER3> But if you saw that would you assume it's an attempt to hide a message? How often do you open up webpages in your editor and inspect the line endings?

All steganographic methods can be detected if you start actively looking for them. The point is it's very hard to know what to look for, especially if you come up with your own coding which you do not share publicly (off the top of my head: using commas and full-stops to encode a bitstream in tweets.)

</comment></comment><comment><USER16> See also: adding side channel data to JSON files with whitespace. [http://stackoverflow.com/a/23275699/300224](http://stackoverflow.com/a/23275699/300224)

Maybe the most controversial answer on StackOverflow.

</comment><comment><USER17> I'm wondering if steganography could become a practical transfer method in the event that governments start to prohibit encryption (and of course steganography).

Will they prohibit spurious whitespace in documents?</comment>


Looking for great architecture courses to get HSW/LU Credits? - <AUTHOR> http://www.isplora.com/Projects/antinori

<comment><AUTHOR> Isplora's new online education platform encourages us to explore the world around us by offering high quality video documentaries on the finest contemporary Italian architecture, as well providing the latest news, photos and details of events in its daily 'Digest'</comment>


Fly with Me - <AUTHOR> https://aeon.co/essays/digital-culture-built-on-the-seamless-speed-of-the-jet-age <comment><USER2> Nice essay on the "jet age" aesthetic. If you're interested in some excellent photographs of this subject and period, check out Garry Winogrand's _Arrivals and Departures_ and the airport photos in _1964_.

Examples:

[https://i.pinimg.com/736x/5d/28/fe/5d28feade063b435409a90ddb...](https://i.pinimg.com/736x/5d/28/fe/5d28feade063b435409a90ddbb6f77eb.jpg)

[https://i.pinimg.com/originals/93/a5/2e/93a52e3e66703c68f895...](https://i.pinimg.com/originals/93/a5/2e/93a52e3e66703c68f895b6343fd47a64.jpg)

[http://2.bp.blogspot.com/-N-1Qg0bUCdw/TXgFrbKWjxI/AAAAAAAABS...](http://2.bp.blogspot.com/-N-1Qg0bUCdw/TXgFrbKWjxI/AAAAAAAABSM/_55UZMNFwOU/s400/Untitled-24.jpg)

[https://i.pinimg.com/736x/f1/63/f9/f163f925a99a1f6b73137b3ef...](https://i.pinimg.com/736x/f1/63/f9/f163f925a99a1f6b73137b3efdf5eb07.jpg)

</comment><comment><USER3> Show that middle-aged, middle class American woman a modern national flight with people packed like god-trusting sardines who refuse to wear masks and I'm sure she'll be thrilled to fly Pan American.</comment>


Rat Brains Can Be Linked - <AUTHOR> http://www.nytimes.com/2013/03/01/science/new-research-suggests-two-rat-brains-can-be-linked.html?hp <comment><USER2> It gives hope we are getting closer to the brain "protocol" so we can have a reliable neuro interface.</comment>


A Starter's Guide to Writing Effective Meeting Notes - <AUTHOR> https://meetnotes.co/writing-effective-meeting-notes/ <comment><USER2> I'm not really sure why this is on the front page of HN, but I'll add my thoughts because it is.

> To make your meetings successful, follow up on action items

This is it. Back when I was doing consulting, the only thing that mattered when I came out of the meeting was action items. Often, even if the agenda is X, something unexpected will have happened (often the reason why the meeting was called), and you'll actually spend the bulk of the time talking about Y. You should still have an agenda, but I found that clients appreciated most when I drilled at the action items. This also makes it really easy to wrap up meetings. When you get toward the end, you say something like: "We're starting to get short on time, here are the action items that I have from this meeting; x, y, z. Did I miss anything?"

Talking about stuff is pointless unless it leads to some action.

<comment><USER3> > Talking about stuff is pointless unless it leads to some action.

True, but why do people do it so much? I think it's because meetings are indulgent in several ways: usually you aren't working hard in a meeting, you interact with people you (usually) like, and the organizer gets to feel busy and command attention.

I used to work as an auditor (no idea why they let me) and I feel like we had way more meetings than necessary, and I sort of feel like it was because people were lonely. I could be totally wrong, but I remember concluding that after two years of frequent, pointless meetings.

That's why I like standing up during a meeting (when reasonable), because it mitigates forces that lead toward pointlessness.

<comment><USER4> Not all meetings are for deciding on action items. Sometimes you have to meet so that everyone is exposed to the same information at the same time. Sometimes, you meet to decide action items, even if everyone already knows what the action items are, so that people know that their input was factored into the action item.

And yes, sometimes you have meetings so you can waste time/spread the blame/look busy.

<comment><USER5> > so that everyone is exposed to the same information at the same time

Which is usually my least favorite meeting—the one that should have been an email.

<comment><USER6> In my experience people don't read bulk email. At least not closely. They might not pay attention in a meeting either, but it's more likely especially if you discourage use of electronic devices.

</comment></comment></comment></comment></comment><comment><USER7> In Richard Branson's book he makes a big deal about keeping detailed notes of meetings, and how useful he's found the practice to be over his career

its really probably a very underrated habit, especially as a new, low on the totem pole person

it probably makes you a very useful gatekeeper of the information flow

the process of doing it probably reinforces the information flow into your brain for useful future brainstorming (it forces you to pay attention)

also it gives you the basis for which you can influence future decisions "On (so and so date), according to my notes we said we wanted to do X, so now we should do Y"

\</comment><comment>-----

a suggestion,

run how people's ideas are presented in your notes to them directly, before you distributed them to the wider audience

"I'm trying to get the meeting notes together, this is how I have what you said about Y, do you mind looking at to make sure it accurately captures what you were saying?"

"That's not what I said" or, more likely, "That's not what I meant" is a good way to create dysfunction where none needs to exist

<comment><USER8> I am a big fan of meeting notes in a wiki, (nearly) immediately published for everyone to see.

"That's not what I said/meant": okay great, go edit the page and clarify.

<comment><USER9> NO edit wars for meeting minutes are a BAD thing any errors or omissions should be addressd in the next meeting

<comment><USER6> Yes, only the secretary (or official minute-taker) should be allowed to change the text of the minutes, and once "approved" the minutes should be read-only.

Corrections can be submitted to the secretary by email in advance as a convenience.

</comment></comment></comment></comment><comment><USER10> And, as an excellent Twitter thread recently noted: take notes at the front of the room.

[https://twitter.com/Delafina777/status/846086667790311424](https://twitter.com/Delafina777/status/846086667790311424)

This is not solely valuable for avoiding stereotype traps, it's a useful career tip for anybody.

<comment><USER11> It's not what you do, it's the way that you do it [music note emoji]

</comment></comment><comment><USER12> Lawyers often seek to get copies of minutes of relevant meetings, phone calls, etc., for use in litigation. A few years ago I posted some note-taking tips that _your_ lawyer will love you for: [http://www.oncontracts.com/note-taking- in-meetings-and-phone...](http://www.oncontracts.com/note-taking-in-meetings- and-phone-calls-three-easy-habits-your-lawyer-will-love/) (self-cite, obviously).

</comment><comment><USER13> My system for notes is very simple, and similar to what was outlined in this article.

Before the meeting:

Other than daily stand-ups, no meeting invite goes out without an agenda. We have a policy that anyone can freely decline a meeting without an agenda. (If I'm really in a rush, I'll limit the agenda to just a one-sentence purpose statement about why we are having the meeting.)

Meeting notes look like this:

# Meeting Date

Wednesday March 29th, 2017 @ 10 AM

# Attending

* Dave Dawson (firstname.lastname@example.com)

* Sally Smith (Sally@email@example.com)

* Joe Jackson (email@example.com)

# Invited

* Bob Billings (firstname.lastname@example.com)

# Meeting Notes

* (Copy and paste agenda here, then make minor edits over the course of the meeting to track updates / changes, and any action items people take on. I like bullets for readability.)

After the meeting:

I write a quick summary of the meeting notes and any action items, "Joe, Sally, and Dave spoke about XYZ. Joe will take care of a few additional action items, after speaking with Bob and The Client, and we will all regroup in a week. Bob was out sick and couldn't attend." This goes at the top so anyone with a short attention span can skim it.

Then I email everyone who was on the Attending / Invited list (or anyone mentioned in the meeting) with all the notes, and / or post it to the public meeting note storage location in Asana / Confluence / Whatever. Finally I create any followup meetings as needed. (If I'm feeling exceptionally anal, I'll create or update GitHub / Asana / Whatever tickets with the pertinent action items.)

</comment><comment><USER14> Since this is content marketing for meetnotes.co (which looks like a pretty cool service) I feel like it's reasonable to give some constructive criticism to the team behind the product.

Remove "Beta" from your marketing site. Please.

People, especially early adopters, know that software is made by people. If something goes wrong or doesn't work, people are willing to forgive other people. The beta label can only hurt you at this point.

Great work getting to the front page of Hacker News :)

<comment><USER6> Looks nicely done, what little I can see without divulging my entire Google calendar to the service.

But I'm honestly having trouble seeing what this does that isn't just as easily handled by Google Docs, Word, or any other editor.

<comment><USER15> I am not sure if you got to try adding an action item. You can just type "@ams6110 Need to do something" and meetnotes records it as an action item which would then be tracked and followed up, the key being follow-up and status tracking.

The idea there is that while taking notes I don't want to look at the screen and click a button to add an action item, set its assignee and due date etc. I would rather participate more in the meeting and just keep typing (touch typist should get me), with the tool being smart enough to parse it as an action item. Its not as smart as it should be, but thats where we want to be.

Another small but neat feature is interactive widgets. I am not sure if you saw the how you can run an instant rating with all the participating. Its just one widget right now, but we are planning to add many more like poll, survey, mini-workflows, scrum templates etc.

Let me know if that did / didn't make sense. Happy to hear feedback!

PS: Before this, I myself was a heavy user for Google Docs for taking notes.

</comment></comment></comment><comment><USER16> Taking the meeting minutes is one of those startlingly effective hacks to steer a project you've been landed with, without taking the blame for others' failures.

Always volunteer to take minutes, email them to all afterwards, keep them _short_ \- "under one page" was the rule in the paper days, these days I'd say "one desktop screen or two laptop screens". Shorter is better.

You control perception and you control ensuing actions. You (literally) write the narrative.

(Requirement: you at least need to know what your desired outcome is.)

Holy crap, it's like having cracked a secret code. Nobody in a corporation knows what the hell they're doing; look like someone knows even slightly and stuff actually gets done.

(Also: if you're not the white male in the room, it can seem to slot you in as lower status. But it's still a fabulously effective way to get everything done to your ideas. Jessica Price, who knows her stuff, recommends taking them standing at the front of the room, not off to one side: [https://twitter.com/Delafina777/status/846086667790311424](https://twitter.com/Delafina777/status/846086667790311424) YMMV, try stuff.)

</comment><comment><USER17> Good advice, particularly the point about not capturing conversations word for word. Much better to get the gist correct than strive to get everything exactly (and inevitably end up missing things).

I also like the "How Might We..." post-it strategy (outlined in [http://www.thesprintbook.com/](http://www.thesprintbook.com/)). That turns each point into an actionable question with a positive-spin.

</comment><comment><USER18> Taking notes is also a form of Influence Capital. Having proof of what people said, when they said it, is extremely important for people like me with "100% Accountability, 0 Authority" roles. Being the only person taking notes is the ultimate CYA outside of an audio recording (not that any of this matters in the chain of command, but at least it feels good to be right at the end of the day).

</comment><comment><USER12> This just showed up in my Pocket "trending" list: _Become a Better Listener by Taking Notes_ , by a "global CEO coach," in the Harvard Business Review [0] (requires signing up for a free account, apparently).

EXCERPT: "Through my work with executive teams, I've developed a simple technique that can help anyone listen more effectively in meetings. I call it Margin Notes. You may already take notes during meetings, but unless you're using them wisely to understand others and plan your response, you may still fall into the same trap of speaking before you think. Margin Notes allows you to think, process information, make connections between points of discussion, and ask effective questions instead of blurting out the first thing that comes to mind."

[0] [https://hbr.org/2017/03/become-a-better-listener-by- taking-n...](https://hbr.org/2017/03/become-a-better-listener-by-taking-notes)

</comment><comment><USER19> One of my new years resolutions was to learn to type faster. To get some practice I started taking notes in all the meetings I attend. This wasn't common practice in my team before, but I've found it to be really useful. I've lost track of the number of times someone's said "didn't we talk about this in that meeting a couple of weeks back" and I've been able to point them at my notes.

I've found a really simple way of authoring and sharing notes is to write them in Org mode and then push them to a wiki on github. Github understands how to render Org markup nicely, so you get a nicely formatted wiki pretty much for free.

As an added benefit I can now touch type :)

</comment><comment><USER20> I use the phrase "Moving the ball forward" and I apply it to all meetings. Even if there is an agenda, I ask this question. If this is a status meeting I often don't go. Before the meeting ends I ask: "How did we move the ball forward in this meeting?" And if the answer is we didn't, we stay seated.

</comment><comment><USER21> This is great. If Meeting notes get written, the chance of follow-up it 40-50%. If not, it trends to 0. Meeting notes are the only good weapon against our failing memories, and decisions that get changed without everyone being present.

I use Evernote, and carry my laptop everywhere because otherwise it doesn't happen.</comment>


16,000 people in L.A. live in cars, vans and RVs. But safe parking is limited - <AUTHOR> https://www.latimes.com/local/lanow/la-me-homeless-safe-parking-los-angeles-20190610-story.html <comment><USER2> > That leaves most people living in vehicles without a legal place to sleep.

In LA, that is.

For the estimated $20-30 per night the article states this might cost, we could get these people into actual housing in the midwest.

Until they've tried that, I don't really care what problems people in LA have. These people are addicted to LA/California.

We're eventually going to get over trying to let everyone live in the most popular cities in California and we'll be better for it.

<comment><USER3> >Until they've tried that

Sure. But are _you_ going to pay for their relocation package, plus unemployment benefits until they find a job at their destination?

No?

Oh, then perhaps let's stop suggesting that moving cross-country is easy or cheap for people already living month-to-month at best.

And that's without taking into account that some of them:

1\. Have family in the area that they can't just give up;

2\. Have their social support network in the area that they can't just give up;

3\. Might be a part of _someone else 's_ support network that they can't just abandon;

4\. Grew up in the area and thus will be forcibly displaced by your suggestion.

I know two people living off a van / RV in the Bay Area.

Both are Bay Area natives. One can afford to rent an apartment, but his work as a bus driver makes the morning commute three hours long. He lives in an RV close to work on weekdays.

Another was renting until recently, but doesn't make enough money as a musician / audio technician. So he's effectively on a permanent tour.

Both are in their 40's and have children.

I guess you can say that they are "addicted" to their families, to their hometown and community, and to their jobs.

Or you can say that they _live here_ , and stop giving infeasible suggestions like "Move to Midwest".

<comment><USER4>
      But are you going to pay for their relocation package, plus unemployment benefits...

Presumably, the local government entities _currently_ paying CA-level benefits would happily pay the lower Midwest rates in the interim.

<comment><USER3> Bad choice of wording on my side here - most of these people won't get benefits from either State or Federal.

How about _would you be willing to provide for them while they are looking for a job at a different state_.

And that's, of course, only _one_ of the reasons why it's difficult to move. Got any answers for others I mentioned?

</comment></comment></comment></comment><comment><USER5> I am in the midst of planning a major move and it looks like I am going to wind up in either a tiny home or a single-wide mobile home so that I can afford to build up the company I'm trying to get started.

I think this article misses a major problem that people in precarious circumstances in their lives face when trying to secure housing that isn't either traditional residential mortgage or rental in corporate owned apartment complexes... and that is exploitation.

Until exploitation of the working classes is reduced there are going to continue to be problems with housing.

<comment><USER6> You aren't working class of you are trying to get your own company started.

<comment><USER7> It's perfectly possible to do on a coding salary... in Missouri. I did it, and in fact I still am doing it. I still have have my day job. My big expenses are heavy industrial equipment leases ($7k/mo), electricity ($2k/mo in the summer), and titanium ($1-10k/mo, depending on order volume). I mostly make pistol grips. The CNC machines run all day while I code, and I live in a camper inside an aircraft hangar at my factory. It's beautiful. I'm not an expert on LA, but I really don't think I could have made my dream a reality in that particular place.

I _think_ I'm working class... I certainly work a lot and I go to work during the day :-)

<comment><USER5> This is amazingly close to my current game plan... though I don't do anything related to weaponry.</comment></comment></comment></comment>


"A Guide to Marketplaces", Second Edition - <AUTHOR> http://versionone.vc/marketplaces-guide-ed2/ <comment><USER2> Thanks for sharing! This is what I need right now. If anyone can fill in, where can I get extra resources on creating marketplaces?

<comment><AUTHOR> Glad to hear! There is a marketplace FB group that is quite active which may be helpful: [https://www.facebook.com/groups/411528559001031/](https://www.facebook.com/groups/411528559001031/)</comment></comment>


How to avoid common SPA pitfalls when using third-party plugins - <AUTHOR> https://blog.isleofcode.com/the-real-reason-to-avoid-jquery/ <comment><USER2> I liked his examples, though I disagree with his conclusion (don't use jQuery). It seems like the real conclusions are:

1\. understand the language you're using (this would solve the `bind` examples); and

2\. learn how to use your libraries properly.

Otherwise, the "don't use $TOOL, because misuse can cause $BAD_THINGS" line of thinking is nearly limitless in its application (jQuery, cars, circular saws, ...).

<comment><USER3> Author here:

I whole heartedly agree, which is why with each point I made I did more than just list what was bad, but how to do better, even with jQuery. The real reason not to use jQuery isn't because jQuery is bad, it is because as a tool it / it's ecosystem is poorly prepared for dynamic html, so if you are going to use it, you need to know the limitations and challenges it brings.

<comment><USER4> It's certainly nice to see the rationale behind your decisions. However, most of them just turn out to be something along the lines of "understand javascript and the DOM", and not really about jquery at all.

For example:

 _" To be fair, this is no different than cacheing an element or array of elements on your own, and forgetting to de-reference it later when you are done"_

or the examples about attaching/detaching event listeners where the hypothetical developer is gathering elements by the equivalent of document.getElementsByClassName. If a developer is going to make that kind of mistake, then that's an error that's going to occur regardless of the framework.

There are certainly reasons to not use jquery in some cases, but this article seems a bit too much like "Do good development, don't do bad development". Drop jquery from the body of the content and the title, and the lesson will still be the same.

</comment></comment></comment><comment><USER5> Most of OP's complaints come from the misuse of JQuery, including compounded performance issues when paired with a SPA framework (in this case Ember, which IIRC has a dependency on JQuery either way). Slow + Slow = More slow.

Honestly it's a library. Use it, don't use it, replace it, it honestly isn't worth a million identical arguments. People like to use JQuery as a microcosm for bad javascript practices but guess what JQuery didn't make you do it! It's just a library.

There is no real reason to avoid JQuery. Sure you should, as a good developer, explore alternative solutions for different problem sets. Maybe those alternatives become the standard for your team, maybe they don't. But unless you made a meaningful discovery that can add to the conversation, you don't need to make another blog post about it. Ugh.

<comment><USER2> > But unless you made a meaningful discovery that can add to the > conversation...

I don't think this applies here. Personally, I learned something from two of his examples, bookmarked the page, and will refactor accordingly. I'll hazard a guess that a few others are in the same boat -- by that standard, the article seems pretty meaningful to me.

<comment><USER6> Totally agree. I get people love to bash on whatever, but the author actually taught me a few things I didn't know. Well written, good examples of bad and better ways of doing things, I think this provided meaningful information.

</comment></comment></comment><comment><USER7> Most of the advice sound like basic JavaScript - avoid things that prevent the interpreter from garbage collecting.

<comment><USER3> A lot of it is, but I spend so much time teaching people how to CPU Profile, take heap snapshots, diagnose leaks..

Things that _ought_ to be fundamental, but which were left unlearned while the web was allowed to be lazy. With static pages, GC concerns weren't very large, because soon enough the user is going to click ahead to a new page and wipe the slate anyway.

<comment><USER8> I'm coming up on a year of knowing JS and none of the recommended beginner resources or books ever mention performance or profiling. It seems to just not be taught. On /r/javascript and other forums I do not see it mentioned often as it's assumed the library or framework takes care of it.

I'll take the opportunity now and ask for good resources on JS performance, garbage collection, and profiling. I realize I know the syntax and semantics well (and a framework or two), but not enough about optimization and related stuff (like ServiceWorker).

<comment><USER3> This is the place to start: [https://developer.chrome.com/devtools/docs/javascript- memory...](https://developer.chrome.com/devtools/docs/javascript-memory- profiling)

</comment></comment></comment></comment><comment><USER9> What was the fake reason to avoid jQuery?

<comment><USER10> What was the fake reason for not reading-the-freaking-article yourself?

<comment><USER9> I did. The only hints were in the opening paragraphs, and they were just hints:

> "I've read countless blog posts, twitter rants and medium exposés detailing > how jQuery isn't necessary, and why you should just write with "native" > JavaScript."

Not reasons.

> "There is, however, a very major reason to avoid jQuery, and it has very > little to do with features or file-size."

File-size? Ok. But "features" isn't a reason, without fleshing out.

</comment></comment></comment><comment><USER11> " _Some people_ write crappy jQuery code → jQuery is bad for _you_." Never gets old :P

</comment><comment><USER12> jQuery is not jQuery plugins. It's ... not smart to write about them like it is one monolith thing.

<comment><USER3> ... this is about both. And for most devs, they are the same thing. The difference is poorly understood.

</comment></comment><comment><USER13> I think the title is a bit short. It should have been "The real reason to avoid jQuery with SPA frameworks".

<comment><USER14> It's a bit baity, so we changed it to the subtitle.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER3> I wasn't expecting this to be a "thing", I wrote it for people I help out in the Ember community that struggle because of their jQuery background. I may update the title now that this is more widespread.

<comment><USER14> It's common for something that works well in its original context to turn into something unintended under the pressure of the HN firehose. Sort of a tragedy- of-the-commons variation.

</comment></comment></comment></comment><comment><USER15> tl;dr: Use jQuery + plugins, if you want to do some small UI improvements in JavaScript and don't make it too complicated.

Learn a lot more about jQuery, if you write complex JS applications (like single-page apps) with the help of jQuery.

<comment><USER16> <offtopic>

I feel like SPAs are one of the most abused concepts on the internet right now.

A cloud-based 3D modeling software? Yeah, that _definitely_ needs to be some form of SPA.

Your twitter clone, blogging engine, etc. not only doesn't have to be an SPA, but _shouldn 't_ be one because it creates horrendous UX.

<comment><USER17> SPAs don't need to have horrendous UX?

<comment><USER16> Sure they don't, but saying that you are going to force logically separate pages onto a _single_ page is starting from a point of bad UX and trying to dig yourself out of it.

<comment><USER17> In theory, the only irreducible UX distinction surrounding logically separate pages in a traditional website vs a SPA is that the SPA doesn't do the full postback, which is arguably a better UX.

Sure, in practice many SPAs might be subpar, but then the debate shifts to "are SPAs are difficult to implement correctly," rather than "SPAs for blogging engines (necessarily) creates horrendous UX". There are existence proofs of well-designed SPAs with logically separate pages and excellent UX.

As an aside, someone who pattern matches on "SPA = horrendous UX" might not even notice a well-designed SPA, further entrenching their belief that SPAs are a Bad Idea from a UX perspective!

</comment></comment></comment></comment></comment><comment><USER18> None of this is about jQuery - you can have the exact same problems in native JavaScript.

This page should be titled: "Don't forget to delete unused JavaScript things (nodes, events, etc)".

</comment><comment><USER19> The real reason to avoid single page apps.

<comment><USER20> "The real reason to avoid JavaScript"

Ooops, wrong decade

<comment><USER3> Using static pages just so you can avoid writing good code seems smart..

<comment><USER21> Running code is very powerful, but the real power over the long haul is running the least amount of code necessary to get the job done.</comment></comment></comment></comment>


Nice $40M ecommerce company – call me when it scales - <AUTHOR> http://pando.com/2014/03/22/thats-a-nice-little-40m-ecommerce-company-you-have-there-call-me-when-it-scales/ <comment><USER2> Alternatively, you can base your business model on tricking people into subscribing to a service they likely don't know they're subscribing to.

[http://techcrunch.com/2013/09/27/not-so- vip/](http://techcrunch.com/2013/09/27/not-so-vip/)

<comment><USER3> Relevant links to old discussions on JustFab from the TC article:

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

[2] [https://news.ycombinator.com/submitted?id=wenxun](https://news.ycombinator.com/submitted?id=wenxun)

</comment></comment><comment><USER4> $40 million is admirable. You could do that with a flat team where everyone knows everyone else and operate out the back of an established retail business.

Scaling that up would mean having three tiers of management, scores of interns, nobody knowing the names of anyone in the warehouse, the product team not talking to the customer care team, whole departments dealing with accounts things, it just goes on. You could have 100-250 extra people without noticing, banks to pay off, vast premises to rent, a huge marketing bill, considerable IT infrastructure and so on.

This would be fine if you really were that smart and that good. Why, you could be the next Amazon.com, even put them out of business. What is alarming is that people think that way, they let greed and arrogance cloud their judgement. It is like a disease.

<comment><USER5> > product team not talking to the customer care team

I couldn't agree more. Dare I say it, we've got an "open" floor plan for our customer care and product teams. It helps immensely when you can place a customer on hold and ask a product guy a question without emailing, chatting for calling.

<comment><USER6> How do you deal with phone calls disrupting product work? E.g. I've run in to few situations that kill production / craft-person style work faster than having someone on the phone, nearby.

<comment><USER5> Oddly, it all kinds of works out. The only people in the open floor plan are customer service reps and product managers.

<comment><USER6> Ah, ok. That makes a lot of sense.

</comment></comment></comment></comment></comment><comment><USER5> The re-engagement models listed seem glamorous and certainly are the current hot buzz. But, I doubt I'd call them sustainable. An established $40m company might try some of these, but should not rely on them as a core business model.

Incorporate flash sales as a daily deal feature, creating re-engagement and perhaps pushing lesser known or tough to sell products. I'd even argue that scarcity is good for a quick grab, but might be a turnoff for regular customers of a site that isn't focused solely on flash sales.

Subscriptions are a slippery slope for physical goods as well. You have to be careful to provide the customer with enough perceived value, while enforcing the notion that the value will be the same every month. At the same time, you can't strain your inventory or infrastructure to maintain the regular flow of these products.

Loyalty programs are probably the oldest, and safest trick in the book. Often times, can be done for free. Perhaps purchases earn points which are only redeemable on products you specify. Could help move problem inventory while saving a few points in payment processing fees.

One should tread carefully with all these options. Like the author mentions, there's plenty of room for innovation in this space.

It's possible that the $40m company is king of it's niche hill. If that's the case, they might look at leveraging their experience and infrastructure in other markets. All the while, working to keep the core business sustainable.

</comment><comment><USER7> If I could have a $40m/year business with happy employees, it sounds like a win to me. Figuring out some sort of profit sharing and adopting an internal culture of innovation to stay abreast of trends would make sense too.

</comment><comment><USER8> Plenty of people make a decent living off of such companies and so do their employees. Why would anyone call Josh Hannah though, unless they no longer wanted to run their company? Let him buy and sell his overvalued, short-lived bubbles (to other people like him who do likewise) and run your own, solid $40m companies for as long as you enjoy it...

</comment><comment><USER9> I'm not that much of a fan of the VC infatuation with winning on a handful of "unicorns" and "super-unicorns." Perhaps better for everyone (but the VCs) would be a healthy ecosystem of thousands of companies on the order of 10-50M dollars, and more financial support for getting to this "stage." (I use quotes because I don't think every company should aim to grow as big as Google or Facebook, or even Twitter or Github.)

<comment><USER10> If this were a viable model, I'd have to assume someone would be doing it. How would a VC even go about chasing ... everything but the fat tail? How would the VCs get a return if they did figure that out? 30$ million self sustaining businesses don't pay dividends, don't raise more money (unless they want to unicorn), and don't exit.

<comment><USER11> I believe the comment was saying it'd be better for everyone else, not that it'd be a viable model for VCs.

> Perhaps better for everyone (but the VCs)

In an abstract way this makes some sense - more competition, more niche & targeted companies to suit more needs, and an income distribution that's much flatter (naturally) across the board. In the real world, it only takes one person (e.g. Bezos) aiming for something bigger to keep this model from ever thriving.

</comment></comment></comment><comment><USER12> I don't think anyone is really implying that having a $40 million company isn't a good thing to have on your hands. The main idea of this article is the overall scalability of these types of companies from a VC / enterprise point of view. $40 million is a lot to me, but pennies to others.

With competitors such as Amazon, 40 million in a lot of cases might be 10% or less of the marketshare. Or it is 100% of the market but it is tapped out.

Ecommerce is kind of a vast term. I think it is also important to look at if the company drop ships, has inventory, or manufacturers goods in-house. Huge difference there.

</comment><comment><USER13> I think the comparison with Overstock may be a bit flawed. The president of Overstock, Patrick Byrne, has been at war with Wall Street for a number of years. He blames them for naked short selling (an illegal practice of selling stock short that you haven't borrowed) and is actually suing the "prime brokers" (the ones who handle most of the stock trades):

[http://www.overstock.com/Patrick- Byrne/7371/static.html](http://www.overstock.com/Patrick- Byrne/7371/static.html)

Thus overstock has been under attack by Wall Street and has an incredible high short interest. 20% of the stock is reported to be sold short, although Patrick thinks, with the unreported naked short selling, that the number is much higher:

[http://finance.yahoo.com/q/ks?s=OSTK](http://finance.yahoo.com/q/ks?s=OSTK)

<comment><USER14> Can you explain like I'm 5 why wall st's actions on the stock impacts overstock's day to day operations and margins?

<comment><USER15> NASDAQ: OSTK currently carries zero short- or long-term debt, has no bonds issued, and has no announced plans I am aware of to issue more shares from a quick glance at Google Finance. So current stock price activity won't affect the pricing of those financial instruments, since they simply don't engage in any of those.

However, what you do not see are precisely the daily operational and margin- related activities that don't make it onto the radar screens of Wall St. but do matter to the comptroller or even CFO. Vendors who you purchase goods and services from set payment terms factoring in an evaluation of the share price. Going from Net 90 to Net 30 will impact cash flow. If your share price action alarms someone enough, they may even refuse to do business except for paid-in- advance terms.

The share price also impacts your PR and marketing efforts. More alarming share price activity makes it more expensive to reach your customers; just as there are many fathers to a success story, no one wants to associate with a perceived loser, so your advertising spend per customer will go up to counter negative perceptions while only achieving the same revenue.

Similar dynamics obtain at the sales interface with customers. Your cash and time spend per customer for the same amount of revenue (thus dropping your margins) goes up with greatly negative perceptions incited by adverse share price activity. In the case of Overstock, it is not the b2c customers that watch the share price, but the b2b customers; the partners Overstock sources its inventory from.

</comment></comment></comment><comment><USER16> How many times can you denigrate Amazon in a single article? Articles don't need to be written in such a sarcastic, negative tone to be informative. The style makes me distrust the author.

</comment><comment><USER17> Suggested alternate title:

"Nice $40M ecommerce company - call me when it scales and I can profit obscenely while strapping you with loads of debt and/or other unwanted obligations/management advice so that you end up firing half of your staff after doing the thing I made you do because I now control the board."

From the "other" Fab:

[http://betashop.com/post/72547337624/betashop-quarterly- volu...](http://betashop.com/post/72547337624/betashop-quarterly- volume-1-january-2014)

 _On a personal level I took some justifiable hits in 2013. That goes with the territory when you raise money at $1B and then cut headcount and operating expenses as dramatically and swiftly as I did. I freely admit, when you grow revenue 500% year over year and become a media darling overnight, it's hard to keep perspective. No doubt, we had lost perspective at Fab. We had started to dream in billions when we should have been focused on making one day simply better than the one before it._

</comment><comment><USER18> Great title. Terrible article.</comment>


Show HN: Introducing Spaceship - <AUTHOR> http://blog.spaceship.io/2012/1/31/introducing-spaceship

<comment><USER2> I knew nothing about your product just by reading your title, so these are my complete first impressions:

1) In the second sentence, I'm expecting to hear the first pitch for the product.

 _Generally speaking: with Spaceship, we ultimately aim to lift your creative process to a new level of productivity and fun._

Why "generally" speaking? You don't want to speak generally, you want to speak specifically about what you're offering. Secondly, you introduce your product with its benefits. That's great for most sales situations (think of all of the TV commercials that start with "Imagine if..."), but can be confusing for technical products like software. I want to know what your product _does_.

2) This is a really strong insight:

 _We found and tried a lot of products that try to simulate analog tools like note-taking apps or virtual whiteboards. Web afficionados work together in Google Docs. A forward-thinking filmmaker might manually copy character mugshots into a Dropbox folder. We heard of people who like the experience of Evernote._

3) The video is great. You're using the application to demo the application. Fantastic. But where's the audio? Why aren't you speaking with me directly? If you aren't comfortable with speaking, hire a friend for cheap.

<comment><AUTHOR> Thanks!

1) True. I'll do a better job next time. 3) Yes. We'll add audio in the next iteration.

</comment></comment><comment><USER3> My suggestion is to try to distill what you do as much as possible. Nowhere in the post or on the landing page do you really state what Spaceship is.

Even saying something like, "Spaceship is a collaborative mind mapping application that supports rich media," would have helped me understand quicker.

<comment><AUTHOR> Thanks, that was exactly the kind of constructive feedback I was hoping for when posting here.

<comment><USER4> So ... could you post here, what it is in summary?

<comment><AUTHOR> Sure. Please see my separate comment in the main thread.

</comment></comment></comment></comment><comment><USER5> I would take your example, and show me something concrete that I might use your product for. Reading the description, and then watching the video, it's very hard to get an idea of why I would use this product. It kind of looks like a way of randomly jumbling a bunch of stuff together, which I assure you, I can achieve on my own :).

Overall, I have to admit that I'm skeptical about the whole enterprise of contextual mapping, but one of the things that could possibly convince me to try your software would be if the implementation looked exceedingly simple and well-executed. One of the reasons a lot of contextual map software fails is that clicking and dragging things around is extremely tedious, and with most software, the interactions are not implemented very well. I'm talking about things like: distinguishing click-moves and click-edits, or boxes in a flow chart staying connected to each other when I drag them around.

Think about the whiteboard you're trying to replace (I think). The reason a whiteboard works so well is that it's incredibly easy to put any kind of data into it, because drawing things on a whiteboard is trivial. You don't have the ability to draw that way with a computer program, so whatever facilities replace drawing need to be comparably easy to use.

<comment><AUTHOR> Thanks for your input!

It's kind of hard to do a concrete example for an audience that has very different problem domains (i.e. engineers, designers, students, communications people etc.). But as soon as we're going into public beta, we'll probably have to produce high quality examples for different audiences, that's right.

We're not trying to replace analog media. I think that's kind of impossible. But we're working on ways to augment them (for example making it very easy to capture a white board or scribbled notes).

</comment></comment><comment> the-cakeboss Hey, I just wanted to let you guys know that I really like where you are taking the design of this site. It is really a breath of fresh air considering the typical interface often seen around the start up crowd. Its feels very light, and intentional with bold accents calling for attention. In a word, I might call it crisp. However, I do think you could rework some of the user generated elements such as the clusters and the inserted images. They feel oddly out of place considering the rest of the UI.

With that all said however, the page offering explanation leaves much to be desired. I think there should be more doing and less talking so to speak. Even the text though feels unstructured and out of place, its placement seems rather haphazard, and the rag is especially rough. While I do realize this blog post isn't the product, the typography is seriously lacking there.

</comment><comment><AUTHOR> Thanks for the comments so far. At the time of writing the initial blog post, we didn't want to give the complete picture but instead focus on testing the first component of our app, which is the Space.

As dwynings figured out quite well, our Space is a mix of a virtual whiteboard with media sharing, annotation and clustering features. You can use it to work on ideas, concepts, to review or decide on things.

The next thing we'll be releasing is Processes. These will allow you to work through projects in well-defined steps, where each step has its own Space.

Currently, we're not in selling/marketing mode (hence the sloppy effort on that side). Instead, we're trying to accumulate feedback and critique from potential users and hackers, so we have a bigger chance of building the right thing.

</comment><comment><USER6> When I need to draft a document that shows visual objects and relationships (e.g. architecture diagrams), I jump into OmniGraffle. The reason that this is my tool of choice is because the input mechanism is mainly through an outline tool. I can very quickly jot everything that I need to say down into an outline format and OmniGraffle will automagically try to align everything for me. Only then do I start to drag things around.

So, my feedback for this tool is to make input much easier. Instead of "click, type, move" over and over again.. smooth that process out by having a type- only input mechanism.

Great work so far!

Edit: Grammar and last line.

<comment><AUTHOR> Thanks for this insight! I remember now that back in the day, I used OmniGraffle the same way. We'll definitely give this some thought.

</comment></comment><comment><USER7> The description is incredibly ethereal. Figure out how to describe your concept in a sentence that you can yell into the valley. The "tl;dr" folks don't have the patience. Unfortunately, they're your audience.</comment>


Rate my webapp - Poplytics - <AUTHOR> http://www.poplytics.com/tour/ I posted on HN yesterday and got some feedback about my web app. Most people hated the design of the UI and copy. I am a bad designer but i decided to work on it again. I would love to know if the UI and copy is better.<p>Please highlight any specific area that needs work. Thanks! <comment><USER2> What's changed since _yesterday_ when you asked HN to look at your app?

<comment><AUTHOR> The background changed. The copy changed. Most of the rounded corners were reduced. The benefits were highlighted.</comment></comment>


Show HN: Monarch Trips – A Google Trips Alternative - <AUTHOR> https://monarchtrips.io <comment><AUTHOR> Hi HN,

We built this to flexibly, and collaboratively plan your next vacation. You can easily organize your places into day plans, see travel times and map pins, and sync between your iPhone and iPad. We would love to know what you think!</comment>


Garmin outage caused by confirmed WastedLocker ransomware attack - <AUTHOR> https://www.bleepingcomputer.com/news/security/garmin-outage-caused-by-confirmed-wastedlocker-ransomware-attack/ <comment><AUTHOR> BleepingComputer was told that the Garmin IT department had tried to remotely shut down all computers on the network as devices were being encrypted, including home computers connected via VPN.

After being unable to do so, employees were told to shut down any computer on the network that they had access to.

Even their mail servers are bouncing.</comment>


WeWork Developers Exposed Contracts and Customer Data on GitHub - <AUTHOR> https://www.vice.com/en_us/article/bjwqxz/wework-developers-exposed-contracts-and-customer-data-on-github <comment><USER2> What I'm understanding from this article is that WeWork, as big as they are/were, and as much of a tech company as they made themselves out to be, did not host an enterprise version of GitHub that could reside inside their intranet? Is that accurate?</comment>


Project Takeover Blues 5: Conflicts of Interests, Pressures, Priorities - <AUTHOR> http://blog.anomalistdesign.com/project-takeover-blues-5-conflicts-of-interests-pressures-priorities/

<comment><AUTHOR> I'm the author of this article. Looking for people to share their experiences of having their project taken over or being hired to take over the work of someone else. No names please -- just describe the circumstances generally. We're looking to promote a conversation in the IT community about how to make projects more successful and all parties to win.</comment>


Hey bloggers – would you use this? - <AUTHOR> Hey hackernews bloggers!
My friend and I are brainstorming some ideas for writers and bloggers and thought this would be a good place to ask.
Would you use a customized "checklist" app that would take you step-by-step from no blog to a successful blog, tracking your progress on a dashboard and showing you exactly what your next step would be?
Please leave a comment to let me know :)
Thanks! <comment><USER2> hard to tell. Need to see what is on the checklist.

</comment><comment><USER3> define what's a successful blog for you first</comment>