Mastodon Is Now Home to the Biggest Far Right Social Network - <AUTHOR> https://www.vice.com/en_us/article/mb8y3x/the-nazi-free-alternative-to-twitter-is-now-home-to-the-biggest-far-right-social-network <comment><USER2> "Gab—which has been tied to the suspect responsible for the Pittsburgh synagogue terror attack that killed 11 worshippers—"

This is an odd statement as it doesn't say why it is significant that the shooter guy used Gab. I read the article and was expecting some sort of violence ethos with the product.

Citing that a murderer drank coke or uses Windows or curses on t-mobile is not significant, nor interesting. So I'm not sure how it made it past this piece's editor.

Mastodon is an open source product, anyone can run it. Why is it interesting that nazis use it? That makes sense since it's likely they were banned from centralized networks.

It's like writing an article about how terrorists use PGP. That seems reasonable and expected.

The way this is written is that it's somehow Mastodon, or Gab's fault that jerks and criminals use their products.

</comment><comment><USER3> Far right, of course, being anyone right of just left of Obama in ~2014.</comment>


SQL Window Functions - <AUTHOR> http://www.helenanderson.co.nz/sql-window-functions-part-1/ <comment><USER3> I interview people quite often for data engineer positions where good knowledge of SQL is also required and I'll usually have the applicant give me a presentation of some system or data pipeline that they have worked on earlier (any possible business or client secrets can of course be obfuscated or omitted). I'll ask questions about that system or process "like I'm 12 years old" and then I'll make up on the fly some kind of problem statement that I would like to have this and this kind of results from the data - <USER2> would you do it? Very often I include problems that would be easily solvable with window functions and more often than not those who know them get hired :)

IMHO it is really helpful to know these.

<comment><USER4> Yeah, knowledge of window functions allows to solve quite complex data manipulation problems fairly easily.

For some data-engineering type of work such as sessionization, doing it without window functions would make the task really complicated.

In some platforms such as MySQL there are alternatives such as correlated subqueries that also allow to do extensive data manipulation easily, but at quite the cost penalty.

In my experience, people who know window functions, are already quite well versed in SQL and thus can serve as a good proxy to gauge overall experience in Analytical SQL.

</comment></comment><comment><USER5> The existence of LAG and LEAD have solved some seriously iffy requirements twice in the past year now. One time for measuring / determining from two consecutive GPS points some details about speed, route and distance (omitting some details here), LAG allowed to see and compare the previous points recorded and is IMO absolutely vital for PostGIS.

second time for calculating changes between two rows and combining that with some business rules, the existence of LAG was absolutely crucial for keeping it all in the database.

RANK / PARTITION BY is something that when you need it you really really need it. Like if you join a bunch of rows to a single column but would like to just have the first or last of those rows for results and disregard all the other rows? RANK and order by

</comment><comment><USER6> I would say you need _to know about the existence of_ window functions. Knowing they exist and generally what they are used for means some time in the future I can identify a problem I am trying to solve, and then go read up on the documentation for window functions and use them in that place, and then probably forget about the specifics.

<comment><USER7> "...there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns—the ones we don't know we don't know." \- Donald Rumsfeld

Basically if you know that something exists, but don't know about it you can still go learn it and apply it to solve a problem.

But if you don't know about it, most likely you'll try to reinvent the wheel and spend way too much time doing it.

<comment><USER8> It always annoys me when that phrase is attributed to Donald Rumsfeld. The concept is much older than him, and the attribution to him gives him an air of wisdom that he doesn't deserve.

<comment><USER9> Then find someone else to credit it with? Seems futile to combat this attribution without a replacement

<comment><USER8> Does it need to be attributed to someone? It has long been a well known concept in the intelligence community.

</comment></comment></comment></comment></comment><comment><USER10> The author explicitly states that she is using these in SQL Server, but I did a bit of digging and they are supported in ANSI SQL2003/2008, which is implemented by all the major vendors (MySQL, PostegreSQL, Oracle, DB2, SQL Server).

