Ask HN: Academia or Startup/Industry? - <AUTHOR> The title pretty much says it all. At some point in the life of a phd student or postdoc, one has to decide whether one wants to follow the academic path, or switch gears and work in the private sector.
I am a postdoc in nuclear physics at an renowned US institute, but my time there runs out. So I am in the same spot. It is easy enough to ask people who choose the academic path, but that is certainly one-sided. Since I, personally, wouldn't want to work for a big company but rather at a startup where I have some impact, I hope this is a good forum to get some insights.
So, who here had the same decision to make? What made you decide? Money? The possibility to create something by yourself? Did you feel a "calling" to start or work at a startup?
Did anybody regret it?
The other question would be: Is there actually interest in physicists? <comment><USER4> Hey davrosthedalek, I'm facing a similar decision as well. I can't speak for everyone, but I'm definitely leaning towards startups because there are simply more opportunities for me in that direction. That will be different for everyone but one way to figure this out is to contact both sides and see how much interests you get from them.

I'm a biostatistician and my switch to data analytics comes rather naturally but my biology background does cause some organizations / people to do a double take (generally a negative one), but still I'm getting more interest in industry than in academia because the academic landscape in general is contracting, some fields like mine more severe than others.

I've chatted with a whole bunch of startups and folks in the industry and it seems people with quantitative degrees plus coding skills tend to be welcomed. Of course job specific skills varies a ton, but chances are if you're coming from nuclear physics you'll find a good fit somewhere.

My decision was not just motivated by the number of opportunities and levels of interest expressed by both sides, but also the chance to work on project that has fairly immediate impact on people's lives. That search for relevance (academic work can be buried deep in obscurity) is a big motivating factor for me.

Good luck on your hunt. I'll be needing a bit of that too.

</comment><comment><USER5> I finished my PhD in Comp. Sci. three years ago, majored in data mining - <USER2> tough, but enjoyed every bit of it.

Soon as I finished, I wanted a job that wasn't fully research-based (I was a little bit tired of experimenting, coding and writing paper cycle), and I stumbled upon my current job. We are a start-up doing a fraud detection. It was all quite fortunate, since towards the end of my PhD, I got caught up in all the startup hype.

Having said that, I think one of the main reason why I enjoy my current work environment was not because of the initial reasons of why I joined (I actually had to get this job, because it was in a different city where my fiancee lived, so job was just a good excuse to move) but the things that I have been able to do at work.

When I joined it was quite terrible - writing Java 1.2 based applet on the browser with old Swing components ( _shudder_ ).

But I decided to scrap the entire platform and do the entire re-design and re- development of the platform during my spare time. I was able to get the prototype ready, using the latest Web stack and I presented to my CEO, which he loved.

And ever since then, I've slowly implemented my "hacker" way of development into my work place.

I do think about going back and researching some time in the future - I also just finished a journal paper with my previous supervisor and realised I missed it.

I also sometimes think I'm 'wasting' my research or skillset I've acquired.

But, I try to read up on research papers here and there, compete in data mining competitions here and there, enter hackathons, try to work with different people.

Anyway, sorry for extending this story, but all in all, I'm happy, not necessarily because of the decision I've made, but what actually happened AFTER I've made the decision.

French designer Pierre Cardin used to toss a coin to make a really really big decision and when someone said "why do you leave that to a chance?" and he replied - "so long as I commit to my decision, I'll be ok". (I think that's roughly how the story goes).

I'm not sure if I helped. :)

<comment><AUTHOR> That was very interesting, thank you!

You mention this "wasting" thought, which I have too. But it's good to know that despite this, you are still very happy with your choice. I always wonder whether this thought is real, or implanted by interaction with all the people in academia. For them, of course, academia is "better". At least I hope it is :)

</comment></comment><comment><USER6> I was a physicist, with a Ph.D. in condensed matter. Industry is more fun, at least you have more options to experience different things. And you can still read physics books for fun, if you like, at your free time.

</comment><comment><USER7> if you intend to work for a startup, I would go for FLiBe Energy, a startup devoted to developing a thorium reactor. That's where I'm hopefully headed after I graduate with a Chemical Eng. degree. To learn more about thorium reactors, you can go here <http://energyfromthorium.com/>. The story of thorium reactors could be made into a movie, it's that amazing.

<comment><AUTHOR> Oh yeah, this is great! Also interesting: Traveling Wave Reactors (<https://en.wikipedia.org/wiki/Traveling_wave_reactor>). Bill Gates invested quite a lot in TerraPower.

<comment><USER7> Yes, both are super interesting, but it's a shame it's taken so long to pursue these technologies. Mind if we exchange email addresses? It's rare to meet someone who's knowledgeable about these technologies and also on HN. My professors don't even care about these, and I supposedly go to a very good school. My email is in my profile.

</comment></comment></comment><comment><AUTHOR> Follow up question: Anybody here managed to have both? That is, a career in academia, and some participation in startups?

<comment><USER8> There are several. Probably the most famous of them is David Cheriton: [http://www.forbes.com/sites/ryanmac/2012/08/01/professor- bil...](http://www.forbes.com/sites/ryanmac/2012/08/01/professor-billionaire- david-cheriton/)

</comment></comment><comment><USER8> For some people money is the primary motivator. But you have completed your PhD so I would guess that you are less motivated by money than the boyz on Wall St.

My experiences range from working in multinationals to startups and then returning to do my PhD. So I think my perceptions might be of some value to you.

Academia is all about money as well. You need to acquire grants to do more research. If you chose to teach then the tuition fees are part of the revenue that you help the institution acquire. If you want to be very successful in academia then you need to bring in lots of money which in turn means getting lots of publications, etc. In effect you run a startup within an institution and they take their share for providing the facilities, support, etc.

If you choose to create a startup, then you are in control but with that control comes the responsibility for making it work. You have more freedom to choose the path. Sooner or later you need to look at monetising your work and that requires marketing, sales, admin, etc.

You ask whether there is much interest in physicists. Yes and No. Depends on what specific skills you bring to the prospective employer. Due to your skill set it is probably some large corporation. So until you prove yourself, you are but a cog in a machine. Your PhD proves that you can perform original research and that you can effectively communicate the fruits of your labours. So it is how you plan to apply those skills that matter more than exactly what you are an expert in. In the past people with your skills found much demand on Wall St for their quantitative and reasoning abilities. These days, I think Wall St is not a good option.

Although I'm a serial startup person, I've never made it big. Was able to create comfortable living and enjoy the freedom of not working for The Man. But clients are The Man in disguise - so you still need to be wary about becoming a non-indentured slave. To answer your question, I don't regret it. But you have to be comfortable with insecurity - both financial and emotional. And it does limit the choices in relationships to those who too can cope with the ups and downs of entrepreneurship.

This is becoming a rather long answer. So to wrap up: I believe you need to feel "being called". You absolutely need to take stock of what your strengths and interests are and how and where they can be applied. If you can't create value in the eyes of others, then sooner or later you'll crash and burn. But that is pretty much par for the course on all three paths you are considering. So the bottom line question is how you cope when facing uncertain outcomes. Considering your background in nuclear physics you might already be at home with chaos and lack of certainity.

Good Luck !

<comment><AUTHOR> Thanks for your long answer! I agree that Wall St. is not an option. I wouldn't want to develop risk analyses or the next ultra fast trading bot anyway. Not that I don't like thinking about finance, but not all day :)

I don't want to make this a "please hire me" post. But since you mentioned specific skills: I would say that I have a higher affinity to software development than most of my colleagues. For example, I am currently the "offline analysis coordinator", and it that role I wrote pretty much the entire analysis framework. I also dabbled into web applications: Our slow control, i.e. the experimental control software, is a web application with postgresql backend written in Python (Flask). I kind of liked that, and I think I will wrap this up and put it on github.

But I digress. You made an interesting comment about relationships, and you are certainly right there. On the other hand, academia doesn't make it easy there too. You are guaranteed to move a lot, and especially in experimental nuclear science, a lot of the places are in less than stellar areas.

What made you come back to make your PhD?

<comment><USER8> Thanks for asking: I started my career as a "real" engineer - safety boots, hard hat, big SUV, million dollar a day decisions. I morphed into financial engineering guy (with engineering skills you can model and understand any complex system) and I've always been involved with ICT - SCADA & telemetry along with concrete footings and steelworks.

Over the years I became very frustrated about the lack of real engineering in what passes for software engineering - obviously by this time my exposure was to fund managers, insurance companies, merchant bankers and the software based systems there. So I decided to make a mark in that corner of the universe. I'm still working on my PhD, but also do consulting, involved in a startup and teaching SE courses at postgrad level.

I guess my point is that I really wanted to do something about a problem that wasn't being well addressed. Typical engineer personality - see problem - <USER3> about fixing it. Try to not make it worse!</comment></comment></comment>


Bit by bit, Whole Foods gets an Amazon touch - <AUTHOR> https://www.nytimes.com/2018/03/01/technology/bit-by-bit-whole-foods-gets-an-amazon-touch.html?hpw&rref=technology&action=click&pgtype=Homepage&module=well-region&region=bottom-well&WT.nav=bottom-well <comment><AUTHOR> Cool to see that Amazon is giving 5% back on Whole Foods purchases made with their Amazon Prime credit card. Hopefully they'll bring prices down enough to make cash purchases competitive with other stores, and the 5% back will be a true bonus.</comment>


Ask HN: Best time to post on HackerNews? - <AUTHOR> Hey everyone, what's the best day(s) and time(s) to post on HN ?  I've noticed there is too many interesting posts are simply missed when posted in the wrong day/time. I find my self going trough many new posts to find something more interesting or relevant then even on front page some days. Thank you for your help! <comment><USER2> [https://news.ycombinator.com/item?id=9864254](https://news.ycombinator.com/item?id=9864254)

tl;dr it's down to luck.

That part of the reason for the new repost rules. (you can repost a submission at sane intervals until significant discussion has occured.)

<comment><AUTHOR> @ minimaxir, Thank you for been the first to reply. I did not even know that repost's are allowed on HN :-)

I guess I should of read FAQ about "repost"; [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)

       Are reposts ok?

       If a story has had significant attention in the last
       year or so, we kill reposts as duplicates. If not, a
       small number of reposts is ok.

       Please don't delete and repost the same story, though.
       Accounts that do that eventually lose submission privileges.

Anyone one else knows what is "small number of reposts" and how often until it gets some votes/comments ?

<comment><USER3> _" Anyone one else knows what is 'small number of reposts' and how often until it gets some votes/comments"_

There's no guarantee that you'll ever get any upvotes or comments, but if your article is interesting, not off-topic (see the guidelines[1]) and not a duplicate or near-duplicate of another article, it has a much better chance.

I think that the definition of a "small number" was deliberately left vague, so use your judgement. 2 or 3 sounds like a small number to me, but after I see the sixth repost of an article in a single day I start wishing it would go away already.

[1] [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment></comment></comment>


Hiring – Easy as Pie - <AUTHOR> http://steveblank.com/2011/08/22/hiring-easy-as-pie/

<comment><USER2> I quite honestly had to read this over a couple of times to make sure this is not some kind of a parody. I don't understand why people are complimenting this. Let me count the ways:

1) Asking a client to produce a quantitative "job spec" like this is simply going to produce a bunch of random numbers. What basis is there for saying that "vision" counts for 15% and "financial mgmt expertise" for 25%? These are not comparable things and you can't throw numbers on them. At most you can say things like "financial mgmt is a must, and of all that have it, we want the ones with the best vision". You still have to define these...

2) How are you supposed to give such fine-grained numeric grades to candidates on things like "vision"?

3) What do you do with the chart once you have it? This is the part of the post that makes it look like a parody - he has these charts for two candidates and says "now it's easy as pie to choose", but neither chart looks hugely better than the other. Are you supposed to compare the areas with grid paper? That makes no sense and may leave you with a candidate that lacks something crucial.

4) This brings me to my final point - you may be looking for things in a candidate that are pass/fail, e.g. in his chart "dealing with government regulators" looks like a _sine qua non_ thing. His method could well result in overlooking this.

