No Shenanigans - <AUTHOR> https://avc.com/2019/11/no-shenanigans/ <comment><USER2> Company Values are generally a bunch of nice things and you look at them and think well yes thats nice.

A more interesting question, I think, is what other Values (that didn't make the list) the Company is prepared to let slide in order to achieve the official ones that did make the list. If you are optimising for some specific set of values, that must mean you are prepared to let other unnamed ones slide a little.

e.g. to achieve 'Kindness' you might need to let 'Consistency' slide, and so on.

So what Values is a company not prioritising? Thats a much more interesting discussion.

edit: Lets have a worked example, make this a bit more concrete.

Lets say Organisation X is a community interest company and has the following values:

* Leadership

* Excellence

* Collaboration

* Integrity

* Commitment

What a lovely bunch of values. Who wouldn't want to adopt those?

But whats more interesting to think about is "what are they prepared to compromise to achieve those values?":

e.g. if Commitment is an important value, does that mean Flexibility is not valued so much? Because surely if you are committed, you lose flexibility. Or if Collaboration is an important value, does that mean 'Delivering things on time' is less valued? Because collaborating with everybody takes time to organise.

<comment><USER3> If you're willing to let a value slide, its not a value. Values should be things you're willing to stick to even when it hurts you. I think that misunderstanding/lie is the problem with most "values" list.

<comment><USER4> But that's the point - where are you willing to be hurt? That's a more interesting question than what you are ostensibly willing to stick to, and much more revealing about the organization's culture. Everybody wants all the nice things, but what really reveals your values is when you want two nice things that are contradictory - which do you choose?

That's why Facebook's "Move fast and break things" is so powerful (and so revealing) as a value statement, as it showed that Facebook was willing to break any number of things to move fast. Google's "Don't be evil", as words, is utterly useless, because nobody considers themselves evil. Google shutting down their consumer-facing site so that they could honor the terms of their AOL deal, however, spoke huge volumes, as did them pulling out of China in 2010 regardless of the cost to their market. Similarly, them going back _into_ China regardless of privacy and human rights violations also speaks volumes.

<comment><USER5> > Google shutting down their consumer-facing site so that they could honor the > terms of their AOL deal

What was the story here? I'm not familiar with this and I can't seem to find anything on Google about it :)

<comment><USER4> When they were young (2002) Google signed a contract with AOL to become the default search provider there. When they flipped the switch, AOL gave them so much traffic that they lacked server capacity to service all the requests. Rather than renege on the contract, they shut down google.com and redirected all hardware resources toward servicing the AOL traffic until they could build more servers and make any necessary software optimizations.

The story was told to me as a Noogler (in 2009) as an example of Googliness, and also as a significant milestone in the company's development. The backdrop of this was the dot-com bust: web companies were failing left and right, and nobody knew who would be left standing. By shutting off their own consumer brand to honor the terms of the contract, Google made a name for themselves as someone who would move hell or high water for their partners, which built critical trust in what was then a promising but unproven startup.

</comment></comment></comment></comment></comment><comment><USER6> I worked at a startup that structured their values to be explicit tradeoffs between two equally valid choices generally, but where one choice was more valid for the startup.

For example, we held something to the effect of "We value open disagreement and direct communication more than harmonious relations" This was a great value: the company needed to have tight OODA loops and that did not permit beating around the bush. People had differences of opinion and they needed to be able to express them and come to conclusions. In other orgs it could have been valid to have a get-along attitude if things were more important to keep steady (a successful and functioning business unit, for example, might prefer to keep going steadily without rocking the boat).

At the same time, the company also said "We value thinking things through from first principles rather than re-applying what has already been done elsewhere." This meant you couldn't justify a decision on "well we did it that way at company x", you had to have a good reason to do something a certain way. This cost us time (unlike the previous value) because decisions or designs could be challenged for not having a good justification. The upside was that it led (I think) to better designs, and encouraged people to debate bad decisions before making them.

We didn't have any values that looked like "honesty" or "excellence". That was nice.

</comment><comment><USER7> This subject and the utter vagueness of the values presented here require me to bring up Bryan Cantrill's talk, 'Principles of Technology Leadership'.[1] He gives Amazon a lambasting over their core principles, and Uber even moreso.

It's both funny and sobering to examine how what seems like a useful and valuable foundation ends up being flimsy and easy to ignore when made vague enough.

