Marie Curie Got Her Start at a Secret University for Women - <AUTHOR> http://www.atlasobscura.com/articles/the-secret-polish-university-for-women-where-marie-curie-got-her-start <comment><USER2> I cannot imagine doing this today, although there are still places that need a secret university. However, I wonder if we have the solution, at much less risk.

I wonder if, 30 years from now when a whole new generation has grown up, we will discuss poor countries (or, say, people under the Taliban, or in North Korea) learning from the Khan Academy, Coursera and the like in the same way.

"What was it like, mom?"

"Well, kid, they didn't have these fancy holographs. First you had to find a really good 'connection' ..."

<comment><USER3> Unlikely. Those people don't have the luxury of time needed to put any serious efforts towards their education.

<comment><USER4> You'd be surprised. A good friend of mine is an Afghan who grew up sleeping on a dirt floor alongside his 5 siblings. When he was 15, his parents sent him off to their family village in order to fight the Taliban.

I first met him at our PhD program orientation in the US. He speaks four languages and and is one of the most well educated people I've ever met. Granted, he's an exceptional person but by no means of a unique one.

Edit: can't help sharing something that just happened last week, I was with my wife in Athens, where she had just started her thesis research, interviewing Afghan refugees in one of the big Greek refugee camps. She befriends a 17 year old Afghan kid named Javad, no family or money, speaks nothing but Dari, and one of the first things he asks her is "can you send me a PDF of an intermediate to advanced level mechanical engineering textbook?" We're planning on sending him an ipad with a bunch of PDFs and sci hub articles.

I realize these are just two personal anecdotes but they have definitely changed my mind on this subject. Curious people tend to be curious regardless of their life circumstances.

<comment><USER5> That's an awesome story. How was Javad planning to receive / read the PDF? Or did he want a paper copy?

<comment><USER4> His cell phone. He buys data 5 euro at a time from a shop in the town or goes to cafes to download English and engineering textbooks. That's what my wife's thesis project is about - specifically figuring out the best ways to share useful information with refugees who have cell phones but not much else, especially women who might not have a chance to go out in public much, or have a formal education. It's not my field at all but I find her work to be fascinating.

If you're interested, This American Life just did two whole episodes from a Greek refugee camp. In the second episode they interview a guy who patched into a power line under a tree to charge 6 cell phones at once! The group that both TAL and my wife were talking to is really doing good work, they're called the Greek Forum of Refugees.