I don't get why people are calling this insightful and so on. This is extremely similar to a ton of competencies matrix methods, but this way of presenting the results is particularly bad.

<comment><USER3> It may be that the ranking exercise at the beginning is the big benefit, rather than the resulting ranks, because it makes you think about what's important to you. You may hire someone who doesn't actually fit the ranking, but the exercise was valuable anyway because it helped you better understand the candidates and their relationship to your business.

</comment></comment><comment><USER4> Ahh, the weighted average approach to decision making.

If you want to make a decision but don't want to trust your own intuition and judgment, and don't want to get embroiled in hard arguments where someone can get blamed later when things don't work out, then hey, I guess you need a mathematical model!

"But I only know basic arithmetic," you say.

That's okay! Because the arithmetic behind a weighted average is so easy to do and understand, anyone can do it!

Not only that, but you can take that underlying model and produce any number of pretty charts that make your entirely subjective decision seem like it has some mathematical rigor behind it!

The Weighted Average (tm): for when you absolutely have to make a completely subjective decision and don't want to be blamed for the results.

<comment><USER5> you sound like you have crossed the path with six sigma :)

</comment></comment><comment><USER6> This sounds like he's tried to make hiring as quantitative as possible (a hard and worthwhile task). However the slices are still as subjective as ever. How do you measure someone's "vision"?

Even when you've measured all these slices, how do you combine them?* Notice that if you take the total area of the pie chart filled, this implies all the scales you're measuring are quadratic, so that going from 8 -> 9 is worth twice as much as going from 4 -> 5\. This is why Tufte hates pie charts.

*I assume you combine them. If not, what's the point of the pie chart?

<comment><USER7> I was just thinking this - it's saying that how good the candidate is in a particular category counts for more (by a factor of r^2) than how important you have judged that category to be. To me this is the most interesting claim in the article, and it seems like if this were actually what the author was trying to say he would have at least mentioned the reasoning behind it.

Not that this is the biggest weakness with the method, since as others have pointed out the assignment of these weights is pretty arbitrary in the first place, but it makes me think this is just hand-waving all the way through.

</comment></comment><comment><USER8> It certainly is a nice way of thinking about hiring. The "problem" is that each one of those slices (whatever they are) is deeply and intrinsically subjective both in width and length. For instance, how can you determine how important "vision" really is in any particular position, how can you hope to evaluate "vision" on a scale of 1 to 10? How do you know that someone with stellar skills on one area isn't capable of transferring those skills to a new area that they have no experience in?

Moreover, I am convinced that employers often really don't know what they want out of a potential hire. In other words, there may be pieces of pie that they're not bringing into consideration or pieces of pie that should not even be on the table.

I think that employers would do best to look for what is known as "T-shaped" people: folks who have broad experience and a few areas of very deep expertise. These are people who have demonstrated that they CAN develop expertise and if they've done it before they can do it again in new areas. This makes sense because, except for the most humdrum operations jobs, you never really know what your employees will have to work on in the future.

</comment><comment><USER9> I've never had much trouble comparing two candidates. I wish I had the problem of finding two qualified candidates and having to only pick one. That beats the sea of unqualified and hilariously underprepared candidates I get now. Finding someone who's able to do the job is like finding a diamond in the rough.

<comment><USER10> I completely agree. Figuring out the right guy is easy, if you can get multiple people in. That's the really difficult part of hiring at a startup.

<comment><USER11> And if you have multiple competent people, and are growing, you might as well hire both.

</comment></comment></comment><comment><USER12> Given how bad our brains are at determining the size / area of slices like that, I'm not sure visually comparing candidates like that would necessarily result in you picking the best one - and that's assuming that each of the required skills is measurable on a linear scale, which is rarely true.

<comment><USER13> The scale isn't even linear. As a pie slice gets shorter, it gets exponentially smaller in area. We judge size by visual area, not a single dimension.

<comment><USER11> Are you confusing exponential growth with quadratic growth?

<comment><USER13> subset

<comment><USER11> What do you mean?

<comment><USER13> Quadratic growth is a subset of exponential growth. So both are correct?

<comment><USER11> The biggest difference: The second derivative of quadratic growth (the change in the rate of change) is constant. While any derivative of exponential growth stays exponential.

For quadratic growth, think naive sorting like bubble sort. For exponential growth, think bogosort.

Technically: If you use Big-O notation, then indeed O(x^2) \subset O(a^x). But also O(x) \subset O(x^2) \subset O(a^x).

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> This _sounds_ like a good idea. I wish people would do randomized controlled trials on this sort of thing, but there are only a handful of companies that hire enough people to do RCTs, and I doubt any of them (except perhaps Google) would be willing to do something that isn't "best" to get more data even though, as things are now, no one can really know what's best.

There are a series of behavioral economics studies that show, in the right circumstances, that going with your gut is better than explicitly making a list of factors, assigning weights to them, and making a decision after that (whether that decision is algorithmically determined by the list, or is a holistic decision that comes after looking at the list). The 'gut' method tends to be better when decisions are more complicated, and have many factors, as is the case when hiring, so I suspect that pie method is one of those things that sounds helpful but isn't. No one knows, though (unless there's actually been a study on this; if there has, please, correct me if I'm wrong).

</comment><comment><USER15> While I tremendously respect Steve Blank, trying to reduce hiring to a simple quantitative graph seems like an absolutely terrible idea.

It reminds me of the Pritchard Scale in Dead Poets Society. That's not how you measure poetry or people.

</comment><comment><USER16> From what I've heard, getting the attributes right is hard.

You need stuff like:

\- Honesty. Obvious, but I'd expect it gets quite hard to find at the CEO level.

\- Frugality. Some great CEOs are legendary tightwads.

\- Not penny-wise, pound foolish. Because even if you are a tightwad, you shouldn't kill moral or R&D. 90% of a CEO's job will be knowing what expenses to approve, and what expenses to knock back.

\- Deep knowledge of the organization, its environment, and its processes. Otherwise, they will not be able to verify when their C-execs are screwing with them.

\- Commitment to improving operational effectiveness. Low level engineers are great firefighters. It's the guys who can keep improving the small stuff that are really worth the big bucks.

</comment><comment><USER17> The signal to noise ratio of Steve Blank is very high. I like this idea a lot. In the past I have been involved with firms who have done this on two dimensions: managerial competence and industry knowledge, or content knowledge and process knowledge. The circle is a great way to add another dimension to it.

The hard part seems to be the 2nd step - mapping the skills of the candidates to the description. It sounds easy, but rating soft skills is very difficult.

Thanks for sharing this!

<comment><USER18> I think part of that would be asking the candidate how they feel about their skills.

Sure, they could lie, but if they're lying, the whole interview is suspect. Hiring a person who lied -at all- in the interview would be a bad idea. How could you possibly trust them?

</comment></comment><comment><USER19> What you are looking for is a Radar Chart, not a Pie Chart! <http://en.wikipedia.org/wiki/Radar_chart></comment>


Apple Buys Samsung's Android Security Partner AuthenTec For $365M - <AUTHOR> http://techcrunch.com/2012/07/27/apple-buys-samsungs-android-security-partner-authentec-for-365m/ <comment><USER2> I wonder if they intend to sue Samsung now for using their "security technology". I've learned not to put anything past Apple lately.

<comment><USER3> I would guess Samsung has already paid license fees or come to some other arrangement. Otherwise they would probably have already been sued by AuthenTec over it.

</comment></comment><comment><USER4> Given that Apple tends to buy companies for projects they are working on or technology that they need, it's worth taking note that Apple has stockpiled so much cash that they can spend $365 million on what might just amount to a upcoming feature in iOS or some upcoming iPhone/iPad/Macbook Air device.

That is the power of cash.</comment>


Low Latency Architecture – AWS - <AUTHOR> I am looking to design a low latency (sub-second) real time system. Clients (~600k) will feed data to Kinesis to Lambda and then to DDB and Redis for fast retrieval. Issue is Kinesis is batched so there is default delay. Can I replace Kinesis with SQS and get better performance? <comment><USER2> This is one of those "build a quick PoC and find out" moments.

Also consider what happens when latency spikes; performance isn't guaranteed in this environment. At scale, edge cases become the common case.