[1] [https://www.youtube.com/watch?v=9QMGAtxUlAc](https://www.youtube.com/watch?v=9QMGAtxUlAc)

</comment><comment><USER8> I've always enjoyed the word _shenanigans_ yet I've never known where or how it originated. Rabbit hole.

Merriam-Webster tells us: _The history of shenanigan is as tricky and mischievous as its meaning. Etymologists have some theories about its origins, but no one has been able to prove them. All we can say for certain is that the earliest known use of the word in print appeared in the April 25, 1855, issue of San Francisco 's Town Talk. Although the "underhanded trick" sense of the word is oldest, the most common senses in use now are "tricky or questionable practices" (as in "political shenanigans") and "high-spirited behavior" (as in "youthful shenanigans")._[1]

First use in 1855. Cool. I wondered what that first context was. So I used the site Chronicling America to find the April 25th, 1855 issue of Town Talk. But along the way I found earlier uses in the August 18th, 1854 issue of the Nevada Journal[2] and February 3rd, 1855 issue of the Sierra Citizen.[3]

I still don't have the definitive etymological answer but what the web allows a layperson to usefully research in 2019 is astounding!

[1] [https://www.merriam- webster.com/dictionary/shenanigan](https://www.merriam- webster.com/dictionary/shenanigan)

[2] [https://chroniclingamerica.loc.gov/lccn/sn84026884/1854-08-1...](https://chroniclingamerica.loc.gov/lccn/sn84026884/1854-08-18/ed-1/seq-1/)

[3] [https://chroniclingamerica.loc.gov/lccn/sn86058097/1855-02-0...](https://chroniclingamerica.loc.gov/lccn/sn86058097/1855-02-03/ed-1/seq-3/#date1=1789&index=0&rows=20&words=Shenanigan&searchType=basic&sequence=0&state=&date2=1855&proxtext=shenanigans&y=12&x=17&dateFilterType=yearRange&page=1)

</comment><comment><USER9> The Twilio API includes a X-Shenanigans header on every request, always set to "none", of course :)

> $ curl -I [https://api.twilio.com](https://api.twilio.com)

<comment><USER10> they even cared to use a proper X-<> "custom header", respecting the rfc heh. Nice.

<comment><USER11> That pattern was deprecated 7 years ago [https://tools.ietf.org/html/rfc6648](https://tools.ietf.org/html/rfc6648)

</comment></comment></comment><comment><USER12> Values are levers for a group of concepts. You can hook that lever up to teamwork or frugality or toe-stepping, and suddenly it's easier to inject these concepts into any discussion throughout the company.

Of course, who gets to pull these levers and when is a completely separate issue. As usual it's up to the leadership whether any values are used in a healthy or unhealthy way. Does frugality apply when an employee wants an ergonomic keyboard, or when a VIP flies business class? Does be-humble apply when negotiating compensation or to the CEO's vision?

Amazon, for example, is famous for weaponizing frugality and disagree-and- commit against lower level employees. At $OldJob I got to watch a director pull the move-fast lever whenever his team wanted to ship, and the safety- first lever for other teams.

Written values can't really be good vs bad. They are more like a tool, and will be used for good or evil depending on who is operating them.

</comment><comment> john-radio > draw the owl

"The rest of the fucking owl" is a meme about laughably incomplete instructions, in case you didn't catch the reference: [https://knowyourmeme.com/photos/1272765-how-to-draw-an- owl](https://knowyourmeme.com/photos/1272765-how-to-draw-an-owl)

"Draw the owl" is a pretty ironic rule, because it's horribly incomplete itself unless you're familiar with that particular meme.

I wonder how many people work at Twilio who have heard "draw the owl," and know it has something to do with being consistent, but has no idea what it means or why it seems to be clear to everyone else?

<comment><USER13> I work at a place that also has "draw the owl" as a kind of corporate culture joke? It's funny at small scale when everything is uncertain, but when you grow to a thousand employees it kind of turns into an embarrassment.

We have kind of moved away from it officially AFAICT so now it's more of an inside joke that old-timers use to assert dominance

</comment></comment><comment><USER14> I've always wondered: what's the purpose of company values?

I genuinely don't know.

<comment><USER15> It helps motivate people and make them feel like they're part of a mission while forgetting that they're only there for the paycheck. Motivated employees are great because the work longer and harder for less pay.

</comment></comment><comment> seph-reed I'd really like to make a service that's like a fail-safe for company values. Something like:

The CEO/management puts half (or more) of their salary into some account, and at the end of every month the employees decide whether or not the company is going by its values. If not, certain charities which represent those values are given the money.

</comment><comment><USER16> Its usually a failing of the business to not communicate it better but values are one of the inputs to create the culture you want at a company. The best version of this Ive heard is that "culture is the right people living their values". Done well, it makes it easy for people to hold themselves and each other accountable. It makes hiring easier, sets tone for communications, branding, etc.

Its super important for it to be explicitly stated. The difference amongst companies not explicitly stating their values and ones who "wander" is documented.

</comment><comment><USER17> Helped form these at my former company, so I'm biased. But the memorability and thoughtful definitions really helped these stick (to this day): [https://www.entrata.com/company/values](https://www.entrata.com/company/values)

</comment><comment><USER18> Our company values are captured in our "Tao of Linden" \- [https://www.lindenlab.com/about](https://www.lindenlab.com/about)

They've changed a bit in the 15 years I've been there but happy to say we still try to live by them today.

</comment><comment><USER19> Remarkable that this druck is ranked on HN alongside news of Facebook's latest garbage shenanigan but very successful ploy, and Strategery's analysis of Google's latest garbage shenanigan yet very successful ploy.

</comment><comment><USER20> aka "Don't Be Evil"

<comment><USER21> We all knew how that ended up..

<comment><USER22> Its all about your perspective. If I bought 100k worth of $50 stock and it went to $5000 per share and this company decided to come clean and admit their devious (but not evil) plan and the stock went to $25/share I'd consider that evil...not the $5000/share value they made off of selling 'ads'.

<comment><USER23> Shouldn't their value have been "Get money" then? That seems to describe what you're saying.</comment></comment></comment></comment>


H-1B Visa Cap: The Imminent Threat to US Tech Innovation - <AUTHOR> https://blog.hackerrank.com/h1-b-visa-cap-the-imminent-threat-to-us-tech-innovation/ <comment><USER2> "Immigrants are a Big Force in Driving American Innovation" but h1b workers are _not_ immigrants. They and their family have very little rights as workers in the US.

If the motivation is really to bring innovation to the US, cancel the h1b status and simplify the green card sponsorship via employment. But let's be real, that's not the goal. The goal is to bring servile underpaid peons to the valley to drag tech wages down.

I was an h1b for 4 years.

</comment><comment><USER3> How about banning the biggest H-1B abusers (Infosys, TCS) from applying new visa for a few years? (They are also the biggest visa applier)

[http://www.epi.org/blog/new-data-infosys-tata- abuse-h-1b-pro...](http://www.epi.org/blog/new-data-infosys-tata- abuse-h-1b-program/)

[http://www.latimes.com/opinion/editorials/la-ed-visas- tech-w...](http://www.latimes.com/opinion/editorials/la-ed-visas-tech- workers-h1b-20150217-story.html)

[http://www.thehindubusinessline.com/features/smartbuy/tech-n...](http://www.thehindubusinessline.com/features/smartbuy/tech- news/h1b-workers-have-minimal-skills-infosys-whistleblower/article7006778.ece)

</comment><comment><USER4> Or, as proposed elsewhere, keep the cap and remove the lottery system. Grant visas to the top paid applicants. This removes allows companies with a need to great engineers to pay for them, and reduces the influx of lower quality H1-B's.

<comment><USER2> That's an idea. But the problem is once the petition is accepted the employer could reduce the non-immigrant's salary. I'm not a lawyer but I don't think it's illegal.

The main issue is that H1B workers have very little rights. If they get let go, they technically have to leave the country in the next 24 hours - the 30 day grace period is a _myth_. They are very easy to bully and put up with a lot of shit from their employer simply to be able to stay in the country.

One solution would be to grant an H1B that would be valid even after termination/resignation - maybe for a certain amount of time like a month or two. This would allow a worker to leave an unreasonable employer and give him a chance to find a new gig.

However, I also believe that there is _no_ talent shortage in tech and the H1B program is used to try to drag wages down.

<comment><USER4> Obviously there would need to be some level of enforcement to prevent "wage adjustment" once the applicant arrives.

The primary reasoning behind the suggestion is to prevent the H1B from being used as a mechanism for driving down wages.

</comment></comment></comment><comment><USER5> Us companies can open offices overseas, and remote collaboration for me surpasses regular one nowadays.

<comment><USER6> Remote collaboration depends on so many variables that I think you are more likely a bigo.t who wants immigrant out of your country

<comment><USER5> I am not an US citizen so it is hard to call me bigot with relation to US dual intent visas. But H1-B is used to fuck both the foreigners and the domestic US programmers.

<comment><USER6> Bottom line is people are looking for a better lifestyle, not just a cool tech job. So yes we will continue to come, and maybe even marry local ladies. 'ALL YOUR JOBS ARE BELONG TO US'</comment></comment></comment></comment>


Functional isn't always better - <AUTHOR> http://swizec.com/blog/functional-isnt-always-better/swizec/2591

<comment><USER2> Maybe it come from the fact that you are using a non-functional language for functional stuff? In Haskell I'd do it like this:

      pairs[]     = []
      pairs(x:xs) =
         map (\ y -> (x,y)) (xs) ++ pairs xs

Tried, out in console:

      *Main> pairs "ABCD"
      [('A','B'),('A','C'),('A','D'),('B','C'),('B','D'),('C','D')]

It seems to do what is supposed to.

<comment><USER3> Haskell even has sugar for this via list comprehensions:

        Prelude> let pairs = "ABCD"
        Prelude> [(x, y) | x <- pairs, y <- pairs, x < y]
        [('A','B'),('A','C'),('A','D'),('B','C'),('B','D'),('C','D')]

<comment><USER4> This generates the Cartesian product and filters. (x,y) where both x and y are drawn from the original list. The previous solution only generates pairs (x, y) where y is drawn from elements after x.

</comment></comment></comment><comment><USER5> Python, and assuming the given iterable of items contains no duplicates:

        def pairs_functional(items):
            return [ [a,b] \
                       for a in items \
                         for b in items \
                           if a<b \
                     ]

It does about twice as much work as necessary, but you are producing effectively unordered pairs. I haven't run any timing tests as I don't have time at the moment, but I suspect the efficiency is comparable.

I see that you are calling this an iterative solution, and then dismissing it, but it's a referentially transparent function with no side effects. Why are you saying it's not functional?

It feels to me that the algorithm you're using (zips and shifts) is simply wrong for the combination of paradigm and problem.

You can write the above to be more obviously "functional" by defining a function "cartesian product" and then filtering, but I don't really see how that's really more or less functional.

I'd be interested to see a more comprehensive explanation of what you think the problem really is, and to comments from others here on HN.

<comment><AUTHOR> Maybe it's just my being a greenhorn talking, but I was under the impression that for loops and explicit recursion were "ugly" in functional-style code and you should instead use maps and reduces.

While my iterative solution is functional in the sense that it doesn't have any external side-effects. Internally it's still for loops and "unclean" in the sense you couldn't dissect it into a bunch of reusable functions whereas the functional solution could potentially be broken down and those lambda functions could be named and then would be re-usable.

Your python solution is very python-idiomatic though and from that standpoint therefore alright. I would probably have written something similar in python.

<comment><USER5> Haskell is about as functional as you can get, and the comment in <http://news.ycombinator.com/item?id=3084429> and its reply contain effectively the same code.

<comment><USER6> I don't know. reirob's and fab13n's code are more general as they do not require that some type of ordering is placeable on its set of inputs.

Your code requires that the elements are comparable. So your effectively is predicated on whether you think that limitation is not a big deal (technically it greatly restricts the type of elements, practically maybe not?)

<comment><USER5> All true, but only serving to obscure my question about why this is not considered functional by the OP. My first thought was to go with running down the list of indices, as fab13n does, but I thought I'd go for the less generic but cleaner code to try to get to the real point.

I guess I failed.

</comment></comment></comment></comment></comment><comment><USER7> Adding to the list of simple implementations, here's one in C#:

        list.SelectMany((e, i) => list.Skip(i+1).Select(f => Tuple.Create(e, f)))

I think the author started with the wrong idea and didn't backtrack far enough before giving up.

<comment><USER6> The only problem here is that each time it has to skip through the entire list so far. I would write it like this in F# for equivalent generality and lazinessas yours

      let pairs sequence  =
        sequence |> Seq.fold (fun (tailList, listOfPairs) el ->
                    let listThusFar = tailList |> Seq.map (fun x -> el, x)
                    (tailList |> Seq.skip 1), listThusFar::listOfPairs)
                    ((sequence |> Seq.skip 1),[])
                 |> snd |> Seq.concat</comment></comment>


Blind Reverse Engineering a Wireless Protocol [pdf] - <AUTHOR> https://github.com/r-ohare/Amateur-SIGINT/raw/master/Amateur%20Signals%20Intelligence.pdf

<comment><USER2> "That's not real encryption! And who the heck encrypts the weather anyways? It didn't make sense. Why would a company bother to invent a terribly bad encryption technique in order to obscure data that isn't private? The next oddity was that the last byte is described in the PDF as an "exotic" checksum. Huh? What company would bother to invent their own checksum technique? Are standard checksums not good enough?"

I have seen such behaviours, where two companies' products has to be able interoperable, they would introduce odities in the communications protocol to confuse the opposition and claim the oppositions product is crap...

</comment><comment><USER3> very cool article, and I did not expect to see what the device was at the end. it wasn't until I noticed the BCD pattern, then I knew what it was.

<comment><USER4> It was a good read, but as general advice you should start with looking for information about the frequency and device in question. The willpower to avoid the checking for an easy answer was the most impressive part of the writeup. (A week in the lab can save you a day in the library.) Educationally, it is the equivalent of doing something longhand instead of punching it into a calculator. As a volunteer who provides support[1] for some SDR software, the moment anyone mentions "433.9MHz", the immediate reply is "temperature sensor". There is even a neat little program[2] that understands a wide variety of manufactures' formats.

[1] ##rtlsdr [3]

[2] [https://github.com/merbanan/rtl_433](https://github.com/merbanan/rtl_433)

[3] Which I'm running a small fundraiser for, [http://igg.me/at/rtlsdr](http://igg.me/at/rtlsdr)</comment></comment>


Modularizing SQL? (2007) - <AUTHOR> http://lambda-the-ultimate.org/node/2440 <comment><USER2> The most important code management tool SQL has are views and the WITH clause.

[https://modern-sql.com/use-case/literate-sql](https://modern-sql.com/use- case/literate-sql)

Something like "polymorpihc" views would be extremley useful, but is not there yet (in standard SQL).

In other areas there are sublte features like the explicit WINDOW clause to avoid repeating similar OVER clauses. Breifly mentioned at the end of this doc:

[https://www.postgresql.org/docs/current/tutorial- window.html](https://www.postgresql.org/docs/current/tutorial-window.html)

This was adopted in recent years by many FOSS-DBs, but not yet by the big commercial ones:

[https://modern-sql.com/static/sm- blog-2019-postgesql-11.over...](https://modern-sql.com/static/sm- blog-2019-postgesql-11.over.en/T612.window-clause.zrNWMjbF.svg)

Similarily the chaining of grouping sets can be helpful in those very rare cases you need them.

The Oracle Database intrdouced "SQL Macros" recently. For my taste, they are too 'rude' to make me happy on first sight (much like C #define):

[https://blog.dbi-services.com/oracle-20c-sql-macros-a- scalar...](https://blog.dbi-services.com/oracle-20c-sql-macros-a-scalar- example-to-join-agility-and-performance/)

<comment><USER3> Be careful with WITH clauses in Postgres though. Prior to Postgres 12, the engine always materialized queries inside the WITH clauses, even when its unnecessary. This can lead to certain queries being orders of magnitude slower than normal if written with a WITH clause.

<comment><USER4> You don't need to follow this blindly though. Benchmark with EXPLAIN to see the loss/gain on performance vs. readability for your particular query.

</comment></comment></comment><comment> default-kramer Darn, I was going to do a show HN in a few days, but my side project too relevant here not to link to: [https://docs.racket- lang.org/plisqin/index.html](https://docs.racket-lang.org/plisqin/index.html)

As the warning says, it is NOT READY for any kind of use. But the SQL it generates is pretty close to what a human would write, so maybe it's fine to use.

There are two main things that Plisqin offers that I haven't seen elsewhere:

1\. Joins are values. This is wonderful for composability. When you say (from x SomeTable ....), x is bound as an "instance of SomeTable". Joins are also instances in the same way.

2\. Traditional SQL-style aggregates are supported, but "grouped join aggregation" is a new concept in Plisqin. Described here: [https://docs.racket-lang.org/plisqin/Aggregates.html](https://docs.racket- lang.org/plisqin/Aggregates.html)

Besides those two, there is also a different approach to comparisons which eliminates 3VL: [https://docs.racket- lang.org/plisqin/Nullability.html](https://docs.racket- lang.org/plisqin/Nullability.html). This is only in the "strict" variant of Plisqin; the "unsafe" variant gives you 3VL back if you like it.

I plan to finish up the documentation, and enhance the "Plisqin as a Research Language" section with more analysis of what works well and what gaps in the language I'd still like to patch.

</comment><comment><USER5> Whether you're trying to do this for a data warehousing use case, or in an environment where you are creating production database queries will change the approach you need to take here.

We have been working on SQLX for the data warehousing use case, allowing you to embed JavaScript into your SQL queries and making things like code re-use much easier while fitting in with your existing SQL dialect, might be of interest - [https://docs.dataform.co/guides/sqlx](https://docs.dataform.co/guides/sqlx). Some of the concepts in there are specific to our framework, some are not.

For data warehousing, create more views! They are IMO the right level of abstraction for encapsulating common business logic, data definitions, joins etc, making composing downstream queries much easier. Managing lots of views like this requires some investment in a data modelling tooling tool however (Dataform, DBT etc).

For generating queries used against production databases for building user applications, none of this applies.

<comment><USER6> > For data warehousing, create more views!

Agreed, but... the problem with views are they aren't parameterizable. In effect they are static templates. Fortunately, modern data warehouses often provide user defined table functions that accomplish pretty much the same thing, but allow you to "create input parameters to your view".

Dataform looks interesting (how have I not heard of this before) but I wonder if they support UDTFs?

<comment><USER7> Sure they are, you just slap a where statement on your query when you query a view. Or am I missing something?

<comment><USER6> Sure, that's sufficient most of the time. However, there times when your view might span multiple tables and you want to ensure that full table scans aren't triggered before your view predicate is acted upon.

This may also come down to how sophisticated your DBs sql optimizer is.

</comment></comment></comment></comment><comment><USER8> SQL Server's inline table-valued functions are a good start. They are essentially parametrized views, which are inlined and "disappear" at the point of use, so all the usual transformations are available to the query optimizer.

They are also quite limited in a number of ways:

\- Can't parametrize on the underlying table or view, even when it is "compatible" with the function's body. Some sort of OOP-style polymorphism or even JavaScript-style "duck-typing" would be nice.

\- Can't parametrize the SELECT list or ORDER BY clause.

\- No type generics (i.e. ability to "vary" the parameter's type when that doesn't require changing the function's body).

\- Can't pass another function as an argument (what would be called delegate or function pointer in other languages).

\- Only one SQL statement in the function body (SQL Server 2019 has lifted this limitation somewhat, but we are not quite there yet).

\- Can't (explicitly) throw exceptions.

\- And probably other things that escape me at the moment...

Some of these limitations apply to the stand-alone SQL as well, of course.

<comment><USER9> Reason for most of these is the optimiser. What if you have eg. 2 tables t1 and t2 which are structurally identical and have

      select *
      from parameterised_t
      where parameterised_t.x = 99

where parameterised_t is either t1 or t2 passed in as a param, the tables can still have very different statistics. The optimiser needs to know statically which it's getting.

Of course, if t1 and t2 are structurally identical, you should not usually be splitting them into 2 tables, they should be one table partitioned logically with some predicate (an extra column) rather than physically (having 2 tables).

\- Can't parametrize the SELECT list or ORDER BY clause.

ditto but worse.

> \- Can't (explicitly) throw exceptions.

and that one's a bitch, and quite unnecessary.

<comment><USER8> > Reason for most of these is the optimiser.

Well, optimiser as currently implemented, tying only one plan to each uniqe SQL text.

There is nothing, in principle, preventing an implementation that produces multiple plans based on the parameter values. This would be useful not just for "advanced" parametrization I mentioned above, but also for simpler cases such as when a parameter being NULL could be handled via a different access path compared to non-NULL.

> if t1 and t2 are structurally identical, you should not usually be splitting > them into 2 tables

Depends on constraints. For example, you might have two structurally same tables that reference (or are referenced by) different tables.

<comment><USER9> > ... nothing, ... preventing an implementation that produces multiple plans > based on the parameter values

I'm afraid there is - time and space. Optimising is a _very_ expensive process that can take well over a second to optimise a complex query on MSSQL (and that's not because the best plan is always found; it has a timout after which the best plan _so far found_ is returned. Complex queries _will_ hit the timeout and a suboptimal plan will most likely be returned), and the compiled query plan can take megabytes.

Suppose you want to parameterise by fields selected. That's a combination, which involves factorial. tl;dr that grows fast.

> you might have two structurally same tables that reference (or are > referenced by) different tables

Umm. I'd say if their semantics were different enough that they be 2 distinct tables then their identicallity is coincidental. I'd have to see some actual cases before arguing further (edit: though I have come across this, so maybe, but it's not IME common).

<comment><USER8> > I'm afraid there is - time and space.

Sure, I'm well aware of that. I did say "in principle", after all.

However, we are generating multiple plans already by changing the SQL text (by concatenating-in the table names, SELECT list, ORDER BY and so on).

There is currently no good solution in SQL even for parametrizing different "shapes" of WHERE, so we use dynamic SQL for that, generating even more plans.

There is some low-hanging fruit here.

> Suppose you want to parameterise by fields selected. That's a combination, > which involves factorial. tl;dr that grows fast.

You don't have to do it in advance, though.

Today, when you change the text of the SELECT list, you generate a new plan anyway. Parametrized SELECT list would be no different.

> I'd have to see some actual cases before arguing further (edit: though I > have come across this, so maybe, but it's not IME common).

Most junction tables have essentially identical structure, but different foreign keys. This is also pretty common when implementing things like "tags" or "attributes" that apply to more than one kind of object...

But it doesn't really matter whether all fields are identical, only those that are actually used by the given SQL statement. In a hypothetical future SQL, you could implement your algorithm generically and then apply it on any table or view that is "compatible enough", even if it has some extra fields that your SQL statement doesn't use.

In today's SQL, unfortunately, you are condemned to repeating the (essentially) same code.

<comment><USER9> Your point about generating query plans anyway if using dynamic sql is well taken. I can't argue - but see below.

> There is some low-hanging fruit here.

syntactically perhaps. But it is bloody expensive to generate new plans. It's quite reasonable for a query to take one or two or even three orders of magnitude more CPU for plan generation than for actually running it. Neither dynamic sql nor parameterisation will deal with that (that I can see). I think we're stuck with expensive repeated query planning.

> Most junction tables have essentially identical structure

Yes but they are used only to link 2 tables together (I call these join tables because they're just used for joining 2 tables). They aren't used in any other context

> This is also pretty common when implementing things like "tags" or > "attributes" that apply to more than one kind of object...

Maybe. I'd need to sit down with you and talk it over (not happening sadly!)

I think parameterised SQL is necessary but also a wide open door to clueless programmers massively increasing the CPU load and I've seen what cluelessness can do to perforemance in an exists-right-now nonparameterised RDBMS. OTOH I've never liked the idea that a tool's power should be reduced to avoid numpties doing damage. You modify the numpty, not the tool.

<comment><USER8> > I think we're stuck with expensive repeated query planning.

I agree with that (sadly). I'd like to see more expressive SQL, but I'm not saying it will make the situation with planning any better. I'd argue it should not make it much worse either, if done right.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I _highly_ recommend dbt (data build tool) for a modular approach to sql; postgres, snowflake, bigquery or redshift.

[https://github.com/fishtown-analytics/dbt](https://github.com/fishtown- analytics/dbt)

<comment><USER9> I'm afraid I don't understand it. I assume a data warehouse is in a relational DB anyway, so from [https://docs.getdbt.com/docs/introduction/](https://docs.getdbt.com/docs/introduction/)

"dbt (data build tool) enables analytics engineers to transform data in their warehouses by simply writing select statements. dbt handles turning these select statements into tables and views"

So you are taking some runnable SQL and... running it? Why does SQL need to be turned into tables an views anyway? What problem is this solving?

<comment><USER6> > Why does SQL need to be turned into tables an views anyway? What problem is > this solving?

So that data is aggregated, summarized, cleansed, transformed, join, normalized, whatever before you query it. It's much cheaper, faster, etc that doing all of that ahead of time instead of query time.

> I assume a data warehouse is in a relational DB anyway

Not sure what you mean that a data warehouse is in a relations DB? Data in data warehouses can be set up in a relational way, but it certainly doesn't have to be. Perhaps you need to get a better understanding of olap vs oltp?

[https://stackoverflow.com/questions/21900185/what-are- oltp-a...](https://stackoverflow.com/questions/21900185/what-are-oltp-and- olap-what-is-the-difference-between-them)

<comment><USER9> > Not sure what you mean that a data warehouse is in a relations DB?

That you're using an RDBMS of some sort. It understands SQL and the data is in the conventional tabular form. I understand olap vs oltp. My question was whether eg. snowflake was an RDBMS (I did check wikipedia and the snowflake website but neither said). If it wasn't then I could see the benefit of this tool).

> So that data is aggregated, summarized...

That's what SQL is good for, why (if we're already in an RDBMS) do I need another tool on top to do this?

> It's much aggregated, summarized, cleansed, transformed, join, normalized > ... that doing all of that ahead of time instead of query time.

Of course, that's what a DW does as it pulls in new data. But that is what SQL also does rather well, so what does this tool bring to the party?

<comment><USER6> DWs like Snowflake certainly share some features you'll find in traditional RDBMSs, but I'm not sure I would classify it as one. [https://www.quora.com/Is-Snowflake-a-RDBMS](https://www.quora.com/Is- Snowflake-a-RDBMS)

> That's what SQL is good for, why (if we're already in an RDBMS) do I need > another tool on top to do this?

Writing, versioning, testing, deploying, monitoring all that complicated SQL is very challenging. This is what DBT is good for. DBT doesn't replace SQL, it simply augments it by allowing you templatize, modularize, figure out all the inter-dependencies, etc...

> Of course, that's what a DW does as it pulls in new data. But that is what > SQL also does rather well, so what does this tool bring to the party?

Sounds like your talking more about ETL, but from what I understand DBT is really useful for what happens after ingestion. Transforming, refining, aggregating, etc from one internal DW source to another. This is where you would want to use SQL, but again, DBT doesn't replace SQL, it augments it.

\----

BTW, I've never used DBT and have only really looked into it in the last 24hrs since we're really struggling with the pain of managing all of our ETL (table->table) SQL. I really see where it could make our lives a lot simpler, but it doesn't seem to provide the functionality that we need for our workloads.

We're using Snowflake change streams to build refined, summary and aggregation tables off an ingestion table (Kafka Connect to SF). We use change streams on that ingestion table to track new data that we can refined, summarized and aggregated into final tables in a near real-time fashion that's used for analytics and reporting. Change streams (and tasks and procedures) is not something that DBT seems to be ready for, but it's probably understandable since they're trying to provide functionality to more DWs than just SF.

<comment><USER9> Snowflake is per your link an RDBMS. Where it lives and on what storage subtrate it operates from is irrelevant.

On your recommendation I'll have a look at DBT, thanks.

Whatever you're doing at work sounds really complex, possibly worsened by sheer quantity of data. I wish you luck with it!

</comment></comment></comment></comment></comment></comment><comment><USER11> I solved this problem (to my personal satisfaction) by adapting sqlalchemy for this. Sqlalchemy was not designed for complex data warehouse ELT for sure, but all it took was abstract out a few "quirks" of sqlalchemy and I was able to get a framework that's as expressive as spark, and hence extremely modularizable (not to mention testable), and compiles to regular SQL very easily.

<comment><USER6> Any chance you could get into a little more detail about this framework? Sounds very interesting. Any reason you developed your framework instead of using a tool like dbt?

<comment><USER11> I will go into brief details, but will clear with my org and post more on HN later for sure. But the gist is I try to extract any sqlalchemy representation as an 'alias' object like:

ORMModel.__table__.alias() select([query.c.id]).alias()

And wrap it with a class that's called a DataFrame. This class can then have methods implemented such as 'with_column_renamed' and 'join' which can just take simple strings and do all the sqlalchemy heavy boilerplate inside. The goal is to make it almost similar to spark code, where each operation returns the DataFrame with the logic applied (continuously updating the internal alias object).

With this DataFrame, we always know the schema of the query, so it makes it easy to write generic transformer functions and pass them to an 'apply' method just like in spark. You can always reach out to the power of sqlalchemy in any step to customize the logic, and write custom compilers for temp tables, etc.

This also means you can write unit tests in a very generic fashion if you have standard transformations that process one DataFrame.

One reason I didn't go with dbt is that we already have our codebase in python, and going with dbt would have fully siloed the pipelines to Jinja SQL. Also not a huge fan of a pipeline mandatorily split into hundreds of files often having just a few lines each!

</comment></comment></comment><comment><USER12> You need an SQL optimizer to _efficiently_ abstract over sql. There are a couple implementations, empirically producing good sql at runtime is kinda slow.

The pathfinder compiler is meant for C# linq to mix sql and XML queries. It has backends in a couple languages but is kinda slow, and iirc has no support for aggregates.

Database Supported Haskell builds on this but has support for basically all sql features and some no-sql backends. Needs some slight work to fix bit rot by now, and the compiler is kinda slow. [https://hackage.haskell.org/package/DSH](https://hackage.haskell.org/package/DSH)

The Ur language has great support for SQL, including updateable views. [https://en.wikipedia.org/wiki/Ur_(programming_language)](https://en.wikipedia.org/wiki/Ur_\(programming_language\))

TL;DR: If you allow general nested results in your abstraction you need an optimizer. Optimizing aggregates in general is REALLY hard and slow.

<comment><USER9> If you do mere joins, you need an optimiser.

</comment></comment><comment><USER13> As said in the comments, some abstractions are possible with stored functions and views, in PostgreSQL you also have generated columns now. I'm sure there are more.

Abstractions built on ORMs or query builders have the disadvantage that they are tied to one language and framework and application, making them less reusable.

</comment><comment><USER14> I had a go at writing a type-inferred composable language for database queries a few months ago: [https://github.com/KMahoney/squee](https://github.com/KMahoney/squee)

</comment><comment><USER15> I have been working JinjaSQL[1] for a while to simplify complex SQL Queries.

JinjaSQL is a templating language, so you can use interpolation, conditionals, macros, includes and so on. It automatically identifies bind parameters, so you don't have you to keep track of them.

1\. [https://github.com](https://github.com) /hashedin/jinjasql

</comment><comment><USER16> My dream - enabling/disabling columns and tables:

      𝐂𝐑𝐄𝐀𝐓𝐄 𝐓𝐄𝐌𝐏𝐋𝐀𝐓𝐄 𝐕𝐈𝐄𝐖 𝐭𝐩𝐥(𝐭1, 𝐧𝐞𝐞𝐝𝐞𝐝) 𝐀𝐒 𝐒𝐄𝐋𝐄𝐂𝐓
      𝐭1.*,
      𝐭2.* 𝐈𝐅 𝐧𝐞𝐞𝐝𝐞𝐝
      𝐅𝐑𝐎𝐌 𝐭1
      𝐉𝐎𝐈𝐍 𝐭2 𝐎𝐍 (𝐭𝐫𝐮𝐞) 𝐈𝐅 𝐧𝐞𝐞𝐝𝐞𝐝

<comment><USER9> Don't get it - why do you think you need this?

<comment><USER16> All object-relational mappings would be in database. Why not function returning a query? Because you can't EXPLAIN ANALYZE function body.

</comment></comment></comment><comment><USER17> Not really on topic, but what happened to LtU anyway?

<comment><USER9> It's evidently still there. It's a slow-post high-info site so not much happens for long periods. I'm not sure what you're asking.

<comment><USER17> It's slowed down a lot. There's been a total of 8 posts and 50 comments since 2019. There were 32 posts just in 2017.

<comment><USER9> It's a user driven site. If you have something relevant to it, post it! It's what will keep it alive.

If you're like me who lurk because they've nothing to post bt are concerned about it dying, have a word with the guy running it, Ehud I think.

</comment></comment></comment></comment><comment><USER18> SCHEMAs, TYPEs, FUNCTIONs, VIEWs with and without INSTEAD OF TRIGGERs, TRIGGERs -- these things let you build abstractions in SQL.

</comment><comment><AUTHOR> A tangent: I wonder if a ReactJS-like rerendering could be used as a declarative alternative to schema migrations.

<comment><AUTHOR> Hmm, I guess that's "State-based database delivery/migrations". I couldn't find much about them though.

<comment><USER19> Checkout [https://github.com/prometheusresearch/baseline- codebase/tree...](https://github.com/prometheusresearch/baseline- codebase/tree/baseline/master/src/rex.deploy) which does that. Very happy about how it works.

</comment></comment></comment><comment><USER20> We found a way to organize large SQL decomposing them in smaller chunks and organize those chunks like in a "jupiter notebook" so you also see results for intermediate results, an example:

[https://ui.tinybird.co/snapshot/7437e5efa1f944a0b7cc01775169...](https://ui.tinybird.co/snapshot/7437e5efa1f944a0b7cc017751696ea3)

</comment><comment><USER21> Terraform templating + SQL plays together pretty well. Certainly helps a fair bit with pattern reuse

</comment><comment><USER22> Don't typical query builders allow for composing SQL from smaller building blocks?

<comment><USER23> Yes, this is the main reason why they exist in the first place.

<comment><USER9> From my perhaps minimal experience with query builders they're there to make sql queries graphical and therefore presumably easier. IME they don't do a good job of that. If you an handle the semantics of SQL you can put a bit more work in and learn the syntax. It'll pay for itself rapidly.</comment></comment></comment>


Ask HN: What is up with California and HAM radios? - <AUTHOR> There are a number of rumors circulating that the CA state government is no longer going to use the amateur radio community and is instead building a state funded repeater network. Is this true? If so, can anyone explain the benefit? <comment><USER2> From what I heard, it's specifically CalFire that's terminating no-fee access to HAM repeaters on mountain tops. I'm sure Verizon and ATT love this. Personally, I hope this spurs interest and activity on the 40m and 80m bands.

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


Feynman and the importance of play [repost] - <AUTHOR> http://www.physics.ohio-state.edu/~kilcup/262/feynman.html?repost

<comment><USER2> IIRC in the book there is a correction by Sands: The wobbling is twice as fast as the rotation.</comment>


Douglas Rushkoff – We Won: Get Used to It - <AUTHOR> https://medium.com/s/douglas-rushkoff/we-won-get-used-to-it-3753eaf83f42 <comment><USER2> A few weeks ago a court in Sweden decided on a defamation case where a person had used the N word aimed at an prosecutor. The judges found that the accused was not guilty because culture has shifted and now it is the person saying the N word that looses reputation in public eye and not the person on the receiving end. Basically they proclaimed cultural victory in favor of the progressive culture.

</comment><comment><USER3> > Back in 2000... I challenged the assembled renegades to accept victory. "The > counterculture has won," I told them.

Has he been in a coma the past 18 years? It's understandable that in 2000 one may have discounted the importance of Gingrich's Republican Revolution and Bush's election. But in 2018, two years after Trump's election, he's fooling himself if he thinks a majority of the country shares the same values he does. At _best_ a majority may share a commercialized, materialistic perversion of those values; and a majority may _claim_ they share certain values. But what people do, and in particular how they vote, says much more.

Hillary may have won the popular vote but it's a stretch to say 100% of Hillary voters share counterculture values like radical inclusiveness. A vote for Trump, however, is much more clear.

The author is living in a bubble. A very large bubble, but a bubble nonetheless.

<comment><USER4> You are upset because you don't have a majority.

Which means you completely missed the point Rushkoff is making:

Winning did not require a majority and misguided efforts to establish a majority are backfiring to the extent that it contributes to the unprecedented political success of people like Trump.

<comment><USER3> He says, "The core counterculture values of environmentalism, women's rights, racial justice, and international peace were now simply accepted values. 'They're looking to us for what's going to happen, and how to be,' I explained. 'We are not counterculture, anymore. We are pro-culture.'"

But nothing has changed to the degree he argues. The counterculture was _chic_ in the '60s and '70s, too. Counterculture values are "mainstream" only in the sense that they've been partly internalized by the institutions of the elite, and most thoroughly by the cultural elite. But the elite weren't antagonistic to the counterculture, and the social elite were onboard from the beginning. Unlike [historically] in Europe, the preferences of the social elite aren't self-executing. So what has really changed?

If you look at the arc of history in terms of civil rights, the counterculture had very little effect. The landmark Civil Rights Act was passed in 1964, the National Environmental Policy Act in 1970, and Title IX in 1972. These are the pieces of substantive legislation upon which supposed countercultural values have been concretely manifested; they weren't passed on a whim--they reflected a popular if fleeting commitment to lofty ideals--yet they were passed long before the counterculture supposedly "won". Roe v. Wade (1973) and Obergefell v. Hodges (2015) are largely anomalous for multiple reasons, and using them to bolster the notion that countercultural values have won (even in the sense of aspirational morality) is particularly unpersuasive.

What's really changed between now and then is that liberals somehow convinced themselves that they won. But the last 20 years has shown that they haven't won at all. Rather, as the political dominance of the Democratic party came to a close at the end up the 20th century, the Information Revolution increasingly permitted everybody to silo themselves into cultural bubbles. So liberals could believe they're winning

Real social, political, and legal changes are following the same trajectory as they always have--halting and slow but generally improving. Some things have gotten objectively worse, like the never ending wars in the Middle East; ironically a recapitulation of the very thing that give birth to the counterculture--Vietnam.

It's farcical, for example, to argue that an electorate who willingly and knowingly elected as President a man who boasted about sexually assaulting women _and_ _remained_ _unrepentant_ has somehow internalized countercultural feminist ideals. Our society is more much inclusive of women these days, but that's been a 200+ year arc. 1968 was _50_ years ago! If you stand back, the advancement of women in society between 1968 and 2018 is comparable to 1918 and 1968. To argue that the progress of the latter 50 year period is somehow uniquely reflective of '60s counterculture is rather short-sighted, self- serving, egotistical, and naive; it exaggerates the progress and discourse of this era and under appreciates the progress and discourse of previous eras.</comment></comment></comment>


Impossible Engineering Problems Often Aren't (2014) - <AUTHOR> http://blog.scalyr.com/2014/07/impossible-problems-often-arent/

<comment><USER2> Excellent article. Nice to see an example of a real world problem at scale and the nitty gritty detail of how it was solved. Thanks.</comment>


Did the ruckus over WaPo's Twitter policy exposes social media's bubble? - <AUTHOR> http://www.shootingatbubbles.com/index.php/2009/09/28/washington-posts-twitter-ruckus-exposes-social-media-bubble/

<comment><USER2> If you're going to rewrite the headline, at least try and make it a coherent sentence.

<comment><AUTHOR> I will try a little harder the next time :)</comment></comment>


Chip Hall of Fame: Texas Instruments TMS9900 - <AUTHOR> http://spectrum.ieee.org/semiconductors/processors/chip-hall-of-fame-texas-instruments-tms9900 <comment><USER2> Only glanced at the title and expected an article about the TL4558P chip - very different. Been reading too much about distortion pedal design recently!</comment>


Ask HN: Any room in the startup world for an ideas man? - <AUTHOR>

Is there any place in the world of startups and online businesses for an ideas man? I don't just mean scribbles on napkins, I mean well thought out and researched plans for online services, bundled with charismatic presentations and an analysis of the current market.
I am currently working on the skills I need to bring these ideas to life, but being realistic it will probably be some time before I can attempt even the most simple of them, with or without a partner.
Sitting on my laptop are about 15 of these ideas (plans, whatever you would like to call them), each one is the product of a lot of work and the source of much pride. It would upset me to see even one of these ideas, independently thought of by someone else, come to life as a profitable business. I ask you guys, what should I do with them? Let people read them on some sort of website? Try to market them to someone with the skills and resources to bring them into the world?
Honestly, is there anything I can do with them? <comment><USER2> Sure there is a place for that ! Go to a bank, borrow the $ or mortgage your house, then hire a team to build one of your plans, make it big and use the proceeds to execute the rest of your plans.

That's how everybody else does it. Other than that ideas are two a penny, plans are great but executing them is where the work is and where the money is made. You can have all of my 'good' ideas for free... I value them at exactly $0, which is as good as any other idea/plan.

By the time that you can prove that an idea has legs it should not be too hard to get it funded. Once you've successfully done one next ideas are easier.

<comment><USER3> _"plans are great but executing them is where the work is [...]"_ True enough, but some people are good at execution and some people are good at ideas. During the execution phase you're going to need more ideas, probably, to get past your MVP and on to a fully rounded product. Reminds me of the postings the other on Word of Goo - the idea was simple, implementing it was quite hard but additional ideas were added all along the way: things that transformed the product.

Ideas possibly are ten-a-penny, good ideas ...? Great ideas restricted to a specific market segment, they've got to be even more rare. PageRank was a good idea, sure without implementation it's nothing, without the idea there's no implementation though.

<comment><USER2> Yes, but just about everybody has ideas. I can't imagine that those that are good at execution do not have ideas.

The original 'apple' was an idea that many had at the time, two guys with the werewithal to go and execute that idea made it big. I'm sure that in the HCC of the time there were 100's if not 1000's of people that had the idea of a (cheap) computer for everybody.

People that have 'ideas' need to be aware of several really important things:

\- everybody has ideas, pretty much all the time

\- your idea is most likely not even original ("hey, I thought of that long ago!", yes, so?)

\- it might be a great idea but it may never fly, to ask others to risk all to implement your idea for a substantial portion of equity while you risk nothing is out of balance.

\- those people that 'had ideas' and made it big invariably were also good at execution.

People that 'just have ideas' usually end up in advertising or marketing where 'brain storm sessions' are their way of minting their idea motor, after all, there you get a salary for just having ideas.

The OP asked if there was room in a startup for an idea guy, the answer is really I don't think so, a startup needs one good idea, then execute it properly the rest is implentation. (Ebay : let's put an auction on the web, YouTube : Let's make it easy to post videos, facebook : let's do 'classmates' but much better). After that the execution takes over, that sort of idea you only need one of to have a viable business.

Sure, during the 'execution' phase you'll need more ideas, but those are usually not going to fundamentally change the nature of the business, unless the original idea wasn't very good...

In an incubator though, there is a place for an idea man. That's where there is added value, also if you're good at ideas you may be good at shooting down other peoples ideas before resources are wasted.

<comment><AUTHOR> Thanks for the honest response(s). What is this incubator you mentioned? Could you tell me more or link to something that does?

<comment><USER2> Well, news.ycombinator.com is the property of exactly such an institution but there are plenty more out there.

Seed capital funds are another possible avenue.

<comment><AUTHOR> After a bit of a search around I understand this all much better. Not to mention have a sudden thirst to get involved with that kind of organisation.

I guess I will just release my little plans on HN and enjoy the feedback! Would love suggestions for other places to use my creativity for something worthwhile (for me or a community).

</comment></comment></comment></comment></comment></comment><comment><USER4> Another element to consider is that sometimes very detailed, thought-out plans are often actually less valuable than tentative, raw ideas. Elaborate plans are brittle because there are many dependencies interwoven into them. Another way of putting that is that there are a lot of implicit assumptions about how the final system will work. But the reality is that there are things that will be unanticipated developments during the actual construction. Some of these will be things that in hindsight should have been anticipated, and others will be things that it really isn't possible to anticipate. In other words, we only really learn what the plan should look like by building.

Building gives us crucial elements of the plan. But there is another essential piece as well. And that is that one person can only figure out so much of how something complicated enough to be valuable should work. This is part of why YC wants multiple co-founders rather than single founders. It's also where you want to get feedback loops working in your favor. So much of life is about feedback loops, whether it is body temperature, or social confidence, or addictive dependencies. You want to get feedback from other people, and the way to do it isn't to show them your ideas, it's to show them the built out manifestation of your ideas, for exactly the reasons in the paragraph above.

One of the many things that makes this startup thing interesting is that for 500 years, specialization has been a trend. Since you only have a few guys in a startup ...

Finally, in terms of working on the skills, why not work on skills by trying to build a straight-forward aspect of one of the simpler ideas? And if this isn't possible because of the nature of the ideas, then the ideas need to evolve to make this possible.

</comment><comment><USER5> >Try to market them to someone with the skills and resources to bring them into the world?

It really isn't the idea, but the execution that's essential.

There have been lots of ideas, which i thought were stupid and too simple to be profitable at that time. But i've seen them grow really popular and profitable.

So i guess you should find someone to work with you on those ideas, and hope for the best. It may turn out that some those ideas become successful, but there's a higher chance that none of them do.

Discuss those ideas on HN, and i'm sure you'll get lots of useful feedback.

<comment><USER6> But many of those ideas are half baked :D it sounds like this guy has got some serious plans/ideas laid down.

That kind of stuff can go far in the right hands.

@OP: How protective are you over the ideas? Posting them to HN will probably find someone to build them. The risk being you might be bypassed in that process. Is there a way to give your knowledge / plan enough value that a would be "builder" wants to work with you?

<comment><AUTHOR> Thats really my problem isn't it - I bring nothing to the table once someone has the plans. I'm a little protective, but I could cope with letting one or two go I suppose. I have only really shared them with non-tech people or my tech friends that are far too lazy or otherwise oriented to ever do anything with them.

<comment><USER5> "I have only really shared them with non-tech people or my tech friends that are far too lazy or otherwise oriented to ever do anything with them."

I guess your concern is valid. But, most people are that way, the ones that really are motivated enough to complete a project or build a startup already have their hands full with ideas of their own.

If you have researched your product and have a definite vision of it, then that's what you bring to the table. A stolen idea would look, well.... stolen!

</comment></comment></comment></comment><comment><USER7> Publish at least some of them, so others can at least evaluate whether you have _good_ ideas.

You are never going to find anyone who will "buy" business ideas. All the people saying that execution is what matters are right. But the _ability_ to generate good ideas and plans is not unrelated to ability to execute! If your work impresses, you might find a co-founder or an opportunity that will put you on the path to being able to do what you want.

</comment><comment><USER8> The problem is that ideas are "non-excludable goods":

<http://journal.dedasys.com/2007/04/26/ideas-are-worthless></comment>


Is a college degree still worth it? - <AUTHOR> http://www.latimes.com/business/la-fi-jobs-educate-20100612,0,5466021,full.story <comment><USER2> A client is currently paying me a rather substantial amount of money to come up with an authoritatively presented answer to this question, using BLS data and some programming. (It figures that the number crunching would take one week and the presentation layer would take three. _sigh_ )

Spoiler: College degrees are still worth it. Some are rather substantially more worth it than others. If you feel yours isn't, you almost certainly aren't majored in engineering or (certain flavors of) geology.

<comment><USER3> If it is possible to share the results with us, I'd like to see it when you are done. I recognize that may not be possible. I think I have a good bead on the general results, but specifics are nice, and concrete charts could even be helpful for talking to college-bound seniors about what it is they need to be doing in a way that "here, let me share my intuitions" aren't.

<comment><USER2> Thanks Jerf. They've previously indicated that they'd be thrilled to have me show it off, and I'd be happy to write a "how I built this" or something for my blog linking to the results.

Fair warning: it is marketing material, in much the same sense that one of the NYT's data visualizations is marketing, except they have a business model which benefits in a more direct fashion than the NYT does.

</comment></comment></comment><comment><USER4> Is a Hitachi EC25E compressor with NV45AB2S nailgun worth it? That would depend upon whether or not I intend to be a roofer.

I was always suspicious of the assumption that a college degree was a default requirement for success in the professional world. That is -- in part -- why I rejected the notion and decided to drop out of college after year one.

A college degree is a means to an end, not an end in and of itself. Too many educators assume that if you are "smart", you must go to college. As if the degree you receive is some sort of product that stands alone. The fact is, you can't sell a degree on an open market, because the knowledge you gain isn't transferrable. Circle back to the old argument of whether $50k would be better spent on a 4-year degree or some form of traditional investment. The only factual answer is "it depends".

When you go to college, you buy experience, knowledge, and a certificate that says, "I know how to see something through to the end." In my view, the significance of the latter has diminished significantly in recent years. When college becomes something you do by default, the effort is no longer superlative; it is average. This puts the emphasis more on the knowledge aspect, and sure enough, knowledge heavy degrees deliver more value.

I once had dinner with a client where one of the VPs asked me where I went to college. When I replied that I had attended for one year, then decided my efforts were better spent elsewhere, she replied with, "Oh, you seemed smarter than that." It stung a little, but in the conversation that followed, the majority of the executives with which I was meeting came down _in favor_ of my decision, rather than against it.

This conversation taught me a valuable lesson. Doing what everyone tells you is the "right thing to do" isn't always the best answer. There are no one- size-fits-all answers to life. You have to evaluate each scenario objectively based on the circumstances at that moment, then reach your own conclusions.

<comment><USER5> > asked me where I went to college

Political protip: Answer his question. "I went to X University". Because... you did, didn't you?

And if he asks you what you majored in: "I studied Y. But somehow I ended up in this job! _hearty laugh_ ".

I have a degree but it amazes me that people who didn't go to college are never able to glide past this one. It seems like the only people who really ever bring up dropping out is the dropout. Only a very special kind of asshole will continue to press you about graduation dates etc.

Having said that,... I have a sneaking suspicion that people who dropped out like bringing it up just to say that they dropped out. You like bringing it up and debating it and then having people "agree" with you eventually, because you seek validation for the decisions you made.

It's called having a chip on your shoulder and the guy who said "oh you seemed smarter than that" was clearly fucking with you cause he's seen it a million times before.

<comment><USER6> I disagree. Why would you claim something falsely? It's possible they wouldn't press further, but it's also possible the person would say "Oh, X University! Was there Z when you went?"

Now, you could go on and tell me about how it's just that easy to make up something else, like, "Hmm, I don't remember that," but I learned a long time ago that making up facts about yourself can easily bite you in the ass. As I've grown older, I generally try to steer away from doing this. Taking the high road and being honest doesn't mean you have a chip on your shoulder.

The only "clearly fucking with" I got out of the grandparent post was the degreed person taking a jab at the non-degreed person, and it's not the first time I've seen a person with a lack of higher education insulted offhandedly that way. It's almost like people with degrees have a chip on their shoulder, or something... (I kid).

Now, to agree slightly with your post, I do sometimes mention that I have no college education (nor did I finish high school). At the same time, I am paid more than many people who do have degrees, but I am limited from many jobs because I lack a degree of any sort. However, I don't try to debate whether my way is better, because I know that learning works differently for different people.

As for validation? You may have a point there, but it's amazing to ME that so many people fail to realize that you can learn almost anything yourself. I don't think it's wrong to be proud that you gained the same (or better, being real-world experience) knowledge that another person had to pay $35,000 to learn.

Please don't think I'm being dismissive of college education though. I miss out on a great many things simply because it doesn't fall into my area of interest (classic literature and ancient history being prime examples). By getting a degree, you ensure that you're at least passingly familiar with the same basics as everyone else.

I do intend to go back to school eventually, but I have very little pressing need to earn a specific degree. If things keep going the way of MIT and free online courseware, I may skip the degree portion and gain personal enrichment without paying an institution for the privilege.

<comment><USER5> > falsely

Nothing about those answers are false. It's a truthful answer designed to promote good will, not a lie. It's called having social skills.

His inability to play this game got him a stinging insult in front of a bunch of the execs' peers. Way to go dude. I'm just offering advice on how to avoid getting socially "stung", not on how to live your life in general.

> ability to learn anything yourself

I agree, I majored in economics and I'm a search engineer making over 200k. My degree is nearly worthless to me.

<comment><USER6> You're right, they're not false statements.

Maybe it's just that I don't feel lacking a degree is something to be ashamed of or glossed over. It's easy to get defensive when something you do is outside the norm and you get called out for it.

</comment></comment></comment></comment></comment><comment><USER7> the way I see it, is if you are doing engineering or any other technical major, then yes it still is.

but humanities etc is a waste of money

unfortunately our culture has made getting a degree a prerequisite(everyone got one), so now you need a college degree for jobs you wouldn't have needed one in the past.

before, having a college degree was a means to increase your income substantially, now it's just a checkmark that you got $40-160K in debt for.

<comment><USER8> I think your second point actually points to why the first might be wrong. There are huge ranges of jobs that a humanities degree qualifies you for that you can't get without one--- even a bunch of stuff that's unrelated to the degree, like HR or various secretarial jobs. In engineering, if you have no degree, you at least have a _chance_ of convincing someone that you're a great engineer by doing independent work, and even large companies like Microsoft and Google do hire people without degrees. In the humanities, though, it's very hard without a degree to convince someone that you're "just as good" as other applicants who have degrees; you generally won't even get a second look.

So I'd almost say the opposite: that if you aren't going to do engineering, a degree is definitely worth it, but if you are, it might be more questionable, and depends on what exactly you want to do, and what your outside-out-school credentials are.

<comment><USER9> > There are huge ranges of jobs that a humanities degree qualifies you for > that you can't get without one--- even a bunch of stuff that's unrelated to > the degree, like HR or various secretarial jobs.

I think that's exactly the problem. Why should that degree qualify you? It's unrelated! That's what the article and some of the comments are trying to point out: we shouldn't have careers where the college degree is treated like a checkbox instead of being a relevant indicator of your ability in the field in question. What does close examination of Chaucer or Shakespeare have to do with being a secretary? Why would someone who doesn't have a degree in Comparitive Literature make a worse secretary than someone who does? The answer is that it shouldn't.

<comment><USER8> Basically as a proxy for "is reasonably intelligent and able to apply him/herself for some period of time to achieve goals". Not necessarily a great proxy (and a very expensive one), but for a lot of semi-generic jobs it's the best currently available. At the very least, it weeds out some of the people the companies definitely _don't_ want to hire.

</comment></comment></comment></comment><comment><USER10> It's interesting that the value of a degree is measured in increases in income later on in your life. The traditional role of universities was as a place of learning and for the advancement of knowledge through academia, not as a social engineering tool.

<comment><USER11> Well, as long as universities still do that (and they do, by and large), what's wrong with them extending their mission to prepare people for our current more complicated world where a lot of people need to learn more stuff than any normal high school will teach?

My Silent Generation father got a business degree at the University of Missouri in the mid-50s and that made a big difference in the '60s (and beyond) after he did his service in the Navy. E.g. he was able to take a company public and make it more successful, where in an extreme and unusual counter example, some quasi-competitors status wise he'd gone to high school with didn't have the skills needed to keep their company afloat and tried pulling tricks that ended with them getting some vacation time in Club Fed.

</comment></comment><comment><USER12> Why is this such a consistent meme with the Hacker News/Slashdot crowd?

Do you think Eric Schmidt regrets his decision to pursue a Ph.D.?

<comment><USER13> Think we're taking undergrad only here, not graduate degrees. Though I suspect the general finding probably still applies - science/engineering/math type grad degrees pay off more than others.

<comment><USER9> Funny, because this particular article seems to argue the opposite. Two places in particular stand out to me where the article raised the specter of automation and outsourcing to scare people away from engineering-type jobs: >Meanwhile, well-paying white-collar jobs such as computer programming have become vulnerable to outsourcing to foreign countries.

and

>But he offers this advice: "Don't train yourself or your children [in work] that a computer can do or a smart kid in China or India can do. Because that's ferocious competition."

Why the gloom and doom over science/engineering/math fields, when it's those fields that other articles have pointed to as the few with strong job prospects? There is some serious inconsistency between this article and other articles that have been posted around here lately, and the general tone leads me to believe this was a last minute fluff piece put together by someone who wasn't really paying very close attention.

</comment></comment></comment><comment><USER14> If you want to emigrate it makes life a little easier.

</comment><comment><USER15> If you of education as teaching you how to _get what you want_ , then go ahead and run the numbers to decide. I believe it's better to think of it as helping you learn _what to want_. In that case the numbers won't help you much and that the humanities are probably undervalued.

Case in point. What is the value of studying history? Nobody is going to pay you to vote to avoid the mistakes of the past. So it will never show up in a study.

</comment><comment><USER16> There is a difference between a college degree and a college education.

While I can say with a degree of confidence that experience has given me enough of a skillset to hold my own against most college grads, there are things that I wish I'd learned in an academic setting.

</comment><comment><USER17> Yes, until it is disrupted.

</comment><comment><USER18> Yes.</comment>


EU asks why credit cards are so expensive - <AUTHOR> http://www.theregister.co.uk/2012/01/19/ec_payments_consultation/ <comment><USER2> Don't know about Europe, but I can sure rant about the situation in the USA.

The entire credit card industry is one giant market failure. The people who pay the price for a credit card are, by and large, not the people who choose which card to use. And those costs are deliberately hidden from the people who do make such decisions.

It creates a perverse situation where credit card issuers aren't really competing on price at all. They're competing on service. So they issue rewards packages. Those rewards cards do cost more. But the higher price comes in the form of a higher processing fee, which retailers are contractually bound to hide from consumers. So consumers are completely unable to decide whether a particular rewards package is worth the price.

Worse yet, since everyone pays the same price at the till regardless of what the transaction fee for their particular credit card is, even if I did know I would have no reason to worry about a more expensive card. We all pay the same price, so if my card's more expensive than average that just means that the extra cost is being paid by someone with a card that bears a lower transaction fee.

<comment><USER3> > But the higher price comes in the form of a higher processing fee, which > retailers are contractually bound to hide from consumers

That's no longer correct. As part of an antitrust settlement with the Justice Department in late 2010, the card associations agreed to drop that. Retailers can now charge different depending on whether or not the card is a rewards card or not.

</comment></comment><comment><USER4> The problem here is lack of transparency.

If shopkeepers always passed on the cost of debit cards (or, at least, separated out whatever amount they were passing on) then consumers could make a choice about which cards to use and providers would have to compete on price as well as service.</comment>


Bzip2 in Rust: porting the randomization table - <AUTHOR> https://people.gnome.org/~federico/blog/bzip2-in-rust-randomization-table.html <comment><USER2> "See the commit for the corresponding extern declarations in bzlib_private.h. With those functions and the table ported to Rust, we can remove randtable.c. Yay!"

You just made bzip2 artificially depend on Rust. I have no Rust compiler on Solaris 10, which means that with this commit I can no longer compile your code. This goes for any other OS which doesn't have Rust.

<comment><USER3> Introducing a Rust dependency isn't accidental when it's the point of the whole enterprise.

The author is also keeping the C version around. bzip2 didn't even have version control before this. The C version will live on for all those who require it.

<comment><USER2> Why purposely replace something which needs no replacing?

We are such a horrible, horrid industry. This is a perfect example why that is so.

<comment><USER3> See here: [https://people.gnome.org/~federico/blog/maintaining- bzip2.ht...](https://people.gnome.org/~federico/blog/maintaining-bzip2.html)

A project that was not maintained now has a maintainer. Patches will actually be applied centrally. Distros won't need to maintain their own forks.

<comment><USER2> A maintainer who will convert bzip2 to Rust, where the rest of us who aren't sold on the new religion won't be able to run it, because the priests of the new religion don't give a flying pterodactyl about any operating system which isn't GNU/Linux and maybe Windows. Oh, and up until now I could fix bzip2 because it is written in C and I could actually understand the code and fix it. Now if by some miracle I even had a Rust compiler, the "maintainer" would indirectly force me to learn Rust, because of course I should spend days chained in front of a computer rather than having a life, learning yet another fashion fad, extremely horribly put together mishmash of an object oriented programing langauge (if you have methods, you are object-oriented, no excuses will work with me).

We are such a horrid industry. Information technology is going deeper and deeper down the drain amidst trend pandering and wheel re-invention. If I could get out I would yesterday. It's a sad day when a computer enthusiast with a formal education in computer science like me is brought down to that.

<comment><USER3> Again, please read more details about what you're talking about, or even my previous comments. The C version isn't going anywhere.

<comment><USER2> That's what you claim, but I've no reason to believe it will stay that way, especially since the new maintainer wants to "rustify" it.

<comment><USER3> I'm repeating what the maintainer himself has said.

You're letting your bias get in the way of actual facts.

<comment><USER2> And why do I have that bias?

Moreover, the new maintainer write his goal is to "rustify". What more proof do you need?</comment></comment></comment></comment></comment></comment></comment></comment></comment>


More about Xobni financing - <AUTHOR> http://www.bizjournals.com/masshightech/stories/2007/04/30/story16.html <comment><USER2> I am somewhat suspicious that Xobni has no value to offer. Their evasive website recalls Mr. Graham's (or some other entrepreneurial evangelist's) insistence that if a company cannot tell you what they do in a sentence, they should go home. I agree that business targeted towards the masses (note that Xobni seems to only support Microsoft products at present) must have an easily understood purpose. What purpose does Xobin they serve?

In the entire length of their website, they do not explain what they do. They certainly don't in a single sentence. Perhaps, the magnitude and source of their investment suggests they are on to something. But, what explanation they have reeks of charlatanism in platitudinous corporate doublespeak: "in-depth analysis" that "takes email productivity to a new level." Please. This of course raises the questions what do they analyze? And how do they improve productivity? Either they have something to hide or nothing to offer.

Recall that Mr. Graham insists that there are no ideas worth protecting with secrecy; either Xobin disagrees (actually I do as well) or they have no good ideas at all.

</comment><comment><USER3> Intriguing comment by pg about New England investors lacking confidence. Anyone venture a guess to why, and how this will change (or not) in the next 18 months?

Culture is obviously important. If NE is conservative, there are other proclaimed tech "hotspots" that are ultra conservative when it comes to web business.

<comment><USER4> The recent trend seems to be that SFP kids live and work in Cambridge for the summer, then move out to the valley right after the program's done.

If Cambridge/Boston investors aren't helping folks take their ideas to the next level, why do the program on the east coast at all? Mountain View's got nice weather year-round.

<comment><USER5> That's exactly what I thought, too.

If Graham really feels that way about the East Coast investors (and especially if he says so publically), he might as well make California the permanent YC home.

<comment><USER6> That might mean that PG (and the other YC folks) would have to move as well. AFAICT, YC wants to be close to the founders for physical meetings. It might not be easy for YC folks to move (they have their lives, etc.).

Also, Boston is a niche: it is home to some bright tech people. YC is close to them, while the valley is away, so YC is the obvious choice for Boston students. That gives YC a competitive advantage at least in the area and makes it distinct. Moving to the valley would make YC more generic and less of a brand.

<comment><USER7> _That might mean that PG (and the other YC folks) would have to move as well. AFAICT, YC wants to be close to the founders for physical meetings. It might not be easy for YC folks to move (they have their lives, etc.)._

Willingness to move to the YC location is a precondition of being accepted into YC. I have to move from Mountain View CA to Cambridge MA for SFP... even though WFPs are held here, where I already live. But I'm not complaining at all; living in Boston for a while sounds great.

<comment><USER6> By "YC folks" I meant the YC partners: pg, rtm, tlb & x. Founders should be able to move easier: presumably they are younger, with less "baggage" and with more appetite for adventure.

<comment><USER8> FYI, 'x' is Jessica Livingston, according to the YC site. TLB presumably lives in the Bay Area; his Anybots company is here, anyway, and hosts the WC YC offices.

Which raises an interesting question as to how the YC partners handle the EC/WC split between the SFP and WFP. Do different partners play bigger roles in different programs? Does PG rack up the airmiles/spend 3mo of the year away from home?

Is cloning involved?</comment></comment></comment></comment></comment></comment></comment>


The NSA-DEA police state tango - <AUTHOR> http://www.salon.com/2013/08/10/the_nsa_dea_police_state_tango/ <comment><USER2> So, the DEA and other agencies create the incentives for the criminal drug milieu by creating artificial scarcity, i.e. high prices... which in turns leads to more criminal activity and violence and subsequently to more funding for these agencies.

Perfect.

<comment><USER3> _Perfect._

They certainly think so. That leaves out the part where politicians won't shut down those agencies (or parts of agencies) because of the power base they represent.

As Rand observed through Dr. Ferris, "There's no way to rule innocent men... when there aren't enough criminals, one makes them." They can make criminals by passing more laws or by detecting more people breaking already existing laws. Rand was referring only to the first type, and they do have some different effects, but they both serve to increase control.

First the courts allowed searches (except they're called officer safety frisks) based on "reasonable suspicion" (an absurdly low and vague hurdle created by Terry vs Ohio); now intelligence collected by agencies pursuant to foreign intelligence mandates is being used to improve detection and conviction rates for domestic crimes. And there's the beginning of mass surveillance of public spaces: cameras, radios, and modern technology enabling identification and location tracking of individuals, cars, cell phones...

It's an interesting political dynamic when everyone's fearful that they've broken some law and fearful that they've been detected but not yet arrested.

The politicians, most of them, want to rule, not serve. They want to accumulate power for themselves and their friends, at the expense of everyone else who is caught between increasing surveillance, stricter laws, and increased black market related criminal activity.

</comment></comment><comment><USER4> But I thought NSA data was only used for counter-terrorism efforts?

Turns out, that's bullshit. It's used by DEA, it's used by IRS -- soon it will be used by Obamacare.

<comment><USER2> Please spare us the "Obamacare" paranoia.

I agree that once data is available it _will_ be abused. But Obamacare one of the main problem? Dude, take off the tinfoil hat.

<comment><USER4> Just a reminder that the IRS will be enforcing Obamacare, and it's already in the news that the IRS was secretly using NSA data.

It would be the height of naiveté to believe the information wouldn't end up being abused. It's already being abused. Also, maybe you aren't in the USA so FYI, the IRS is currently in a scandal for abuse of authority, especially related to "tinfoil hat" organizations. (Those crazies apparently being, people who do not trust the IRS to handle their health care.)

<comment><USER2> Almost all civilized countries have public healthcare and they managed just fine without (ab)using data from intelligence services. Even in the US we already have Medicare and Medicate for large parts of the population and have seen no indication of any involvement of NSA/CIA/FBI. The idea is absurd.

</comment></comment></comment></comment><comment><USER5> I couldn't believe Obama said on his conference that "there have been no reported abuses of the spying in the media", even though the fact that NSA was giving info to DEA, IRA (and probably others) was just in the news 2 days before, and his DoJ even started investigating them.

What's worse is that he actually got away with it, and those "journalist" jokers at the White House that were laughing at his jokes didn't even ask him about it.

</comment><comment><USER6> The tenuous connections made in the 'drugs fund terrorism' PSAs a decade ago make so much sense now.

[http://www.youtube.com/watch?v=AVQnbNspHsk](http://www.youtube.com/watch?v=AVQnbNspHsk)

[http://www.youtube.com/watch?v=bFLFihL6JNk](http://www.youtube.com/watch?v=bFLFihL6JNk)

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


The character that swallowed a week - <AUTHOR> https://nibblestew.blogspot.com/2020/03/the-character-that-swallowed-week.html <comment><USER2> If one is going to reinvent SOM, one really should reinvent DirectToSOM C++ too.</comment>


Ask HN: Why is Mono still not widely used on Linux? - <AUTHOR> It seems as though one of the initial reasons for not embracing .Net on Linux i.e. ".Net is Microsoft and Microsoft is Evil", now apply to Java since Oracle took over. So why is .Net/mono still not being shown much love? <comment><USER2> Isn't Java still open source and isn't it a first a class citizen on Linux? In other words, you get the same Oracle JIT optimizations on Linux as you do on Windows and the Mac.

</comment><comment><USER3> Perhaps because Ximian is spending most of their time on mobile and their partnership with Microsoft? And because most .Net developers aren't huge fans of Linux perhaps?

<comment><AUTHOR> You're probably right but I think Ximian shifting their focus to mobile was probably because they needed a way to finance future development of mono after Novell was bought by Attachmate.

</comment></comment><comment><USER4> And it's just not, technically, particularly compelling either.

Also, not sure Java was any more or less evil when it was Sun. In either case the question is just one about which demographics the multi-million dollar marketing campaigns behind one technology or another have targeted. Had they decided Linux hackers were going to be their customers then I'm sure that demographic would be drinking the kool aid and wearing the t-shirts instead.

</comment><comment><USER5> I only see 2 use cases: 1\. already windows app port to Linux. 2\. want to deploy on iOS(apple tablets, maybe phone) and linux otherwise why not use java.

</comment><comment><USER6> Probably because it isn't an official port, there is no reason to learn .NET if you don't develop exclusively for Microsoft.

If you're developing for multiple platforms chances are you already use some other toolkit with platform specific bits mixed in, mono is only useful if you are a .NET developer and then decide you want to port apps.

</comment><comment><USER7> > It seems as though one of the initial reasons for not embracing .Net on > Linux i.e. ".Net is Microsoft and Microsoft is Evil", now apply to Java > since Oracle took over.

The initial reason for not embracing .NET on Linux is that the entity that created and maintains .NET doesn't support Linux as a first-class platform for .NET.

That remains the case.

Even the entity that maintains Mono, the almost-.NET that runs, among other places, on Linux, isn't really focussed on Linux any more, having moved on to mobile.

</comment><comment><USER8> Mono is widely used in games for Linux, for what it's worth. A lot of independent games have been written in the .NET XNA framework, and Mono has a Monogame component that allows developers to port these games to Linux relatively easily.

Between the Humble Bundles including a lot of Linux ports and the Linux Steam/Steam OS launch from Valve, there's a lot of these ports coming out right now.

</comment><comment><USER9> I would take the question the other way around.

Why would a .NET developer use linux in the first place?

<comment><USER10> I'm another .net developer, who loves linux. I have had daydreams of porting the software at work to mono, so we can have Mac and Linux versions, but it isn't going to happen.

When I use linux, I much prefer to use languages where linux is the "1st class" platform (and not Java or JRE based). Mono is improving all the time, but C# doesn't have the attraction for me outside of work.

<comment><USER11> You could try Qt, it gives you a pretty good experience on Linux, actually slightly better than on Windows IMHO. Also good support for Macs.

It's C++ though :-)

</comment></comment></comment><comment><USER12> Enterprises don't do Linux. Enterprises hate sysadmins (i.e. the guys who control everything that managers don't have a control of and no clue about).

Enterprises can afford Windows + support. Enterprises love [Azure] cloud.

Linux + Mono is a bit of a bait-and-switch candy from Ballmer.

<comment><USER13> This is an odd perspective to have. I'm fairly certain a large percentage of the Fortune 100 use linux (based on personal observation and experience).

<comment><USER14> off course they do.</comment></comment></comment>


Gmail gets desktop notifications (if you're a Chrome user) - <AUTHOR> http://thenextweb.com/google/2011/01/27/google-rolling-out-desktop-notifications-for-gmail-via-chrome/

<comment><USER2> Just noticed this update to gmail a few minutes ago. Looks like it's a webkit feature though, and only chrome specific for the time being.

Check some example code here: <http://www.210computing.com/google/chrome_notifications.html>

And the draft API here: [http://www.chromium.org/developers/design- documents/desktop-...](http://www.chromium.org/developers/design- documents/desktop-notifications/api-specification)

<comment><AUTHOR> Noticed that, as well. Interesting that the blog post from Google says that they are trying to make this a feature of the "standard Web platform."

[http://gmailblog.blogspot.com/2011/01/desktop- notifications-...](http://gmailblog.blogspot.com/2011/01/desktop- notifications-for-emails-and.html)

</comment></comment><comment><USER3> Interesting timing. tdfx just asked for this 8 hours ago. <http://news.ycombinator.com/item?id=2143881>

What powerful influence!

</comment><comment><USER4> They should have gone for growl integration on OS X, that's why I disabled it.

<comment> X-Istence Growl would have been infinitely better in that I can then set up what the notifications look like, how long they linger on my screen and the font size and whatnot.

Not sure why didn't go with Growl instead of rolling their own...

<comment><USER5> Growl is great for all the reasons you state, but Chrome doesn't use it because Growl doesn't allow HTML, and it would require us to ship Chrome with Growl for all the users who don't have it.

HTML notifications can be powerful because they allow you to include live content (video of the person attempting to video chat with you) and actions (e.g. archive, reply buttons) if you choose.

It's not inconceivable that someone could write something that suppressed and stripped the text out of a Chrome notification and presented it in a Growl notification.

</comment></comment></comment><comment><USER6> Does this work on Linux?

<comment><USER7> I haven't seen it on Gmail and Chrome 10.0.642.2 dev yet, but the underlying webkit does work on Ubuntu et al.

You can test the feature in Chrome here:

<http://slides.html5rocks.com/#notifications-api>

edit: Just got the permission banner in gmail now - works fine.</comment></comment>