[http://www.thisamericanlife.org/radio- archives/episode/592/a...](http://www.thisamericanlife.org/radio- archives/episode/592/are-we-there-yet)

<comment><USER6> This is a salutary anecdote which I wish we could convey to all those people who think that having a smartphone makes you "not poor". It's the exact opposite: it's so useful that even people who have not much else will go through hell or high water to keep their link to the world.

</comment></comment></comment></comment></comment></comment><comment><USER7> > to a post World War II effort by Communist Russia, who once again took > control of Poland

Inaccurate - it did not wait for post-WW2. Russia invaded already the second half Poland as soon as 1939 (2 weeks after Germany) and on top of that, without declaring War.

<comment><USER8> That was not Russia. That was Soviet Union. Those parts of Poland became parts of Ukrainian and Byelorussian Soviet Socialist Republics (Western Ukraine, Western Belarus). Most of them are still parts of Ukraine and Belarus today. In 1938 Poland invaded Czechoslovakia together with Germany and Hungary to "protect" Polish population in Zaolzie. In 1939 Soviet Union "protected" Ukrainian and Byelorussian population. In 1938 Stalin's plan to fight Nazi Germany and protect Slavic Czechoslovakia was rejected by the West.

<comment><USER9> Let's not rewrite history here: _Germany_ invaded Czechoslovakia. Hungary and Poland annexed small parts of ethnically mixed areas to their respective countries

<comment><USER8> And Germany invaded Poland on the 1st September 1939. The problem is we signed up treaties with Czechoslovakia regulating the issue You think the eastern part of Poland was not ethnically mixed and there were no problems with this?

</comment></comment></comment></comment><comment><USER10> Education for the sake of education, for people with a desire to learn. This pretty much has to be better than education for the purpose of credentialing.

<comment><USER11> They were mostly nobles (Poland had lots of these - almost 5% of population) or rich middle class women before feminism (so - no need to work).

<comment><USER10> If you read the book "More work for mother," which details 300 years of the history of housework, women have long been saddled with about 60 hours a week of housework. In modern times, if a woman works a full time job of 40 hours a week, that only falls to about 40 hours per week of housework.

I seriously doubt most of these women were living a life of leisure. Additionally, let's assume you are right: How on earth does that rebut my comment about educating people who _desire to learn_? Because surely the leisure class could have been bar hopping and throwing or attending wild parties instead of trying to learn something in spite of it being against the rules to get an education.

<comment><USER11> > Additionally, let's assume you are right: How on earth does that rebut my > comment about educating people who desire to learn?

It doesn't, why should it?

</comment></comment></comment></comment><comment><USER12> I worked on a project called Free Skool that's essentially the same thing. Even in wealthy, "free" countries, there are plenty of people that don't have access to educational resources, and can benefit from sharing knowledge with their peers. We had classes on everything from maths and philosophy to sewing and figure drawing. Education shouldn't be something that only happens when you have a ton of money and years of free time to spend on a university degree.

<comment><USER13> Do you have a website? Would you like to link to it (or send me via email?)

<comment><USER12> I worked on Free Skool Santa Cruz ([http://santacruz.freeskool.org/](http://santacruz.freeskool.org/)) but we stopped a few years back. It's entirely decentralized, and there's a bunch of projects around the world. Here's a wiki page that has more links and resources: [https://en.wikipedia.org/wiki/Anarchistic_free_school](https://en.wikipedia.org/wiki/Anarchistic_free_school)

</comment></comment></comment><comment><USER5> The one-person stage play "Manya - A Living History of Marie Curie" is fantastic incidentally.

There's a clip here; I don't know if a full recording is available. [https://www.youtube.com/watch?v=r8GTXNkkFPs](https://www.youtube.com/watch?v=r8GTXNkkFPs)

</comment><comment><USER14> Looking through the sources, its bit unclear if she joined before the various pro-education groups were united into a single secret university open for both sexes, or after. Before 1885 she was tutoring, but I can't find any reference if thats was connected with the university.

</comment><comment><USER15> Fascinating how outsiders change the world. Despite their progress, it should be food for thought for our modern-era universities too.</comment>


What I Learned From an Unsuccessful Launch - <AUTHOR> https://sungwoncho.io/lessons-from-building-vym/ <comment><AUTHOR> I shipped a product recently but it failed to gain much traction. Here is my post-mortem. I hope that this post helps my future self, and the readers.

</comment><comment><USER2> I liked the article. Very objective and helpful. I think that estimating the impact of your solution to a problem could guide you to avoid misfires. However, I believe the experience you get from anything (success or failure) will lead you to something greater. It's a trial and error for me. Also, I think knowing when to let go of a project is an essential trait. My opinion though is that the most valuable thing we have is energy. So my comment is "pick your battles, preserve energy for a big one but be sure about the impact first". Doing some research maybe at first could help. Thank you for sharing your experience.

</comment><comment><USER3> >"We are living in a time when doing what gives us meaning and what market demands from us are ever so aligned. Building things that motivate me gives me meaning. And there is a market for those things"

Apparently not tho, right?

.

There are conflicting pieces of advice in the start up world I think.

1, do something that you're passionate about, a startup is a tough and long, to remain engaged enough to put in the effort necessary you have to want to do it.

2, Build something people want.

Ive heard both of these pieces of advice from y combinator folks via videos etc.

If people don't want what you're passionate about, it won't do you any good to build it anyway. You have to be passionate about something that people just happen to want too.

Yet if I look at success stories I don't really believe the founders were that passionate about what they ended up with ; they later will rationalise what they have with something that sounds like a legitimate passion by abstracting out to a level that meets that requirement.

So I think the advice that says 'do what you love!' even when combined with 'make something people want', is not particularly useful.

.

I think you have to be passionate about making a business work. Not necessarily passion for that project, but passion and determination to make your own thing a success. The market has to determine the eventual shape that thing takes. Chances are you won't be particularly thrilled in your gut about your apartment rental solution, or cloud file sharing service. Honestly, thats not that exciting is it. But when asked the founders will talk about it like they're saving humanity. I don't buy their enthusiasm for the project itself, what I think happens is they have a passion for making their own thing work.

Market fit first + passion is great. But passion needn't be for that idea. I think passion for the idea can be a problem as shown here.

<comment><AUTHOR> Yes. I realize that what I wrote there is not always the case. You are right about the two conflicting advices for startups.

In a perfect world, people will want to use products I am passionate about building. But since that is rare, I think we need to find balance between what our hearts tell us to build and what people need.

Maybe the safe balance is, as you say, being passionate about making our own things work.

</comment></comment><comment><USER4> The idea that you can build something and then tweak it until you find customers is deeply flawed. You built something that nobody needed or wanted. Don't do it again. Don't try to validate a product or an idea, identify a need and then find the best way to fill it.

</comment><comment><USER5> It is always so obvious when you have similar experiences(founders, maybe):

      #0:I left my job to work on my side projects.

Never quit your real job unless you gained traction from your project.

      #1: the project does not motivate me any more.

I had exactly the same problem from my previous startup. Later I found out it is because of long hours work without enough exercises.

From my experiences, you need to prepared to explain your project/company with 2 sentences at most. Otherwise you will get lost during the development, also your project is probably too complicated.

<comment><AUTHOR> > Later I found out it is because of long hours work without enough exercises.

Yes. As another commenter noted, the energy is probably one of the most important resources. I might have partly burned myself out.

</comment></comment><comment><USER6> Your article is timely. Two days ago I went live on my first github project called Wheatbin: [http://wheatbin.com](http://wheatbin.com) and I'm not sure what to expect.

Thanks for sharing your insights. And Vym is a great name!

</comment><comment><USER7> kudos to the author for the self-awareness. this kind of failure is good fuel for personal development.</comment>


Show HN: Hacker News Radio - <AUTHOR>

This is a little project I have been working on that lets you listen to Hacker News. Please note that is SERIOUSLY BETA.<p>http://hackernewsradio.com <comment><USER2> <http://hackernewsradio.com>

Nifty. Of course, it's missing a lot of context, is it just reading /newcomments? If it read out the on: <topic> that would give it more context.

Right now it just sounds like those precogs blabbering in Minority Report (while predicting the future), or the hybrids in Battlestar :-)

<comment><AUTHOR> >>is it just reading /newcomments? If it read out the on: <topic> that would give it more context.

It is currently reading comments for only one submission at a time. Each submission's comments are read from top to bottom so each thread's context should be retained.

</comment></comment><comment><USER3> Really like the idea, will be great to get an idea of whats on here while working on other items. The voice could definitely use some work as after a few minutes it becomes a bit painful and I naturally begin tuning it out.

Can I put in a request for a female british accent? That would be nice to listen to.

<comment><AUTHOR> Yes you can! The TTS Engine I am using ships with a British female. Tomorrow I will load her up just for you!

</comment></comment><comment><USER4> Distribute it to wide audience via Tunein Radio mobile app. check radiotime.com

<comment><AUTHOR> Great, idea! It is now available on radiotime.com!

</comment></comment><comment><USER4> Check out hacker news radio station on Tune in radio

<http://radiotime.com/station/s_134806/Hacker_News_Radio.aspx>

</comment><comment><USER5> A link would be fantastic.

</comment><comment><USER6> Link us?</comment>


The Web Runs Out of Disk Space - <AUTHOR> http://www.sitepoint.com/web-runs-disk-space/

<comment><USER2> Oh come on guys. It's always me who defrags the web.

It's someone else's turn.</comment>


Xltrail – An open-source Git command line extension for Excel workbook files - <AUTHOR> https://www.xltrail.com/git-xltrail <comment><USER2> So this does NOT create diffs for the underlying excel workbooks, just for the VBA in the workbooks?

</comment><comment><USER3> I have to handle quite a lot of Excel document at work, much to my despair. Unfortunately we are not using GIT, but SVN. I ended up creating a small tool that extract the vba, named ranges plus the sheet in this format: "cell_adress,type,format,value" I have to commit those files alongside the spreadsheet, which is not great but had helped me a lot. Nice to hear others are working on the problem!

<comment><USER4> Have you tried `textconv` instead? You can configure git to generate your CSVs on the fly and show the differences between CSVs when you do `git diff`. See: [https://www.kernel.org/pub/software/scm/git/docs/gitattribut...](https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html#_performing_text_diffs_of_binary_files)

<comment><USER5> Speaking of text conversion and git, I usually don't commit non-textual data aside from necessary files like image and audio assets, but one time I commited some PDFs in a "samples" directory for a tool I made to extract some data from a set of PDF files, and later I removed one of them and observed that when I typed "git show" the diff showed the text contents of the PDF which I find rather mind blowing because of how much trouble I had experienced extracting text and how git was casually showing me an ascii rendering of the document more or less with good representation of the layout of the document.

This in fact prompted me to further investigate the open source text extraction tools on the market and I ended up finding one that was better than the one I had selected at first and which I had then been building upon. Happily my own tools were built in such a way that I could reuse most of the code I had written while using the previous tool, and in fact during the rewrite I also realized that I could write the new code in a much cleaner way and so there were basically only upsides to switching tool and rewriting some of my code :)

<comment><USER6> What tools did you end up settling on for PDF data/text extraction? I ask because I have a side project that I've been neglecting for far too long which depends in part on cleanly extracting text from PDF (other formats too but PDFs are by far the most headache inducing).

<comment><USER5> I use the pdf.load and pdf.tree.write of PDFQuery.

[https://github.com/jcushman/pdfquery](https://github.com/jcushman/pdfquery)

> PDFQuery works by loading a PDF as a pdfminer layout, converting the layout > to an etree with lxml.etree, and then applying a pyquery wrapper. All three > underlying libraries are exposed, so you can use any of their interfaces to > get at the data you want.

Here is a minimal Python script to dump the XML tree so you can load it in whatever other language you use and work with it from there.

        #!/usr/bin/env python3

        from pdfquery import PDFQuery

        pdf = PDFQuery("some_document.pdf")
        pdf.load()
        pdf.tree.write("some_document.xml", pretty_print=True, encoding="utf-8")

It doesn't work _perfectly_ with _all_ documents but it works well with many. Give it a try.

        pip3 install pdfquery

</comment></comment></comment></comment></comment><comment><USER7> I have to say, pretty neat. And I partly feel like I may need a shower after thinking that.

I have no doubt that a product like this has a _real_ need ... I used to write software targetted at end-users for reducing first-level support at a huge company, and it never ceased to amaze me the kinds of unbelievably important things that Excel and Access were used to manage (on the order of processes that the failure of which would result in 7-figure problems). It would further amaze me to find out that many of the people working with these end-user created solutions to problems were had some really, durably, solid rocks between their ears, and yet were still able to navigate these tools with _moderate_ success. Unfortunately, there's little chance that an average excel hacker is going to have much interest or ability to operate git, and the average git enthusiast is probably a lot like me -- a guy who goes out of his way to _never_ launch Excel for any reason, ever.

The last time I was given a task in which the work product was demanded in Excel, I wrote an application to create the spreadsheet programmatically ... partly because it was the only way to do some of the "clean up" they were asking for[0] and partly because I am a smart-ass by nature.

I realize I'm a _specific case_ and I probably have a much stronger allergy to Excel than most, and as I said, there's few large companies that don't have stupidly-complex processes that (also stupidly-)rely on Excel. I'm also a guy who bends _git_ into just about every scenario I can find, so I love the idea of anything that makes it more useful. Kudos.

[0] I had to correlate output from several web services and the source was a spreadsheet had the values they responded with. I wrote an app to read the rows and apply edit-distance against them to correlate a few more than were possible using just excel tricks.

</comment><comment><USER8> Getting the diff is nice, now if someone has a solution to merge file, I am all ears.

<comment><AUTHOR> op here: feel free to log an issue on GH, it's definitely on our agenda: [https://github.com/ZoomerAnalytics/git- xltrail](https://github.com/ZoomerAnalytics/git-xltrail)

</comment></comment><comment><USER9> Nice attempt, I looked into this problem too a while ago. Quick question for the OP, I know a lot of enterprise users want to version control their spreadsheets rather than just the code. Have you looked into that? Seems to be a tricky problem to solve.

<comment><AUTHOR> Our server-side (commercial) product actually does handle spreadsheets as well as VBA code. If you want to see it in action, have a look at our demo repositories: [https://demo.xltrail.com](https://demo.xltrail.com)

<comment><USER10> The VBA component seems to use [https://github.com/decalage2/oletools](https://github.com/decalage2/oletools) . What are you using for handling spreadsheets?

</comment></comment></comment><comment><USER11> Can anyone here answer whether it's normal, when building git based interfaces, to only use the API for queries and contextual things but utilize regular git commands to perform interactions with the remote repositories?

I am a 3D artist building a system to version control the configuration/script file directory trees for all the applications I use on a day to day basis. I will be taking a look at this code for clues but maybe someone in this thread can help me with some questions.

Does anyone know something similar to this? I am modeling it on the VSCode Setting Sync extension, which is simple but a little rough itself.

I am using Python and just about have what I'm going for but it's not as tight as I want it to be. I got a good system of using one repository with a branch per directory tree and folder symlinks to organize it locally. I can pull the branches into individual local repos per remote branch and it works nicely. This allows me to use regular git commands when I need to without fussing with other application's configuration trees.

But things get pretty loose when it comes to building the backup() and restore() functions. For restore(), I can just doing an overwrite with fetch then reset hard —HEAD or various things like this but it seems like there must be a better approach considering the local repository, index etc. are a bit unnecessary. If anyone has any thoughts, links or pointers, I'd be super thankful! Sorry for the long post.

<comment><USER12> > Can anyone here answer whether it's normal, when building git based > interfaces, to only use the API for queries and contextual things but > utilize regular git commands to perform interactions with the remote > repositories?

Because there are a myriad ways to connect to remotes: local filesystem, git protocol (rare), git+ssh, http(s), whatever-git-clone-"user@host:myrepo.git" does, svn-bridge are the ones I know and it's well possible there are more.

So you'd need around 4-5 protocol reimplementations, plus some way to configure the weird stuff that people do with SSH (public keys with or without password, ssh-agent, custom ports, port knocking, bastion hosts, whatever else one may fit in .ssh/config)... best leave this to git, especially as there's a lot of crypto in there that you're bound to mess up.

</comment></comment><comment><USER13> Does this site mess with scrolling? On a macbook air, chrome, it scrolls wildly even with a tiny nudge.

<comment><USER14> Yes. I got so fed up with bullshit like this that I made a blocklist for my ad blocker just to keep sane while browsing.

[https://gist.github.com/narrowtux/19220fc077ecbaeb274c56e849...](https://gist.github.com/narrowtux/19220fc077ecbaeb274c56e8497f8e61)

The latest entry blocks the smooth scroll on the site of this post. They've gotten smarter now and include this in bundles.

</comment></comment><comment><USER15> Hmm... I literally just created an AWS bucket that magically creates (i.e. lambda) corresponding .json files for any .xlsx file that gets put there.

I may have used Git if I knew this existed. For now our requirement was that the file be maintained in an Excel format, but this data needs to be consumed by different scripts written in different languages hence the automatic .json conversion.

<comment><USER16> I see this frequently but I question the choice of JSON which I assume is actually newline delimited JSON objects. What is the benefit of JSON? Familiarity?

If you need to ingest tabular data is JSON the ideal format? Why not something like escaped TSV? I realize storage is cheap but JSON has a lot of overhead and I don't see the benefit in using it to store data files, especially from spreadsheets.

Depending on access patterns something like Parquet may be a lot more useful.</comment></comment>


Asherah: Open-Source Encryption Automation - <AUTHOR> https://www.godaddy.com/engineering/2019/07/09/asherah-opensource-app-encryption-sdk/ <comment><AUTHOR> Url seems to have gotten munged: [https://www.godaddy.com/engineering/2019/07/09/asherah- opens...](https://www.godaddy.com/engineering/2019/07/09/asherah-opensource- app-encryption-sdk/)

</comment><comment><USER2> An asherah, for those of you who have forgotten your Sunday School lessons, was a female idol.

<comment> crypto-love I definitely didn't remember that, but yes: [https://en.wikipedia.org/wiki/Asherah](https://en.wikipedia.org/wiki/Asherah) seems to have quite the religious background

<comment><AUTHOR> More importantly, a Snow Crash reference without religious connotations :)

<comment><USER2> But surely Stephenson was thinking of the religious connotations...</comment></comment></comment></comment>


Skype uncovers latest update for Windows - <AUTHOR> http://www.newsflap.com/2012/02/03/skype-uncovers-latest-update-windows/

<comment><USER2> I was reading and hoping I would read something along the lines of "group video conference is now free". Unfortunately, that wasn't the case and google+ hangout is still the goto option for this.</comment>


Project Jengo: Cloudflare's Prior Art Search Bounty - <AUTHOR> https://blog.cloudflare.com/project-jengo/ <comment><USER2> This is cool, but there are companies which do prior art bounties out there, I wonder why they didn't use on of them? Also, they must be extremely serious about this. A $50k prior art budget is high - like very high - for this kind of thing. You can get a search firm to do a decent job for $1-2k and a bang up job for $10k-ish. So by throwing $50k into the pot, they're showing that they're out for blood.</comment>


Google sued for secretly amassing vast trove of user data - <AUTHOR> https://www.bloomberg.com/news/articles/2020-06-02/google-sued-for-secretly-amassing-vast-trove-of-user-web-data <comment><USER2> Getting some semblance of control over my browsing habits and enabling the implementation of multiple-proxy-based browsing strategies is one reason why I wrote chrome-private.sh [1].

I go through hundreds of disposable browsing profiles every day.

[1] [https://github.com/atomontage/chrome- private](https://github.com/atomontage/chrome-private)

<comment><USER3> Firefox containers does the same thing with a lot less work. If you get the multi-account-containers extension and the temporary containers extension, you won't have to log back into everything all the time but will still get isolation.

[https://addons.mozilla.org/en-US/firefox/addon/temporary- con...](https://addons.mozilla.org/en-US/firefox/addon/temporary-containers/)

[https://addons.mozilla.org/en-US/firefox/addon/multi- account...](https://addons.mozilla.org/en-US/firefox/addon/multi-account- containers/)

Edit: See below with a warning about using this with profile sync.

<comment><USER2> Well, there are definite benefits to being in full control of profile segmentation. You have no idea what the extension is doing unless you audit it. And even then, there are second-order effects that could surprise you [1]. Plus, the extension writer has to maximally cover the set of possibilities where a site can store/retrieve data. These are a lot of unknowns you're trusting and assumptions you're making.

It's far simpler to treat the profile directory as contaminated waste and nuke it at will. The only assumption you're making is that the browser implements a profile in a given directory properly.

[1] [https://github.com/stoically/temporary- containers/wiki/Isola...](https://github.com/stoically/temporary- containers/wiki/Isolation-Notes#navigating-in-tabs-isolation-exceptions)

<comment><USER4> Sure, there's probably less exposure from nuking the profiles directory, but I don't think you're being fair to containers:

\- Containers are a feature built into Firefox, these extensions just expose a UI for it. The Multi-Account Containers plugin [1] is published by Mozilla. You don't need to trust anyone but Mozilla to use that base set of functionality.

\- The container functionality in Firefox is the result of some work from the Tor Browser being upstreamed into Firefox [2]. It seems reasonable to assume that it's well-implemented.

\- The limitations of the extension that you linked to don't seem any worse than your profile-segmentation approach. It's just saying that it's possible for multiple websites to get opened in the same container, which is similar to how you could end up opening multiple websites in the same profile.

[1]: [https://addons.mozilla.org/en-US/firefox/addon/multi- account...](https://addons.mozilla.org/en-US/firefox/addon/multi-account- containers/) [2]: [https://blog.torproject.org/tor-heart- firefox](https://blog.torproject.org/tor-heart-firefox)

<comment><USER2> I reworded my comment. My point remains in that a lot of possible issues disappear if I just choose to destroy the entire directory. There is a clear difference between one Chrome instance (and all its associated windows/tabs) segmented into one profile directory and in-process segmentation. The issues at [1] seem to invoke unexpected behavior in that you're asking for a new temporary container but you can't know ahead of time if that's what you will get. I'm writing "seem" because it's not clear from the description how that interaction works. They could be better worded.

With segmentation enforced at instance boundary (rather than in-instance), there is no unexpected behavior of this sort. All links open in the segmented instance that the browser window/tab you're using belongs to. If you want a new container, you start a new instance and you know that's exactly what you will get. There is no possible "fail open" result. Note that I'm not saying the Firefox behavior you described is a major issue, just that it proves you can have unexpected scenarios.

Moreover, jedberg is correct in that cross-profile data leaking is possible (partly what I meant by "implementing profiles" properly), except that it's very easy to see if that's happening without auditing Chrome. Use a tool that records all filesystem operations (e.g. dtrace on macOS).

At the end of the day, I choose one set of trade-offs over another.

[1] [https://github.com/stoically/temporary- containers/wiki/Isola...](https://github.com/stoically/temporary- containers/wiki/Isolation-Notes#navigating-in-tabs-isolation-exceptions)

<comment><USER5> You are being disingenuous.

The issue you are quoting is about opening new containers while following links. That's something your solution doesn't support at all.

Your solution is akin to manually opening a new container. That will always work in Firefox.

</comment></comment></comment></comment></comment></comment><comment><USER6> "According to the suit, the company collects information, including IP addresses and browsing histories, whenever users visit web pages or use an app tied to common Google services, such as Google Analytics and Google Ad Manager."

I'd really appreciate some more technical details here.

Does this include web server logs that record incoming IP addresses?

Is the expectation here that Chrome would set a DNT header in incognito mode and Google properties would then obey that header?

<comment><USER7> Server logs with IP addresses are acceptable to most European privacy regulators if you only use them for a technical purpose such as debugging. And not keep them longer than needed for that.

So practically: logs are fine, delete them after a while. If you store the same information in a permanent database and use it for analysis you're in trouble and should have asked permission.

The fact that the user uses a private window or other means to indicates they don't want to be tracked probably makes this a more clear case.

<comment><USER8> > The fact that the user uses a private window or other means to indicates > they don't want to be tracked probably makes this a more clear case.

That's a very confusing statement. My server logs don't filter incoming log entries based on user agent, and certainly not on whether you're using a "private window" or not.

In addition, the goal of a private/incognito session is to be indistinguishable from regular sessions, otherwise websites can easily discriminate against private sessions (which they're already trying as hard as they could).

Edit: Wow the number of people on this thread claiming websites should be able to opt people out of logging based on whether they're using a "private window" (which websites should have absolutely no idea about) makes me question if I'm even on Hacker News.

Edit 2: Chrome sends an X-Client-Data header (which in a sense includes an installation ID, but allegedly has limited entropy) to certain Google properties, and rightfully got a lot of flak for it. It does not do so for incognito sessions. And now we have people arguing that Google should de- incognito incognito sessions to their analytics properties. Crazy stuff.

<comment><USER9> > Wow the number of people on this thread claiming websites should be able to > opt people out of logging based on whether they're using a "private window" > (which websites should have absolutely no idea about) makes me question if > I'm even on Hacker News.

Especially since "Websites shouldn't be able to tell if you're in incognito mode" has been highlighted in the past as a privacy ask, yes.

People can at least agree "website shouldn't be able to tell if you're in incognito mode" and "website should not track you if you are in incognito mode" are two mutually exclusive features, right?

<comment><USER10> obviously you don't now what the current incognito mode means (it has nothing to do with what you tell remove servers)

<comment><USER11> So inform us, how does incognito mode work in your world.

<comment><USER10> it doesn't keep history on your personal computer (that's it)... it doesn't erase history on remote computers like some of you appear to think

I think that it should do more, but it doesn't (a VPN or Tor would be nice in incog. mode)

<comment><USER11> Sorry, I think I might have been aggressively agreeing with you by mistake. We agree -- incognito mode is a client side thing

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Unless Google associates your anonymous browsing data from incognito mode, with your regular browsing data from regular mode, I don't see a case here. And I really doubt they do that, it would be such a clear and egregious violation of the reasonable expectation of privacy.

The other possible complaint could be that websites still can collect information on user behavior on the website, even if it is more anonymous in incognito mode. This is expressly what incognito mode says on the tin. You can use it to avoid saving your weird porn history locally, but not prevent websites from knowing what anonymous visitors are doing on their website. If the average consumer isn't tech-savvy enough to get this distinction, I'm not sure what Google could do besides putting this explicit warning in every new tab.

Summary: seems like this case will go nowhere, but still makes for soundbitey headlines and gives people an excuse to rehash their usual gripes that "my data is the next oil"

(IIUC, most ad targeting is still based on you explicitly searching for something you want to buy and ads matching those keywords, or retargeting from a website you've already visited but abandoned your shopping cart at, not some all-knowing profile of your deepest wants and desires).

Disclaimer: I work at Google but nowhere near the Analytics or Ads teams.

</comment><comment><USER13> I know that Google is making money through use of my personal data. I wish they would be required boldly state on every page that my personal data is being used, and that they are profiting from it. Finally, there should be some steps offered to remedy some of the above such as requesting that parts of the data that would be convenient for me to have deleted would be deleted. And the parts that are inconvenient such as my ability to login to sites I commonly visit could be preserved since that minimum requirements are met so I can easily access those sites.

And while I have no big conspiracy theories at the moment about how Google is doing anything evil, there is certainly no guarantee that something in the future could impact me. For example there could be some bad players working inside Google, Google could be acquired, or the government could take control in some way. these are all things that could be dangerous to me in the future if Google continues to preserve large amounts of my personal information.

<comment><USER14> Would this work for you:

WARNING! We use your personal data to improve your experience using Google products. We believe this will lead you using the service more often and, in doing so, see more ads which we profit from.

<comment><USER15> Hah as if it did improve the service compared to listening to basic product feedback. YouTube recommendations alone seem to cause people to lose hair, and that's not even touching ads.

But what am I talking about! Google KNOWS scale, I'm sure it'll come together eventually.

</comment></comment></comment><comment><USER16> (Disclaimer: I have a big personal gripe with Google, but I don't hate the company in general)

Something has been on mind for a while.

I see lawsuits against Google collecting / selling personal data and ideas to combat its monopoly in search. What I don't see is a discussion about regulating companies that have data on the majority of the population.

I know for a fact that Google used search insights to inform strategy. By knowing what people search for and modeling our behavior, they have an unprecedented ability to forecast future events. I expect that Facebook and other, lesser-known companies do the same. I believe it is dangerous for a company to have this ability.

I am not an expert in public policy and politics. Would it make sense to have regulatory oversight over all companies that have data on, e.g., over 50% of a country's population?

<comment><USER17> Regulations, a lot of times, tend to have the opposite of the intended effect. In this case, you'd need to define what is meant by "having data".

Is having an email or phone enough to qualify?

Maybe yes.

In that case, think of a rapidly growing startup, which breaches that mark (50% or whatever the law says) - and now has to comply with the law.

But the startup is not capable of compliance, because the law was made for behemoths like google.

This startup will go belly over and die soon.

Google's monopoly saved.

Alternatively, leaving it in the public domain for civil suits to be filed has a tendency of natural selection. If a company is TRULY big enough, and has that kind of data, someone WILL sue.

<comment><USER18> > In that case, think of a rapidly growing startup, which breaches that mark > (50% or whatever the law says) - and now has to comply with the law.

> But the startup is not capable of compliance, because the law was made for > behemoths like google.

If I were 'king of the world' I would consider something like this, but would not have it be a binary 'must comply or exempt' but a spectrum of ranges from 'totally exempt' to 'totally regulated' depending on what percentage of 50% you had.

If you have 5% of user emails, you are responsible for the bottom 10% of regulations and/or you need to fully comply with the regulations for a sample size of 10% of your users.

IDK I need to give it more thought, but first, another zoom meeting awaits.

</comment></comment></comment><comment><USER19> How poetic. This lawsuit brought to you by Boies Schiller, the law firm that aggressively intimidated Theranos whistleblowers. I would argue that their actions contributed to the suicide of Ian Gibbons, as well as threatening his widow with legal action after his death.

<comment><USER20> >I would argue that their actions contributed to the suicide of Ian Gibbons [...]

Anyone who has read Bad Blood [1] should have no doubt about this fact. They destroyed this man and lead him to suicide in order to try to save their house of cards.

[1] [https://www.amazon.com/Bad-Blood-Secrets-Silicon- Startup/dp/...](https://www.amazon.com/Bad-Blood-Secrets-Silicon- Startup/dp/152473165X)

<comment><USER21> I finally got around to reading it recently, and I think that aspect of the entire saga was the most startling. Not the fraud, not Holmes' ability to spin to the public and her board, not the work culture that she and Sunny Balwani created for their employees, but the severity and frequency of the real and implied legal threats Theranos employed through Boies Schiller and associates on literally everyone that touched the company.

<comment><USER20> The way they tried to bully Tyler Shultz [1] was also fascinating. I was impressed by his ability to resist them. I think his parents mortgaged their home to aid in his legal defense.

He tried to warn his grandfather, a member of the board, that something was wrong at Theranos. His grandfather said "Tyler, they can't convince me that you're stupid, but they _can_ convince me that you're wrong." His grandson turned out to be right.

[1] [https://en.wikipedia.org/wiki/George_P._Shultz#Theranos_scan...](https://en.wikipedia.org/wiki/George_P._Shultz#Theranos_scandal)

</comment></comment></comment></comment><comment><USER22> This lawsuit is idiotic. They're claiming Google is doing something wrong by tracking users from websites using ad tech when someone uses their browsers private browsing mode.

<comment><USER7> Why is it idiotic to expect Google to respect a users wish not to be tracked? Half the world has laws that require Google to ask permission. Using private browsing mode is a very clear indication the the user does not want to give them that permission.

It's really not that hard. Google and Facebook just don't want to understand it.

<comment><USER23> > Using private browsing mode is a very clear indication the the user does not > want to give them that permission.

How? Incognito is meant to keep your history clear from other people who use the computer. It explicitly does nothing about websites tracking your activity.

<comment><USER24> Right, it says so in no uncertain terms, right on the page when you open Chrome's Incognito window:

>Your activity might still be visible to:

> \- Websites you visit

> \- Your employer or school

> \- Your internet service provider

<comment><USER25> No uncertain terms?

</comment></comment></comment></comment></comment><comment><USER26> This was discussed yesterday here: [https://news.ycombinator.com/item?id=23397045](https://news.ycombinator.com/item?id=23397045).

</comment><comment><USER27> Google is just a digital Eye-of-Sauron[0] and very difficult to avoid if you do any meaningful surfing of the open web. They have their fingers in many different pies.

There is even small subcultures on the web dedicated to avoiding Google by doing things like running 'degoogled chromium' and blacklisting various Google domains in their /etc/hosts file. Sadly all these mitigations don't work because Google already has a dossier on many people and even if you don't have a Google account, Google keeps tabs on you via fingerprinting or other means and knows who 'you' really are (using simple correlation and heuristics).

Then this raises the issue of: what can be done? I prefer to just be nihilistic about it and accept that Google already has dirt on me, despite my mitigations (I have a bit of history blindly handing over personal data to Google for a number of years). I think young people these days in 2020 have a great opportunity to implement mitigations and are better suited than me to browse privately, since I'm already contaminated by Google. (I still mitigate however, but it's not enough).

[0] [https://lotr.fandom.com/wiki/Eye_of_Sauron](https://lotr.fandom.com/wiki/Eye_of_Sauron)

</comment><comment> user00012-ab > Google surreptitiously amasses billions of bits of information --every day > -- about internet users even if they opt out of sharing their information, > three consumers alleged in a proposed class action lawsuit.

a billion bits is only like 130Meg a day, seems like google is doing pretty good.

</comment><comment><USER28> And yet these guys can't figure out that I don't have babies so they keep showing me ads for diapers.

I guess it doesn't make a difference to them, as long as they get the ad revenue from Pampers

<comment><USER29> My profile is also ridiculously inaccurate. Though I do use ublock origin, privacy badger, etc and disabled most tracking features in my google account. Also on VPN pretty much all the time. I'd really like to see the ad profile of someone who is completely transparent and doesn't spend any effort to obfuscate at all. I'd imagine it would be much more accurate.

Interestingly my instagram ads are incredibly on point a lot of the time. You cant really hide your behavior in the app so the get a really good picture, probably.

</comment></comment><comment><USER30> "We strongly dispute these claims and we will defend ourselves vigorously against them," Castaneda said in an email.

I wonder what it is they actually dispute, when the claims are so basic? Most popular websites use GA, so of course Google is watching every single user action across the Internet, regardless of if they have tried to 'opt out' via any methods, laws, processed, etc.

<comment><USER31> Obviously this article is written for the general public and not in legalese. But this line gives a hint:

> The suit includes claims for invasion of privacy and violations of federal > wiretapping law.

The claims Google disputes is that they are breaking the law.

> I wonder what it is they actually dispute, when the claims are so basic.

The claims can be summarized basically, but proving that someone has broken the law in court is not basic. This basic overview of federal wiretapping laws is over 70 pages[1]. Laws are filled with specific minutia. Here is another good overview of privacy law[2]. Even though the statement "Google violated my privacy" seems simple and self evident, to prove it in a court of law there are tons of very specific criteria you have to prove.

[1] [https://epic.org/privacy/wiretap/98-326.pdf](https://epic.org/privacy/wiretap/98-326.pdf) [2] [https://www.stimmel-law.com/en/articles/legal-right- privacy](https://www.stimmel-law.com/en/articles/legal-right-privacy)

<comment><USER30> Great response, thanks. The US is definitely a more difficult environment to prove that their privacy violations are not just violations of privacy, but also of law. I wonder if these wiretapping laws are really the best route to go about attempting to prove this.

</comment></comment></comment><comment><USER32> I have a personal gmail and a work gmail (G Suite), each using my full name, but both run in separate browsers using the same IP address. I always wonder if Google keeps a "master record" of people and all their associations, if not for security or to work with law enforcement.

<comment><USER33> Probably. I recall Project Veritas showing hidden video of a Twitter dev speaking about databases that link all profiles of someone (using things like IPs, fingerprints, etc. to stitch the relationships together).

<comment><USER34> I really hate changing the topic here, but I feel it has to be said sometimes.

It's _very_ frustrating when people immediately discredit someone or something because they don't agree with them, even if they don't have the full story.

Project Veritas does some good work, even if they're blasted in popular culture/mainstream media for being 'biased', 'alt-right', 'etc'. I bet you the downvotes you're getting are just because you mentioned Project Veritas.

They have some very out-landish views, but when they actually put people on the street or go undercover, they've revealed dirt on a lot of companies and people.

It's shocking to me to see society go from "let's look at ALL sides of the coin, no matter how egregiously offensive they are to me" to "fuck 'em, they're trash media, they suck, they shill and are racist, alt-right losers and I'm not going to look at anything they post because in my mind everything they do is bad!"

I don't even go to Project Veritas outside of what I hear in the media, but I still give it a fair look and make my own opinion.

<comment><USER35> I'm sorry but no. I'm all for looking at all sides, but Project Veritas is not that. They have done extremely shady things such as intentionally sending a fake victim to WP [0], as well as editing/slicing sentences (which they recorded without consent) to create an entirely different narrative, different from what the person was originally trying to convey [1].

Even a _single_ one of these incidents is enough to completely throw every thing you've done and said into doubt, let alone the half a dozen that PV has behind it. There is absolutely no way you can take anything they say or do serious after they've been caught times and times again lying and misleading.

It has absolutely nothing to do with how outlanding their views are, and everything to do with the fact that what they say or do cannot be trusted. I used to in the beginning, but they are way past being given a "fair look".

[0] [https://www.bbc.com/news/world-us- canada-42150322](https://www.bbc.com/news/world-us-canada-42150322)

[1] [https://www.theverge.com/interface/2019/6/27/18760463/projec...](https://www.theverge.com/interface/2019/6/27/18760463/project- veritas-youtube-sting-james-okeefe)

</comment></comment></comment></comment><comment><USER36> What are people's opinions on Brave Browser[0]?

0\. [https://brave.com/](https://brave.com/)

</comment><comment><USER37> [https://archive.md/fsE8w](https://archive.md/fsE8w)

</comment><comment><USER38> This not from incognito that's just one piece.

It's against the practice of fingerprinting users across products and services.

<comment><USER39> I don't think Google is doing fingerprint (at least for Ads AFAIK, but there's not much reasons to do so in other products) and Chrome blocks fingerprinting in order to make Facebook and other competitors' life harder.

</comment></comment><comment><USER40> > "We strongly dispute these claims and we will defend ourselves vigorously > against them," Castaneda said in an email.

I've seen this _exact_ phrasing so many times in responses to lawsuits that I'm now starting to wonder if future lawyers receive this template as a graduation fair well package.

<comment><USER41> Lawyers generally copy each other. There is standard text which has gone through hundreds or thousands of litigations and hasn't done harm, and that's almost always used going forward.

A lot of oddball conventions, such as THE USE OF ALL-CAPS in specific places, which have no reason to be legally meaningful, but are always done.

Some of them do turn out to be important. Standard clauses build up over time.

I think plaintiffs are right in this case. Google is openly breaking a number of laws, including CFAA. This constitutes unauthorized access. CFAA is a broken law with an overly-broad definition of unauthorized access, which the tech industry abuses all the time. It will be nice to see them get abused back. Perhaps they'll have incentive to fix it.

</comment></comment><comment><USER42> "Secretly"

</comment><comment><USER43> Secretly? Isn't this effectively the entire point of their business?

</comment><comment><USER44> This is a secret?

</comment><comment><USER45> "Secretly" is a misnomer.

</comment><comment><USER46> They'll be dancing in the streets of Redmond tonight!

</comment><comment><USER47> Here's a non-paywall article about the matter: [https://www.reuters.com/article/us-alphabet-google- privacy-l...](https://www.reuters.com/article/us-alphabet-google-privacy- lawsuit/google-faces-5-billion-lawsuit-in-us-for-tracking-private-internet- use-idUSKBN23933H)

I think it's worth noting the class-action lawsuit is asking for at least $5 Billion

I'll also encourage the use of DuckDuckGo.com for your search and [1] uBlock Origin, [2] Searchonymous ( _it prevents google from tracking your searches if you 're logged in to an account_), and [3] Google Search Link fixer ( _removes link tracking from Google Search links_ ) in Firefox, but would happily update if anyone has better recommendations.

[1] [https://addons.mozilla.org/en-US/firefox/addon/ublock- origin...](https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/)

[2] [https://addons.mozilla.org/en- US/firefox/addon/searchonymous...](https://addons.mozilla.org/en- US/firefox/addon/searchonymous/)

[3] [https://addons.mozilla.org/en-US/firefox/addon/google- search...](https://addons.mozilla.org/en-US/firefox/addon/google-search-link- fix/)</comment>


Avoiding Chrome Webstore's manual extension review - <AUTHOR> https://getsnapfont.com/posts/avoiding-lengthy-review-times-for-chrome-webstore-submissions <comment><AUTHOR> Hey folks I run Snapfont, a Chrome extension to test fonts on any webpage. I've been running this extension since the last 6 months and I've had plenty of issues with the Chrome webstore.

If you're a extension developer I hope this post helps you figure out long update times with the Webstore.</comment>


Using 'switch' to match arbitrary logic instead of string or number literals - <AUTHOR> https://twitter.com/swyx/status/1163225169676132353 <comment><USER2> Coded the "normal" way, you get this:

        if(githubUrl) {
            return config.github;
        }
        if(twitterUrl) {
            return config.twitter;
        }
        return {
            to: '',
            ...
        };

IMO this is both clearer and easier on the eyes. Can anyone show me an example of this `switch` pattern that actually makes it better than the obvious if- based version?

I mean, given that they're early returns, you don't need any `else` statements. And in situations where you couldn't use early returns, the `switch` pattern would require `break;` statements. That would make that code uglier to the same extent as adding `else`s above. What am I missing?

<comment><USER3> In the end I think it's a option of style in which "if" and "switch" are neither the correct match.

The goal is to define a value (a variable or return value) in which a value is always established and it's established through several checks (exclusive or not).

In this case the goal is to the definitively define a config given a URL.

The "switch" and a default condition which I think express better that a value must be defined. With "ifs" we can add more complex logic and avoid the problematic "breaks" but we loose that in your face "default" condition.

In theory it would be better to have a different control structure like "pickJustOne":

      return pickJustOne(url) {
        githubUrl: config.github;
        twitterUrl: config.twitter;
        default: config.unknown;
      }

"pickJustOne" would have a companion named "pickOneByOrder" that would work like an "if" where the order of evaluation would matter.

<comment><USER4> EDIT: Oops, chalk this up as another case of reinventing the wheel. We already have all this in the form of the ?: ternary operator, as masklinn pointed out:

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

\----

Inspired by this, I cooked up a crude imitation in (ugly/functional'ish?) Swift:

        let result = [(firstCheck,  1),
                      (secondCheck, 2),
                      (thirdCheck,  3)]
                      .first { $0.0() }?.1

That iterates over an array of (() - > Bool, Value) tuples and returns the second element of the first tuple whose first element is a function that returns true, otherwise nil. The types of all values must be the same. Could shorten .first to .firstTrue or something.

And a version that's closer to your idea:

        typealias BooleanFunction = () -> Bool
        typealias FunctionValuePair<ResultType> = (BooleanFunction, result: ResultType)

        func pickOne<ResultType> (_ pairs: FunctionValuePair<ResultType>...) -> ResultType? {
            pairs.first { function, result in
                function() == true
            }?.result
        }

        let result = pickOne(
            (firstCheck,  "one"),
            (secondCheck, "two"),
            (thirdCheck,  "three"))
            ?? "default"

You could make the default result an argument for pickOne so that it never returns nil, but I prefer to keep it an optional.

Though it's too early in my day to think of better names. :)

</comment></comment></comment><comment><USER5> I do use patterns like this (Swift code):

       switch (githubURL, twitterURL) {
       case (let .some(url), _): return config.github // I prefer GitHub and ignore Twitter
       case (.none, let .some(url)): return config.twitter // Otherwise I'll see if I have Twitter
       case (.none, .none): return {} // If I have neither I'll create something new
       }

But the code looks like JS and I think it doesn't support switching on tuples?

Bonus in Swift is that the compiler actually deduces that I handled all possible cases. No surprises here. Much better than if/then

<comment><USER6> This would probably get messy if you had a large number of URLs to check, and also would be very hard to modify. A bunch of `if` statements that return early would be a lot easier to work with.

<comment><USER5> And a bunch of `if` statements could get hard to maintain once it turns into a bunch of related compound statements, while it doesn't check for missing combinations compile-time.

But I don't think you should call any function outside of constructors with more than three-ish parameters to begin with, so probably you would get a dictionary or list of URL's by the time it grows out of control.

</comment></comment></comment><comment><USER7> Yeah that's been around for some time [http://clhs.lisp.se/Body/m_cond.htm](http://clhs.lisp.se/Body/m_cond.htm)

</comment><comment><USER8> IMO, I don't really like it as a switch or the if statements. My issue being the multiple booleans being passed to a single function. I could see it growing to 3, 4, or greater too if more social options were added. I prefer enums.

       SocialUrl = 'github' // or twitter or w/e

       return socialConfig[SocialUrl] || defaultSocialConfig

or how about:

       const getConfig = (key, default) => config[key] || default

Logic per key value isn't necessary.

edit: disregard. Misunderstood the code =)

<comment><USER9> There are no multiple booleans passed to the function, there are actual github and twitter URLs being passed in, and likely integrated into the config objects before being checked for existence.

<comment><USER8> ahhhh ok, then I've misunderstood the code, thank you. Disregard :)

</comment></comment></comment><comment><USER10> In Scala you can do this pretty neatly:

      url match {
       case GitHubUrl => config.github
       case TwitterUrl => config.twitter
       case _ => defaultUrl
      }

<comment><USER5> Kotlin and F# have the same, such a clean pattern.

</comment></comment><comment><USER11> In Golang, a missing switch expression is equivalent to the value `true`, so this shortens further to:

      switch {
        ...
      }

<comment><USER12> But in Go, case-values must be constants, right? This would make the trick from the referenced source code impossible, I think. (Whether or not that is a good or a bad thing is a question I am deliberately ignoring.)

<comment><USER13> Not true. Go uses logic expressions in the case statements all the time. And as pointed out above, a switch defaults to checking against true.

[https://tour.golang.org/flowcontrol/11](https://tour.golang.org/flowcontrol/11)

</comment></comment></comment><comment><USER14> It's a fairly common pattern. Essentially it's a slightly cleaner way of doing a multiway conditional rather than if and else.

Ruby has it explicitly (case, when, else), and of course functional languages with pattern matching operate like this as a matter of course. A Boolean guard followed by the code to run if the guard is matched.

</comment><comment><USER15> That's a nice source of bugs, if you are too quick to assume what the logic does, or what's being returned from elsewhere and just put it into the switch. I found it helpful to devote another line of code and explicitly handle the outcome of computations or return values (except of course in trivial cases).

</comment><comment><USER16> Apparently you would see this commonly in hardware design back in the day because one of the compilers picked this up and mapped it to a look up table in the right way where other expressions might not be picked up correctly. I could easily see the same trick working in a software compiler too.

<comment><USER17> JS's switch is a different beast. The OP's statement doesn't work in C/C++ because its case labels need to be unique.

You also would need a large number of case statements before a modern optimizing compiler will decide a switch statement is worth a jump table rather than conditionals.

<comment><USER18> In fact, the compiler building a static switch table from non-constant expressions sounds a little bit impossible ;-)

</comment></comment></comment><comment><USER19> The fact that it works doesn't mean it's good code. A switch statement should not be used like that IMAO because every developer just like the author is confused by first sight. Readability is an extremely important part of good code.

Personally I would prefer somthing like this:

       return (githubUrl)
          ?   configGithub
          :   (twitterUrl)
             ?   configTwitter
             :   configDefault;

<comment><USER13> I personally find this _way_ less readable at a glance.

Every argument you make against using switch statements I would make against doing this as well.

When you consider the semantics of the statements, using switch statements for this makes more sense than chaining ternary statements. Chained ternary statements is just a less readable if/else chain. Personally, if one of my guys chained a ternary like this I would immediately fail the PR.

IMHO at least.

</comment></comment><comment><USER20> So if both conditions are true is switch using earlier option? Or is the order undefined? I prefer to `switch` over mutually exclusive options.

<comment><USER21> The order is defined. If you supply an object with both keys, you always get the Github return value.

</comment></comment><comment><USER22> [https://en.wikipedia.org/wiki/Pattern_matching](https://en.wikipedia.org/wiki/Pattern_matching)

[https://alvinalexander.com/scala/how-to-use-if-then- expressi...](https://alvinalexander.com/scala/how-to-use-if-then-expressions- guards-in-case-statements-scala)

</comment><comment><USER23> fyi... recent related (but not a dupe) discussion: [https://news.ycombinator.com/item?id=20066628](https://news.ycombinator.com/item?id=20066628)

</comment><comment><USER24> Coffescript uses this technique: [https://coffeescript.org/#switch](https://coffeescript.org/#switch)

</comment><comment><USER25> good case for replace switch with polymorphism

</comment><comment><USER26> This usage is very annoying. It can match on completely arbitrary conditions while pretending that they're homogeneous like conditions in 'switch' are supposed to be. You wouldn't fire up a 'switch ... case ...' to check one condition, which is what you do in the "early return" pattern that's a lot better for disparate checks than switches and elses.

It also uses syntax that's different from regular C-style "I (command you) {to do stuff}".

All that for very dubious benefit, as in I can't see any. I knew exactly one dude who insisted on writing this way, and he's also the only one I know who supported Putin, so I guess pick your choice.

<comment><USER4> That correlation is hilarious.

<comment><USER26> The guy also liked Microsoft's ecosystem (despite coding for a Linux backend) and drove a Chinese-made SUV. I'm comfortable writing off the `switch` pattern as another one of his idiosyncrasies. It also annoyed everyone who came across his code, just as his political views irked people outside of keyboard-mashing time.</comment></comment></comment>


STEMpedia Launches on Indiegogo with an Electronics Kit for Your Gifted Child - <AUTHOR> https://blog.hackster.io/stempedia-launches-on-indiegogo-with-an-electronics-kit-for-your-gifted-child-be284eff4989 <comment><USER2> Thank You Cameron Coward :)</comment>


Broadcom's Flowdock, an enterprise messaging app, has been down for two days - <AUTHOR> http://status.flowdock.com/#day <comment><AUTHOR> Sounds like they've been leaking private conversations as well, Twitter: [https://twitter.com/search?q=flowdock&src=typed_query](https://twitter.com/search?q=flowdock&src=typed_query)</comment>


To save money, Washington state builds copters from surplus parts - <AUTHOR> http://seattletimes.com/html/localnews/2025365049_dnrhelicoptersxml.html

<comment><USER2> The numbers don't add up. 5k hours of skilled work must surely add up to at least 250k USD with overheads, more likely 500k USD. So they are really saying that it cost 1M USD per helicopter, still a lot better than 10M USD but stillmisleading. Nonetheless, it's an impressive feat and exceptionally praiseworthy. Nice to see a government run organization (actually any big organization) saving money while getting things done.</comment>


Ask HN: Why has most countries' government response to the virus been slow? - <AUTHOR> The government's response to the SARS-CoV-2 virus in most western countries (US and Europe) has been slow, and more strict measures have not been taken until the confirmed case count is on the thousands, where it's too late for those measures to be effective. Is that due to ignorance/incompetence of politicians or there could be some malice behind it? By that I mean, could it be that they didn't do much at the beginning to let it spread just enough so that the virus spread at large on the population, and given elderly people is more vulnerable to death by the virus they could potentially save on a lot of pensions and health care (in EU many countries have free public health care)? See https://www.youtube.com/watch?v=nSXIetP5iak <comment><USER2> [https://en.wikipedia.org/wiki/Hanlon's_razor](https://en.wikipedia.org/wiki/Hanlon's_razor)

IMHO they simply (for one reason or the other, but not intentionally/with malice) underestimated the seriousness of the problem at hand and thought that they would have created panic/economy disasters/etc..

The issue seems to me that even now quite a few governments are failing to introduce adequate measures to stop the spread before the number of cases increases too much.</comment>


Next generation of algorithms inspired by problem-solving ants - <AUTHOR> http://www.physorg.com/news/2010-12-algorithms-problem-solving-ants.html

<comment><USER2> These articles are disappointing. First, people have already long since explored this design space for things like network routing and holding it up like it's a new idea is academically fraudulent. (I don't know whether it's the journalist or the scientists without more research, but I'd lay money on the journalist.) Second, the _real_ world inspiration of ants is somewhat limited by the fact that the ants have been thrown at problems where, in computational terms, they have a lot more ants than complexities in the problem. A naive translation of the "ant algorithms" to computer programs would produce a very, very, very slow solution.

It's sort of cool, it's a nifty technique with limited applicability, but can we _please_ stop acting like antlike-automata is some sort of cutting-edge brilliant breakthrough rather than a relatively standard tool in the belt for some domains? It's not the next generation and arguably not even the "current" generation.

<comment><USER3> This is par for the course with physorg (and to a slightly lesser degree, newscientist).

</comment></comment><comment><USER4> I doubt this could be an efficient way to compute a shortest path. All of this amounts to a (very inefficient) parallel implementation of an algorithm that checks whether the Bellman-Ford conditions apply to a suboptimal path, as the path is gradually improved.

The Bellman-Ford condition on an arc (i,j) of a graph G constrains the difference of potential between the two nodes i and j, (y_j - y_i), to be no more than the length c_ij of the arc. When it is violated, a better path can be found by modifying the potentials.

The inefficiency here lies in the random nature of these checks, which (if I correctly understood) modify. A much more intuitive algorithm is Bellman- Ford's algorithm, which works even when some arc costs are negative, while Dijkstra's algorithm, much more efficient, can only be applied on non-negative arc costs.

Networks with millions of nodes (such as GPS road networks) could hardly benefit from this ant-colony algorithm, and there are already better algorithms -- see the work by Andrew Goldberg, for instance (<http://www.avglab.com/andrew>).

</comment><comment><USER5> Nothing new, they should check the work of Marco Dorigo, <http://en.wikipedia.org/wiki/Ant_colony_optimization>

</comment><comment><USER6> I could have sworn I read about this in GEB in '79, and I don't think Hofstaedter would argue that he was postulating anything new with Aunt Hillary.

</comment><comment><USER7> > An ant colony is the last place you'd expect to find a maths whiz

I actually remember seeing something very similar to this on TV when I was a kid, and the program I was watching was even older than me; probably produced before I was even born.

</comment><comment><USER8> Same "news" different source: <http://news.ycombinator.com/item?id=1989565>

</comment><comment><USER9> The other problem with this article is that it really says nothing about algorithms. The title, "Next gen algorithms inspired by..." implies that someone actually _wrote new algorithms_. That didn't happen. Instead its a lengthy pronouncement of how ants explored a maze, with the author throwing on the normal uninformed speculation statement at the end to add some keywords to the text.</comment>


Thoughts and Observations Regarding This Week's Apple Event - <AUTHOR> http://daringfireball.net/2013/10/this_weeks_ipad_event <comment><USER2> _I don't think anyone at Apple took these functional regressions in the Mac version of the iWork apps lightly, but they are no mistake, either.

The bottom line as I see it: you need to have clear priorities, and Apple's highest priority here was clearly cross-platform parity for iPhone, iPad, web, and Mac. No other office platform in the world has that — complete parity between native apps for phone, tablet, desktop, and a web app_

Does anyone think this is actually the right thing to do? If feature parity really is the goal, then I'm much more concerned about the future of the Mac now than I was yesterday.

<comment><USER3> Sure it's the right thing to do. Apple is designing iWork for the 99%. Some of those features may be added back when they can implement them properly across all versions of iWork, but I wouldn't be surprised if they don't. I think Apple is taking steps to make inroads in enterprise and I think they'll be successful. Numbers is never going to replace Excel for an investment banker, but it's not intended to. Most people in Corporate America don't actually need Word or Excel to perform their job, it's just what IT departments bought and that's the standard.

For 99% of enterprise users, there really isn't a barrier to switching to another productivity suite. It's mainly just institutional inertia from the IT departments. Their concerns will be alleviated as well when Apple keeps building out tools to make their lives easier, like the recent volume app purchasing made available. And most importantly, the total cost of ownership is going to look different now that OS upgrades and iWork upgrades will be free going forward, making iOS devices and Macs more enticing a choice.

edit: Matthew Panzarino discusses what Apple is going for with the iWork changes.

[http://techcrunch.com/2013/10/26/stop-freaking-out-about- iwo...](http://techcrunch.com/2013/10/26/stop-freaking-out-about-iwork/)

<comment><USER4> It's still a huge slap in the face to those who's been using Pages for anything even slightly complicated.

I'm an author. I wrote my books in Pages, loved it, and recommended it to everyone. I'm now very glad I didn't upgrade, because Pages 5 would make it impossible to format my books.

I'm the sort of guy who tells everyone he knows "buy a Mac!". I'm now hesitant, for the first time in a long while. I'm very concerned about iOS- ification. I bought this machine because I use it to do things.

This happened in 2011 with Final Cut Pro. Apple lost a lot of video editors, and my understanding is that their mindshare didn't bounce back.

<comment><USER5> Apple would rather you write a book in iBooks Author than anything else.

Pages and MS Word have never really been products for the professional author: they are consumer-class apps for the mass-market. Apple recognises this to a greater extent than Microsoft, and by cutting functionality, they can vastly improve usability for the core market. Whether they will bother to fill the void left with their own professional writing software or not is up for debate; they will, IMO, just leave that to Adobe.

I think you should still tell everyone you know to buy a Mac. Just tell those who are professional-class writers that the latest version of Pages might not fulfil their needs and point out the alternatives.

<comment><USER6> Also, if he wants to make his publisher happy, he should write in Adobe InCopy.

[http://www.adobe.com/products/incopy.html](http://www.adobe.com/products/incopy.html)

</comment></comment></comment></comment></comment><comment><USER7> > There just aren't that many people — yet? — using Kindle Fires, Galaxy Tabs, > Nexuses, or Surfaces as alternatives to the iPad. Thus the massive > discrepancies between the iPad's market share and usage share numbers.

2 years ago you wrote[1]:

> The iPad's role in the tablet market much more closely resembles the iPod's > role in the digital music player market a decade ago than it does the > iPhone's role in the 2008 phone market.

Need any help moving that goalpost?

[1][http://daringfireball.net/2011/07/ipad_dominance](http://daringfireball.net/2011/07/ipad_dominance)

<comment><USER8> > Need any help moving that goalpost?

Is it really moving the goalposts when things have changed in two years?

In 2011 the iPad absolutely dominated the tablet market. It was the tablet market. Not the case today, reporting both of those things is not moving the goalposts.

<comment><USER9> > reporting both of those things is not moving the goalposts.

He made a prediction:

 _You don't have to look hard to find many other observers with the same belief — that Android will succeed in the tablet market similarly to how it has succeeded in the phone market. Why the certainty, though? It's certainly possible, I agree. A 20-1 unit sale lead over all Android tablets combined seems preposterous. But I don't think it's certain. It reminds me of the certainty that many observers had, circa 2002-2005, that the iPod could not maintain a 70 percent share of the music player market._

 _The fundamental difference I see between smartphones and tablets is that mobile phones were an existing and long-standing market prior to the iPhone. Apple's stated goal in 2007 was to get 1 percent of the total mobile phone market by the end of 2008. Most people today still buy phones the same way they did in 2006: they go to their local mobile carrier store and buy whatever the sales staff there convinces them to buy. Over 100 million times, that's been an Android phone. I see no sign, though, that phone carriers are having any more success selling tablets than they ever were selling anything other than phones. Remember carrier-subsidized netbooks?_

 _I'm not trying to cherry-pick data. I'm simply observing, based on Apple's sales data and Google's activation data, that the tablet market doesn't today look anything like the smartphone market ever did. The iPad didn't enter the tablet market. It created the tablet market. The iPad's role in the tablet market much more closely resembles the iPod's role in the digital music player market a decade ago than it does the iPhone's role in the 2008 phone market._

 _Or as Marco Arment wrote almost seven months ago, there still really is no "tablet" market — just an iPad market._

<comment><USER10> "It's certainly possible, I agree." \- seems pretty reasonable assessment to me.

Also - iPod was a music player. It's competitors were...Music Players. If Apple had only released the Touch, they would have been wiped out by competitors on the music player front - but they stepped up and released the Nano/Shuffle.

It is interesting that Apple doesn't seem to have any interest in releasing any lower end tablets (akin to the Nano/Shuffle) to compete in the TV/WebConsumption market. Their decision not to enter that market has left themselves pretty vulnerable to disruption from below.

The real measure will be if people are actually those tablets in the market that Apple is competing in. We won't know for a couple years - my guess is that Apple is going to regret leaving that opening up for competitors - Tablets can migrate upwards a lot more effectively than underpowered netbooks could impact the Laptop market...

</comment></comment></comment></comment><comment><USER11> > the goal was always to get to free. Remember all the stuff from a few years > ago, when the iPhone first came out, and Apple used "subscription-based > accounting" for iPhone sales, because it was the only way it saw to comply > with U.S. accounting regulations and also provide free software updates?

> Apple's not trying to milk money from those customers ineligible for the > free versions of these apps (although, of course, they will happily keep the > money). It's simply the fallout from Apple's accounting guidelines that they > cannot simply offer these apps free of charge to everyone.

Can anyone who knows more about accounting than myself confirm this? I find it _very_ hard to believe that accountants dictate your pricing strategy. Accountants are there to manage your money and keep the books straight. They might advise you that offering free updates foregoes a large source of revenue, but there is no way that the way they define your products ties your hands, and stops you from legally giving away certain products.

But, I only say this because I know nothing about accounting.

<comment><USER6> It has to do with Generally Accepted Accounting Principles (GAAP) financial measures. Because the way Apple was reporting its revenues, it was forced to charge for iPod touch software upgrades while it didn't have to do so for iPhones software upgrades. That situation has since changed[1][2] and apparently, Apple has now found a way to make OS X upgrades free while adhering to accountancy rules.

[1] [http://tech.fortune.cnn.com/2009/09/14/accounting-rule- chang...](http://tech.fortune.cnn.com/2009/09/14/accounting-rule-change-in- apples-favor/)

[2] [http://www.zdnet.com/blog/btl/apple-earnings-a-heads-up- on-a...](http://www.zdnet.com/blog/btl/apple-earnings-a-heads-up-on- accounting-change-would-have-been-nice/29947)

</comment></comment><comment><USER12> _In the meantime, make no mistake, Apple continues to sweat the details on these events. This year they customized the entrance to the gallery building at Yerba Buena Center, ripping out the doors in the back — just for this event — to create a sunlit open-air entrance to the post-event hands-on area._

This is cool and all, but not many of us got to see these polishings. This sitcom of a presentation was, indeed, predictable in most senses. There is little delight to be had, and I don't necessarily blame Apple, but I sort of do. They know it's predictable; they read the unbelievable amount of prediction blogs that exist out there. And yet, they rely largely on video and proverbially screaming things we already know (like iPad selling better than every other tablet) to present their new products. I'd rather see them play 10 very well-made games and demo 10 very well-made everyday applications. Maybe show us more about how beautiful and powerful the Mac Pro is. I don't want to see them tout how awesome Apple is, and then introduce incremental products, even if incremental products is the right thing to do. For the record, I do think incremental is the right choice for this refresh anyway - there's a better way to present it.

 _This is the iPad Mini I expected to see in October 2014, not 2013._

Really? I have a hard time believing that Gruber actually believed this. This was obviously the next step for the iPad Mini. Better performance, retina screen.

 _Last year's Mini was a triumph of design; this year's update is a triumph of operational efficiency._

This is why it makes the event so boring. A great summary. This is another way of saying, "while it's not exciting or visually stunning, it's a big business win for Apple, and subsequently will sort of drive prices down for millions of consumers." This doesn't really combat against the primary criticisms. While I understand that public speaking isn't really his gig, Cook sounds a lot like he has a thesaurus for buzz words that he brushes up on while looking at pictures of Apple and big 3d pie charts of how much of a piece of shit the Microsoft tablets are.

I understand the updates - but the presentation is largely underwhelming. This could have been spun better. Oh yeah - did anyone catch that there's a new MacBook Pro? Does anyone know the differences introduced? What an understated rollout.

 _The big disappointment for me is that Apple did not announce 4K Cinema Displays to go along with it. Why make a machine capable of driving three 4K displays but not make the displays?_

My thoughts exactly. This should have been the one more thing.

[formatting edit]

<comment><USER13> I too, was expecting a matching glossy black rounded corner 4K Thunderbolt Display to go with the Pro can. Maybe they won't have it ready for December, but I'm sure it's in the works.

<comment><USER14> Exactly. I'm sure it's because they won't have one ready for the holiday season, less because they aren't working on one. It would be foolish not to at least have their hands in the 4k display game with their vertical integration strategy.

</comment></comment></comment><comment><USER15> This is likely the meta-est thing Gruber has written - except perhaps writing the Markdown manual in Markdown.

Apple event happens, random sites write various things about the announcements, Gruber waits for the noise to settle and writes a piece mostly in favour of Apple.

And you know what? It works! (No sarcasm)

<comment><USER16> Well, he needs to see which way the wind is blowing before he can offer "insightful" apologia.

Ack, I'm being too hard. It's a decent summary piece just like the 20 or 30 others I've seen on the event, just a little more cheerleadery.

</comment></comment><comment><USER17> I like what Apple is doing, but I hope Microsoft can build a viable competitor ecosystem. I do think Apple is good at beautiful, approachable products, but I think they make so many sacrifices in terms of power and usability to achieve it that we need a strong alternative from Microsoft.

The iPad Air looks amazing for example, but compared to the OS-level features offered by tablet Windows 8.1, I think it's lacking.

</comment><comment><USER18> If Apple offered software that was free to platforms that run on non-Apple hardware, that would actually be free. However, is it free if they

a) found a way to shave $X off the cost of their average machine sold

b) figured out that they would save $Y on support costs if more users had the same OS version and work suite installed

and then found that $X + $Y is greater than the income they receive from selling Mavericks and iWork? Mavericks and iWork are not free. Apple just found a smarter way to make their customers pay for them. If you would have bought and used them all, you just won. If you would have installed Linux, you just got hosed.

<comment><USER19> That's just a complicated way of saying, "It's not free, just rolled into the cost of the hardware." Which should be blindingly obvious to just about anyone.

</comment></comment><comment><USER20> Not a lot of additional insight here. I wonder if, at the next iPad event, they will introduce the iPad Pro. I'm not going to buy an iPad Air but I would buy an iPad with the A7 and the same display as the Google Pixel laptop. Probably not going to happen though, older eyes are not the 'fashionable' eyes.

<comment><USER6> Like John Gruber, I think that calling the new 10" model 'iPad Air' hints at a future 'iPad Pro'. Ever since the release of the original iPad, I've been hoping for a larger iPad. However, the reason I want such an iPad is so that apps can be built that use more screen real estate, apps more like on desktop OSes. I would love a full Photoshop experience made for touch (I use Photoshop Touch on iPad, but it's definitely not the full Photoshop).

How I envision such an iPad Pro: 13.3" diagonal @ 3072 by 2048 pixels (1536 by 1024 'real' pixels). That way, it could fit two current portrait mode iPad apps next to each other, and app developers can make new apps to take advantage of the 2x horizontal space. It would be great if, by then, iOS would support ICC profiles and accurate display of color spaces besides sRGB (Adobe RGB, CMYK, Lab, etc).</comment></comment>


Ask HN:  Looking for feedback on a startup strategy question - <AUTHOR>

This is an actual problem we have to decide on with our startup. It is not a hypothetical!
Help me decide!
SCENARIO
You are doing a startup. You have launched, you have customers, revenue and some traction. You are growing steadily.
You have just taken a seed round, which gives you enough runway for exactly 12 months. At the end of that 12 months, you need to be cash flow positive or you may as well pack up your bags and go home.
You have 4 staff, 3 of whom are developers and 1 of whom is the sales and marketing person. You have a board with 1 investor and 2 founders on it.
Your product is an early iteration, which means it meets the needs of some of your target market but not all. It needs continuous development in order to reach "product to market fit", and reaching that fit is an important aspect of becoming cash flow positive.
Your product is built in a particular technology which means that 40% of the development work can only be done by 1 of the developers (development bottleneck). This affects your speed of development. The other 60% of development can be done by all 3 developers.
Now, assuming that the sales and marketing techniques and the focus on the conversion funnel remains exactly the same no matter what you do with your technology, you have two broad choices:
CHOICE 1
Stick with your existing technology platform, and focus on reaching product to market fit. Accept that you will have a dev bottleneck, but do so knowing that it is preferable to have the full 12 months of runway at your disposal in order to maximise success.
Key advantage = Full 12 months of runway to reach cash flow positive
Key disadvantage = 40% of dev is bottle necked through a single developer
CHOICE 2
Spend the first 60 days of your runway rewriting your platform in a way that 3 developers can work on 95% of it, rather than only 60% of it. Spend the next 8 months focusing on reaching product to market fit on your new platform.
Key advantage = Once you have rewritten the core tech, everyone on the team can be fully productive on the platform
Key disadvantage = Rewriting the core tech probably reduces your runway window by 2 months, giving you 10 months to succeed rather than 12.
THE QUESTION
What would you do - choice 1 or choice 2, and why? <comment><USER2> I am a business person rather than a programmer, but I can tell you from my end that I have never seen a rewrite take only as long was as planned. If that two months becomes four months, you have 'lost' one-third of your runway. And there's not going to be much point having a product everyone can work on when there is no money to pay anyone.

<comment><AUTHOR> Yes that is one of the risks of doing the rewrite...if we don't make it in time, it puts us wayyyyy behind the 8 ball.

</comment></comment><comment><USER3> Would it be viable to get the other another dev trained in this other language? As has been stated before, having a single point of failure is not good.

Also - are there other reasons why you'd want to rewrite that code?

If it's well written in a language you're comfortable with supporting, I guess you can take on another expert dev in that language as you're growing.

<comment><AUTHOR> Yes that would be possible - sorry didn't mean to leave that out of option 1. To be honest in the time available it would improve our bottle neck, but not get rid of it.

Option 2 would certainly produce the fastest development setup.

I have realised that in trying not to cloud the decision by telling everyone what the tech was, I may have done you all a disservice by not giving enough information!

So here it is: The existing tech is Adobe Flex. Provides great RIA, but not good for iPhone/iPad. It makes up only the front end of the app, with everything else php based.

The new tech would be to re-write the front end in HTML/JS, leaving the backend php as is.

So another reason for rewriting the code is that we will likely want to dump flex at some point.

</comment></comment><comment><USER4> In this situation the details are actually important. What 2 technologies are being used? Can you cross-train? can you hire more dev's on tech A? Which platform is more sustainable, scalable? What is the pool of talent in your regional area? Are you in the enterprise market or consumer market? Are you integrating with your clients via some kind of API or is it a SaaS model?

All these questions impact your decision. It seems like you are only thinking about the technology but if you are a technology company then choice of platform has wider impacts.

<comment><AUTHOR> Yes I agree the details are important, but initially avoiding mentioning the tech means I hopefully got some less biased answers. I found that valuable.

The backend of the app is PHP, and it already has an API. The front end is Adobe Flex. The rewrite would involve dumping Flex for a HTML/JS approach.

We initially went with flex because our app is quite rich in interactivity, but we could do the same thing in JS now.

It's not an enterprise play, but it is B2B. We could cross-train, but hiring more tech's for Flex would be expensive and hard to do (not a lot around). It is a SAAS model, so my customers don't care at all what tech I use (unless they are a tech firm, at which point they screw up their nose at Flex). But they don't mater, as they are not our target market.

Essentially, changing to JS would double our speed of dev in the last 8 months of the runway. But, it may take longer to do than we expect and we may cut off too much runway to make it worth our while.

It may be better to stick with Flex to the point of cash flow positive....then rewrite.

</comment></comment><comment><USER5> In of the videos of Google I/O, developers were talking about the "bus factor". It basically means if one of your developers were to get run over by a bus, how would the development process of your product be affected? That's why they encouraged documenting the work done etc.

Same principal applies to your current situation too I guess. If that 1 critical developer is run over by a bus / decides to quit / has a health problem / has a baby etc things may stagnate more than you can imagine.

A key advantage of a startup is to be flexible and lean, which means you'll be able to adopt and discard things faster than the "big boys".

So basically rewriting the core to let everyone (especially newcomer employees) get productive on it easily would be a better idea.

<comment><USER6> I'm not sure that it's entirely that simple. I don't want to get into any language wars but certainly in some cases the one single developer coding in a language they are extremely proficient in may in fact help use the "runway" most effectively.

The cost of collaboration is not equal to 0, and if it was my money I'd be looking for optimal efficiency over broad accessibility.

My vote would be for option 1, as you have already indicated that this affects only 40% of your product. If you do experience continued steady growth and become cash positive then pull in extra resources to support the 40%.

Given of course, whatever the 40% is written in is considered to be a _good_ language. I won't define good, it means different things to so many people...

<comment><AUTHOR> I specifically avoided mentioning the languages so as not to cloud peoples judgement of the issue... :-)

Yep I get your point, that optimal efficiency is the preferred path. Good insight thanks.

<comment><USER7> So, maintaining that technology boosts your runway, but also puts you in danger of loosing everything if the developer quits. Assuming from your (positive) feedback to that idea you think it shouldn't happen in the 12 months timeframe.

</comment></comment></comment></comment><comment><USER8> CHOICE 1: Achieving product/market fit is more important than any technical decision.

As a side note, why can't the developers learn the other technology?!? Only bad developers can't learn...

<comment><AUTHOR> They could learn....that is true.

</comment></comment><comment><USER9> I think in this particular case, the devil is in the details. But, if we address your question in it's current black/white form...

Start by figuring out how long it's going to take to go cash flow positive. Double that time. If that doesn't leave time to do the rewrite, skip it. Instead, temp or hire a new guy who can back up your bottle-necked development.

<comment><AUTHOR> Yep the time it might take to do the rewrite is the biggest red flag for choosing that path.

</comment></comment><comment><USER10> Why not have the 40% dev continue on old site, and maintenance. While have the rest work on the new site, but at the same time allocating resources as needed. I can almost guarantee that the redo will take longer than what you are planning. Take your estimate and double it.

<comment><AUTHOR> In attempting the rewrite, the developer who covers the 40% of the existing tech would be a critical component of the new build....so probably not viable to do both.

</comment></comment><comment><USER11> Get the one esoteric developer to develop a layer of indirection (or API) for the other two developers to work with.

That way, you may be able to utilise all your developers fully.

As the saying goes "all problems in tech can be solved by an extra layer of indirection"

<comment><AUTHOR> We already have an API...it is the front end of the app we are looking at swapping out (swap Flex for JS).

</comment></comment><comment><USER12> Is there a reason one of the three developers couldn't pick up the 40% platform/language? I am not sure the situation needs to be so black and white.

<comment><USER13> Achieve product/market fit and start fundraising for your next round early to extend the runway.

If you have customers paying for the product/service, why pack up your bags and go home? Once you achieve pm/fit you should be focused on scalable repeatable sales/marketing channels.</comment></comment>


How to decide between a responsive website or a native mobile app - <AUTHOR> http://thenextweb.com/dd/2014/02/08/decide-responsive-website-native-mobile-app/ <comment><USER2> The article completely overlooks _hybrid apps_ \- the middleground between the two choices in many areas. In my opinion, hybrid apps have a bright future because they have the potential to grow in two critical areas:

(1) _Leveraging the growth of the web_

History has proven that the web is becoming more mature and stable, and that it offers an excellent platform for development in most cases. The tools and frameworks being developed allow developers to build more efficiently. The web is a solid backbone that has only gotten stronger over time. Native mobile development has also grown in this aspect. However, how do we know the native pattern won't follow the same course as desktop applications? Sure, there will always be use cases for native mobile apps, just as there are critical desktop applications that haven't been replaced yet. The web seems to be more consistent, and as it continues to grow, it only continues to fuel the hybrid development community.

(2) _Building off of a maturing mobile community._

For the most part, hybrid development is simply an abstraction over native APIs. If the native app development ecosystem slows down, becomes more mature, and stable - it helps the hybrid ecosystem. The fact that iOS and Android are becoming the standard helps reinforce this idea. This allows us to build those abstractions and tools that make hybrid development possible. Exponential growth and change are the enemies of hybrid.

New native platforms and functionalities are like earthquakes. The architects and engineers on the surface who rebuild are the hybrid ecosystem. Over time, the world introduces new tools for these architects and engineers to make them more productive. This is the web - the fuel for the hybrid world.

So what happens if the earthquakes become smaller and less frequent? What happens when the architects and engineers begin to become more effective, at the same time?

Anyway, other than the previous points, the author summarizes the decisions to be made by businesses quite nicely. It's all about measuring the trade-offs...</comment>