On the DynamoDB side, I'm sure you've already seen the DynamoDB Accelerator (10x read performance) already in preview, but just in case, see [https://aws.amazon.com/dynamodb/dax/](https://aws.amazon.com/dynamodb/dax/)

</comment><comment><USER3> I work in subsecond latency domain. Can you elaborate what do you want to achieve in the sub-second: Does the ingestion have to be subsecond? or the entire cycle of ingestion and data available into redis/DDB needs to be done in sub-second?

<comment><AUTHOR> Entire cycle in sub-second. I agree that it depends on many factors but as per the system, we are looking subsecond from ingestion of data from client to availability of data for query.

A -> stream -> datastore (subsecond)

<comment><USER3> I see. I would suggest you explore the following: 1\. CitusDB (an offshoot of postgres with high ingestion rate, cloudflare used it) 2\. Druid.io (popular in ad-tech) 3\. Linkedin Pinot (uber uses it for similar use-cases) 4\. memSQL (used in ad-tech)

<comment><AUTHOR> Thanks for the pointers but I am planning to revolve more around AWS ecosystem so that I have less ops burden of managing servers + regionalization becomes easy.

</comment></comment></comment></comment><comment><USER4> How about using Pubnub or Pusher for this use case?

</comment><comment><USER5> If your batch settings are low enough Kinesis should be fine. SQS with long polling would also be pretty fast if you have enough workers.

<comment><AUTHOR> I am also okay to dump the whole architecture and re-architecture. Will do a POC but looking to know, if some one has designed something of this sort.</comment></comment>


Useless.js: a new cross-platform toolbox for writing complex web applications - <AUTHOR> https://github.com/xpl/useless

<comment><AUTHOR> Updated readme with some examples.</comment>


Why America's Middle-Class Housing Crunch Is Here to Stay - <AUTHOR> http://www.businessweek.com/articles/2014-05-15/why-americas-middle-class-housing-crunch-is-here-to-stay <comment><USER2> He says "As housing prices rise, affordability gets worse when incomes fail to keep pace and interest rates move higher." which is just not accurate. Home prices vary inversely with interest rates. Increased rates would lower home prices. The problem is that would put people under water just like it did in 2008 when they jacked rates up (this triggered the crisis but was by no means all that was involved). Rates are at an all time low which has re-inflated the bubble to near peak levels. With crazy lending practices stopped, most people can't buy at these prices. Interest rates can not be raised at anything but a snails pace without causing another crash. The fed can't even stop buying treasuries or the increased yeild will blow the federal budget (an election is coming too) and kill the stock market. They're backed into a corner and trying to creep out ever so slowly.

<comment><USER3> I've had many an argument with baby-boomers (who bought into the housing market at dirt cheap prices 30 years ago) regarding this same concept.

I told them when interest rates move up from 3.5%, home prices would decrease proportionately, netting to the same monthly cost.

I WAS WRONG.

I was using logic to describe the illogical. Most people don't view real estate as an investment: to most, it's a place you can call home that makes you feel warm and fuzzy.

So what happened when interest rates went from 3.5% -> 4.5%? -Demand increased: as people on the sidelines got nervous that rates would keep going up, they bit the bullet. -Increased demand caused prices to increase. -The price increase led to further demand from nervous buyers sitting on the sidelines, not wanting to miss out on their chance to own a home. -Finally, in my area anyway, I'm seeing absolutely insane ask prices, but less people are buying. Eventually, stubborn sellers will have to lower their asks to make a deal, but that can take some time.

At a certain point, this doesn't work anymore as people can only stretch themselves so thin, but at least from 2011 (the "bottom") -> 2014, this is my assessment of what happened.

<comment><USER4> New business practices could delay prices coming down for a long time. Certain companies are buying up all the housing they can... mostly foreclosures and the like, because they can offer the cash asking price at the end of the auction. But this puts pressure on prices to stay high by reducing supply.

But they've also been buying up real estate on the traditional market too, for rental units.

</comment></comment></comment><comment><USER5> "That means the main way to build more is to build denser projects, with taller buildings and smaller units. Doing that can be very difficult politically"

I will vote for anyone who runs on a campaign vowing to do this, and you should too. We need more affordable housing and in most urban markets the only direction is up.

<comment><USER6> > campaign vowing to do this

Well, the whole council of Palo Alto did, and the voters went NIMBY on them

[http://nextcity.org/daily/entry/palo-alto-one-ups-san- franci...](http://nextcity.org/daily/entry/palo-alto-one-ups-san-francisco- rejects-senior-housing-complex-in-citywide-)

</comment></comment><comment><USER7> _The last way to ease the affordability crunch is to flip the equation, looking at incomes and not just at housing costs. ... But earnings for low- and middle-income families have been essentially stagnant for years. Declining real wages, for example, were a key reason that earlier this year, not a single home on the market in San Francisco was affordable on a teacher's salary. This problem has led some cities to consider raising their minimum wage, but that, too, can be a long and often nasty political battle._

Can any of the left-of-center economic folk around explain the logic here? I have heard several plausible arguments for an increased minimum wage, but I haven't heard the one making the case that it will lead to increased wages at the income levels typically required to consider buying a home. If "earnings ... have been essentially stagnant for years", why didn't the last minimum wage bump have such an effect?

<comment><USER8> There is no logic to it. If you raise the minimum wage (not necessarily a bad thing, but in terms of the effect on housing affordability...), with housing supply remaining fixed, it would either do nothing (people making FAR more than minimum wage already cannot afford a home) or demand would simply increase and prices would go up further.

<comment><USER9> I believe this Futurama quote about summarizes it:

"Hi! Today some bad things happened. One bad thing was a train got crashed in New Jersey. Wanna see? People won't be late for work though, because the governor lady said, "I'm sending in more trains!" [Another train crashes into the wreckage causing a massive explosion]"

</comment></comment></comment><comment><USER10> There are some weird conclusions about building new housing here. On that graph, both every city above $200 a square foot and every city that built more than 25 units for every 1000 in 1990 are outliers. Every city over $250/sq.ft. has been dreadfully expensive for decades. Every city that overbuilt was extremely bubbly and has had an extreme price drop since.

New houses aren't being built because the vacancy rate is super high (if you include shadow inventory.) Rents are super high because the rental vacancy rate is super low - ex-homeowners have become renters, but shadow inventory hasn't been converted to rentals; it's instead let out in dribs and drabs in order to keep current prices supported.

Prices are destined to net stagnation for the next 3-5 years, by which time they'll have met the trendline.

Saying new houses not being built is the same thing as saying that builders are predicting that they'll see losses if they build. That's the same thing the REITs are saying by ceasing to buy up single-family housing. The current crop of cash buyers are not the funds, but people who have recently sold.

A lot of these articles are reading as if they were mostly sourced from press releases from lobbying groups that are trying to loosen lending standards and/or favorably rezone hot property markets. That would make a lot of large landholders a lot richer.

</comment><comment><USER11> Trulia, where my 3BD/2BA home is listed as a 2BD/1BA valued at less than 1/2 it's appraised value.

It's hard to trust a study that uses a data like this. Even though my situation is anecodotal, sites like Trulia and Zillow have been criticized for their data accuracy in the past.

<comment><USER12> > _It 's hard to trust a study that uses a data like this._

If you're only willing to trust data sets that are 100% clean/accurate, then you aren't going to trust many data sets.

Is there any reason to believe that Trulia has systematically biased or inaccurate data?

<comment><USER11> I didn't say 100% accurate, but yes there is reason to believe that:

[http://www.trulia.com/corp/files/2011/05/trulia_direct_refer...](http://www.trulia.com/corp/files/2011/05/trulia_direct_reference_whitepaper.pdf) [http://info.trulia.com/file.php/5288/Trulia-Estimates- Region...](http://info.trulia.com/file.php/5288/Trulia-Estimates-Regional- Report.xlsx)</comment></comment></comment>


National (JavaScript) Security Agency - <AUTHOR> https://www.nsa.gov/assets/js/main.js <comment><USER2> I feel sorry for the people who wrote this.

Which one of us would want a code review by people who did not understand the requirements given by "the client" done on the front page of HN?

</comment><comment><USER3> While this code is pretty bad, I'm going to guess that the NSA reserves their best IT folks for... you know... the assignments other than their public facing website.

<comment><USER4> Agreed, this code was probably written by a contractor rather than one of their mathematicians I'd imagine

<comment><USER5> Have you seen mathematicians write code? For a website? We hired a few (we're in the crypto business) and we don't let them near production code. Ever.

<comment><USER6> General observation, mathematicians excel at functional v. imperative, partially because so many functional concepts are grounded in mathematics/logic.

</comment></comment></comment></comment><comment> vertex-four Honestly, it's... not terrible? It's hackish, sure, but the NSA website's frontend isn't a huge app where good software engineering needs to be practiced - the code does what it needs to do, was likely written quite quickly, and doesn't need the likes of webpack to build.

In my core projects I'll use Ember or React+Redux, but where I just need a couple hundred lines of one-off code for e.g. a marketing site... why not some hackish jQuery?

</comment><comment><USER7> // start comment block

That's some properly documented code !

// end comment block

<comment><USER8> Heh.

        // title update
        try {
            titleUpdate();
        } catch(e) {}

        //  titleUpdate()
        //update title to include " - NSA.gov" on all subpages
        function titleUpdate() { ... }

</comment></comment><comment><USER9> Looks like it was written by a VB programmer, who's missing "on error resume next" in JS.

<comment><USER10> Should have used RxJS

[https://xgrommx.github.io/rx- book/content/getting_started_wi...](https://xgrommx.github.io/rx- book/content/getting_started_with_rxjs/creating_and_querying_observable_sequences/error_handling.html#ignoring- errors-with-onerrorresumenext)

</comment></comment><comment><USER11> A lot of popular websites have pretty crappily written JS code. The reason it's not noticed is that usually it's served compressed. The reason why it's crappy is that the bulk of functionality is implemented server-side, and the person who ends up writing that code is primarily a server-side programmer who half-asses a JS snippet to finish the feature, and then since it works, it is never refactored. It's not "real programming" anyway ;)

<comment> FLUX-YOU I would like to see a website with very good javascript code.

I feel like it's basically impossible to write JS and have 10 or more people with 3-5+ years go "Yeah, I can't improve this at all and it's extremely clean".

<comment><USER12> About a year a ago, started from scratch writing a front-end client SPA for web-based software -- it's a custom framework built around Backbone.js and jQuery, written in CoffeeScript. The .coffee files are beautiful, and on save a shell script automatically compiles all the .coffee files down to a single JavaScript file that I would describe as good JavaScript code.

Not open source, so no demo, but it's definitely possible to create good JS.

</comment></comment></comment><comment><USER13> What would be the reason for this:

// analytics disable if url contains underscore try { if(window.location.href.indexOf('_') > 0) {window['ga-disable-UA-20753548-1'] = true;} } catch(e) {} });

<comment><USER14> The if condition is wrong. This is why functions like indexOf should return a tuple of a boolean and an offset instead of encoding "not found" by returning -1.

<comment><USER15> The if condition should use >= rather than >, but it otherwise makes sense.

<comment><USER16> I'm not arguing in favor of writing it that way, but I might argue it's not incorrect as written. location.href can never start with an underscore.

A regex on location.pathname would sure be a _lot_ clearer to read, though.

</comment></comment></comment></comment><comment><USER17> They should add a comment ad in there at the bottom saying

        /*
            Smarter than that stuff?
            Come work for us.
        */

<comment><USER18> /* Smart enough to not want to work for you sick bastards */

</comment></comment><comment><USER19> And then I visited their homepage and found the UI to be uglier than the code.

</comment><comment> maze-le > assets/js/main.js

I smell rails

<comment><USER20> Default Rails would be assets/javascripts/application.js

<comment><USER21> JavascriptS? Plural? Interesting.

<comment><USER22> I also got intrigued when a fellow colleague used that nomenclature (folder called "javascripts", as well as "stylesheets", inside an "assets" folder).

</comment></comment></comment></comment><comment><USER23> Stop advertising the NSA please

<comment><USER24> This surely isn't advertisement. The code is terrible.

Try-catch jungle, ad-hoc URL manipulation, lack of caching, writing/constructing HTML in strange places, weak comparison operators in dangerous places (string vs lunch), etc.

<comment><USER23> Yeah but when visiting in Lynx, it displays fine. Lynx is the yardstick I use to judge a website. There are countless .GOV sites like this made on old Windows 2000 machines with Frontpage installed, but my point is the information is still communicated. It probably doesn't matter about some spagetti JS lumped in. I assume any sensible person will have JS turned off when visiting a URL like that anyway...

<comment><USER25> :) man have you even met today's web developers? Turning off js is like asking them to work in assembly. Now that Google has gone and built everything the OS does, into the browser the mordern day web dev is programmed to think that they exist to rebuild desktop apps in the browser. Communicating information simply in plain text is the last thing on their minds.

<comment><USER26> > have you even met today's web developers? Turning off js is like asking them > to work in assembly.

To be fair asking them to build apps that don't require JS is like the old man yelling to get off their lawn :)

It's hard maintaining two ways of doing things and it's not always easy to make them both use the same avenue. I'm getting to the point where I honestly don't care either way.</comment></comment></comment></comment></comment>


Wagtail 1.0 – a milestone release for our Django CMS - <AUTHOR> https://wagtail.io/blog/wagtail-10/

<comment><AUTHOR> I'm the CTO at Torchbox, the agency behind Wagtail. We're really happy with this release, particularly StreamField, which opens up a new way of building rich pages without sacrificing reusability - check out the video at [https://youtu.be/oUJNweMWwVQ](https://youtu.be/oUJNweMWwVQ)

I'll do my best to answer any questions here.

<comment><USER2> Looks great! Much more client friendly than FeinCMS (which is also awesome).

How do you add traditional django apps to the admin? e.g. To get list view and edit forms for regular objects (like you have under "settings" in the admin for Users).

Apologies if it's in the docs but I couldn't see it.

Congrats on the milestone!

<comment><USER3> Thank you, ra!

Have a look at the register_admin_menu_item hook - [http://docs.wagtail.io/en/v1.0/reference/hooks.html#register...](http://docs.wagtail.io/en/v1.0/reference/hooks.html#register- admin-menu-item)

[https://groups.google.com/d/msg/wagtail/gootoMvXV8s/yxebbY1Z...](https://groups.google.com/d/msg/wagtail/gootoMvXV8s/yxebbY1ZOwYJ) has a working example.

Cheers, Dan

</comment></comment></comment><comment><USER4> The missing CMS built with python/django. We use in our agency for a lot of projects, including high profile brands.

\- nice UI/UX \- nice features (revisions, preview, choosers) \- pages are easy to extend \- custom apps can be integrated easily by using admin hooks \- good code and documentation

Recently started on a complex project, and we are using some ideas from Wagtail :)

</comment><comment><USER5> I've been using Django/Wagtail for over a year now and it's been nothing but improvement after improvement. I'm extremeky excited for this release, a major step in Wagtail's bright future. Thanks for this great CMS Torchbox and keep up the great work!

</comment><comment><USER6> Looks great! I especially love that the concept you are calling StreamFields is finding its way to more and more CMS's (Concrete5 and Perch call them "Blocks", ExpressionEngine and Craft call them "Matrix Fields", and Advanced Custom Fields for Wordpress calls them "Flexible Content Fields"). It's really a great balance between giving site owners the ability to manage rich content on a page while also giving designers the ability to ensure that content sticks to the site's overall design.

</comment><comment><USER7> I'm in the middle of my second big Wagtail project. Version 1.0 has fixed nearly all of the shortcomings I ran into during my experience with 0.8.x. The new API, the StreamField...such an awesome release. The only gripe I now have is that hallo.js is still being used for the RichText editor. Congratulations to the Wagtail team!

<comment><AUTHOR> Thanks, Ryan! Check out this exciting PR which landed a few hours ago:

[https://github.com/torchbox/wagtail/pull/1521](https://github.com/torchbox/wagtail/pull/1521)

This allows Wagtail users to swap in alternative rich text editors, e.g. [https://github.com/isotoma/wagtailtinymce](https://github.com/isotoma/wagtailtinymce)

</comment></comment><comment><USER8> Very excited about Streamfield - it seems like there might be some subtle complications around 'schema' changes but all up it's awesome to have content in a machine readable and meaningful format.

</comment><comment><USER9> @revsys we've been using Wagtail quite a bit on sites and it's been a dream. StreamField completes the picture and am so excited it's finally reaching 1.0 status! Thanks so much Torchbox!

</comment><comment><USER10> We've been developing client sites using Wagtail for a few months and are extremely impressed by both its versatility and user-friendliness. Very pleased to see it hit 1.0 and I hope momentum continues.

</comment><comment><USER11> It is a great CMS: The perfect ratio of being configurable while also making certain things easier to do.</comment>


Executive Pay Watch - <AUTHOR> http://www.aflcio.org/corporatewatch/paywatch/index.cfm

<comment><USER2> For what it's worth, the AFLCIO doesn't list themselves in their list. Their CEO, Richard Trumka, makes over $300K/year... More than 5x the average worker, and he got a $50K raise in the past 3 years while his memberships incomes lagged.

How much does the Economic Policy Institute pay him to be on the board of directors?

How much is his net worth?

How is it possible that the AFL/CIO represents their membership, when 100% of 2010 political contributions went to Democrats, and none to Republicans? It's not even statistically possible that it MIGHT be representative. (source : [http://www.opensecrets.org/pacs/pacgot.php?cmte=C00003806...](http://www.opensecrets.org/pacs/pacgot.php?cmte=C00003806&cycle=2010) )

<comment><AUTHOR> Their list consists of publicly traded companies. The AFLCIO is not a publicly traded company.

Also, I have no idea why you are bringing up anything about politics.

<comment><USER2> Agreed... they are not publicly traded, but they shouldn't be pointing any fingers.

As for the politics, shouldn't one who cries fiscal foul be judged for their own fiscal idiocy? I'm suggesting you consider the messenger when you look at their purely marketing-message-related website.

<comment><AUTHOR> The point of posting was simply to show that a database of this information exists. Nothing more.

EDIT: If it bothers you so much that this information is tied to the AFLCIO website, I'll pull the proxies myself along with the companies' change in market cap for the period the pay figures represent, and I will throw it up into a website. Then it will just be a database of CEO pay and stock performance.</comment></comment></comment></comment>


MS Office in Wonderland [pdf] - <AUTHOR> https://i.blackhat.com/asia-19/Thu-March-28/bh-asia-Hegt-MS-Office-in-Wonderland.pdf <comment><USER2> I guess the moral here is to always open your docx/xlsx files using 7zip and checking the raw xml first.

<comment><USER3> CVE-2018-10115, CVE-2018-5996, CVE-2017-17969, and CVE-2016-2334 in 7-Zip all gave code execution when opening a malformed archive.

<comment><USER2> ah... but unless it's a spear-phishing attack they're not gonna guess that I'd first open the archive with 7-zip and thus most likely won't build it with that in mind.

</comment></comment></comment><comment><USER4> Kinda validates my belief that the only way of dealing with Office documents is uploading them to Google Drive and opening them there.

<comment><USER5> Journalists are taught this by those that really know security and opsec, infosec.

<comment><USER6> OP is getting downvoted, but I have seen high-grade security people recommend the Google apps suite to journalists and scrappy human rights NGOs etc. (some of whom do dangerous work, and have high security needs) with the argument of "you can't afford better security, so you're better off outsourcing it". This is a practice that exists, for better or worse.

<comment><USER7> People can't afford Qubes and/or layered Virtual Machines?

Hopefully we're talking time-value.

<comment><USER6> They really can't. It's very rare for a scrappy human rights NGO to even have an IT person. Access to IT skills are largely via auditors/consultants who rove around, doing it close to pro bono. Those consultants in turn try to maximize the good they do and spread it around, and that's how advice like this happens. It's basically IT field medicine. What you're suggesting is the equivalent of a top-grade operating room with attendant staff.

Disclaimer: I do volunteer work in a human rights NGO. We interview North Korean refugees about execution and burial sites and record the data in a GIS and incident database. I'm also a Linux desktop developer, and help them run their IT. But I've rarely seen this anywhere else.</comment></comment></comment></comment></comment>


On Women in Tech - <AUTHOR> http://pastebin.com/KdJhwLSp

<comment><AUTHOR> Warning: lots of profanity. Because I have a sort of violent, tell-it-like-it- is personality.</comment>


Are you Left Brained or Right Brained? - <AUTHOR> http://www.news.com.au/heraldsun/story/0,21985,22556281-661,00.html I just happen to be one of the right brained people. Apparently I'm rash and religious? Go figure... <comment><USER2> That's the coolest Necker cube ever. (<http://en.wikipedia.org/wiki/Necker_cube>)

But I've never heard of any connection between left/right dominance and this phenomenon ("binocular rivalry"). I suspect it might be BS...

In any case, if you want to learn more, check out this (pdf) slideshow: [http://visionlab.harvard.edu/Members/Olivia/tutorialsDemos/B...](http://visionlab.harvard.edu/Members/Olivia/tutorialsDemos/Binocular%20Rivalry%20Tutorial.pdf)

This was put together by my friend Olivia, who's done a lot of work in this field. Be sure to check out pg. 16 -- Olivia's studied binocular rivalry not only in meditating monks, but also in people on 'shroom trips. Psychology is FUN! =)

</comment><comment><USER3> That is very cool. Seems clockwise to me, but I notice if I look at it upside down, it seems to be turning counterclockwise, presumably because left and right are reversed then.

<comment><USER2> Turning it upside down might introduce some other variables. Check out Einstein on pg. 11 (warning... pdf): [http://visionlab.harvard.edu/Members/Olivia/tutorialsDemos/B...](http://visionlab.harvard.edu/Members/Olivia/tutorialsDemos/Binocular%20Rivalry%20Tutorial.pdf)

</comment></comment><comment><USER4> this i s a dupe. the first time through i didn't see the trick. scroll down until you only see a small fragment (or make your browser only a few hundred pixels high). show just the top of the head, or the bottom of the feet. If you get to that state, it seem pretty easy to reverse direction.

</comment><comment><USER5> I saw it turning counterclockwise and could not see how it could possibly spin clockwise. Then I tilted my screen a tad and am now seeing it spin clockwise, and cannot "make it" spin counterclockwise again. Very cool.

</comment><comment><USER6> Interesting.. I saw it as going clockwise... which sort of throws my theory that I was more logical than "feeling"s based person... maybe I need to seek a career in philosophy than hacking... :D

<comment><USER7> i also saw clockwise. and i'm definitely more logic oriented. i wouldn't make too big a deal out of this.

</comment></comment><comment><AUTHOR> A lot of my friends saw it counterclockwise. I was clockwise though...hmm.

but if you read the descriptions, it makes left-brained thinkers seem smarter =[

"that liberal media!"

</comment><comment><USER8> As much as I consider myself a "right brainer", she looks to be turning counter-clockwise to me without any ambiguity.

</comment><comment><USER9> Dupe: <http://news.ycombinator.com/item?id=69798>

</comment><comment><USER10> a way to make it change direction that works for me pretty much every time: see it, then look away from it, so you see the image only with your peripheral vision (it will look like someone skating to you, or away from you), then consciously make it change direction

</comment><comment><USER11> Wierd. I can't figure out how to make it spin the other way. It spins counter- clockwise to me.</comment>


Is Small Business Banking Next in Line for Disruption? - <AUTHOR> http://www.americanbanker.com/news/bank-technology/is-small-business-banking-next-in-line-for-disruption-1077659-1.html?zkPrintable=1&nopagination=1 <comment><USER2> Next behind...? Credit cards? No, haven't been disrupted. Consumer banking? No, hasn't been disrupted. Mortgages? No. Consumer/eduction lending? Sorta, I guess. Corporate banking? No.

<comment><USER3> Mortgages? Possibly: [http://techcrunch.com/2015/11/24/this-could-be-the- mortgage-...](http://techcrunch.com/2015/11/24/this-could-be-the-mortgage- industrys-iphone-moment/)

<comment><USER2> First, it's from Quicken Loans who is huge. Second, it's just a-ight at this point (I tried it). Third, "could be".

</comment></comment></comment><comment><USER4> A similar disruptive bank started in the Netherlands this week. Its a real bank accessible by app only: [https://www.bunq.com/](https://www.bunq.com/)

<comment><USER5> Can they issue new money via debt? If no then it won't disrupt much.

<comment><USER4> No, they (currently) do not allow debt. Why is specifically debt related to disrupting ?

<comment><USER6> Issuing loans is how banks make money.

<comment><USER7> Well, they also make money from fees. Especially, in the US, check-card swipe fees (invisible to the casual user since they're assessed on the merchant).

</comment></comment></comment></comment></comment><comment><USER8> None of these tech-focused innovators ever mention their plan to counter the incumbents most potent weapon: lobbyists. The same way they dodged liability in ACH, etc issues all these years is the same way they'll likely counter startups.

Alternatively, they can just buy up the best-of-breed, patent their technologies, and use that to force costs up. So many ways they can play it. And they're good at eliminating threats to their profitable, predictable, status quo.

<comment><USER9> Hi. I'm Brian, the cofounder and CEO of Seed.

While we have strong opinions about regulatory and legislative changes that would enable innovation, it's impractical to attempt systemic disruption as a seed stage company.

Our mission is not to change banking just for the sake of it. We are focused on providing a better service for our members.

There's a lot of room for improvement, even within the current system, and by focusing on things we can do rather than things we wish we could do, we'll be able to make positive progress.

Many well meaning startups have pursued immediate disruption and have failed. Our view is that if we are successful within the current environment, we'll have a better chance of being able to help move things in a positive direction.

<comment><USER8> Four of my coworkers agreed that this comment has excellent PR value for mainstream market. It uses a whole lot of words say basically nothing but with much optimism and faith in the company as the expected result. Well-written. :)

</comment></comment></comment><comment><USER9> I'm Brian, the cofounder and CEO of Seed. I'm happy to answer any questions anyone has.

I'll be on a flight for the next few hours, but I'll check in when I land.

<comment><USER10> What Would you tell to a frustrated french entrepreneur Who like seed concept but knows it will takes years before such a solution can be available in France? To put things in context there are some pure online banks that have disrupted the bank deposit such as boursorama or fortuneo but outside of traditional banks there is no inovative banks available for companies. I guess there must be a reason for that which i can't grab.

<comment><USER11> As a fellow French entrepreneur: don't start your company in France.

That's really the only viable solution at this stage.

</comment></comment></comment><comment><USER12> Isn't Square attempting to move into this space?

</comment><comment><USER13> Phone banking is where the disruption is.

Cue M-Pesa.

</comment><comment><USER14> No. [1]

[1] [https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...](https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)</comment>


"We've lost 80% of our team" (how Covid-19 is impacting startups) - <AUTHOR> https://podcasts.apple.com/gb/podcast/leaders-rebecca-ceo-venuescanner-james-ceo-sanctus/id1513861026 <comment><USER2> The original episode title "Employees with Matt Orzco of Peakon" is a better title I think.

The podcast episode talks about how many of the employees worked from home/remote at this one company, the company didn't loose employees.</comment>


Rights Group Fined For Not Paying Artist For Anti-Piracy Ad - <AUTHOR> http://torrentfreak.com/rights-group-fined-for-not-paying-artist-for-anti-piracy-ad-120717/

<comment><USER2> Amazing stuff from the anti-pirate pirates!</comment>


Google Translate proxies others, why can't we all do it? - <AUTHOR> http://accessify.com/visit?domain=onlinebanking.usbank.com <comment><AUTHOR> On mobile I get an alert to move me on. On desktop I get an online banking page.</comment>


Doff - What is your social network reputation? - <AUTHOR> http://ww.doff.me

<comment><USER2> So you captured my email address, but haven't allowed me to sign up.

You also are not offering invite codes.

And it seems like you are doing what PeerIndex is doing. [edit: And also Klout, as mentioned by other commentators.]

Why is this newsworthy? Should this be flagged?

<comment><USER3> We see way too many splash-pages submitted lately that somehow still get voted up, but yet show no details of what they do, no working demo, or any way of us to try it out to provide any feedback.

</comment></comment><comment><USER4> Klout is an alternative: <http://klout.com/>

</comment><comment><USER5> What does this do differently than Klout?</comment>


Verizon Wireless to FCC: We'll See You in Court Over 700MHz Spectrum Auction Rules - <AUTHOR> http://advice.cio.com/al_sacco/verizon_wireless_to_fcc_well_see_you_in_court Verizon Wireless has appealed the Federal Communication Commission's (FCC) rules for its upcoming 700MHz spectrum auction, charging the agency with overstepping its boundaries in requiring wireless carriers that purchase spectrum to open up their networks to any mobile device and any third-party application. <comment><USER2> They are biting the hand that feeds with this move. It just shows how much the telcos fear Google and Apple that they would go to these lengths to try and keep them out.</comment>


Show HN: Meera – A General Purpose Configurable Virtual Assistant - <AUTHOR> https://github.com/AmeyKamat/MEERA <comment><AUTHOR> MEERA stands for Multifunctional Event-driven Expert in Real-time Assistance. It is a general purpose bot that can respond to the user based on configured plugins.

MEERA communicates with the client software (which can be a web app, mobile app, telegram bot etc.) through a websocket api.

I do not intend to monetize this system. This system is completely open source.

</comment><comment><USER2> Looks promising. Is there a demo somewhere, even only a video on YouTube?

<comment><AUTHOR> I will create an illustration of how it works though.

<comment><USER3> Thanks, looks interesting. Example application or illustration would be terrific. Did you have a specific application or use case in mind when you began developing MEERA?

<comment><AUTHOR> I created demo video for this:

[https://www.youtube.com/watch?v=dlDJMxemm3M](https://www.youtube.com/watch?v=dlDJMxemm3M)</comment></comment></comment></comment>


Apple-Google Antitrust Case Is Going To Trial, And It's Steve Jobs' Fault - <AUTHOR> http://techcrunch.com/2012/04/19/steve-jobs-antitrust/ <comment><AUTHOR> I can't believe how Techcrunch threw Steve Job's name into the title of this story just to gain some early weekend traffic.

<comment><USER2> Without going into too much detail of how techcrunch creates traffic, if it really was the cited comment from Steve Jobs which let to the decission to let the case go forward they weren't that wrong.

Even if not, Jobs was Apple CEO when these agreements were met (if they were actually met, waht will be shown during the lawsuite), so I already saw worse traffis creating headlines elsewhere.</comment></comment>


CEO of motherboard maker MSI dies after plunging from seventh-floor HQ window - <AUTHOR> https://www.theregister.com/2020/07/09/msi_chiang_death/ <comment><USER2> this reminds me of a scene from "The IT Crowd"...

<comment><USER3> You mean Monty Python.</comment></comment>


Brian's Rules for Writing Cross Platform 'C' Code (2008) - <AUTHOR> http://www.ski-epic.com/source_code_essays/ten_rules_for_writing_cross_platform_c_source_code.html

<comment><USER2> I developed 9 ports and maintained 13 ports of RAD's Telemetry middleware for the game industry over a period of 3 years. My biggest takeaway from that experience is that build management, testing and release management are the hard parts once you get beyond the first few platforms. The only platforms that posed even minor problems in the traditional coding sense were ones in their infant stages (e.g. WiiU, Xbox One and PS4 years before their release) where hardware, APIs and even compilers are full of holes, and you have to deal with SDK updates (including deprecated APIs) and devkit refreshes. Automate everything you can and grit your teeth for the rest of it.

Purely on the coding side of things, I would caution against extremism when fighting code duplication between platforms. There is much to be said for having a single C file per platform that is self contained, even if it entails a certain level of duplication. The alternative very easily leads to an increasingly bifurcated decision tree that tries to account for similarities and differences between platforms (autoconf syndrome).

</comment><comment><USER3> It is somewhat outdated, but yes, most of the points apply today.

Some things changed. Qt is pretty solid today. We use it as native Linux platform. We use native Windows and Mac front ends too.

Using Qt solves lots of issues very easy, like OpenGL drawing capabilities.

So in Windows and Mac we have two versions of our own software, one with native widgets, one with Qt ones. The Windows version using Qt is much faster and efficient, albeit a little ugly, because of OpenGL issues(instead of official DirectX) and font sizes or colors a little different from Windows and so on.

<comment><USER4> The obvious benefit for me is that Qt provides cross platform GUI creation which is, after all, what it's designed for. Building your own frameworks is great if you have the man power to do it once, but I think there is a strong case for using something like Qt even if it locks you into using its data types.

If you're just writing a utility of some sort then sure, you probably don't need the kind of overhead that Qt dumps on you. That said, I've written very performant code using Qt's threading and concurrency libraries and it t was surprisingly easy. Think industrial image processing that needs to be done at 150Hz on two camera streams simultaneously.

</comment></comment><comment><USER5> I think there are some good, sound principles here; I've dealt with some to one extent or another, and I couldn't find anything to disagree with. I worked on a port of a large Java application to C++ on a different platform, and we went back and forth for a while trying to choose between utf-8 and utf-16 as a standard character encoding. We ultimately settled on utf-8, even though the Java code had used utf-16 (because it's Java's native encoding); I'm not surprised to read here that utf-8 is the way to go. Utf-16 is at odds with the expectations of every C and C++ standard library function and the language itself, which would have been a source of annoyances that would never end.

It's very, very hard to make any generalization about programming, and so I suspect that in his confident pronouncement that cross platform should never add more than a small amount of time to a project, there is something he's ignoring. The application they sell is for backup, and so it would probably be close to ideal for making cross-platform. I think he underestimates how complex GUI code can get when dealing with requirements less trivial than a backup application.

He also basically ignored Macintosh and ObjectiveC. I don't recall what the state of Macintosh was at the time this piece was written, but I'm pretty sure ObjectiveC was the standard language on Mac then as it is now.

I think there are sage principles here, though.

<comment><USER6> UTF-16 is a sad encoding and there's essentially no reason to ever use it except when interfacing with something that insists on it.

UCS-2 made a lot of sense back in the day when Unicode was supposed to be 16-bit and you'd just have one 16-bit "char" for each Unicode code point. Bliss! Then Unicode breached the BMP and this didn't work anymore. UTF-16 is just a way to let all that old code that assumes 16-bit Unicode to keep working. You get all the disadvantages of UTF-8 (no 1:1 correspondence between code units and code points) and none of the advantages (widespread compatibility with non-Unicode-aware tools, mostly-reliable discrimination between actual text and random binary data that might look like text).

One can kind of make a case for UTF-32 in some cases, but UTF-16 is almost never the right choice unless there is literally no other.

<comment><USER5> That helps put some things in perspective. Unicode is not a well-understood topic among programmers, I've noticed (at least in the US), and for something so important it's surprisingly difficult to find information. The distinction between UCS-2 and UTF-16 must have made sense at one time, but it makes no sense anymore, and it's not necessarily easy to track down the explanation for why there are two 16-bit formats. Thanks.

<comment><USER6> The whole thing is pretty much incomprehensible without understanding the history. It's a bit crazy how much historical baggage Unicode has managed to accumulate in just a couple of decades (and most of it from just the first few years).

It sounds like you have it figured out, but just in case: UCS-2 is the original pure 16-bit encoding from the days when nobody could conceive of needing more than 65536 characters for anything. UTF-16 is the hacked up "oops, it turns out there are a lot more Chinese characters than we realized" version that tries to maintain some compatibility with software built for UCS-2.

Given that there was only a five-year period between the first release of Unicode and the introduction of UTF-16, it's kind of amazing how pervasive the 16-bit encoding got. It's thoroughly baked into Java, where "char" was supposed to be a unicode character, but ended up being a unicode character or a piece of a UTF-16 surrogate pair. Windows APIs and Cocoa's NSString went through the same process. JavaScript too, and the spec _still_ allows implementations to only support UCS-2.

<comment><USER5> The c and c++ apis seem to make things worse. The right solution for charset conversion seems to be iconv.

</comment></comment></comment></comment></comment><comment><USER7> #3 is bad (or at least incomplete) advice when you consider portability to 64-bit. What it should say is to use the C type that correctly represents the data.

Translating DWORD to `unsigned long` is not correct! unsigned long is 32 bits on x86_64 Linux, but 64 bits on x86_64 Windows. Using long is essentially never correct for cross-platform code.

The right thing to do depends on what the value represents. If you want a 32 bit unsigned integer, use uint32_t. If you want something representing a pointer or size, use the corresponding type (uintptr_t, size_t). This doesn't just make porting easier, it adds useful hints for anyone reading your code.

<comment><USER8> really, the issue is, if you want a fixed bitwidth data type, use the types in unistd.h - uint64_t or uint32_t.

<comment><USER9> but fixed width data types are super freaking slow if your doing intensive processing.

<comment><USER10> I'm not buying it. I want to see your timings and proof. First of all, this only applies to a very few internal loops that don't touch disk, so you can use the "cross platform rule" for 99.999 percent of code. But if you are down to that last inner loop that runs your 3D video game, I'll admit you will need to have platform dependent code paths. But this describes an infinitesimally tiny subset of the code in the world. The rest of the time, write easy to understand cross platform less buggy code!

</comment></comment></comment></comment><comment><USER11> 'But on BOTH PLATFORMS they call the same line of code -> BzUiUtil::PauseBackup();'

That's some funky C code you got there Brian.

<comment><USER5> I thought that, too, when I saw that example, clearly in C++, after about 100 mentions of 'C'.

I've encountered programmers that habitually refer to C++ and ObjectiveC as C. I suspect he has that habit.

<comment><USER10> Original author here:

No, we use 'C' and 'C++' on Windows PCs, and we use 'C' and 'C++' and 'Objective C' on the Macintosh. Objective C can call into 'C' libraries just fine on the Macintosh. Objective C can also call into C++ just fine on the Macintosh.

The distinctions are very important to us. :-) Objective C cannot compile on Linux or Windows, but 'C' and 'C++' can compile on all three platforms (Macintosh, Linux, and Windows) using the default development environments on all three platforms (GCC on Linux, Xcode on Macintosh, Visual Studio on Windows).

</comment></comment></comment><comment><USER12> #4 is not completely true, as the "standard" ifdefs are defined by the compiler, not the platform. Thus, they may differ when building on Windows using MSVC and building on Windows usign MinGW.

<comment><USER13> Kind of falls out of his using one compiler per platform. There tend to be few differences though unless you use something less standard (like ARM's C compiler).

<comment><USER10> Original author here. Yeah, my goal was cross platform APPLICATIONS where the first step is choosing your tools. I suppose if you are writing a library like OpenSSL that you want to compile with every last flavor of every last compiler the problem gets worse.

I stand by my guideline for applications.

Another way to think about it is if you want, use all your own custom compiler flags, then if you can manage to get your compiler flags set by a creative combination of BUILT IN compiler flags, that way your code will compile right out of the box correctly on all platforms. What I dislike is that out of the box the code compiles on zero platforms. Instead, you run a "configurator" program that sets all the cross platform flags correctly. If at all possible, write your code so that it self configures correctly with zero changes on all compilers and all platforms. Please notice the "if at all possible". I think if you are relatively careful and just use basic types this can be done easily. Is it really that amazingly hard to find a native "int32" and "int64" type using ifdefs on every platform/compiler?

</comment></comment></comment><comment><USER14> This is a remarkably old article, but its truths mostly hold today. I also think that cross-platform compatibility is a day-0 affair, you need to get to that mentality from your first line of code. Adapting later will always be harder and more error-prone.

</comment><comment><USER15> This post is also on BackBlaze's blog - [http://blog.backblaze.com/2008/12/15/10-rules-for-how-to- wri...](http://blog.backblaze.com/2008/12/15/10-rules-for-how-to-write-cross- platform-code/)

</comment><comment><USER16> When I read "Platform" I thought the article would be about CPU architectures. Still a good read though.

<comment><USER17> I'm not sure if this is standard terminology but I like to refer to multiple operating systems as cross-platform and multiple CPU architectures sets as cross-architecture. It looks like the author is doing something similar.

After all the problems you encounter porting from Unix to Windows are different from what you hit porting across architectures. With cross-platform you're worrying over file IO functions or the lack of fork equivalent. With cross-architecture you must ensure the code is not abusing ints for storing pointers or assuming sizes of primitives.

<comment><USER18> > With cross-architecture you must ensure the code is not abusing ints for > storing pointers or assuming sizes of primitives.

You should ensure that anyway, even when you're working on a single architecture. Those are very bad habits to form.

<comment><USER19> I'm just starting C, what should I be using instead?

<comment><USER18> Don't make any assumptions about the architecture that your program will run on. If you have to go into variables with a different type than the one with which they were declared make sure you do so in a portable way.

So, for instance, if you want the lower 8 bits of an int don't declare a pointer to a character and then lift out the byte, but do (value & 0xff) instead.

That way if you move your program to a big endian machine it will still work. Storing pointers in ints assumes that pointers and ints are the same size, which is definitely not always the case.

So store pointers in a space sizeof(whatevertype*) rather than sizeof(int).

</comment></comment></comment></comment></comment><comment><USER20> I recently published an open source win/mac wrapper library in C. It is not well tested, and only covers the specific subset of functionality I needed for my current project. It may still be useful for others learning which pieces of each os handle which common tasks - things like CoreGraphics vs GDI, file system quirks, how to play audio, etc.

[https://github.com/tylerneylon/oswrap](https://github.com/tylerneylon/oswrap)

</comment><comment><USER21> The praise for OpenSSL ("I can't recommend OpenSSL highly enough, […] we just could not have done better at Backblaze.") is kinda funny now after Heartbleed and the massive code cleanup of the LibreSSL people …

<comment><USER10> Original author here -> technically Heartbleed was not a bug in the OpenSSL low level library, it was specifically an HTTPS bug (it was a bug at a higher level than the library I'm saying I liked then and still like). Specifically it was a bug in the "Heartbeat Extension for the Transport Layer Security" protocol (the HTTPS level is the TLS layer, the underlying encryption functions did not have this particular bug).

All that is a technicality, software has bugs. Heartbleed was a particularly bad security bug. This doesn't mean you throw out the baby with the bath water. As a society we all use HTTPS and it had a bug -> so we fix this bug and move on as best as we can.

As far as I know, something like 99 percent of routers and OS systems such as Linux, Macintosh, and Windows use the OpenSSL library and it has very little to do with Heartbleed. On the other hand, it is fairly important your system vendor stays on top of security patches and applies them.

OpenSSL is software, and therefore has bugs. But the OpenSSL encryption layer did not contain the Heartbleed bug. Or put differently, the OpenSSL encryption libraries that encrypt AES 128 and AES 256 had nothing to do with Heartbleed, and those are the parts we continue to use at our company completely for free, without paying any royalties to anybody, and they are a lot more secure than anything we could have hand-rolled ourselves even if we took years to do it.

</comment></comment><comment><USER22> Simply compiling and running on many different platforms (Windows, Linux, 32/64 bit, ARM, ...) has helped me find a number of truly weird issues that would have surfaced later. Compiler warnings, diverging stdlibs, alignment...

I'm a strong believer in this approach.

<comment><USER10> Original author here. I COMPLETELY agree. Anybody who defends their little one-platform-world as "special" should run their code through several compilers. It's like running a spell checker on your essay for the first time - the spelling errors jump out at you. Different compilers seem to be amazingly different in catching really obvious bugs. When I get something fully working on Windows and Linux, then the Macintosh XCode points out a problem I think to myself "WHAT THE HECK, HOW DID WINDOWS ALLOW THIS?!" It is worth doing cross platform development simply to raise the quality of the software you are working on, even if you never ship on the other platforms.</comment></comment>


Null Is Not Empty - <AUTHOR> http://blogs.msdn.com/ericlippert/archive/2009/05/14/null-is-not-empty.aspx

<comment><USER2> > The answer to that question is "I don't know -- there is data missing", so > the database returns Null.

There is no way I'd give that answer to my boss (via dashboard reports or in person) Even though he asked me what the Sales in August were, my answer would have to be $123456 + Missing Sales Staff (which has 12-month rolling of $789) so estimated Sales in August is $123456 + $789. Null does not work in real- world and a computer that says "I don't know" is not a useful computer.

I'm definitely in the minority here but personally I think databases would be a lot easier if Null=empty string/0/0D/False or any init value set for a field. I've been coding for 15 years now and have not once used Null in a positive, useful way. The only time I care about Nulls is in WHERE (field='' OR field IS NULL). I would rather it treat nulls like empty strings etc. because then I only have to check for field=''. Nulls in every real-world app I've used mean the same as empty string/false etc.

Customer name isn't entered in the system yet? That's not allowed so system will not create the record. Has customer been set as type 'Active'? We don't know? Then they're not active. Do they have multiple shipping addresses? 0 rows in the customer-ship table? That means no, they don't have multiple shipping addresses as of right now. The worst is having a null in a boolean field. That's not boolean, that's a ternary! I either want a TRUE or a FALSE in a boolean field. Null doesn't make sense. Is employee salaried or not? Null is not allowed in that field. The user-interface will not accept a blank or null. It will be a radio button 'Yes' or 'No'. There is no way a Null can be set for that field.

I can totally understand nulls in C/C++ with pointers etc. That makes complete sense and I'd be a fool to argue against the need for nulls there. But for databases where a field value is missing, it's just extra work instead of any benefits. I don't see why I'd ever need a Null. It's not like I'm using weird hacks to do whatever null is supposed to do. I'm just saying all I ever get from null is extra code on my end yet I get no benefits of detecting that something is null.

<comment><USER3> There are plenty of uses for null. For example: last failed login date. What do you put if it never happened? You put NULL.

As a general rule, there is no good "empty" value for things that are not strings, so you use NULL for those.

For your boolean: you have a new user and want to ask if he wants the widget enabled. They could say yes or no - but until you ask, you set it to NULL, and it's an excellent flag for your application that means: ask the user.

If you have never used NULLs in your databases, well, that's more a failing on your part than a failing on the concept of NULL.

Sometimes you want them, and sometimes you don't - that's why the database asks you.

NULL is used as the answer to x/0.

NULL is used to indicate lack of records on an outer join.

If you ask for the average value of something - and there are no rows, you get NULL - what else should it return? 0 is not the correct answer.

> a computer that says "I don't know" is not a useful computer

And a computer that returns incorrect information is worse. You asked it "what are the total sales for august". You did not ask "what are the sales so far for august".

Without the NULL as the answer, how does your front end application know to collect the running average to display to the user? You most certainly do have to detect NULL.

I will admit it's very rare to use NULL instead of an empty string (in fact in some versions of oracle NULL and the empty string are the same). But NULL is used frequently for other datatypes. And it's used frequently in other parts of databases.

<comment><USER2> Thanks for the reply. Very good points. NULL is perfect for DIV/0 or no record in join errors. I have absolutely nothing against that. It's the NULL instead of empty string that really bothers me and causes problems. Setting the field to NOT NULL has its own set of problems when used over ODBC. I know it's not the fault of the DB but the problem still remains.

</comment></comment></comment><comment><USER4> In OO, isn't this territory covered by the "Missing Object" pattern? Also, aren't there new statically typed languages that define the missing object class for you?

A pernicious thing you find in Smalltalk at certain shops is finding lots of methods defined on UndefinedObject (nil) so that it can act as a Missing Object. (Like comparison operations.) The problem, is that this often results in not knowing what the heck to expect in a variable.

This is very bad. You can't change your mind about this! It can also break the system in insidiously subtle ways. (Sometimes things work _because_ an exception is thrown!)

<comment><USER5> I'm not a huge fan of trying to make One UndefinedObject To Rule Them All:

[http://github.com/raganwald/homoiconic/blob/master/2009-02-0...](http://github.com/raganwald/homoiconic/blob/master/2009-02-02/hopeless_egocentricity.md#readme)

<comment><USER4> Yes. If possible, if a variable is for a Floogle, then make it _always_ have a Floogle in it. If the thing is not there, represent it with a MissingFloogle.

I think dynamic languages would be wise to support this explicitly. (There's always a Missing subclass of every type.)

</comment></comment></comment><comment><USER6> Funny how a little care in naming can save countless hours of confusion and explanation. In the original case of VBScript, if the value had been called "Unknown" instead of "Null," it would have saved a lot of confusion.

Now when it comes to languages like Java with only one special non-value value, "null" or "Null" or "Nothing," you have to know the context to know what it means. It might mean "this value is unknown," "this value has not been calculated yet," "an invalid value was calculated," or "there's a bug in the program." Or it might be overloaded to mean that one or more of those might be true.

If exactly one of those special cases is possible in your program, then everything is peachy: use null to represent that case. If you need to represent zero or more than one of those cases, then you'll end up with some kind of ugliness or imprecision.

</comment><comment><USER7> I think Lao Tzu said it best: "The Null that can be named is not the true Null". Or something like that.

</comment><comment><USER8> Ah yes, but a lot of people think Null == 0. I have seen databases where 99% of the entries were Null, because they didn't know of the one to many relationship and thought Null was a good "number".

</comment><comment><USER9> This reminds me to Oracle's behaviour of treating empty VARCHAR fields as NULL. I think it's a bit confusing since an empty jar is not the same as a non-existing jar.

</comment><comment><USER10> N.b. In Oracle, empty strings are null. In T-SQL (MS), empty strings are distinct from nulls.

</comment><comment><USER11> null is icky... In java's arrayList, you can't really tell if a cell hasn't been initialized or has the value "null."

<comment><USER6> <pedantry>There are no uninitialized values in Java. Reference values are initialized to null by default.</pedantry>

I'm not sure how null makes your problem worse...? If you want a value meaning "this value hasn't been set by the program yet" then you'll have to specify a value for that purpose. The easiest thing is to just use null... _unless_ null corresponds to a valid value for the type, in which case it seems fortunate that it's available to represent that value. I find null annoying when it doesn't correspond to any valid value for my type and I'm forced to check for it everywhere anyway.</comment></comment>


Bill Gates: The Next Outbreak? We're Not Ready (2015) - <AUTHOR> https://www.ted.com/talks/bill_gates_the_next_outbreak_we_re_not_ready?language=en <comment><USER2> > So next time, we might not be so lucky. You can have a virus where people > feel well enough while they're infectious that they get on a plane or they > go to a market. The source of the virus could be a natural epidemic like > Ebola, or it could be bioterrorism.

> There's no need to panic. We don't have to hoard cans of spaghetti or go > down into the basement. But we need to get going, because time is not on our > side.

Spot on. That's the novel coronavirus. We are not ready and that's why everyone is panicking.

</comment><comment><USER3> [https://news.ycombinator.com/item?id=22575745](https://news.ycombinator.com/item?id=22575745)

</comment><comment><USER4> "If anything kills over 10 million people in the next few decades, it's most likely to be a highly infectious virus"</comment>


The KGB's success identifying CIA agents in the field - <AUTHOR> http://www.salon.com/2015/09/26/how_to_explain_the_kgbs_amazing_success_identifying_cia_agents_in_the_field/ <comment><USER2> _The most important of which was how officers in the field under diplomatic and deep cover stationed across the globe were readily identified by the KGB._

A dirty little secret within the world of clandestine operations is that the majority of official-status officers (diplomatic or military cover) are known by the host country intelligence services. This is largely because you generally only take so much risk with ongoing collection efforts, for example going through customs and attending official diplomatic functions (dinners etc...) under status is typical and gives the locals a record. What they do in their "off time" is the real collection work, but even then their chance of gaining access to well placed contacts that have very specialized intelligence is low. The majority of officers know this, and it ends up being a political dance, where if someone gets too risky with their collection they get tagged and persona-non-grata'd.

The real question here is why the Soviets decided at that time to burn the officers that it knew about - because that turns into a tit-for-tat across waters that eats up resources and really strains diplomatic relations. I think the answer is very clear in that it was the last gasp of a dying system, so they were doing what they could to purge and wrest power.

Nothing particularly shocking or complicated here if you know how the system works.

<comment><USER3> > A dirty little secret within the world of clandestine operations is that the > majority of official-status officers (diplomatic or military cover) are > known by the host country intelligence services.

Do you have a citation that would support this?

<comment><USER4> Try Google.

This is pretty widely known phenomena, as in anyone who has read anything about cold war espionage is aware of it. This article confirms it through a source from the former KGB.

Here's a 1985 NY Times article detailing Soviet use of this ruse in Mexico: [http://www.nytimes.com/1985/06/23/world/mexico-city- depicted...](http://www.nytimes.com/1985/06/23/world/mexico-city-depicted-as- a-soviet-spies-haven.html?pagewanted=all)

Here's a 1983 NY Times article "Soviet Orders US Vice Consul Expelled as Spy": [http://www.nytimes.com/1983/09/13/world/soviet-orders-us- vic...](http://www.nytimes.com/1983/09/13/world/soviet-orders-us-vice-consul- expelled-as-a-spy.html)

Key quotes from the 1983 article:

>"The Soviet action against Mr. Augustenborg followed a pattern set twice earlier this year. In March, when Richard Osborne, a first secretary in the embassy's economic section, was expelled, and again in June, when Louis Thomas, an embassy attache, was ousted on spying charges, the Soviet announcements were issued promptly and said the men had been caught in the act on Moscow streets. Previously, such announcements had often been delayed or not made public at all."

>"...no American diplomat had been publicly expelled since 1977, and in that case, involving Martha Peterson, a vice consul at the embassy, there was no Soviet statement until 11 months later, after the United States had announced the arrest of two Soviet employees of the United Nations caught picking up documents on antisubmarine warfare."

>"The recent Soviet actions against Americans come at a time when Western counterintelligence services have stepped up their actions against Soviet agents. Nearly 100 Russians have been expelled for intelligence activities around the world ... Also in April, the United States expelled three members of the Soviet Embassy in Washington, including a military attache, Lieut. Col. Yevgeny N. Barmyantsev, who was reportedly caught retrieving what he thought were stolen American military secrets from beneath a tree in rural Maryland."

<comment><USER3> Unless I missed something, those articles just give specific examples of agents being uncovered. Nothing is given to indicate how many remained uncovered. Its a pretty long jump from examples of such to the general statement that "the _majority_ of official-status officers" being known by their host countries.

<comment><USER4> From the 1985 article:

>"United States counterintelligence specialists estimate that at least _150 K.G.B. officers_ are working out of the embassy under cover as diplomats, clerks, chauffeurs, journalists and in other jobs."

Just as a point of reference, the US Embassy in Iran during the 1979 revolution and subsequent hostage crisis had something on the order of 75-100 people working there.

Again, Google around, there is a ton of material out there on these topics. If you read Russian, I'm sure there are similar stories talking about US spies. (Although the reliability of Soviet media is questionable at best) I was really interested in this stuff when I was a kid, and recalled these events vaguely from those days, there's plenty more to find.

<comment><USER3> You still haven't provided the evidence needed though to support the conclusion of a _majority_ given _some_ or even _many_.

Also, we are talking about an endeavour in which deception is the norm, so even evidence like this is more than a little bit questionable.

<comment><USER5> What evidence would you like? Embassy payroll documents annotated with "spy" and "not a spy"?

Given the privileged status of the embassy and the protections offered by diplomatic status (eg the diplomatic pouch) you'd be crazy _not_ to staff your embassy with spies, at least in any country worth spying on. You'll probably get a few actual diplomats to do the actual diplomacy too, and the occasional low-level passport stamper, but the default assumption should be that they're pretty much all spies.

<comment><USER3> My point is that this _is_ the kind of evidence you would need to support the original claim. If the top-level comment I was pursuing had, instead of making the claim that the _majority_ of the spies posing as diplomats were known as spies to the host nation, had rather claimed that _many_ of them were known, I wouldn't have pursued it.

Edit: fixed language

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> The problem today is that with LinkedIn and Facebook, some CIA personnel are stupid enough to actually mention their status with the Agency, or are friends/connections with known CIA Analysts etc. who do mention their status.

NSA Contractors sometimes mention classified codenames in their LinkedIn page. [https://www.techdirt.com/articles/20130617/13482623512/disco...](https://www.techdirt.com/articles/20130617/13482623512/discovering- names-secret-nsa-surveillance-programs-via-linkedin.shtml)

<comment><USER7> That seems like something that competent counterintelligence people should be monitoring and shutting down.

Hell, they probably should have unit in their new employee orientation covering this: "Do not list your occupation as 'Spy'" on LinkedIn.

<comment><USER5> I once read an NSA employee manual which talked about how you should talk about your work. It said you should be truthful without making it sound exciting or mysterious.

If asked "where do you work" you say "the department of defense". If asked what branch you say "the NSA". If asked what you do, you say "research". And that's it, apparently.

No doubt there are other manuals for other types of employee, but they're not available on the Internet.

<comment><USER8> We used to just mess with crappy computers all day while doing the equivalent of memorizing phonebooks. suuuuper boring stuff.

</comment></comment></comment></comment><comment><USER3> > Any Soviet citizen had an intimate acquaintance with how bureaucracies > function

This makes me wonder whether there is any literature out of the Soviet Union on topics like this, kind of like how the U.S. produced works like Dale Carnegie's _How to make friends and influence people_.

<comment><USER9> I'm trying to decipher the implication. Is it that Americans have a unique understanding of friendship and influence?

<comment><USER10> It's that 'Winning Friends and Influencing People' was a gateway to success, and an activity the vast majority of the population was trying to be successful at. Whereas a soviet book on navigating bureaucracy would serve the same role.

<comment><USER3> Thanks yes, that is pretty much what I meant.

</comment></comment></comment></comment><comment><USER11> I wonder if this pattern could still be applied.

For a NOC they'll setup a shell corporation called "Southern Electronics Corporation, LLC" or some other discrete sounding name and have a real website, office address and phone number actually manned, but surely they register the corporations, domains, phone numbers at the same place, staff the phones with the same voices...

Makes me wonder if they fixed the problem or if it's just hidden one level deeper.

<comment><USER12> It is absolutely applicable. In fact this is pretty much how the whole "extraordinary renditions" program was (fairly easily) unravelled by journalists.

Dummy ("brass-plaque") corporations, recycled aircraft registrations, special landing permits at military airports... just a matter of connecting the dots, basically.

<comment><USER13> Old school investigative journalism, in other words.

</comment></comment></comment><comment><USER14> two thoughts

1\. In the 70's and the 80's our Soviet counter-intel was fairly compromised. Aldrich Ames and Robert Hassan are just the biggest examples. That probably does a better job explaining a Soviet CI advantage than 'we looked at the things agents did and looked for correlations.' I mean, every agency has been doing that forever.

2\. There are a number of different types of cover, like the article points out. Diplomatic cover is the 'laziest' and for some (usually very low lever or very high level) people it's not really meant to fool anyone. There's private sector cover, with dummy corps and rented office buildings, and genuine P&L sheets. Private sector cover can be extremely clandestine, and extremely sophisticated. As AndrewKemendo points out, the things that this article points out are maybe not very impressive at all.

<comment><USER15> Hanssen was posting stories to Usenet's alt.sex.stories in the late 1990s, stories of voyeurism about his wife ( [https://groups.google.com/d/msg/alt.sex.stories/3e1fHGTW_Pc/...](https://groups.google.com/d/msg/alt.sex.stories/3e1fHGTW_Pc/lI68TqLeJ0cJ) ). He can't be said to have been keeping the lowest of profiles.

</comment></comment><comment><USER16> The pattern isn't described until the second to last paragraph. I'll just c&p:

> _Thus one productive line of inquiry quickly yielded evidence: the > differences in the way agency officers undercover as diplomats were treated > from genuine foreign service officers (FSOs). The pay scale at entry was > much higher for a CIA officer; after three to four years abroad a genuine > FSO could return home, whereas an agency employee could not; real FSOs had > to be recruited between the ages of 21 and 31, whereas this did not apply to > an agency officer; only real FSOs had to attend the Institute of Foreign > Service for three months before entering the service; naturalized Americans > could not become FSOs for at least nine years but they could become agency > employees; when agency officers returned home, they did not normally appear > in State Department listings; should they appear they were classified as > research and planning, research and intelligence, consular or chancery for > security affairs; unlike FSOs, agency officers could change their place of > work for no apparent reason; their published biographies contained obvious > gaps; agency officers could be relocated within the country to which they > were posted, FSOs were not; agency officers usually had more than one > working foreign language; their cover was usually as a "political" or > "consular" official (often vice-consul); internal embassy reorganizations > usually left agency personnel untouched, whether their rank, their office > space or their telephones; their offices were located in restricted zones > within the embassy; they would appear on the streets during the working day > using public telephone boxes; they would arrange meetings for the evening, > out of town, usually around 7.30 p.m. or 8.00 p.m.; and whereas FSOs had to > observe strict rules about attending dinner, agency officers could come and > go as they pleased._

</comment><comment><USER17> This proves American Intelligence is an oxymoron.</comment>