Wikipedia has some data on support: [https://en.wikipedia.org/wiki/Select_(SQL)#Window_function_s...](https://en.wikipedia.org/wiki/Select_\(SQL\)#Window_function_support_by_RDBMS_vendors)

<comment><USER11> MySQL only as of 8.0, which also added CTEs, more JSON features, and index features relevant to indexing JSON.

</comment></comment><comment><USER12> Date is hard. The example says

> BETWEEN '2018-01-01 00:00:00:000' and '2018-12-31 00:00:00:000'

So the last day of december will be missing.

<comment><USER13> BETWEEN is inclusive, so it will match '2018-12-31 00:00:00:000' but not '2018-12-31 00:00:00:001'. So if the date column actually only stores dates (not times) then it will actually work correctly - certainly using "2019-01-01 00:00:00:000" would give wrong results.

It would be safer, and clearer, by doing the half-open comparison explicitly. But I would argue it's BETWEEN that's hard (because it's closed rather than half-open as you'd expect) rather than dates, at least in this case.

orderdate >= '2018-01-01 00:00:00:000' AND orderdate < '2019-01-01 00:00:00:000'

<comment><USER14> In postgres I would use tsrange to make it very explicit if I want to include the edges or not: '[2018-01-01 00:00:00, 2019-01-01 00:00:00)'::tsrange @> '2018-01-01 00:00:00'::timestamp

<comment><USER13> I didn't realise that Postgres has ranges, thanks for that. But, even though I have a background as a pure mathematician, I strongly disagree that "[a, b) includes x" is any more explicit than "x >= a AND x < b". Given that those ranges aren't standard SQL and are _much_ less commonly used than simple inequality operators, I'd stick with inequalities for clarity.

</comment></comment></comment></comment><comment><USER15> Not to tack on too much hyperbole but window functions are amazing and can save you from doing a lot of self joins.

<comment><USER16> Same with CTEs. In the last year I've worked with both and they really change the game for nontrivial queries.

</comment></comment><comment><USER17> I have used window functions in SQLite. You don't need it a lot, but there are some uses for it. However, I don't know what the EXCLUDE clause is good for; it doesn't seems so useful.

<comment><USER18> Yeah the addition of window functions onto sqlite last year was quite a good feature to enable more data use cases with sqlite.

The exclude clause is part of the "window" configuration which defines which row to process, with it you can for instance define a range between all the previous and next rows and check if your data-point looks abnormal.

</comment></comment><comment><USER19> I remember using window functions to create complex data outputs for data transformation pipelines. I didn't even know what they were but postgres just started supporting them and it looked like the right solution at the time.

I don't find a whole of use for them now but, I believe simply being aware they exist and an idea of what they do is easy enough to research and apply to any project you are working on. This is from a analyst and dev perspective.

</comment><comment><USER20> Anyone have an example of using window functions in a non time series data set? Kinda seems like a bit of a flag in my head that if I'm asked to do some analysis w/ time series data (depending on the question) a window function might be a good the tool. Reading this you can tell I'm not particularly fluent in them. We use them at work and I was asked during my interview about them (did not know but got job anyway).

<comment><USER21> Say you have to grab a bunch of files a few times a day and zip them up and drop them on and endpoint somewhere. But the endpoint has a max file size for a single upload.

If you have a table of metadata about your files (zipped_size and location, for example) you can window on the sum of the zipped_size to collect some number of files you can get that will be under the file size limit.

<comment><USER20> Thank you

</comment></comment></comment><comment><USER22> As well as the basics, it really helps to understand all the different options for window frames, allowing you to only look backwards or forwards a certain amount, or skip the current row etc with more recent support in Postgres at least.

Also if you want to get really fancy, it's always worth remembering that you can write your own aggregates in Postgres, which can of course work as window functions.

</comment><comment><USER23> In BigQuery I've found array_agg() to be preferable in most use cases.

Also, in Hive I used to use Custom Reducers for many things where now I have to make do with Window Functions.

BigQuery is blazingly fast though so it seems a reasonable sacrifice.

<comment><USER24> I use pretty simple window functions with almost every BigQuery query I write, I can't imagine going back to a database that doesn't support them now.

<comment><USER23> Yeah - I've never had to use a db that didn't support them.

It's almost unimaginable for me!

</comment></comment></comment><comment><USER25> Why, in the second example with RANK(), does the values for 1/2 go from rank 12 to 15 and then 6, 7?

Am I missing something obvious?

<comment><USER26> It's because the query has an ORDER BY clause that orders it all by sale_date, whereas the RANK() is calculated from subtotal order.

</comment></comment><comment><USER9> How is this different from LIMIT and OFFSET options?

<comment><USER27> Very.

<comment><USER9> ...but how?</comment></comment></comment>


Why the iPhone 5 makes me sad - <AUTHOR> http://huberessays.tumblr.com/post/31435064167/iphone-5

<comment><USER2> I think the hardware is great for the new IPhone. I think the real problem is that they are now going to have to really create compelling software as Google is catching up. They also really need to rethink the user experience a bit. Some new design blood for their UI would be a nice change.

</comment><comment><USER3> The one thing I don't get is, why stick with the same width and just add height? And one row of icons?</comment>


Here's How Often Google and Facebook Say Yes to Government Snoops - <AUTHOR> http://www.motherjones.com/politics/2013/06/google-microsoft-twitter-facebook-user-data-fisa-charts <comment><USER2> Facebook received over 9,000 requests from the feds last year and complied with 79% of them?? That's scary.</comment>


Ask HN: Why do investors need to be accredited? - atom-morgan

I recently read an article[1] which stated that companies are only allowed to solicit investments from accredited investors. What's the reasoning behind this? Why can't anyone, including myself[2], who is willing to risk their own money invest in a startup?<p>[1] http://www.businessinsider.com/sec-announces-crowdfunding-rule-to-allow-startups-to-raise-1-million-from-unaccredited-investors-2013-10#ixzz2iaskUpYm<p>[2] http://blog.atommorgan.com/investors-need-to-be-accredited <comment><AUTHOR> The bar for accreditation is extremely low - investor signs a piece of paper making a claim about their net income or personal wealth, but no actual validation must occur.

SEC wants to strengthen the validation requirements, which would increase compliance costs a lot, and so generally business world is against this.

The more striking limitations are around solicitation - how you actually find your investors. "General solicitation" is vaguely defined (here's looking at you, angel.co). But basically, it's like the first rule of Fight Club, no one ever talks about it, yet somehow more people keep showing up!

</comment><comment><USER2> In the Great Depression of the 1930s many people lost a lot of money by investing in unregulated securities. So now anyone can invest in highly- regulated securities and only rich people can invest in sketchy stuff.

<comment> atom-morgan So the law is attempting to protect people from themselves?

<comment><USER3> I'd like to think, protecting the middle class and poor from thieves.

<comment> atom-morgan In that case, the link in joelgrus' comment raises an interesting point. If protecting people is the end goal, why are we allowing people to file their own taxes when they could face jail time as a result?

<comment><USER2> Yeah, in more civilized countries the government calculates it for you.

</comment></comment></comment></comment></comment><comment><USER4> If you generally solicit, under Section 201 of the JOBS Act, all of your investors have to be accredited.

If you don't generally solicit, theoretically, under Rule 506(b), you can have up to 35 non-accredited investors. BUT, if you even take one you have to provide IPO level disclosure. Ridiculously expensive. See this blog post: [http://www.startuplawblog.com/2013/01/14/cant-i-let-non- accr...](http://www.startuplawblog.com/2013/01/14/cant-i-let-non-accredited- investors-in-my-round/)

</comment><comment><USER5> Its to prevent "Grandma Sally" from investing her retirement savings in high risk start-up because she isn't "financially sophisticated" to understand the risks.

</comment><comment><USER6> Here's an argument that it's protectionism for the wealthy:

[http://undergroundeconomist.com/post/22847068021](http://undergroundeconomist.com/post/22847068021)

</comment><comment><USER7> To foster a two-tiered market</comment>


Amazon Launches in Singapore - <AUTHOR> https://www.marketplacepulse.com/articles/amazon-launches-in-singapore <comment><USER2> Singapur's market is hugh. Amazon did a big deal.</comment>


Monadic i/o and UNIX shell programming - <AUTHOR> http://okmij.org/ftp/Computation/monadic-shell.html

<comment><USER2> I thought about this about 5 hours ago, while reading this: <http://clojure.org/state>. I have never made the connection before.

However, it struck me that this is obviously the reason for Microsoft code- naming their PowerShell Monad. <http://en.wikipedia.org/wiki/Windows_PowerShell></comment>


Startup Bought for Data? - <AUTHOR> Can you come up with a startup acquisition that happened mainly because the acquirer wanted certain data? <comment><USER2> Facebook acquired WhatsApp for user data, I believe.

<comment><AUTHOR> Cool, thanks for your answer.</comment></comment>


No Parkinson's with the flip of a switch - <AUTHOR> http://kottke.org/13/06/no-parkinsons-with-the-flip-of-a-switch

<comment><USER2> I was really amazed and watched a live surgery. The surgery was done by one Professor, a Neurologist, and two medicine-physicists. I was really amazed how the operation was done. Most of the work was actually done on a computer to get the brain coordinates right (so no vessles would break when they dig a hole in your head). They actually just drill a small hole in the scull, and will not open the scull fully.

The scariest moment was, when the Neurologist hooked up his Windows 2000 Laptop to the fully awake patient trying to figure out which voltage/current would be the best stimulant.

The patient had to count the weekdays beginning at Monday. Everything worked out until Wednesday. Thursday sounded more like "mmmblblblbmmlbm". After that the Neurologist hit a few buttons on the Laptop, adjusted the currents, and after that the patient was able to speak out "Thursday" easily.</comment>


Western Europe, It's Time to Purge Your Character Sets - <AUTHOR> http://ihatethesoundsaroundme.wordpress.com/2014/04/23/all-your-character-encoding-belong-to-us-western-europe/

<comment><USER2> You do understand that unlike the North America the Europe does not speak the same language in all of the countries? :)</comment>


Svelte and TypeScript - <AUTHOR> https://svelte.dev/blog/svelte-and-typescript <comment><USER3> It's really telling that, for every big project that does not support TypeScript, the number 1 feature request is TypeScript support. (And consequently, that there are fewer and fewer such projects.)

<comment><USER4> I think that's just proof that "the next future" of web development is going to be owned by languages like C# (that __already__ allow you to write decent client side web apps) and other already popular not dynamic languages

After C# of course yet another DSLs.

<comment><USER5> I hope not.

C# is too bloated for my taste and I have to admit, TS is too close to C# for my taste.

<comment><USER3> If it's like C# in that it's bloated, I can see why you might say that, but I'm quite sure that my TS code looks nothing like C# code. (Because it's almost exactly like my JS code, but with annotations and fewer redundant checks.)

<comment><USER5> To me, C# like type annotations, especially generics, look bloated.

ReasonML files don't look like that and are even sound.

</comment></comment></comment></comment></comment><comment><USER6> I feel like the odd man out in discussions like these. I don't like Typescript and I regret pushing to integrate it into a project at work.

I've found it vastly increases incidental complexity and affords little to no benefit to me. The IDE completions are nice, but ultimately not worth the price, in my humble and honest opinion.

<comment><USER7> I also disliked my time with TypeScript, but perhaps its value hasn't made itself entirely apparent to me. Most of my programming experience has also been with dynamically typed languages. I think if you had already spent enough time with a language like JavaScript or Lua and familiarized yourself with its quirks/footguns, you learn how to avoid the common pitfalls of not having a strict type system.

Although I've found that TypeScript is a great way to attract devs who hate JavaScript to try working on front-end.

<comment><USER8> When working with devs that have grown up on dynamically typed languages I often find that they have not really thought carefully about the structure of their data and there are essentially many ad hoc data types strewn throughout the code. Thinking in types from the beginning leads to much better structured code and stronger abstractions IMO.

<comment><USER6> I see the same thing, but in people who primarily work in statically typed languages. I don't think there's much of a pattern in wrt types, but people who don't think about data.

<comment><USER8> Specifying all those complex ad hoc data types in a statically typed language is so tedious I think it pushes you to start looking for unifying abstractions.

</comment></comment></comment></comment></comment><comment><USER9> Lack of Typescript support was the main reason I didn't switch to Svelte for my personal projects. Other than that it was a joy to use, and a breath of fresh air in it's approach.

I'd recommend any front-end dev to give Svelte a try, even just spending an hour or two messing around, to experience a way of developing web apps that's likely a bit different to what you're used to, but feels familiar enough that it doesn't require a big mental leap.

</comment><comment><USER10> Here are some tutorials from community members who knew this was coming:

\- 3 min youtube demo: [https://www.youtube.com/watch?v=djRkyyBoIKs&feature=youtu.be](https://www.youtube.com/watch?v=djRkyyBoIKs&feature=youtu.be)

\- 3 min eggheadio lesson: [https://egghead.io/lessons/svelte-create-a-new- svelte-projec...](https://egghead.io/lessons/svelte-create-a-new-svelte- project-with-typescript-support)

\- TS + Sapper: [https://mrsauravsahu.github.io/blog/38/](https://mrsauravsahu.github.io/blog/38/)

</comment><comment><USER11> Having talked to a ton of friends about Svelte, Typescript support has always been the biggest push-back for adoption.

Stoked for Svelte to support it.

We've been using Svelte in production and I can't speak highly enough about the developer experience. Absolute game changer for our ssite that use it.

<comment><USER12> What would it bring in ergonomics and expressivity versus Vue ?

<comment><USER13> Those things really need to be experienced to be understood, so just try Svelte in a toy project. Or go through the interactive tutorial [https://svelte.dev/tutorial/basics](https://svelte.dev/tutorial/basics)

I used both React and Vue and am now only using Svelte.

You type less. Significantly less.

The thing you type is simpler. I tend to get lost in Vue's object structure.

What you type is closer to HTML/CSS/JavaScript than what you type in React/Vue. It's therefore easier to understand what gets generated.

The seamless reactivity is awesome.

Scoped CSS support is built-in so you don't need css-in-js hacks.

Built-in support for data (stores) is excellent.

The final bundle is smaller and faster.

There's more but the above are the major points.

The only downside is smaller ecosystem. But I don't care because I'm in the camp of minimizing my dependencies.

<comment><USER14> > Scoped CSS support is built-in so you don't need css-in-js hacks.

vue/react also have scoped css, but built into the building process using loaders rather than being a feature of the frameworks.

<comment><USER15> Less time setting up build processes is another win you git with Svelte, in my experience.

</comment></comment></comment></comment></comment><comment><USER16> > I get almost as much benefit from the rigorous null checking in TS as I do > from the typing. I would use it for that alone. [1]

This.

I suspect there is a certain way those who rave about TS like yourself write and structure their code (all code, regardless of language) in a way that naturally lends itself to strict typing. The "rigorous null checking" comment struck me as odd, as someone who has written JS for almost 20 years, I've just never had to think about, or use null values. I probably just use the good parts of the language and avoid the bad [2]

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

[2] [https://www.oreilly.com/library/view/javascript-the- good/978...](https://www.oreilly.com/library/view/javascript-the- good/9780596517748/)

<comment><USER17> You can't avoid null and undefined in your code unless you avoid almost every language feature. Two particularly common ones:

* Accessing a missing property or method results with undefined. Hope you remember the exact method names and field names of all objects in your codebase!

* Using "str".match(regex) results with null if there are no matches.

<comment><USER16> > You can't avoid null and undefined

We are speaking about just null, not "null and undefined". Believe it or not, I simply do not use null in JS. Study the concept of "truthy and falsy" in JS.

> Accessing a missing property or method results with undefined. Hope you > remember the exact method names and field names of all objects in your > codebase!

I don't. I do however structure my code predictably, using consistent naming conventions and patterns. I hope you do realize JS existed for over 20 years before TS, and complex apps like gmaps and google docx were built entirely in JS.

> Using "str".match(regex) results with null if there are no matches.

const match = /bar/.exec("str");

if( match ){

      // am only interested in what happens if foo returns a *truthy* result.

      // The exact type of a falsy result is irrelevant, it either matches (truthy) or it doesn't (falsey)

    }

<comment><USER18> > We are speaking about just null, not "null and undefined". Believe it or > not, I simply do not use null in JS. Study the concept of "truthy and falsy" > in JS.

I'm anti-TS, but there is a meaningful difference between null and undefined. Most of the time it's enough to check for falsy values, but there are times when you will want a distinction between a missing value and a value of null.

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

<comment><USER16> Do you have a concrete example of such a time?

<comment><USER18> Undefined represents the absence of information altogether. In JavaScript any key can be called on any object and if it doesn't exist it will return undefined. If you put a typo in the key name, you get undefined. If you've never set it, you get undefined.

Null, on the other hand, is not a lack of information. It's an absolute value just as much so as any number or string or array.

They're both falsey values, but so is the number zero. An item with a price of zero dollars is not the same as an item with an undefined price, nor is it the same as an item that explicitly has no price, i.e. null. You may not choose to model your data that way, but the terms are still meaningful, and your UI might have to change to reflect the different falsey values.

Most common case I could think of, would be in making a request from a server, using something like Apollo. `const [ data ] = useQuery(SomeQuery)` The data that comes from the server is undefined until you make the request, but null could be a valid response.

</comment></comment></comment></comment></comment></comment><comment><USER19> TS really shines when you have to work with other people's code. This week I probably touched about 2000+ files and changes various apis. TS was really great in giving that confidence that what I am calling actually existed.

I had ~2000 errors and slowly worked to 0. tsc —watch is so good for iterative development.

And LSP (Language Server Protocol) really is a boon for the industry. So many tools can work together. Thank you VSCode for paving the way to an open protocol.

</comment><comment><USER20> Are the HTML templates type checked as well?

I'm playing with Vue version 3 with TypeScript using JSX instead of the usual HTML templates and pretty happy that it's all type checked. I have a similar project without JSX and the vast majority of the bugs are related to the logic in the HTML templates not being type checked.

<comment><USER21> Try using Vue in WebStorm with their Vue plugin enabled, or use TSX with any IDE. Your "HTML" will be type-checked.

<comment><USER22> Hmm, I'm going to have to take another look at this then because I get auto- complete of variable properties in my html (IDEA + Vue plugin) but I don't get warnings about a variable possibly being null or undefined. But that may be outside the realm of possibility to check easily.

<comment><USER21> > _But that may be outside the realm of possibility to check easily._

It depends. If you type-check your runtime input (e.g. form fields) then it works well.

</comment></comment></comment></comment><comment><USER23> Switching from JS to Typescript was like moving from machine code to C. Note: machine code (hex) not assembler.

<comment><USER24> JavaScript is getting more "typed" anyway - what with Promises and other objects/interfaces in the DOM being conceptually statically typed - <USER2> JavaScript's type-juggling simply can't help you - so writing JavaScript today against modern browser/NodeJS APIs feels like writing VBScript against ActiveX instead of writing in VBA/VB6: you can do essentially the same things, but you have no idea if your program will actually work or not.

It would not surprise me if the ECMAScript folks just throw in the towel and adopt TypeScript into ECMAScript as its official type-annotation feature - like how Python is doing - except without the duplication of effort.

</comment></comment><comment><USER10> this has been eagerly anticipated for so long and is probably the #1 stated reason why people haven't tried out Svelte yet. so glad this is out!

<comment><USER25> It definitely was my #1 reason and I'm happy to see this announcement. I'll check Svelte out soon as it already looked quite promising to me.

</comment></comment><comment><USER26> I am a (very) hobbyist web dev, almost always working with vanilla HTML+JS. I seeing a while lot of people here who are saying that Typescript is an absolute must.

As someone who has no clue, and with all do respect, why would TypeScript be worth moving from just hitting save to introducing a build system and dependencies?

<comment><USER27> I have been using TypeScript in JS[1] mostly seamlessly. Types are annotated using doc comments above the thing your annotating.

It is a bit hard to define complex types. E.g. I couldn't for the life of me annotate the return value of the pipe function:

        function pipe(init, ...ops) {
          return ops.reduce((acc, op) => op(acc), init)
        }

For these instances they suggest writing a declaration file[2]. However I have found the documentation isn't really clear on this usecase (in fact I find the documentation of TypeScript somewhat lacking in general).

But overall getting these typehints into my editor environment has been worth it. And I haven't had to sacrifice the save → run workflow.

1: [https://www.typescriptlang.org/docs/handbook/type- checking-j...](https://www.typescriptlang.org/docs/handbook/type-checking- javascript-files.html)

2: [https://www.typescriptlang.org/docs/handbook/declaration- fil...](https://www.typescriptlang.org/docs/handbook/declaration- files/introduction.html)

EDIT: An example annotated JS file for typescript: [https://github.com/runarberg/strawberry- router/blob/master/s...](https://github.com/runarberg/strawberry- router/blob/master/src/elements/router-view.js)

`npm run check` just runs typescript's type checker, there is no compile step.

<comment><USER28> If I understand your pipe function correctly - it takes an init value and a series of functions that map a type T to the same type T - then this should do it.

      function pipe<T>(init: T, ...ops: ((x: T) => T)[]): T{
        let r:T = ops.reduce((acc:T, op) => op(acc), init);
        return r;
      }

I had 5 years experience fixing type errors in C++; typescript seems like a dream in comparison.

Edit: I just realized your operations probably DON'T return the same type that they are passed; they probably work in a chain like (t:T) => U, then (u:U) => V, etc. Nevermind!

<comment><USER27> Yup, the annotation should be something like:

        type Ops<T, R, N> = [
          (x: T) => N[0],
          ...<n>((x: N[n]) => N[n + 1]),
          (x: N.last) => R,
        ];

        function pipe<T>(init: T): T;
        function pipe<R, T, Ops>(init: T, ...ops: ...Ops<T, R>): R;

</comment></comment></comment></comment><comment><USER29> In my previous experience of "Svelte with Typescript", it merely remove the typings, no type checking at all.

Try in below example, it print out '12' without type related error message.

<script lang="ts"> let a: number = '1'; let b: number = 2; </script>

<p> c = {a + b} </p>

<comment><USER30> I've just tried this using the starter project they provide in the blog post, and it does catch the error:

The error returned is `Type '"1"' is not assignable to type 'number'.`

<comment><USER29> Thanks for pointing out. It's getting better overtime! I missed the existence of "svelte-check". I expected to see errors on the webpage like we usually see from angular/react/stencil.

On svelte, the typescript error doesn't show up until you manually run svelte- check.

</comment></comment></comment><comment><USER31> Slightly off-topic but I'm curious anyway: Has the tooling for JavaScript improved with TypeScript's adoption? As a back-end developer, I feel like each time I've tried to dig in and start a JavaScript project from scratch has ended with me weeping after spending four hours fighting the tooling. Is there a better way?

<comment><USER32> Just use create-react-app, it's not hard.

<comment> crooked-v I'd personally recommend Next.js instead. It's even more painless, seamlessly handles a lot of other concerns (like routing), and can be used both as an SSR server and to generate purely static HTML bundles.

</comment></comment></comment><comment><USER33> Rich Harris (the creator of Svelte) just released a short 5 hour video course on Svelte on Frontend Masters as well. It's great intro and touches most common usecases and briefly introduces Sapper as well. If you already have a FEM subscription, this is a great time to get into Svelte.

</comment><comment><USER34> I've been using Svelte TS for a pet project for maybe 2 weeks now. It's fantastic. The VSCode plugin is also doing a great job.

I tried, and failed, to use Babel as the TS compiler - but TSC then Babel works just fine.

</comment><comment><USER35> Very happy about this. I tried to combine the two a few months ago and it was not a fun experience. Great to know I can give it another go now.

</comment><comment><USER19> Svelte is nice, but man I just want to use JSX. Don't make me learn another templating language.

<comment><USER36> Svelte will never have JSX, not natively anyway. It's completely against the philosophy.

Not all of us think JSX is a great thing. The "templating" language in Svelte isn't really a templating language at all, it's just Javascript with some (unavoidable) helpers. It takes about 2 minutes to learn since there are really only maybe 5 helpers.

</comment></comment><comment><USER37> Unlike many who have not used Svelte due to lack of Typescript support, this may give my team reason to consider Typescript.

</comment><comment><USER38> Would love to use it, but I need something comparable to PrimeNG. Are there any comprehensive UI toolkits out there already?

<comment><USER39> Some - [https://awesomeopensource.com/project/ryanatkn/awesome- svelt...](https://awesomeopensource.com/project/ryanatkn/awesome-svelte- resources#ui-component-sets)

</comment></comment><comment><USER40> Now I'm just waiting for some company to actually make an app with Sapper and Svelte and I'll give this a go.

<comment><USER41> Lol I've made two :)

[0][https://www.fibretiger.co.za](https://www.fibretiger.co.za) The above was previously coded in angular 9. I've seen faster loads in CoreWebVitals, and strangely... more of our post got featured in Google-Discover(could just be coincidence)

[1][https://www.wepickflix.com](https://www.wepickflix.com)

</comment></comment><comment><USER42> I was literally searching for this like, a week ago. Glad to finally see it land in a stable, first-class manner.

</comment><comment><USER43> Just so you know svelte + typescript + eslint is currently not working.

</comment><comment><USER44> Great news!

Was my only blocker :)

</comment><comment><USER45> Yes, finally.

</comment><comment><USER12> How is Webstorm support with Svelte ?

<comment><USER46> I believe there is no official plugin for Svelte. So it may not be as good as the support for React/Angular/Vue. But once Svelte is a bit more popular, I think JetBrains will release a plugin.</comment></comment>


Rails 4 RC1 about to be released - wh-uws https://github.com/rails/rails/commit/1ec64297f9347986a11ce38af2cc3434d99c66c2

<comment><AUTHOR> As always,

        $ gem install rails -v4.0.0.rc1

The issue with `--pre` is that it has trouble finding prerelease versions of other gems as well.</comment>


Map of the Roman Empire Published Under CC 3.0 CC-BY - <AUTHOR> http://www.ancient.eu/map_pelagios/ <comment><USER2> "An Incredibly Detailed Map of the Roman Empire At Its Height in 211AD" [http://brilliantmaps.com/roman-empire-211/](http://brilliantmaps.com/roman- empire-211/)

Direct link: [https://i.imgur.com/lHoCQtt.jpg](https://i.imgur.com/lHoCQtt.jpg)

Edit: this is not as detailed, but more responsive.

<comment><USER3> I actually bought this map a few months ago seeing it on a reddit post. It's a beautiful map and you can tell care was taken into producing it. It's about $45 USD, but I'm sure that barely pays for the amount of research they put into it. The labeling itself is meticulous.

Be warned. It ships from Germany so shipping is about 2-3 weeks.

</comment></comment><comment><USER4> The map uses today's terrain and coastlines though as far as I can see, which doesn't help understanding eg. lack of roads in former marshes.

<comment><USER5> Actually, if you zoom in on the Netherlands - by far the most adapted (okay, also naturally changed) coastline since Roman times - you can see a thin blue line indicating the contemporary coastline.

<comment><USER6> If you zoom in, it switches suddenly between modern and ancient coastlines, but even with the ancient coastlines, it still shows all the modern canals, polders and the distinctive grachtengordel of Amsterdam.

</comment></comment></comment><comment><USER7> Well I found Lutetia but not Babaorum, Aquarium, Laudanum or Petibonum.

<comment><USER8> They were erased from history to hide their failure over some wild uncivilized Gauls.

</comment></comment><comment><USER9> Very nice, but labelling is a little suboptimal - Rome itself doesn't get a label until you zoom in twice. I don't know how this works in Google Maps content - is there a way to assign importance weightings to individual markers?

<comment><USER10> It's using Google Maps javascript to show tiles from pelagios.org (redirects to their blog), so they could be using any rendering system (many would of course support importance for markers).

</comment></comment><comment><USER11> Very interesting, however it paints a misleading picture of the empire because it is missing the most important trade and shipping routes: over the sea.

<comment><USER12> I always found it incredible how Rome, a city of angry shepherds without a real port and with no serious tradition of seafaring, ended up using the whole of the Mediterranean as its personal highway and the heart of a huge Empire.

<comment><USER6> Their empire lasted a while. Given enough centuries, it's not so hard to acquire ports and develop a tradition of seafaring.

<comment><USER12> In fact, they did the exact opposite, at least initially. Pretty soon they were up against Carthage, a huge naval power with a long tradition of seafaring inherited from its Phoenician roots, and were soundly beaten in the first few engagements. The Romans turned it around by changing the game: they developed "boarding" tech that would basically switched naval engagements into more traditional brawls -- what caribbean pirates were still doing almost 2000 years later.

In the long run, of course they acquired real sea skills; but they only leveraged those skills _after_ they had acquired total domination over the Western Med. That's just amazing, imho.

</comment></comment></comment></comment><comment><USER13> the web page is https but tries to load the map over http :(

<comment><USER14> And? Why does it need to be secured? After all it's an ancient map. Unless of course you are afraid someone will snoop on your plans with Doc Brown?

<comment><USER13> It needs to be authenticated because I don't want to run injected javascript. (I have no idea if the inner frame contains javascript. My browser blocked it for me by default. That is the correct and good behaviour.)

> After all it's an ancient map.

It needs to be encrypted because I don't want other people to know that I'm browsing the ancient map. The map itself is public, the fact that I am reading it need not be public. Why are you afraid that I don't want you to know my reading list? Would you tell me yours?

<comment><USER15> I never though of it that way.

An interesting idea that I had was quite the opposite.

Run a program that does totally random searches and web page requests (with appropriate headers) in order to create so much info as to render it useless to anyone spying. Almost like if you were running a public proxy.

Reminds me of an old Perry Mason episode where he had 25 guys help him move a car to create a bunch of fingerprints. Maybe it wasn't Perry Mason but some crime show but that was the concept.

<comment><USER13> You might be interested in this: [https://cs.nyu.edu/trackmenot/](https://cs.nyu.edu/trackmenot/)

However, the difficulty is to make these requests actually look indistinguishable from normal browsing. It might "work OK" now, but the behaviour certainly is different from normal browsing habits. If everyone started using this, you can bet someone would pour a lot of money into research that filters out the automated requests. Then one basically needs to solve steganography, which is a hard problem, harder than cryptography.

<comment><USER15> That's interesting thanks for that. I wonder if someone could put together a product that would just sit on the network and do the same thing unattended 24x7 that didn't have to be installed as an extension.

</comment></comment></comment></comment></comment></comment><comment><USER16> I find it pretty hard to navigate at higher resolutions as there's no visible indication of the size of a river or stream after switching from zoom level 100km to 50km.

</comment><comment><USER17> Pretty cool (unfortunately also pretty slow - at least for me).

</comment><comment><USER18> FAIL:I don't see anything.</comment>


Ask HN: How do you manage and structure a team? - <AUTHOR> Here's a question to managers and startup and founders out there, but first a bit of context on my situation:
We are a small team that has recently created. As such, we've been given a fair amount of control over how the team are structured. This involves everything from how we work, how we progress in our careers and how much we are paid. While this is a really nice position to be in, it raises a number of concerns.
In an ideal world, I believe that a flat structure would be best. We are all technical people, working on a series of short (months in length) projects that tend to be self contained. There is no immediate need of a hierarchy. But in this case, how do you define "progression"?, both how people are paid, and their "title" within the group.
To get around this, the obvious answer is a well defined "hierarchy". Progression and pay are well defined ahead of time and everyone knows how it works. The problem is that we have only just been created, and as such the variance of the pay within the group is big. Initially this isn't an issue – we all agreed to be here for the amount we are paid, but over time it can become an issue: without well defined progression, this issue of separate pay will become an issue and half the group will leave.
Another problem (and a separate one, one that we will also need to address) is that judging the direct merit of each others work is hard. Mostly because the work is a spectrum between "core" work, that is required, and "new features" which can bring in a large profit (or fail), and disentangling the two is hard.
There has to be somewhere in between these two position. And we can't be the first to find ourselves in this position, and I'd like to here from others who have been here:
- What worked well? - What worked badly? - What would you have done differently? <comment><USER2> Read "Peopleware". Seriously, every page was written with you in mind.

Next, if you (as developers naturally do) struggle with the idea of management, structure and order, read "The E-Myth Revisited".

Peopleware TL;DR: Good teams are united by a strongly defined purpose (eg. get X defined and tests written by date X), and that is almost NEVER the same as the goals of the business (which is to make money). Don't create internal competition; overtime kills productivity; physical/mental space allows creativity; interruptions are deadly.

The E-Myth TL;DR: Aimed at small business owners, but as a team lead you're effectively running a business, and the rest of the company is your customer. It's a mere 5 hour read... JFDI :)

And if you're feeling really bookish, "The Mythical Man Month" \- if you're under 50 this will shock you, because you'll realise that software in 1970 had the exact same problems that we do in 2015.

<comment><USER3> The biggest takeaway from The E-Myth for me as a software engineer was the idea of making a job easy enough for the least qualified individual to do it. The example they use is how to train completely untalented 15-year-olds to make burgers at McDonalds. McDonalds doesn't need to hire chefs.

In software engineering, I've seen teams look for years for a candidate with X years of experience in technology Y. In many cases, you don't need an expert, you just need a smart person.

Build up a library of books/articles as well as sample code and exercises. Then hire smart people rather than experienced people. We had a git repo with exercises in functional programming and scala along with unit tests and day one involved checking it out and getting started.

Also, simple code is more accessible to the "least qualified individual". You may sacrifice performance, but you will be able to scale more effectively as an organization.

<comment><USER4> Really interesting point: Sacrificing short term performance for long term efficiency

<comment><USER3> Someone once told me that the key to scaling is tolerating inefficiency.

Example: Instead of a front end team and a backend team, have two full stack teams. If they are working on similar parts of the codebase, don't stop them. It's better for both teams to build the same piece of functionality and throw one away than to have one team dependent on the other. Many teams grind to a halt when they say "We could build this in a week, but let's let the other team do it because it will only take them a day or two."

</comment></comment></comment></comment><comment><USER5> Have each person go out and interview for another job once a year. Match their best offer if you think they're worth it, or don't and let them go be happy elsewhere.

This was basically what we did at Netflix, but since there were a lot of people not everyone had to interview. We had a pretty good idea of what everyone could get elsewhere and then we just paid them that much.

But we were all encouraged to interview elsewhere to learn our personal market and find out if there were other jobs out that that we would like more. It wasn't good for anyone to have you stick around doing a job you don't love.

<comment><USER6> ^^^ this

</comment></comment><comment><USER7> > In an ideal world, I believe that a flat structure would be best.

"Any sufficiently complicated company w/o management contains an ad hoc, informally-specified, bug-ridden, slow implementation of management." — @wycats

In my experience, that's held true nearly every time I've worked in a flat team or know someone who has (anecdotal, I know).

Point is: figure it out now and you'll thank yourselves later. Starting flat and changing it later will just lead to more pain and damage to the team cohesion and structure.

<comment><USER8> Listen to this guy and @wycats. This has been my experience also. Flat structures are horrible.

<comment><USER9> Are flat structures horrible, or are horrible flat structures horrible? Which systems have you experienced?

<comment><USER10> Flat structures are really project based orgs. They work fine if you are in fact working on projects.

When the org grows and operational/day to day work and process start to appear, flat orgs falter more often than not. Someone needs to be accountable for critical things, and whomever ends up in charge of the most critical thing ends up being "more equal" than everyone else.

<comment><USER9> Why are flat structures necessarily project based?

I'm sorry to appear argumentative, but this is an area where we as tech workers have a great opportunity to explore alternatives to the dominant system of command-and-control, since we have small companies which are already tasked with trying new stuff, and what I'm seeing is blanket rejection based on a few (often misguided and naive) tries.

I'm not an expert either, but I've seen many small organizations as a grew up (specifically, theatre groups), and while they had project (plays) based distribution of tasks, some also managed the other stuff (like finances and requests of grants) without creating an hierarchy or putting those people in any way in charge.

<comment><USER10> IMO, the project-based nature of a flat org is essential because the project is a unifying mission with regular updates and well-understood outcomes (project milestones).

Small orgs are different because motivated people can self-organize. A small theatre company or neighborhood block party committee can self organize because the core cadre of a half dozen people take care of the finances, grants, etc. Even in those cases, someone is at least nominally in charge -- an individual needs to sign checks, apply for grants, hold the cash, etc.

I've lived this at least a dozen times, in a mid/late stage startup, F500 company, and sprawling government bureaucracy. The story is _always_ the same. New business units emerge with a guy in charge and a nimble team of <10 people. They achieve success and grow. Problems start around 10-15 people because folks are focused and cannot productively communicate across the group. Leaders emerge and work out differences. The next point of resistance in around 25-30 people -- the lack of explicit authority undermines the emergent leaders. Everything breaks at 40-50 people unless there is an established chain of command.

There may be a way to tweak these things and make it work, but it takes special skills/knowledge/instincts that aren't obvious to people. Special things are hard to repeat, and business relies on repeatable process.

IMO, there are a couple of ways that flat orgs can work. The most obvious is where the work is delivering unkilled/skilled tasks. A plumbing company has a dispatcher who sends out plumbers. A consulting company has salesmen called Vice Presidents, Project Managers and dispatchers. No hierarchy.

I think the other type of org is a co-op type arrangement. Coops have some hierarchy, but the power structure is elected vs. appointed which changes the dynamic.

</comment></comment></comment></comment></comment></comment><comment><USER11> The thing about flat structures and group dynamics is that if nobody is appointed to be team lead, then an informal leader will be chosen.

This is a well researched fact. The flat structure without a leader normally leads to a official goal of the group (finishing the task) and an unspoken unofficial goal that the unofficial leader is setting by example and retoric.

Everyone needs someone to follow on a team, someone who sets the standard, leads the way and defend the team - even in the most flat structured companies I have encountered this has been true.

If you want a methodology/way to run the team as fair and autonomous as possible, read Daniel Pink's book Drive - it explains what is needed to make people happy in their work.

If you do not want to figure your method out by yourself, steal my method called TimeBlock, it empowers the employees and gives them Purpose, Autonomy and Mastery (ping me if you want one on one help with it)

<comment><USER12> I completely agree with this. From running small organizations and teams and then later my own businesses, I've learned that "no management" and an "anything goes" mentality enables dominant personalities within the group and the dominant power structures in society to replicate itself within your organization. That's how you end up with all guy teams cracking jokes about hookers while they're working and thinking that's acceptable. Not good. I always want to set the culture myself, so that it's thoughtful and purposeful.

It sounds like you're concerned not just about getting things done but about making sure that duties and compensation is fair. I'd lay out a range for compensation and clearly outline duties for each position. The younger your company is, the more wiggle room you need in duties because things change quickly. But spelling things out and communicating them clearly to folks gives them an opportunity to tell you if they think the duties to compensation ratio is unfair or let you know that duties have crept up more than they can handle.

And I'd set up regular reviews and check ins. (Like, once every other month).

I'm all about that structure. No structure = no expectations = no way for people to succeed within their jobs.

</comment></comment><comment><USER13> One of the main things I've noticed is that every person is different and therefore every team is different. Also teams evolve over time, so even when compromised by the same people you can look at them differently "each" day.

I think the management should start with observing and listening. By paying attention to what's going on in the team you can start influencing it by praising beneficial (e.g. helping to meat the team goals) behaviors and preventing the un-beneficial ones. Then of course, when you have expectations from people, its best to get them on board as soon as possible and not leave them wonder why they've been praised and why "punished". Providing clear feedback as soon as possible seems to really work.

Another big thing you should watch out is what kind of people you've got on your team - intrinsically driven or externally driven. The more intrinsically driven people you have the less structure you need - its more about setting goals for them and getting out of their way. The externally driven people require far more structure and management in order to make them meet their goals.

In the end, because things could change quite frequently, I think the most important thing is communication - clearly and as often as possible, go over what we are trying to achieve and what could we do better to achieve that faster. For instance, although I'm hugely internally motivated, I'm really happy when I meet my "boss" and we get through all the things we are doing properly and what things we are not. Not having this kind of meeting for a long time is actually really upsetting.

Of course this scratches only the surface of what management is. Good luck on making an awesome team.

</comment><comment><USER14> It sounds like where you are doesn't require much structure for organizing work...yet.

What you need is a way of tracking other's work for merit:

\- Set goals with each person, those goals must align with what the company's goals are. Bonus, if everybody's goals don't fill all of the corporate goals, it means you need to think about hiring. If you have over representation in some goals, it means you're overstaffed in that area and need to work on moving people and developing them to fill in gaps.

\- At six months see how they're doing in meeting those goals.

\- At 12 months, do a full review.

\- Set up a sliding pay-raise system.

\--If they meet all their goals, they get some agreed upon number.

\--If they miss a few, they get less.

\-- If they miss half (or whatever you specify), they get nothing and an improvement plan that's checked on after 30-60 and 90 days with the normal six month review deciding if they can stay.

\-- If they miss more than half, time to think about parting ways.

\-- If they exceed their goals, give them a bonus (not an extra pay raise since those can live forever) and then think about giving them tougher goals next time.

As for work structure, you must have a hierarchy, otherwise one will develop naturally and it most likely won't be aligned with the needs of the business. This is what humans do in groups of 2 or more, there's no getting around it. Just take a person with some leadership skills and put them in charge of managing a group of related tasks, and reporting up how things are going not going. That extra responsibility also needs to be rewarded.

One options, make people task managers instead of people managers. They own the task and when its done, they move on to other work or get another task to manage. This can help you maintain the feeling of "flatness" while creating opportunities for different individuals to get experience being in charge of things.

<comment><USER15> If you're suggesting the OKR system of setting goals that align individual and company, that seems like a good idea, but not when tied financially.

If OP has a small, growing business, this seems impractical. I've worked at startups that tried this and even a quarterly bonus failed.

Why? Because things change too much. Despite their best efforts, what we thought was "The Most Important Thing" at the start of quarter ended up being slightly or sometimes completely different. This threw the whole bonus system off.

Now, since I was counting on those bonuses, I always immediately brought up any conflicts; I was happy to make the change that was best for the company, but didn't want to be financially penalized for it.

Also consider what an earlier comment brought up: Autonomy, Mastery, and Purpose (Dan Pink's Drive thesis). Financial incentives aren't the best options in creative roles.

</comment></comment><comment><USER16> No. You need a leader. A flat structure will eventually create problems. And they will be hard to solve. Or you could lose a good chunk of the team due to the lack of direction and management.

The following will not be perfect analogs, I offer them as thinking tools:

8 seat rowing shell: It's hard to think of a better example of a small group of people with a well-defined purpose who train hard and execute hard towards that goal. Yet, the boat has NINE people on it. The ninth peeson is there to keep the team going in the right direction and at the right pace.

A leader is important and he/she does not have to be dictatorial to be effective.

The second example is more of a homework exercise:

Watch a dozen (or more) episodes of "Kitchen Nightmares" with Gordon Ramsay. Think about the most common issues leading to failure. Write a one page note advising your team on how to avoid failure.

The third and final is also homework:

Watch a dozen (or more) episodes of "The Profit" with Marcus Lemonis and write a short conclusion as above.

Business isn't hard if you understand there are commonalities between making burgers, manufacturing baseball bats and, yes, making software. At the core they are the same. Above that they have specialized processes that are aligned with what the business is about. The operating approach between knowledge workers and assembly line workers naturally diverges in a lot of areas.

Think of it as the OS kernel versus abstraction layers above it. The same kernel functions are pretty much required in order to build a successful system. That's where you start. Same with business.

</comment><comment><USER17> In business school, progression purportedly provides three values to the employee: authority, recognition, and pay. These values benefit the company by motivating the employee to excel and by redirecting power based on merit. The latter two of the three are immediately still possible in a flat organization. Give people recognition for their accomplishments, and pay them more. Recognition can be formal (certificates, badges, etc) and informal (shout outs in meetings, parties, etc).

When it comes to authority, we must first examine whether past success determines future success in this industry. Many flat organizations are new companies, trying to create new products in unproven markets. For them, there may no best practices, in which case flat teams can actually benefit from having more discussion (even conflict) before decisions are made (especially if they agree to try disparate ideas quickly and cheaply to resolve the conflict). If this is the case, losing employees who cannot be motivated without looking forward to authority is good for the business.

If there is demonstrated evidence that the industry is mature enough that success is likely to be repeated by those who have implemented certain strategies and tactics in the past, the organization should yield authority to these individuals. Even when someone becomes someone else's boss, the firm can retain a culture and feeling of being "flat". This is accomplished through celebrating regular, open discussion across ranks. The tow biggest challenges here are keeping performance evaluations objective despite expressed differences in opinion (not discrediting your employees just because they have challenged you) and maintaining a perception that the boss is "available", even when the boss is objectively busy (when someone tries to walk to your desk to chat while you're on the phone with an important client, how "flat" can you be in the moment?).

</comment><comment><USER18> There are no simple answers here, and it very much depends on the team members, their history working together, their professionalism and maturity.

For junior / inexperienced teams a much more formal structure will have to be set in place, with lots of management input.

For more mature team members or teams who have a longer history working together less structure is required and perhaps even preferred because formal structure just tend to get in the way of getting things done.

Lastly be careful of trying to evaluate the merit of everyone's individual contribution. You get different contributor types, where you get the loner archetype who creates massive amounts of code but doesn't communicate with the rest of the team enough, or the team player who maybe don't write the same amounts of LOC's, but keeps your team cohesion healthy and happy.

You need all different types of contributors on a successful team, rather measure the teams output and reward everyone if the team perform. With the exception that if the team starts complaining about a single slacker in the team you address the issue.

</comment><comment><USER15> It sounds like you're hitting a wall or getting close to a wall many others have hit as they grow. The company changes dramatically as it happens. One of the big milestones is around 25 employees: [https://getlighthouse.com/blog/company-growth-everything- bre...](https://getlighthouse.com/blog/company-growth-everything- breaks-25-employees/) You have to adapt to that or you'll grow into dysfunction unintentionally.

If you want to learn how one of the legends, Andy Grove of Intel, does it, then I highly recommend "High Output Management" to think through some of those challenges. Check Twitter and you'll see Keith Rabois, Marc Andreesen, Ben Horowitz, Ryan Sarver, and many others swear by it. Horowitz's "Hard Thing About Hard Things" is also great, but a bit more haphazard in how it covers topics.

</comment><comment><USER19> > judging the direct merit of each others work is hard. Mostly because the > work is a spectrum between "core" work, that is required, and "new features"

You can't implement the new features without the core work to provide a foundation. Don't judge performance by financial impact of the code, judge performance based on peer review. If you've got 2 programmers, you'll want them to be doing things like design reviews and code reviews, and as such they'll be able to provide a reasonable assessment of how well they think their peers are doing. Whether each bit of work itself needs doing in the first place? well you need a signoff/approval process. Whether that's a manager, or simply a chat with your peers - the act of convincing others that yes I do need to implement this core XYZ instead of feature Q is an important one

</comment><comment><USER20> Have a look at Holacracy for interesting ways in how to structure teams and at the same time gearing up for continuous change. It's a very different approach than creating hierarchy, but it's not completely flat either.

[http://www.holacracy.org/](http://www.holacracy.org/) and [http://www.responsive.org/](http://www.responsive.org/) for more interesting philosophies surrounding movements like Holacracy.

(We have a team of 10 people and are thinking about adopting Holacracy).

<comment><USER15> I'd be careful with holacracy. There hasn't exactly been glowing successes in the press lately: 16% of Zappos's company quit over it, Buffer has completely abandoned it after a very public foray into it, and I saw a talk by the HR people at Medium and they've had to make significant adjustments to fit (for instance having one on ones even though there aren't technically managers).

</comment></comment><comment><USER21> I listened to an interview with Joel Spolsky from 2011. He made some interesting points about this. If you have 3 people you have 3 lines of one to one communications. If you have 4 developers you have 6 lines and it starts getting difficult So what he prefers is to have one person responsible for all communications. Everyone communicates through this person and by the time that person has 5 developers to communicate with it's a full time job.

<comment><USER22> Spolsky was relaying the observation which was first made by Fred Brooks in _The Mythical Man-Month_. There's a good diagram in McConnell's _Rapid Development_ when he discusses it.

<comment><USER15> This image is probably what you're looking for: [https://getlighthouse.com/blog/wp- content/uploads/2015/07/li...](https://getlighthouse.com/blog/wp- content/uploads/2015/07/lines-of-communication-stackoverflow.png)

Via: "Developing Leaders: What To Do When Your Team Grows Too Big" [https://getlighthouse.com/blog/developing-leaders-team- grows...](https://getlighthouse.com/blog/developing-leaders-team-grows-big/)

</comment></comment></comment><comment><USER6> Ran a team of three people that grew to six. It's easier when smaller. Even just with a couple more people, the team of six created communication issues. In the end running the team created as much work as having more people to do the work saved.

Six is still small time, just the experience I can speak from.

I would have communicated more. And most people need a boss, or a leader.

</comment><comment><USER23> I recommend reading The Future of Management by Gary Hamel. We have all adopted the dogma that hierarchical management is better without questioning it. Is it really? Companies like Whole Foods, W.L Gore, Valve or even Google are great examples that flat hierarchies are attainable.

</comment><comment><USER24> I think you should be able to find a way to connect the core work to the feature work. You can point to what feature work the core work enabled and share credit for that feature with the person who did the less visible part.

</comment><comment><USER25> I've also had really good luck setting up + managing one-on-ones using Lighthouse ([http://getlighthouse.com](http://getlighthouse.com)).

</comment><comment><USER26> It depends hugely on what you are trying to do.

You are definitely right to be thinking in terms of a team, because the myth of individual performance is damaging in so many ways.

</comment><comment><USER27> _There is no immediate need of a hierarchy._

Depending on the size of the team, this is a good thing. As long as you have one "alpha", a designated or undesignated person who makes a call when contentious views are blocking progress.

 _I believe that a flat structure would be best_ You'd want to be careful of premature optimization here. I know what you are trying to get at (i.e. ensuring that you are setting up titles and roles that people can grow into), but this may not be the right time to do it.

Any structure is good, bad, best depending on the situation you are in, the size of the group, the problem you are trying to solve etc. The point is not to see hierarchy & structure as inhenrently good or bad -- but to work back from what you are trying to accomplish to the structure you need. Lets say you were trying to organize a 6 month expedition to a remote area with a group of people that you just met. How would you or this group go about it? I don't think you'd setup titles or hierarchy -- you'd probably go with "role clarity", and doing things that engender "excellence" in their respective tasks.

In a startup, one expects an organization to be driven by passion, creativity and very little structure. This is an important part of why people are there. Traditional forms of motivation or organization often don't work very well (e.g. hierarchy money, title or fear). Once the group is large, then there are companies that go for military style "command & control" structures. Even military is organized differently during war time and peace time. This comes back to the context of your particular situation & what you are trying to do. Are you in war time or peace time? :)

The most important thing is that you have a process that everybody understands -- you may never codify that process, but everyone on the team should know that it is there. And the process is: "To get things done & make a difference". What is the best way to do this?

You want to give a sense of progression, via money & title etc. These are good things, but there are more levers you can pull. In a small group, it is obvious who is kicking-ass and who isn't. You should let them, create an atmosphere first where they can do this -- and then, when they are. Talk to them about what they want. Do they want to run a team? Do they want more money? Do they want a more senior title? Do they want more free time? Do they want more flexibility? Do they want more responsibility (e.g. looking at 3 workstreams, instead of one)? Your answers will evolve. But don't take your eye off the prize -- and the prize is to create an atmosphere where people can excel.

 _Judging merit_ You make this sound hard, but is it? In a small group, isn't it obvious when someone is kicking ass? The problem you are worrying about is that when somoene is kicking-ass, how do I make sure they are rewarded, so that they continue kicking ass. I would say, let people kick-ass first, and understand why they are -- lets say they inherently love 'solving problems', then give them problems to solve that honors & respects their talents.

</comment><comment><USER28> all i can say is two things:

1\. someone has to be the boss, the person who makes the final decision for the group. it may not always be their own first choice, but after taking input from the group, the decision must be made, and followed. finding this person is hard because they have to override their own opinion sometimes. although for the right group leader, the best decision for the group/goals _is_ their first choice by definition.

2\. meet every single day first thing in the morning and go over open issues, blockers, eta, and priorities. note that these are not problem solving sessions, just identification sessions. you can call this agile, a stand-up, a ticket review, whatever. just makes sure it happens. once you get into the groove you can usually keep it to 15 minutes. every effective organization i've been in does this or something very similar (maybe every other day). i've seen some small groups do this 2x a day. once or twice a week is not often enough.

you will find that doing this actually reduces the meeting workload overall, especially when combined with #1.

<comment><USER29> > meet every single day first thing in the morning and go over open issues, > blockers, eta, and priorities... every effective organization i've been in > does this

I was going to counter this and say not everyone works best with daily meetings... until I saw your username, "Beach Startup"? Because remote work is the counter-example I would have given. Do you work remotely / from a beach & still have these synchronous morning meetings every day?

I agree it's important for team members to always be aware of open issues / blockers / eta / priorities, but I'd suggest that's what project management software is for. Team members can work in their own timezones / schedule and still check the issues / priorities themselves daily. Curious to hear if your experience is different.

<comment><USER28> i view the perk of remoteness and a flexible schedule as a trade off to be more rigorous about the few times you actually do have structured communications. you take the opposite view.

<comment><USER29> Fascinating, I genuinely expected asynchronous communication to be almost necessary when working remotely, especially across timezones. Thanks for the great response!</comment></comment></comment></comment>


Ask HN: How to cope with DDoS attacks today? - <AUTHOR> As a system administrator, it always been a nightmare scenario for me. I was wondering what to do if attacker was powerful enough to have wide range of IPs and random timing. Is it possible to detect such attacks? Are there any good resources to study prevention techniques? Thank you all. <comment><USER2> If they've got more bandwidth than your connection you're going to need to go upstream to the network provider and work with them. Alternately, find a hosting provider that includes DDoS protection, or use something like Cloudflare in front of your site/API.

Resources for learning: [https://news.ycombinator.com/item?id=17063924](https://news.ycombinator.com/item?id=17063924)

<comment><USER3> OVH includes DDOS protection for a lot of their services and it works quite well.

They've had to weather a lot of huge attacks because their service is popular with Minecraft server hosting companies, and apparently that industry is rife with DDOS sabotage of competitors.

</comment></comment><comment><USER4> If you have a fat enough pipe, get a Peakflow-like device. They can usually support a few terabit of traffic (depending on if you're doing simple white/blacklists, or layer 7 mitigation). Might not work against the IoT bots or a sufficiently sophisticated attack as we all saw with the Dyn DDoS, but if you have a good peering agreement they should allow you to announce /32 (IPv4) nullroutes over BGP, which will take care of anything that saturates your uplink, and you can scrub the rest.

If you don't have your own datacenter space, your options are limited. You can use Cloudflare, or serve your content over CDN.

<comment><AUTHOR> Kudos for anything could be purchased but beyond layer7 looks harder, I understand.

<comment><USER4> We use these (not affiliated other than just being a customer): [https://www.netscout.com/product/arbor-threat-mitigation- sys...](https://www.netscout.com/product/arbor-threat-mitigation-system)

But any DDoS mitigation appliance should be similar.

Layer 7 is difficult because it's expensive to do on a scrubbing device, but also because a sufficiently sophisticated DDoS can look like normal traffic.

Cloudflare can stop HTTP layer 7 stuff, but things like DNS protocol? You can't easily tell what's malicious and what's not (However, I've seen some dumb DDoS's where it's things like querying for XYZXYZXYZ...(lots of characters).org, or DNS reflection attacks, those are easy to filter). In those cases, it's really just a matter of overprovisioning your service, or suffer until the attackers run out of money or get bored.

<comment><AUTHOR> "run out of money or get bored" \- made my day, this should also apply to the site owner. I bet there are even companies who are not aware that they are under attack since years (as loss is trivial yet)

</comment></comment></comment></comment><comment><USER5> There was another question on this recently that was interesting:

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

<comment><AUTHOR> Oh, I didn't see that but looks like a great thread already! Many thanks!

</comment></comment><comment><USER6> Only thing you can do is have a bigger network than your attacker and/or insure there is equipment in front of your routers that can clean traffic entering or exiting your network.

As time goes on the attacks will get more sophisticated and harder to stop.</comment>


Google's Cerf Says "Privacy May Be An Anomaly". Historically, He's Right. - <AUTHOR> http://techcrunch.com/2013/11/20/googles-cerf-says-privacy-may-be-an-anomaly-historically-hes-right/ <comment><USER2> Every time I see a picture of Vint Cerf, all I can think of is the old guy from Home Alone: [http://www.eonline.com/eol_images/Entire_Site/2011614/300.bl...](http://www.eonline.com/eol_images/Entire_Site/2011614/300.blossom.tg.071411.jpg)</comment>


Ask HN: Is it better to build your idea as a startup, or in your current Corp? - <AUTHOR> financially speaking.
EDIT: Idea below refers to something a bit more tangible than described. Something with solid basis on its own (maybe a new algo/app/etc).
You are enabled within your large place of employment (corporation) to present and build ideas. You're unsure about rewards beyond what is written into your employment agreement (standard bonus(es), RSUs).
Do you give up the rights to your idea, but doing so because you have solid backing of a corporation?
Or do you receive funding for the idea and try to build a startup? <comment><USER2> Have you heard about the concept of "intrepreneur"?

An intrepreneur is a person who behaves like an entrepreneur whilst being employed. Intrepreneurs are usually encourages to develop their ideas into a workable product by the companies they work for. Like an entrepreneur, an intrepreneur is motivated, creative, and able to think outside of the box.

In most of the companies, if this venture is a success, it can spin off in a new company and the intrepreneur can get a good amount of equity.</comment>


Camping Supplies – Customize your own checklist – then share, print, export - <AUTHOR> http://www.campfirechecklist.com

<comment><USER2> I do bike camping, but people like me are rather less common than others. This has the advantage that it's easy to pop into a store or restaurant for hot food, so I don't bring a stove.

I looked at the several day hiking version. I'm curious why someone needs matches _and_ a firestarter/flint ... _and_ a lighter in the gormet version. I borrowed a friend's stove once, and the flint seemed like it was enough.

And, headlamp _and_ flashlight? I seem to get along fine with only one. ... no, I take that back - my bike has the equivalent of a headlamp.

It also looks difficult to regionalize. I had to look up what a bear canister was because I lived in parts of the US without many bears. On the other hand, there's no mention of mosquito spray/insect repellant.

I consider "Hiking Socks" part of clothes, not "gear". Shirts, bra, and underwear are missing from the clothes section. And good on you for including feminine hygiene.

I am unable to suggest a better way to organize things.

</comment><comment><AUTHOR> still in beta, tested on mac only...</comment>


Ask HN: Is the fintech Blockchain excitement deeply flawed? - <AUTHOR> Context: If you follow startup trends you probably heard fintech sector is getting more excited by the day with blockchain, altho not necessarily Bitcoin itself. They highlight, among others:
- possibility of smart contracts - fully transparent databases - peer to peer network - trust(less) service layer between - efficiency savings
Mostly created the list from this podcast: https://soundcloud.com/a16z/business-blockchain - a really good episode btw.
The question: is the fintech ignoring the most important factor, which is the ever increasing competing mining computer power applied to BTC network being the reason it's so safe only because mining is rewarding. If at any point an ill intentioned player controls over 50% of computer power would the whole system would crumble? Doesn't that make it unpractical for any startup to implement a network they can actually make safe? <comment><USER2> Fintech doesn't even use mining. [http://r3cev.com/blog/2016/4/4/introducing-r3-corda-a- distri...](http://r3cev.com/blog/2016/4/4/introducing-r3-corda-a-distributed- ledger-designed-for-financial-services) [https://github.com/openblockchain/obc- docs/blob/master/white...](https://github.com/openblockchain/obc- docs/blob/master/whitepaper.md)

</comment><comment><USER3> Your question has focused too much in the Bitcoin implementation issues and not on blockchain implementations where the issue with mining doesn't happen because they use other alternatives like PoS or in private blockchains just votes per entity.

I think the noise in the community is related to the combination of political community (e.g. anarchochapitalists), great security developers, fintech hype, and dark markets. A lot of people think this is a sectir to make easy money.

Having said that, the whole startup sector is full of hype but if you take a look all startup sectors are full of hype. Just compare what media says about a company to then realize their real numbers are not so good and full of red lights.</comment>


List of Proven Product Ideas - <AUTHOR> https://www.oracle.com/products/oracle-a-z.html <comment><USER2> This is obviously not a valid Show HN. If it were, you could put "Show HN" in front of anything at all. Please read the rules:

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

<comment><AUTHOR> Thanks. 9 years here, never read this :)... Cheers!

<comment><USER2> To be fair, that one's only been around for a year or two :)</comment></comment></comment>


Time Zones: What If We Got Rid of Them? – Co.Exist – Ideas and Impact - <AUTHOR> http://www.fastcoexist.com/3056950/time-zones-what-if-we-got-rid-of-them?utm_source=mailchimp&utm_medium=email&utm_campaign=fast-company-daily-coexist&position=1&partner=newsletter&campaign_date=02262016 <comment><USER2> > Henry points out that from a physics perspective, there is only one time

From a physics perspective, isn't there only local time, so every point has its own time?

In any case, proposals like his have been around since the 1800s. [https://en.wikipedia.org/wiki/Sandford_Fleming#Inventor_of_w...](https://en.wikipedia.org/wiki/Sandford_Fleming#Inventor_of_worldwide_standard_time) :

> After missing a train in 1876 in Ireland because its printed schedule listed > p.m. instead of a.m., he proposed a single 24-hour clock for the entire > world, located at the centre of the Earth and not linked to any surface > meridian.[8] At a meeting of the Royal Canadian Institute on February 8, > 1879 he linked it to the anti-meridian of Greenwich (now 180°). He suggested > that standard time zones could be used locally, but they were subordinate to > his single world time, which he called Cosmic Time.

Thus, we can look again at the argument from the article:

> If 19th-century technology brought the world closer together, then Hanke and > Henry argue that the Internet has eliminated distance completely

and realize that a single clock was also a proposed solution to 19th-century problems, and the internet (or long-distance telephone service) is not a key difference between now and the previous 150 years.

</comment><comment><USER3> > Henry points out that from a physics perspective, there is only one time.

Relativity rather forcefully disagrees with this contention.

> The professors—who also propose an unchanging calendar that would always > start on a Monday, but let's deal with one crazy time-keeping idea at a > time—are hoping that the world will adopt their plan in 2018.

It is somewhat more likely that human civilization will be completely annihilated by a to-this-date-unknown object smashing into the Earth between now and 2018 than it is that the world, or any significant subset of the political jurisdiction that exist on it, will adopt this plan in (or by) 2018.

<comment><USER4> Relativity disagrees with one time, but not in a way that usefully aligns with time zones.</comment></comment>


RCE Vulnerabilities in the TCP/IP Stack of the VxWorks Realtime OS - <AUTHOR> https://armis.com/urgent11 <comment><AUTHOR> A detailed research paper also available here: [https://go.armis.com/hubfs/White- papers/Urgent11%20Technical...](https://go.armis.com/hubfs/White- papers/Urgent11%20Technical%20White%20Paper.pdf)</comment>


Windows 8.1 Bing passes local PC searches to advertisers - <AUTHOR> http://www.computerworld.com/s/article/9241524/Steven_J._Vaughan_Nichols_Microsoft_Bing_bang_bungles_local_search <comment><USER3> "Do people at Microsoft ever talk to anyone outside their own groups?"

From friends of mine who have worked at / are working at Microsoft, sadly this is a fairly common question, and the answer is "no" more often than you'd hope. Hopefully the new re-org helps them, because they desperately need to be rowing in sync.

<comment><USER4> Some examples:

[http://channel9.msdn.com/Forums/Coffeehouse/VC11-Firefox- Met...](http://channel9.msdn.com/Forums/Coffeehouse/VC11-Firefox-Metro- Win8-SDK-and-XP)

[http://arstechnica.com/civis/viewtopic.php?f=15&t=1209093](http://arstechnica.com/civis/viewtopic.php?f=15&t=1209093)

<comment><USER5> In that first example, I kind of agree with some of the guys there. Why would VC++2012 need to officially support an officially unsupported OS? VC++2012 was released more than a decade after Windows XP was released. Windows XP support ended in 2009, extended (security) support only goes through early 2014. Ubuntu LTS only goes for 2 years, Windows XP "LTS" goes through 14 years.

Unless I'm missing something, Microsoft really has no reason to care if you want to target Windows XP. Their official response should be (and is) to upgrade to a supported release. Windows 7 was released almost 4 years ago and is supported until 2015/2020\. How long can you complain that an ancient OS is no longer supported before you accept that fact?

<comment><USER6> I agree with your points, but Ubuntu LTS releases are actually supported for 5 years, not 2 (with new LTS releases coming every two years).

<comment><USER5> Good catch, thanks.

</comment></comment></comment></comment></comment><comment><USER7> So now MS is playing catch-up with Canonical? [http://arstechnica.com/business/2012/09/ubuntu-bakes- amazon-...](http://arstechnica.com/business/2012/09/ubuntu-bakes-amazon- search-results-into-os-to-raise-cash/)

<comment><USER8> There are a variety of other "lenses" (most of which are third-party):

[http://askubuntu.com/questions/38772/what-lenses-for- unity-a...](http://askubuntu.com/questions/38772/what-lenses-for-unity-are- available)

* search AskUbuntu.com questions

* calculator

* search Google Books

* find map, time, temperature, wind speed for a particular city

* search ThePirateBay

* search Wikipedia

* search YouTube

You get the picture. But you are correct, Canonical did it first.

</comment></comment><comment><USER9> "Our goal is to make search advertising easier for our customers, while providing the best consumer experience with the most relevant results for the tasks they are looking to accomplish."

I can imagine the conversation now:

Exec 1: It's for our customers.

Exec 2: Like the people who pay for the OS?

Exec 1: No, not those customers, the ones with money. You know, advertisers!

So frustrating.

</comment><comment><USER10> This is one step away from identifying your "pirated" songs and movies, and then sending the data over to RIAA/MPAA, and (if they're really insane) a few steps away from allowing DCMA's on those files, and deleting them from your PC. Then Richard Stallman vision of the future would be complete.

Think it's not possible? They were already blocking TPB links in MSN a year or so ago, but thanks to backlash I think they reverted that.

Oh, and I won't even go into the many ways this data could be given to the NSA - your local data. Plus, your documents now get saved by default in Skydrive.

<comment><USER11> Strictly speaking, aren't we always one step away from being one step away from being one step... etc. ad infinitum?

Sending your local search details across a network just because is bad on its own merits, you don't need to link in a dystopia as _everything_ can be Kevin Bacon'd to the Brave GNU RMS84.

Edit: And as indicated in a separate comment in this thread by someone who actually tried to reproduce, the search queries aren't even sent to the advertisers directly, but to the _search provider_ just as with any other search!

</comment></comment><comment><USER10> Why is this getting flagged? It's not like the story is false. I've been aware of this for a few months, but for some reason the media hasn't picked up on it yet, and I was wondering when it was going to blow up, because it's exactly what Microsoft has been campaigning against Google about.

</comment><comment><USER12> This is HN where we defend spammers and cold-callers.

Waiting for the CEO of some go-nowhere marketing startup to come in here and tell me that this is a good thing.

<comment><USER13> This is HN, where some people run small businesses and know how hard it is to acquire customers.

Newsletters aren't spam and most cold callers only call once, or will stop calling if you ask them.

<comment><USER14> >Newsletters aren't spam

Unsolicited marketing e-mails are spam. Unless I have explicitly opted into them I mark them as spam in GMail.

<comment><USER13> Yes. By "newsletters" I meant "marketing email you've subscribed to".

Personally, I'm okay with receiving a newsletter from a service I've subscribed to (but only from the company—no "special partners"), even if I didn't specifically input my email address in a "subscribe to our newsletter" form, as long as there is a permanent way to unsubscribe.

</comment></comment></comment></comment><comment><USER15> But you can easily turn it off by apt-get remove ... wait ...

<comment><USER16> Actually, it's even easier than that in Windows because you don't have to remember some cryptic command or package name - you can just go into search settings and flip the switch to Off.

<comment><USER17> Just like in Windows XP/Vista when you configured the updates to always be manual? Yeah, except that Windows is their OS and your settings are just guidelines ;)

<comment><USER16> Yes, just like that. Please show me a case where the setting is not followed because I have no clue what you're talking about nor can I find anybody complaining that it has not worked as advertised.

Furthermore, you're also free to disable the clearly labeled "Automatic Updates" service and then you can happily spend your time downloading and manually installing update packages. You can even get separate software to do this for you or even build your own.

You sure are right about one thing though. Windows _is_ their OS...and it's a good thing too because I have just never had the time or the inclination to build my own ;)

<comment><USER17> Microsoft has the option to override your settings, just as it happened when they pushed the WGA validation tool in the wild. When it happened several years back, you had to completely disable updates, because if you had it set on manual, it was still automatically installed. This coupled with the fact that the WGA validation wasn't working properly / had bugs, has led to serious problems for many users.

Also, with Ubuntu for example, you don't have to build it yourself, but it's _yours_ in a way that Windows will never be.

<comment><USER16> There are all sorts of things in Ubuntu that I'd have to "completely disable" in order to make it do what I want. So what if I can pick apart the code and rebuild it? I don't ever want to do that.

Honestly - let's weigh the options here. With Windows I may have to beat the OS into submission once in a while, but I'd have _even more work_ making Linux even fulfill the most basic requirement like...oh say, having "file creation time" stamps. (Now I know Ubuntu currently defaults to Ext4...but seriously - why did we need to wait so long for that?)

I'd rather pay Microsoft every month to use their tightly integrated, high quality computing ecosystem because it actually offers what I need _with the least amount of hassle_.

<comment><USER17> I hear this argument a lot. Do you fix your own car dude? Do you change the oil by yourself? I don't but I have a trustworthy mechanic that does it for me and I don't have to suffer the inflated prices of my car's manufacturer. This is even more important for transportation companies that have their own mechanics, just as many companies have their own IT department.

On the _quality_ of Windows my experience has not been the same. For me working with it is like death by a few thousand cuts. Skipping over the fact that the developer tools that I need do not work well on Windows, every time I had problems I could find no way to debug what happens, so really the standard is to just reformat and install everything from scratch. How IT departments live with Windows I'll never know.

<comment><USER16> The difference here is that I don't need a mechanic _at all_ to get what I need from Windows because Windows is not missing many very basic features. Five years ago, if we wanted file creation timestamps in Linux, we'd have to use an alpha or beta filesystem and hire a "mechanic" to fix or even install it. That's why everybody is using Windows and that's why you hear that argument a lot.

Furthermore, if you're not using Microsoft tools to develop for Windows then you're using the wrong tools. If I go try and use Visual Studio on Linux - <USER2> won't work. Go figure.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> If they sell ads, then chances are they pass your information along to others.

Google, Apple, Microsoft, Ubuntu. At least with Ubuntu, you can disable/remove it.

Switch to Debian, or some other alternative. Privacy comes at a cost...Crappy thing with Microsoft is you are paying them to pass your info along.

<comment><USER4> With Microsoft you can disable it too:

"Fortunately, you can turn this functionality off without much trouble"

</comment></comment><comment><USER19> There's a bit of FUD here - all web searches (Google, Bing, whatever) go to first parties that sell tidbits of information about your searches and a bit of space on their web pages to third parties. That much has always been known. The allegation that it passes local PC searches directly to advertisers well, that seems a little unfounded. So I checked, I installed fiddler, set it up to proxy my Windows 8.1 preview Surface Pro, and typed in some search terms.

Here's what I found as a result of typing in "procmon":

With "Use Bing to search online" disabled

\--

When I _begin typing_ in the search box, there is a single GET request to [https://www.windowssearch.com/settings?setlang=en- US&cc=US](https://www.windowssearch.com/settings?setlang=en-US&cc=US) with generic cookies that indicate my device type (the User-Agent is WindowsConnectedSearch/1.0 (Windows NT 22.214.171.124.9431.7;x64;Microsoft+Corporation;Surface+with+Windows+8+Pro;Slate;6.3.0;Touch;) and some cookies that may indicate a device or installation ID. It appears consistent between search results. However, "procmon" is not sent, nor is the first letter of my search result, and typing additional letters doesn't result in any more queries.

With "Get search suggestions and web results from Bing" enabled but "personalized results" disabled

\--

Bing gets my search term when I finish typing. An explicit GET request for [https://windowssearch.com/suggestions?qprocmon&cc=US&setlang...](https://windowssearch.com/suggestions?qprocmon&cc=US&setlang=en- US&inlang=en-US&adlt=moderate) is sent and the response is, of all things, XML formatted with an <rss> element and tags that appear to indicate it's valid RSS. The cookies sent are the same as above, and no requests are sent to "advertisers", except it's reasonable to believe Microsoft might set the price for keywords based on their popularity.

With full personalized results enabled

\--

Bing gets the above, plus a request was sent to [https://www.windowssearch.com/fd/auth/signin?..etc.](https://www.windowssearch.com/fd/auth/signin?..etc.). to sign me in when I ticked the box. The request also sent a header indicating my current latitude, longitude, and accuracy, and appeared to send additional headers. But none of that went directly to advertisers, although Microsoft I'm sure can share it with whomever they like.

Now, lastly, until I actually click one of the non-local search suggestions that show up (not the files that show up) I don't get any more search queries. If I click one of the suggestions, like "procmon64.exe", I don't get any requests to any domain except "www.windowssearch.com". Even though I get thumbnails of web pages and snippets of relevant text below them, my request never went to an advertiser directly.

As well, even if I type a loaded search term like, I'll use the band "One Direction" for example, and select the search suggestion, I get a page with some local files (apparently One Direction matched EntityFramework.xml in some Visual Studio projects... interesting), artist information, tracks by them, albums and videos, web pages, Store apps, and related searches. But most importantly, my machine never contacted any remote host other than www.windowssearch.com.

So what Microsoft is doing is more innocuous than what the privacy-paranoid users of Ghostery already prevent. There were no third party domain names reached, no advertisers directly sent my search results, and _never_ was the content of any local file uploaded. None of the GETs had a body.

Also, and finally, group policy can be used to completely disable the requests and businesses could always filter or block the domain windowssearch.com.

I'm a proponent for privacy, but let's not spread FUD.

<comment><USER20> So you confirmed that _every local search_ goes to MSFT servers? It is default, isn't it? And it's hard to turn off? You mention group policy -- I know that tool and it's harder than "just change in the registry" which is far from easy for plain users.

That's really, really bad. Local search sent to MSFT by a hard to change default is crossing the limit IMHO.

<comment><USER19> Typing "Bing" or "search" or "personalize" or many other variants in the search all give options to configure that data sharing directly from the OS in a very easy manner.

</comment></comment></comment><comment><USER21> Your privacy is our priority! I mean, it's our priority to _sell_ your privacy.

</comment><comment><USER22> SCROOGLED!

</comment><comment><USER23> > I'm not saying that this type of functionality is unprecedented. Google has > long incorporated that kind of capability in Android and Google Instant > search. But it's a new move for Microsoft.

<comment><AUTHOR> Since when does "Google Instant Search" search my PC?

</comment></comment><comment><USER24> I often give Microsoft the benefit of the doubt, but if this is true then they have truly screwed up. Whoever thought that this was a good idea should be fired. This would never have happened with Gates.</comment>