'I'm gonna lose everything' - <AUTHOR> https://www.washingtonpost.com/nation/2019/11/09/im-gonna-lose-everything/ <comment><USER2> At first glance, this appears to be a story about the plight of the American farmer. It really isn't. The farmer in this story didn't start farming until 2014, taking over the operation from his father in 2016. When the farmer took his life, he had $300k in debt, but at 35, financial restoration wasn't out of reach.

There was a lot of debt and financial problems, but digging deeper, this is really a story about depression and mental health. A common theme throughout is advice from family and friends to pray more and put more faith in God. In the end, it wasn't enough. In my experiences in church, there's an utter disdain for the ideas of mental health being a real, and treatable, concern.

Even beyond the suicide, there's the continued theme. His widow makes less than $20k in a part-time job and no money doing Mary Kay or the like (they don't name the MLM), yet it's hinted that she doesn't know how she and the three kids will make it, but they are holding strong to their faith.

I never want to knock anyone's spiritual beliefs, as I feel they can provide a source of strength in times of darkness. But this article talks about some very practical issues, and it feels like these traditional Midwest values are very much a stumbling block for solving those issues.

<comment><USER3> So their traditional family values are at fault? I think in the US the economic system has changed and left a growing number of people behind. The rate of change is increasing and there is no real plan for how people are supposed to make enough income to support the average American family. We will probably see massive unrest during our lifetime if this continues.

<comment><USER2> The lack of identifying mental health problems and treating them properly are at fault. If your answer to depression and hardship is just to pray harder, that's a problem. Properly equipped, he could have lived to fight another day, and possibly make the changes needed in his farm's business model to turn the corner. Or maybe he'd declare bankruptcy, lose the farm, and go get a job selling cars or something.</comment></comment></comment>


Microsoft Out of Favor With Young, Hip Developers - <AUTHOR> http://developers.slashdot.org/story/10/07/06/2140253/Microsoft-Out-of-Favor-With-Young-Hip-Developers

<comment><AUTHOR> I'm not sure what it means to be a 'hip developers' but it was interesting to read this and think about my current startup. My co-founder and I have been .Net developers for a few years and when we decided to finally make the jump and work full-time on our startup we decided to use a Microsoft stack for almost everything. We love C# and the VisualStudio. It has definitely raise a few eyebrows with investors and advisors though.

I guess I should figure out at what point did Microsoft brainwash me or something. I write this comment wearing a Windows 7 shirt and I don't work for them or anything. But I wish I did.

</comment><comment><USER2> I have a favor to ask:

Can we please stop using the word 'hip' to describe anyone youthful who is in any capacity, aware of what's going on around them? It's getting as bad as the words 'hipster' and 'yuppie' and says about as much about the person as does the term 'rockstar'.

I don't know if 'hip' is anything you'd use to describe a computer science student, not that there's anything wrong with that.

<comment><AUTHOR> Maybe being a hip developer is like the 'cool kid' crowd from school. We do seem to poke fun and question people when they use X technology over Y because its not what the cool kids use.</comment></comment>


Atari 800 vs. Commodore 64 – The Brief Tale of Two 8-Bit Home Computers - <AUTHOR> https://paleotronic.com/2018/06/30/atari-800-vs-commodore-64-the-brief-tale-of-two-8-bit-home-computers/ <comment><USER3> A bit disappointing that the article doesn't go more into the technical details of the hardware and how the two designs differed, and how the Atari design influenced the 16-bit Commodore machines (the Amiga).

IMHO the 8-bit Ataris were a lot more innovative than the Commodore 8-bitters (including the C64), despite being a couple years earlier to market.

For instance the Atari display chip ANTIC was an actual co-processor, running a sequence of simple instruction via DMA to produce the display (very similar to the Amiga's copper).

The C64 (and other 8-bit machines) could only reprogram the display chip mid- frame by directly writing hardware registers with the CPU at the right time (often controlled by a raster interrupt).

The 8-bit Ataris were the actual predecessor to the Commodore Amiga (not surprising, because the same people who designed the Atari later designed the Amiga).

<comment><USER4> > IMHO the 8-bit Ataris were a lot more innovative than the Commodore > 8-bitters (including the C64), despite being a couple years earlier to > market. ... The 8-bit Ataris were the actual predecessor to the Commodore > Amiga (not surprising, because the same people who designed the Atari later > designed the Amiga).

Indeed. While the closest thing to a true successor to the Commodore 64 and 128 (ignoring the unreleased "Commodore 65") in the "16-bit" era was the Atari ST, which like the C64 was optimized for low cost.

<comment><USER5> Alan Tramiel, CEO of Commodore in the C64 days was CEO of Atari at the time of the ST.

<comment><USER6> I think it was Jack Tramiel? But the reference about him being the CEO in those two situations is interesting.

<comment><USER5> You are probably right. My memory of the 1980s is not perfect.

<comment><USER6> I only remembered because I read a book about Commodore a couple of years ago. At the time I had a C64, but had no idea who Jack Tramiel was :)

</comment></comment></comment></comment></comment></comment><comment><USER7> I had a Commodore 64 because the Atari 2600 promised a keyboard option to turn it into a computer. It never came to market. So I switched to Commodore who had a video game console with a keyboard and BASIC.

The Atari 800 was nice I heard, but there was a war between Commodore and Atari users on the BBSES.

The Atari 800 had more colors than the Commodore 64, but the SID chip on the Commodore 64 had better sounds, which attracted musicians to it.

Oddly enough management of Atari and Commodore switched and the Atari ST was the successor of the Commodore 64, but I had the Commodore Amiga 1000 that was designed by Jay Miner and other Atari engineers.

<comment><USER8> The story of how Jay Miner and the rest of very talented engineer crew actually ended up under Commodore is a whole essay and a half - needless to say, that wasn't what they had in mind when they started out at all! There's a fantastic series of articles on the subject: [https://arstechnica.com/series/history-of-the- amiga/](https://arstechnica.com/series/history-of-the-amiga/)

</comment></comment><comment><USER9> Here in Germany I knew basically no one who had an 8-bit Atari, it only became popular enough with the ST. And even then it led a bit of a pariah existence behind the Amiga, just like the Midgard RPG was behind the Dark Eye RPG (to keep with the 80s/90s nostalgia mood).

<comment><USER10> In Norway the Amiga vs ST wars felt quite real. :) The Former was by far the best, except for Midi of course - and as such it raged on. (I had the Vic20, C64, then Amigas).

For me it being in my mid 40s now it was the original religious tech war. Now we have Android Vs iPhone etc.

<comment><USER11> It was in the UK too - the worst part of which was the games that developed for ST, as the most limited platform, then ported to Amiga. So many Amiga versions were no better than the ST because of that, as it was obviously cheaper than supporting both platforms properly.

The two most impressive things about the ST were the late addition of midi, and that it was designed and launched in some absurdly short time - six months or less?? - which explains many of the compromises, and it getting Gem.

Having had Amiga snatched from under him, Jack Tramiel wanted a fast response to spoil their party. Tramiel who'd only left Commodore the previous year.

There's so many what-ifs to play with this timeline.

<comment><USER12> Well Atari and Commodore enthusiasts were already used to crippled ports through their experiences with Apple II ports with that awful aliased color palette. :)

</comment></comment></comment></comment><comment><USER13> I spent a week at a computer camp when I was 10 or so, and was exposed to the Atari 800 (and 400). To 10-year old me, they seemed far superior to my neighbors' C64 machines. My only clear memory is being blown away playing some kind of Star Wars based first-person game. For the day, the graphics seemed incredible.

<comment><USER14> Probably Star Raiders which was awesome for its time

<comment><USER13> Just looked that up -- I think you are right. It seems primitive now, but it was mind-blowing in 1980 or so..

</comment></comment></comment><comment><USER15> The Atari is referred to as "being built like a tank" due to the shielding, but when did this stop being an issue? Did the FCC relax its requirements, or did RF interference simply become less of a problem now that people aren't as reliant on antennas anymore?

<comment><USER16> It never stopped to be an issue, only today there are better ways to solve it, mainly multilayer boards with internal ground and power planes and generally better understanding of EMC.

</comment></comment><comment><USER17> Anecdotally in Canada the hackers who actually discovered how to code for the machines tended to be on Atari and C64 owners tended to be more consumer oriented. I started out thinking I'd get the ZX81 kit with my own money which got vetoed by my parents saying that was a toy and pitched in for an Atari 400 (with no storage). I'd alternate between writing a game playing it for a day or two, reset to the Asteroids cartridge, repeat.

</comment><comment><USER18> It would be nice if this website didn't block access from VPNs.

</comment><comment><USER19> On a side note, not related to the article...

...but during the same period Radio Shack attempted to compete with the C64 and Atari 8-bit machines with their TRS-80 Color Computer line; specifically the Color Computer 2 (the Color Computer 3 was a more worthy competitor, but since it had 128K and came into being at the tail end of the 1980s when things were transitioning to the PC and the 8-bit machines were "dying out" \- it doesn't really figure here).

[https://en.wikipedia.org/wiki/TRS-80_Color_Computer](https://en.wikipedia.org/wiki/TRS-80_Color_Computer)

The thing about the Color Computer 2 (this applied as well to a great extent with the 3), is that it was mostly a reference design by Motorola, and subsequently virtually all of the main component ICs were Motorola parts.

In this case, the CPU was the 8-bit 6809 (clocked at roughly 1 MHz - <USER2> there were ways to double this speed), and the "display chip" was the MC6847:

[http://www.cocopedia.com/wiki/index.php/6847](http://www.cocopedia.com/wiki/index.php/6847) [https://en.wikipedia.org/wiki/Motorola_6847](https://en.wikipedia.org/wiki/Motorola_6847)

As you can tell from the wikipedia article, it's capabilities were nowhere near that of the machines it was competing with. There was a way to get some weird modes called "semigraphics" via messing with another chip in the machine called the "SAM" chip, but they were rarely used.

In short - for everything the Color Computer 2 did, it relied almost entirely upon the speed and capabilities of the CPU itself! Graphics blitting, sound generation (there was no "sound chip" \- merely a 6-bit DAC - which was shared with other parts of the system as well), keyboard/joystick input - all went through the CPU.

It has been argued that the Motorola 6809 is a far superior CPU (in design and capabilities) than the CPUs used in the Atari or Commodore 8-bit machines (or the Apple IIe); in fact, many arcade and gambling machines of the era also used the 6809 (generally in multiples) over other offerings.

Where it fell down, though, was it's price. It was easily several times more expensive than other offerings from other manufacturers, which the other machines used (mainly variants of the MOS 6502).

I've often wondered what/why Tandy/Radio Shack took this route? Now originally, the Color Computer (well, the 6809 and 6847 combo) grew out of a "videotext" style terminal that was originally marketed toward farmers, with the idea of receiving up-to-date "almanac" and planning information via phone lines and the terminal. This was during the late 1970s/early 1980s. I can't recall what this device was called, but I recall it had a blue case, but looked identical to the Color Computer otherwise; it can be found in old Radio Shack catalogs now online, if you care to look.

Did Tandy/Radio Shack have some kind of exclusive license deal with Motorola, to only use Motorola or Tandy-designed parts for the machines? I don't think the SAM was a Motorola component (?); and later with the Color Computer 3 it had it's own custom chip (the GIME) too - but everything else was Motorola...

The price point of the CPU prevented them from putting multiple CPUs in the machine (I often wonder how things might have been different had there been a second 6809 CPU in the Color Computer to handle sound and/or graphics); but what prevented them from putting in a cheaper CPU (like the 6502?) or a sound chip (there were a few cheap ones out there made by TI and others)?

Instead - for additional sound capabilities, you had to purchase cartridge expansion - either third-party or from Radio Shack (the Speech/Sound Pak, or the Orchestra-90 Pak), as well as an expansion device (the Multi-Pak interface), especially if you already had a floppy disk system and/or modem/rs-232 pak. That upped the price considerably, and as a result, few did it, and so those sound options were not well supported in games or other applications.

Instead, the built-in sound was exploited as far as things could take it at the time (and more recently, even further). Later, to improve the graphics of the system with the release of the Color Computer 3, Tandy added the GIME chip, which basically took over the duties of the SAM chip and 6847, but only partially (semigraphics modes were not available - all other modes were, though); but it was a seemingly in-house designed chip, and they also had to have a third-party update the BASIC (that was originally provided by Microsoft) to support the new resolutions and colors enabled by that chip.

The company that did this was Microware, who had long supplied a multi-user multi-tasking OS for the 6809 called "OS-9"; they later produced a version for the Color Computer 3 called "OS-9 Level II" \- not that this should not be confused with OS9 for the Mac (totally different products).

Microware essentially hacked the BASIC. The original code was from Microsoft, but they had moved on and didn't want to do the updates to the code, so what Microware did was kinda ingenious - they had their ROM of "patches", and on bootup, they would copy the ROM code for the MS BASIC over into RAM, then overlay hooks to their ROM routines in the RAM copy, then run the modified RAM copy of the BASIC interpreter; this was called "all-RAM mode", and it was something that was long possible to do with the CoCo 2 (and was used in a similar manner by third-parties to extend commands in BASIC for their own products and extensions). Microware's only changes were being able to do it at boot time. Anyhow, they extended it and it worked (mostly) well enough.

But even at that late date (circa-1986) - Tandy had to go with a custom chip, and not anything third-party outside of Motorola (from what I recall, Motorola didn't have any display chips of a better spec for the 8-bit line; they had mainly moved on to their 16 bit 68K lineup). So what was preventing them? I honestly don't know...

Interestingly, some time in the early 2000s it came to light that Microware had probably the only (maybe outside of Tandy itself) "prototype" of the Color Computer 3 - it was a giant wire-wrapped board; it's most curious feature being that it lacks a GIME chip! This is especially important as there is no documentation/datasheet or internal information about how the GIME chip worked, outside of what was provided to programmers. In short, the GIME chip is an "unobtainable" component (there are two versions - one from 1986, the other from 1987, with minor "bug fixes"). It is hoped that this rare board might provide clues as to how the GIME chip was designed, but right now the board is a curiosity (I can't recall who it was given to, but it was given to that person by employees of Microware, which was still in business at the time, and may still be (?), who found it in a back closet or something like that).</comment>


Inside Anonymous: 'Topiary' talks hacking and life after LulzSec - <AUTHOR> http://thenextweb.com/insider/2013/10/22/inside-anonymous-former-topiary-jake-davis/ <comment><USER2> Who would have thought that defacing websites could get you arrested? What sort of world have we made when honest citizens aren't allowed to insert fake news stories about Tupac and Biggie Smalls living together in New Zealand into PBS' newsfeed? 1984! 1984!

Seriously, doofuses like Topiary give the legit hacking community a bad name and obfuscate genuine governmental and corporate abuse. They'd like to make this into a big call-to-arms message (and I can see an argument that his sentence was excessive), but the only real lesson I'm seeing is "don't do crimes, you'll go to jail."

<comment><USER3> There are many sides to the cracking community, and the nefarious side of it is just as "legit" as the law-abiding side. They've been at it just as long and many of them are just as skilled as their legal counterparts. Note that when I say "legit" I'm not condoning their actions, I just recognize that they are a part of our history, and that many of them are good at what they do.

Sure, there are things that Anonymous and Lulzsec have done that weren't very impressive (like the DDoS attacks) but at times both groups have pulled of some pretty impressive stuff.

Practical jokes conducted via technology have a long and storied history in the hacker community, its disingenuous to act like Lulzsec's continuation of this tradition somehow maligns everyone else's reputation.

Also, unless you can prove that he was just a mouthpiece, there isn't really any way that you can argue his sentence was excessive when he only spent 37 days in prison. Sabu became an FBI informant, and I bet that even with his deal, he's going to end up getting anywhere from several years to a few decades when he's finally sentenced.

<comment><USER4> Is worth remembering that it was the nefarious side who created the technology. Computers were initially invented for cracking and surveillance, everything else is just a bonus.

<comment><USER5> Don't forget weaving.

</comment></comment></comment></comment><comment><USER6> It's pretty cool to see him talking about his experiences now.

Shameless plug:My friend is choreographing a ballet that covers some of these events, and she's been able to talk a bit with Jake. Check out this great Daily Dot article on the project:

        http://www.dailydot.com/lifestyle/anonymous-ballet-director-interview/

</comment><comment><USER7> _Ultimately, Davis was denied bail because he was deemed to be more dangerous than nuclear warfare._

...

 _"The most interesting restriction at the moment is that I'm legally banned from communicating with anyone associated to, or formally associated to, Anonymous," says Davis. "But I guess the whole idea of Anonymous is that everyone is anonymous."_

Worth reading.

<comment><USER8> Huh. Some of the folks who were busted stateside had the condition that they were not permitted to _knowingly_ communicate or associate with Anonymous in their supervised release agreements. A small but important distinction, I suppose, if someone wants to get you to unwittingly break the terms.

</comment></comment><comment><USER9> Does this mean that Topiary has done a Frank Abagnale?

<comment><USER10> Almost certainly the case.</comment></comment>


How I slashed a SQL query's runtime with two Unix commands - <AUTHOR> https://www.spinellis.gr/blog/20180805/ <comment><USER3> The distinct on the date format is the problem, probably should use a separate query on each table to fill in the date output as a new column first, and then join afterwards.

Also wrong tool for the job comes to mind. MariaDB/MySQL are just not great at joins and query planning, and at this scale, especially with all the work involved to export and use unix tools, why not use any of the columnar data warehouses that can handle this much faster?

Export it to bigquery with CSVs and the query will probably finish in 30 seconds.

<comment><USER4> I highly recommend Clickhouse for this. It is blazing fast and can do over 100GB/s on a single modern machine if you have enough RAM. And it is very easy to install and configure.

<comment><USER3> > And it is very easy to install and configure

On a single node yea, unfortunately not beyond that. Really wish there was bigger focus on operational features, and a bigger community for a rather fantastic product.

<comment><USER5> This was my exact reaction to the OP's comment as well.

CH is an amazing piece of tech, but getting configuration just right on many nodes is quite complex, and all of the experts writing about how to do so are writing in Russian.

The documentation seems to be improving rapidly though.

</comment></comment></comment></comment><comment><USER6> I don't know mysql/mariaDB that well, but I know in ms sql server that doing a DISTINCT on a Function([Column]) would not use an index on [Column].

In this case it would be much faster to have an intermediate table or column with that statistic that could then be properly indexed.

<comment><USER7> It even has a name - SARGable - able to use an index on the [S]earch [ARG]uments but still easy to get tripped up.

[https://www.definitions.net/definition/sargable](https://www.definitions.net/definition/sargable)

[https://stackoverflow.com/questions/799584/what-makes-a- sql-...](https://stackoverflow.com/questions/799584/what-makes-a-sql- statement-sargable)

</comment></comment><comment><USER8> I'd like to see the runtime for the same query but (1) without 'distinct', (2) without the date formatting and (3) with an inner join.

<comment><USER9> My thoughts exactly.

The post references a StackExchange question [1] which has a simple analysis, and four helpful suggestions (similar to yours), as to which the author states:

 _" I tried the first suggestion, but the results weren't promising. As experimenting with each suggestion could easily take at least half a day, I proceeded with a way I knew would work efficiently and reliably"_

<comment><USER10> 1: [https://dba.stackexchange.com/questions/213983/can-i- speed-u...](https://dba.stackexchange.com/questions/213983/can-i-speed-up-a- large-mysql-mariadb-join-through-partitioning-or-merging)

</comment></comment></comment><comment><USER11> Am I missing something or is this blog post just someone discovering that ETL exists

<comment><USER12> Lots of "modern" blog posts seem like people rediscovering that X exists.

A consequence of many skipping on traditional learning processes and how developers are now also forced into castings and portfolios.

<comment><USER13> It's also a negative side-effect of the improvement of software and automation in this space.

In ye olden times, there would be an grumpy DBA in this story terminating the query and yelling at the user. Many, many people are consuming databases without understanding how to approach SQL optimization, because nobody is forcing them to!

<comment><USER14> There's a happy middle ground between what we have now and those DBAs playing hardass without even trying to understand the need.

<comment><USER15> > DBAs playing hardass without even trying to understand the need.

Although the parent posed a caricature with "yelling", this is an even more extreme one.

The "forcing" function merely requires a bit of "hardass" but not the willful ignorance you associate with it. At the risk of going true-scotsman, I believe that competent DBAs capable of the forcing function would already understand the need without trying.

As such, I don't think there needs to be any kind of "medium" between two extremes of ignorance, but, rather, back to the GP's point, a reduction of ignorance in "what we have now".

Of course, I don't believe hardass/yelling is the best way to achieve that, either, instead favoring (original) Devops culture, but that also doesn't work if Ops (including DBA) skills aren't recognized as valuable any more (and "Devops" just means "replace Ops with Devs").

</comment></comment></comment></comment></comment><comment><USER16> If you initiate the shell commands from inside the database, does it count as less hacky? :) [https://github.com/petere/plsh](https://github.com/petere/plsh)

<comment><USER17> Code beauty is subjective. If the next developer that inherits your code yells "WTF!" then incredulously tells all the other devs what you did, then it's hacky. Yes, invoking shell commands in a db would likely cause that.

</comment></comment><comment><USER18> I've run into situations like this where I was able to use a window function or a materialized view, to get huge speed gains. It basically was restructuring the tables into a new view, much like the shell script did in this case, and that view then could be optimized by the query planner much more effectively.

One was with an internal database we used for tracking employee time and generating invoices and reports. I forget the exact details but this technique took it down from an hour to a second, or similar.

Another time was more recently in an interview, using the mysql employee sample database. I had a naive query that did most of what was needed, but after quite a bit more work I was able to make a materialized view that caused the query to go from using 64+GB of RAM and dying from OOM after 4 hours, to running in 45 minutes in 2GB of RAM.

It usually takes me hours and hours to put together though. Because I do it so infrequently.

</comment><comment><USER19> Isn't the Unix join essentially doing an inner join? Why is the original SQL doing a left join while the text processing with Unix join is doing an inner join?

Yes, the left join will scan the whole table. Left join means to return all the rows from the left hand side table. It won't use the index.

Inner join with index is way faster than left join.

</comment><comment><USER20> If you find you're exporting and running via `uniq` or the like, `create temporary table as` is probably what you want. If you think about it, it's essentially what you're doing, without the additional filesystem involvement.

The optimizer _should_ be handling this for you, though for very large datasets, constructing a new table from a query essentially avoids the locking issues you might otherwise run into.

</comment><comment><USER21> I'd also like to see a breakdown of the time taken to complete the project.

RAM is cheap and jumping from 16GB to 64GB (or even 128GB) might have cost as much as the analysis time.

The only clue to that a memory upgrade might have been a quicker fix was that the merged file was 133G. Seems to me that an upgrade to 128GB of RAM might have led to a dramatically shorter query execution time.

<comment><USER22> If you need to add hardware to solve a software optimization problem such as this, you've failed your job as a software engineer (if you should even be called an engineer, neigh, a developer).

I'll probably get downvoted for this, but you should should examine opportunities to optimize your SQL/other storage patterns before you assume anything else if your indicators are your DB is slow.

<comment><USER15> > If you need to add hardware to solve a software optimization problem such as > this, you've failed your job as a software engineer

That's an interestingly narrow viewpoint with which I, narrowly, agree.

I suspect that the narrow viewpoint is just a form of the aphorism "if all you have is a hammer, everything looks like a nail."

> if you should even be called an engineer (if you should even be called an > engineer, neigh, a developer)

However, in the broader context of engineering as problem solving (or developing a _product_ ), I disagree.

Not all (computer) problems are best solved with software.

As a sysadmin (who can code but doesn't love to), I routinely struggle with managers who don't have an intuitive sense of even a first approximation of what modern hardware is capable of, because their entire background is programming.

The fact that (latency) "numbers every programmer should know" exists (and has for quite some time) is fairly telling. What's more telling is that there are no dollar values attached to any of them.

</comment></comment></comment><comment><USER23> I think the date_format call forces a table scan, the query could be rewritten to be much faster. Optimizing the sql statement seems less error prone than extracting the data to text files.

<comment><USER24> There's no predicate or limit or inner join that could reduce the set of rows, so the table might as well be scanned.

<comment><USER23> Or precompute the date on insert, there are a dozen ways to refactor the data model and the query, all of which are better than extracting to txt files, a format with no schema and not based on a standard. That would be the direction I would give if a junior dev was attempting this method.

</comment></comment></comment><comment><USER25> There is some more information in this reddit thread

[https://www.reddit.com/r/programming/comments/94r6w6/how_i_s...](https://www.reddit.com/r/programming/comments/94r6w6/how_i_slashed_a_sql_query_runtime_from_380_hours/)

</comment><comment><USER26> As far as I understand, 'project_commits' and 'commits' have one-by-one relationship (project_commits.commit_id = commits.id). From my point of view it is a strange design since they could just add 'project_id' column into 'commits' table. 'project_commits' table seems to be redundant here.

I'd write this query:

        select pc.project_id, date_format(c.created_at, '%x%v1'), count(*)
        from commits c
            join project_commits pc
                on c.id = pc.commit_id
        group by pc.project_id, date_format(c.created_at, '%x%v1')

And I'd use left join only at the stage when it is needed to join 'projects' dictionary with the result of the query.

</comment><comment><USER27> Am I missing something fundamental like a WHERE clause? I see a join, but no limiting of rows beyond that.

<comment><USER28> I think they just wanted all of the data.

<comment><USER27> Is there an actual schema and does MariaDB do index scans?

</comment></comment></comment><comment><USER29> MariaDB can do sort/merge joins. It's rare that you want to force one, but you can. That's what IGNORE INDEX is for.

If you're testing, take a sample of the database and test on that.

First try the simple form:

        explain
        select
          project_commits.project_id,
          date_format(commits.created_at, '%x%v1') as week_commit
          from commits, project_commits
          where project_commits.commit_id = commits.id;

That ought to call for a sort and merge.

</comment><comment><USER30> The query is simply very badly written. Who makes a left join of a 5b rows table to a smaller table and at the same time expects a distinct from the "left" table??? If the distinct is important to solve the problem without expecting the join to return "true" then why have a join at first place???

</comment><comment><USER31> I once had a huge performance problem for a simple self-join that I expected would run quickly.

I talked to our resident SQL expert (retired from IBM, now doing a job as the lab administrative assistant). She suggested sorting the data before inserting it.

That sped up the query.

it still bother me that data order matters so much. But, I can't reproduce the problem in MySQL any more anyway.

<comment><USER32> I guess you were missing an index, as data order should only matter when doing full scans.

<comment><USER31> this was a full self-join (SELECT * FROM blah a, JOIN blah b WHERE a.id = b.id). I ran strace on it, for each a item, it was doing a seek to each b row and reading a whole page. By pre-sorting, I increased locality.

<comment><USER33> MySQL only supported "nested loop" joins in 5.5 and below. Hash and merge joins were introduced in 5.6.

Depending on when you originally did the query, maybe you were using 5.5 or below, which would explain why you now can't reprodce it?

<comment><USER31> It's very possible. I was running the query ~14 years ago and it wouldn't surprise me if any number of improved condition pushdown mechanisms were implemented.

</comment></comment></comment></comment></comment><comment><USER34> After reading the post, and considering the time of export/import the data, I think will be better to denormalize the data (ie:precalculate the result).

I have something like in the near past, but with much heavy calculations. Denormalizing using triggers turn query that take minutes in less 1 second.

</comment><comment><USER35> How long does it take to run the distinct on its own? I'd be interested to know what happens if the distinct is in a sub query then the result is joined with the commits table

Ensure project_commits.project_id is in an index before running the test

<comment><USER35> Sorry disregard, I mis-read the query

</comment></comment><comment><USER36> The question im interested in is why MySQL did not use the index for the lookup.

<comment><USER37> Not sure if MySQL is the same but Postgres won't use an index if the statistics suggest doing so will be slower than a full table scan - <USER2> expect MySQL to be similar.

With 5bn+ rows and a memory constraint, the type of index begins to make a difference - e.g. in Postgres I would have tried using a bloom index.

<comment><USER27> It can be very frustrating that, even with updated statistics, the optimizer decides to go a different way with a query. While using Sybase, this happened quite a lot when tables got rather large (corporation large not Google large). The normal response is to force the indexes on the query. Due to log space issues, I do remember having an awk script between queries back in the Ingres days.

</comment></comment></comment><comment><USER38> Naive question: are your tables partitioned?

</comment><comment><USER39> TLDR: author doesn't know how to use database indexes properly.

<comment><USER40> Possibly. The author at least knew enough to observe "Both join fields are indexed. However, MariaDB implements the join with a full scan of project_commits and an index lookup on commits."

<comment><USER41> That may have actually been a result of the ordering and poor query design.

Given that commits.id is a primary key, IIRC, it must also be NOT NULL; thus the LEFT JOIN is uselessly equivalent to an inner join; which most database engines seem to prefer expressed as a WHERE clause (since it's more trivial to re-order those operations).

Were it an 'inner join' equivalent where clause or the smaller table specified first, at least the full-table scan should have been on the smaller table.

Your database storage engine of choice might differ or have other options (E.G. in PostgreSQL an index on the result of comparing the two source keys COULD be created and a carefully structured query written to use /that/... I think, I haven't tested it but it'd at least be worth the experiment.)

MySQL (mariadb presumably?) can't. [https://stackoverflow.com/questions/8509026/is-cross- table-i...](https://stackoverflow.com/questions/8509026/is-cross-table- indexing-possible)</comment></comment></comment>


What it's like to be struck by lightning - <AUTHOR> https://mosaicscience.com/story/what-its-be-struck-lightning <comment><USER3> As an aside, as trivia ...

It may interest HN readers to learn (it interested me) that if you are standing near downed power lines (for instance, your car crashed into a pole and it fell, or a storm, whatever) you need to _jump away_ from those downed power lines.

You need to stay in one fixed place and then jump, up in the air, to the next place, and continue to "bunny hop" away from the downed power lines.

The reason is, depending on the amount of moisture in the earth, or cracks in the asphalt, or dirt, or water or whatever, it is possible for there to be a spot where there is more resistance in the ground _between your two feet_ than there is in your two legs and so (if you are walking) the electricity will arc out of the ground, up one leg and then down the other.

<comment><USER4> When bunny hopping does the distance between your feet matter? i.e. Is it better to keep your feet closer to one another as you do it?

<comment><USER5> Being able to move while keeping your feet as adjacent as possible is the entire reason to bunny hop in this situation.

</comment></comment></comment><comment><USER6> I was struck by lighting in Italy 2.5 years ago. Happy to answer any questions. For background: We were observing and photographing a lightning storm from the upper slopes of Mt Etna in Italy. We were pulled off from the side of the road with several other cars around. Blue sky and no wind - <USER2> storm was still far away. There were families with kids and it was a breathtaking scene. I had my 7d mark i on bulb setting to capture the distant lightening, with only my right index finger on the shutter release. I don't remember much more than waking up, paralyzed down the right side of my body. I had an, at the time terrifying but also beautiful fractal burn mark down the right side of my chest. 12h of emergency services followed. The other person struck that day was in the morgue. It turned out to have been the biggest storm in 50 years. I got very lucky and have no side effects to date.

</comment><comment><USER7> Had a "run-in" with lightning a few years ago: while walking to the grocery store with an umbrella, heard what sounded like an explosion (my ears rang for the rest of that day) and was nearly blinded by the bright light, but managed to see a big spark between my thumb and the metal part of the umbrella, and feel a slight jolt of electricity. So, in all probability, the lightning hit a nearby house, and via the lightning rod it all went into the ground and through me (partially)?

No burns, no real damage done to me or the umbrella, but I was really shook up.

</comment><comment><USER8> Yikes. I'm not sure which is more scary -- the hole over the chest or the burnt underwear!

<comment><USER9> Definitely the underwear.

</comment></comment><comment><USER10> That article is very difficult to skim :(</comment>


From Westworld to Best World for the Internet of Things - <AUTHOR> https://www.nytimes.com/2018/06/03/opinion/westworld-internet-of-things.html <comment><AUTHOR> There's reason to worry about security for the ever-growing Internet of Things, and it'll be tempting, but wrong, to encourage vendors to solely control their devices that much more, limiting interoperability or tinkering. There are alternatives — models for maintaining firmware patches for orphaned devices, and a 'Faraday mode' so that iffy devices can still at least partially function even if they're not able to remain safely online. Procrastination around security has played a big role in its success. But 'later' shouldn't mean 'never' for the IoT.</comment>


My experiment gone startup... - <AUTHOR> http://www.devgrow.com/ <comment><USER2> Nice look, though my first thought was, "Oh, it's just News.YC with a sweet logo." Has some cool features that News.YC doesn't, but also seems a bit too complicated. Do you intend to compete with News.YC, or try to gather a different user base, or none of the above?

<comment><AUTHOR> Well, I'd like to gather a similar user base to sites like GoBigNetwork (.com) and Vator.tv, while encouraging the great discussions had at places like news.yc and Reddit.

Just a place to showcase your companies, write about any of your experiences and have thoughtful discussions.

Which features do you think are somewhat complicated? I know I started off with a lot of features (which may not have been too wise), but I tried to keep it as simple as possible.

That said, I am very, very open to suggestions and will mold the site around the community, not the other way around.

<comment><USER2> I guess it just seemed like quite a lot was going on right on the home page -- too much for me to get my head around all at once. It's possible you're trying to achieve too much: discussions/comments like News.YC, longer articles, featured member pages, job openings, generic wiki, etc. Perhaps not; maybe just simplifying the home page a bit would help my perception.

</comment></comment></comment><comment><AUTHOR> I started this off 1.5 months ago as a project to work on while I learn Ruby on Rails. I think it turned out decently, so I've decided to share it with the world.

Use the invite code "yconvicts" to register. :) Please let me know what you think, I would love some feedback!!

Also be sure to check your spam filters to see if the activation email got caught, I'm still working on that issue (pointers would be appreciated!). Thanks! =)

<comment><USER3> Do you have spf records for your domain set up optimally? It looks like you have 'v=spf1 mx ~all'. You could switch the ~all to -all and turn the soft fail into a hard fail.

<comment><AUTHOR> Thanks, I've changed the SPF records like you suggested. I'm using my other server as the mail server since I was having some weird issues with the one at DevGrow.

Whenever I would send an email from the DevGrow mail server, it would go straight to spam in Hotmail/MSN. In Gmail, it would go to the inbox unless the body of the email had my domain name in it, which essentially meant all useful emails would go to the spam filter.

I haven't figured out why that is happening or how to fix it, so I've temporarily resorted to using my other mail server. I'm using SoftLayer for hosting if you're curious, but their support seems to be taking a vacation (maybe just from my question?).

<comment><USER4> Nice first RoR app. =) Mine was much less slick.

</comment></comment></comment></comment><comment><USER5> While making a cursory clickthrough to your site, the first thing I noticed was that higher-than-default font sizes flows outside the divs and disappear. I have seen this on several sites (even some large ones), but that doesn't change the fact that it's a bit bothersome. I just wanted to let you know in case you weren't aware of the issue.

</comment><comment><USER6> Just curious, how do you plan on sustaining it?

I realize not everything has to be a business. It would be great if people just provided us with things for free out of their own charity, but not everyone can do that forever...

<comment><AUTHOR> I'm hoping to get support the site with advertising and sponsors, preferably from startups and from VCs. It's not a YouTube-like site where I'm expecting multi-million pageviews a day, but I think building a small yet strong community of entrepreneurs and VCs may be an attractive place for either of these groups to advertise in.

Edit: I'm not trying to break anyones bank or wallet here, if the community can be built up, I would just like to keep it self-sustaining, meaning paying for the dedicated server. Like I said, this was just an experiment - I am working on another project I hope to release as my primary source of income.

<comment><USER6> The trouble with getting VCs to advertise is that their preferred way to generate deal flow is through trusted relationships. It would be difficult to do this purely through advertising (and it costs them less to just use word of mouth, not that they are tight on the money these days...).

Getting startups to advertise isn't very logical either because most of the time the target audience isn't the so-called TechCrunch 50K (unless they are advertising a job opening, but again, this is more often that not fulfilled through word of mouth and personal recommendations).

This is an unfortunate reality of the way the world works (although arguably word of mouth is a lot more effective in some cases).

Honestly, I think you're best chance at monetization is advertising for companies that provide the proverbial "picks and shovels" to startups--cut a deal with a hosting company, a domain registrar, The Company Corporation (to register as an LLC or C/S-Corp). Perhaps you'd have better luck getting some lawyers that deal with this stuff to advertise on there. (Think about this: you know who all the big VCs are, but do you know any good lawyers?) There are few other types of services that fall into this category. It would be neat to let people rate their experiences with different service providers.

</comment></comment></comment><comment><USER7> Um, did Dan Cederholm <http://simplebits.com> design this? Because if not, well, you stole his design <http://corkd.com/> bud.

<comment><AUTHOR> Cork'd was definitely a lot of inspiration, but how did I steal his design? The color scheme is straight from <http://kuler.adobe.com/> (under popular) and while I totally stole his idea of the character in the welcome box and search bar placement, the layout is different in all other respects. I took ideas from lots of places, including the Expression Engine site - and the logo is simply a modification of a free Illustrator icon from Komodo Design. :)

Anyways, I did send him an email to show him the site and make sure he's personally OK with it, but haven't heard back yet. It was more of a courtesy than anything else for using the similar character + welcome box combo.

<comment><USER7> Your design -- original (though still same family of shades, etc.) colorscheme or not -- is just too similar. It's obvious you started with his design and built on top of it. Same width, same logo position, same search box, same zebra-striped tables, etc. And those similarities are exacerbated by the use of the illustration and the checkmark icons.

<comment><AUTHOR> While I'm guessing Dan would most likely be OK with the design, if you think of it this way than I'm guessing lots of others will too. I'm changing a lot of the front page layouts around - I definitely don't want that impression to be the popular one.

Thanks for your input, I very much appreciate it. Check back a little later and let me know what you think. I'm keeping the color choice though, that was the first thing I picked when I decided to make the site.</comment></comment></comment></comment>


Ask HN: What is the best way to understand Pointers and memory organization in C? - <AUTHOR>

ASK HN: What is the best way to understand Pointers and memory organization in C? <comment><USER2> Read K&R, a large part of the book is given over to writing a simple allocator. There really isn't an awful lot to understand if you're treating the hardware as a black box.

</comment><comment><USER3> Learn assembly language.

<comment><USER4> May I humbly suggest choosing Redcode as your first assembly language. It's easy to learn and gives you something to do in the Core Wars.</comment></comment>


The Imprisoner's Dilemma - <AUTHOR> https://www.bloomberg.com/news/features/2020-07-22/as-virus-surges-so-do-calls-to-release-prisoners <comment><USER2> The cynic in me assumes that state governments are using this crisis as an opportunity to lower expenditures because of looming budget crises. Releasing tens of thousands of prisoners without sufficient support into a flailing economy is setting them up for failure.

<comment><USER3> Unfortunately "adequate support to help people reintegrate so going back to crime isn't their best option" looks a lot like "rewarding criminals" to a good portion of the electorate. Maybe in part because social services in general are so bad that anything at all looks like a lot of aid.

Dunno if it's still the case but I at one point a tax guy asked me if I'd been convicted of (IIRC) any drug offenses because if I had I'd have been ineligible for certain education-related tax assistance. Dafuq? Yes let's make it _even harder_ for people to do something other than dealing drugs, when they get out. That makes a ton of sense.

<comment><USER4> I recently tried to buy travel insurance. I had to check a box that I'd never been suspected of criminal activities, _even if I was found to not be guilty_ (!), otherwise I wouldn't have been allowed to buy the insurance.

This was in the Netherlands, btw.

<comment><USER5> Hi Vinnl! I hereby inform you that I suspect you have committed a crime at some point.

Congratulations you are now ineligible >:]

<comment><USER6> The ultimate free lunch in insurance.

</comment></comment></comment></comment></comment><comment><USER7> How about we legalize the drugs, because the drug war has helped exactly no one, and release everyone convicted of a non-violent drug offense, AND wipe the conviction from their record and offer them free educational assistance? That would be a start, would probably get rid of half the prison population, and would prevent a whole lot of future arrests, and would defund the gangs.

<comment><USER8> I always said if Walmart/Amazon could sell Pot, crime would be cut in half. The point is that "illegal" drugs still have people who want them, thus economically someone will provide, and getting arrested is part of the cost, and killing rivals part of the business. But if buying/selling/using is legal, then supply goes to the whoever can do it the easiest/cheapest, which is usually regular retailers. Thus arrests for these now legal drugs (like Nicotine and Alcohol are) are limited to misuse (like DWI) and police can focus on regular crime. Also enforcement of rules (don't sell to minors etc.) can be managed easier since it's the retailers that are being managed.

<comment><USER9> I'm a long-time fan of legalizing drugs, but it's not entirely an easy problem to solve.

Eliminating the black market is good. Having huge corporations pushing drugs is maybe not so good, or at least we should think through the consequences.

<comment><USER10> Exactly, we'd want to model it on successful systems. Like having drugs dispensed at government facilities where users were offered counseling and rehab, and an area specifically for getting high. We don't want there to be tv advertisements for heroin or meth targeting kids (or anyone).

<comment><USER11> > Like having drugs dispensed at government facilities where users were > offered counseling and rehab, and an area specifically for getting high.

I've read that this approach has been pretty successful where it's been tried. the theory is that doing it in a controlled environment removes a lot of the "fun" for the users so more of them eventually quit. additionally, it makes the use of hard drugs less visible, so fewer people end up picking up the habit.

I have to suspect that there's a point where you introduce too much friction though. if it's too annoying to go to the government facility, it might become tempting to just buy illegally. for instance, there is still a market for bootleg cigarettes even though anyone 18/21 or older can buy them at any gas station or convenience store. for some people it's worth buying them illegally to either evade the tax or purchase less than a full pack at once. I've also heard from my friends in CA that there is still a thriving illicit weed market for similar reasons.

</comment></comment></comment></comment></comment><comment><USER12> [https://archive.is/YkuAp](https://archive.is/YkuAp)

</comment><comment><USER13> The people advocating to release ~1 million violent criminals are least likely to suffer at their hands. Hand on heart, nobody wants to leave next to a convicted murderer or drug dealer.

Mass incarceration is a symptom, abolishing it is not a cure.

<comment><USER14> Drug dealer? Seriously? You mean those people who happened to sell a couple joints worth of marijuana to a friend while black? Or those who just happened to possess a bit too much to be considered "for personal use"?

<comment><USER15> Both you and the grandparent are making sweeping generalizations; as with everything, there's various gradations in a crime and it's not a boolean equation.

That said, I do agree that there's a large amount of people in prison that shouldn't be there, and the US prison system ensures people stay or return to prison later on.

<comment><USER14> I should probably have been clearer, but that was my point--the fact that "drug dealer" is too broad a concept. Even though some dealers are definitely career criminals, and some might _also_ commit violent crimes, lumping a large majority of them in the same category as _murderers_ is what got you (and other countries to varying degrees) into the whole mess in the first place. It is rhetoric only meant to scare people and shut down thinking.</comment></comment></comment></comment>


Dreamhost down yet again - <AUTHOR> http://www.dreamhoststatus.com/2012/03/23/connectivity-issues-with-one-of-our-datacenters/

<comment><USER2> Looks like bits and pieces are coming back up. We can access FTP/SSH accounts now (berbils).</comment>


Ask HN: What are some of the bad decisions you have made? - <AUTHOR> Just curious, what are some of the bad decisions you have made?<p>In retrospect, what would you have done differently? <comment><USER2> Striving to get promoted to management. The result has been minor salary gains, while my soul orbits a black hole.

Attempting to "downgrade" will take a while because pandemic.</comment>


How Fwix Sets an Example For the Future of Journalism - <AUTHOR> http://www.jamtoday.org/post/179131427/how-fwix-sets-an-example-for-the-future-of-journalism <comment><USER2> I appreciate that Fwix using geotargeting to dynamically display its homepage.</comment>


One Less Password - <AUTHOR> https://blog.webmaker.org/one-less-password

<comment><USER2> Novel approach to login without passwords or social sign-on.</comment>


Something in space that looks like it could have been made by aliens - <AUTHOR> http://www.businessinsider.com/astronomers-have-found-a-mysterious-alien-object-near-a-distant-star-2015-10 <comment><USER2> Phil Plait has a nice (and humorous) summary which is also linked in the article.

[http://www.slate.com/blogs/bad_astronomy/2015/10/14/weird_st...](http://www.slate.com/blogs/bad_astronomy/2015/10/14/weird_star_strange_dips_in_brightness_are_a_bit_baffling.html)

</comment><comment><USER3> What about enormous sunspots or some type of variable star - why is there no mention of this as a possibility?</comment>


Walkers don Google cameras to map 2,500 miles of ancient trails - <AUTHOR> http://www.theguardian.com/uk-news/2016/mar/05/google-street-view-england-wales-national-trails <comment><USER2> Meanwhile, as you wait for Google to do the walking, and stitching and to keep the images and rights to themselves you and your friends can grab Mapillary on your phones, do it yourself and get the photos as CC-By-SA for use elsewhere and use the photos for mapping within OpenStreetMap.

<comment><USER3> Came to post about Mapillary, happily surprised to see someone else post about it first :)

</comment></comment><comment><USER4> 55Kg for the spherical capture rig? Google needs to get GoPro to re-engineer that thing.

<comment><USER5> I think you might have gone the wrong way in the units conversion. It's around 40 lbs (~20 kg) rather than 55 kg (~120 lbs). This still seems heavier than it would need to be, but not as absurd. Here's more details about it: [http://www.techinsider.io/google-street-view-trekker- snaps-h...](http://www.techinsider.io/google-street-view-trekker-snaps-hard- to-get-photos-2015-8)</comment></comment>


Ask HN: are non-compete agreements just for suckers? - <AUTHOR>

I hear of a lot of people who are asked to sign non-compete agreements successfully requesting to have them taken out without too much argument.  Is this a common thing?  Are there that many companies out there that will put them in the contract hoping that employees won't notice? <comment><USER3> In the very few places that I've had to deal with a non-compete agreement, I've always been able to get amendments made to the contract that limits the specificity to a more acceptable level. Companies just want to try to protect their property as much as possible.

The conventional wisdom appears to be that non-compete agreements are largely unenforceable, however I'd be careful in using that assumption: No company wants to deal with someone if they feel that person has no regard for contractual agreements to begin with.

<comment><USER4> The enforceability of a non-compete depends solely on the state involved.

States like OH and TX will enforce them vigorously (OH is so bad that I would never move to that state, nor work there). States like CA will reject them (except for sale of businesses). This is why MS fought tooth and nail for the jurisdiction of the folks who quit to work for Google to be in WA (MS' home) - where they are mostly enforceable vs CA (Google's home) - where they are not worth the paper they are written on.

If it weren't so difficult to get a ballot initiative going (I ran for election last year, and I had to learn a lot about what it takes to get on the ballot and also getting elected - which I didn't get), this is one of my pet peeves. I'd write it so that if you want to enforce a non-compete against a CO resident, then you pay their salary for the duration of the non-compete - <USER2> if the non-compete requires jurisdiction elsewhere.

<comment><AUTHOR> Actually, that's not necessarily the case in Texas. Enforcement is growing stronger, but Texas courts are traditionally pretty reluctant to enforce non- compete agreements.

Nowadays, they are enforceable, but there are lots of restrictions: <http://www.hersh-law.com/lawyer-attorney-1078665.html>

It's a bit surprising, but Texas can be a rather employee and consumer- friendly state in a lot of respects. Granted, it's a pretty backwards state in most other respects.

</comment></comment></comment><comment><USER5> They're the norm in tech companies. I don't think they're really necessary for most employees. But few investors would invest in a startup whose founders hadn't signed noncompetes. Otherwise they'd be investing in air. All the founders could leave and start a new company doing the same thing.

<comment><USER6> Yup, this is exactly it. When shopping the company to investors or as a potential acquisition, Non-Compete/NDAs are an item on the due diligence checklist.

</comment></comment><comment><USER7> In my experience (IANAL etc.): If you're being hired solely for your expertise &/or experience, there should not be a non-compete clause in your contract. If you are expecting to some extent to be trained in an emerging field then a non-compete clause _may_ be justified. Juristiction plays it's part too - I've 'agreed' to such a clause in the past knowing that it was unenforcable as restraint-of-trade under EU legislation.

</comment><comment><USER8> As far as I know, they're not enforceable (at least not in Canada). I would take it as a warning sign that the company has some d*ckhead lawyers running around without adult supervision.

<comment><AUTHOR> In the best case scenario, that sounds like the case. Worst case scenario: they're trying to scare you into staying with them for longer than you would normally. And _that_ IMO makes them scum.

</comment></comment><comment><USER9> I've had every one of my employment or contracting agreements changed. I usually don't strike them completely, I usually modify them to something limited and reasonable. I won't steal inside info. I won't go to work for one of the clients whose project I worked on, etc... Never had a problem as long as I was willing to stand my ground.

</comment><comment><USER10> It doesn't seem like that big of a deal to me.

I had to sign one for my job this summer (small tech consulting firm that's now doing a couple products and less consulting), but it was pretty limited. It just said that I wouldn't work in the couple of pretty-specific fields that my company's products are in for the next year.

One nice thing about the one they gave me was that they had a clause saying that it did not in any way prevent me from using the programming knowledge that I'm gaining, just the specific knowledge about the fields the products are in.

Now, I wouldn't be comfortable of signing one much longer than a year. A lot can change in say, 5 years. But 1 year so that you can't steal their ideas or have an unfair advantage in competing with them because you know their plans is fairly reasonable.

</comment><comment><USER11> Here's a good article:

<http://mixergy.com/why-i-wont-sign-your-nda/>

While I know a non-compete isn't an NDA, the reasons outlined in the article make a lot of sense and could be applied to reasons to not sign a non-compete. Particularly:

 _Reason #1: It puts all the obligation on me and none on you_

H&R Block is infamous for attempting to bust people for breaking non-compete agreements. Yet, it has been in the news recently that H&R Block is being investigated for their practices in forcing employees to sign non-competes.

<comment><AUTHOR> Interesting. I recall reading that Google, MS, and Apple were in hot water over that kind of thing. But I didn't realize H&R Block was in trouble too!

</comment></comment><comment><USER12> They are difficult to enforce in many jurisdictions; and to be enforceable at all they usually have to be limited in scope. That said, yes, they are for suckers, it's a sucker move to ask for one, and a sucker move to accept one.

</comment><comment><USER13> In some states, Calif included, they are practically unenforceable (except for perhaps the sale of a business).

</comment><comment><USER14> They are mostly unenforceable here in Australia but I've still seen them in a few contracts and never agree to them. Far more common are clauses that prohibit overt poaching of clients or staff to a new venture which is more reasonable IMHO.

</comment><comment><USER15> I don't think they're enforceable in CA.

</comment><comment><USER16> I think NDA is for Paranoids.

<comment><AUTHOR> I think you mean non-compete agreement instead of NDA? They _are_ two different things. :-)</comment></comment>


Book on Haskell? - <AUTHOR>

I was thinking of diving into Haskell soon, and was wondering, any suggestions for good books/tutorials out there? I am relatively new to FP, and looked on Amazon for some good books, and there seems to be three contenders
1.Programming in Haskell
2.The Haskell School of Expression: Learning Functional Programming through Multimedia 3. Haskell: The Craft of Functional Programming
Any thoughts/words of advice? <comment><USER2> The School of Expression book is pretty nice and the only one I've had serious experience with, I'd definitely suggest taking a look at it.

One thing about the Haskell community that is a breath of cool, minty and decidedly fresh air is that #haskell is actually a great channel to hang out in and ask questions. They have a very powerful bot, Lambdabot, there which helps with examples and manual searching and the people are generally extraordinarily patient and helpful.

I'd say that once you get through the basics, heading to IRC to ask some more complex questions is not a bad idea. Prepare to have your mind blown, though, as topics that roam there can be pretty heady sometimes.

</comment><comment><USER3> There's a new Haskell book coming written by well known people in the Haskell community: Real World Haskell (<http://www.realworldhaskell.org/>). I would advice to read a few tutorials on the net first to get a feeling of the language. Download GHC and experiment with GHCi. When you hit a roadblock (which definitely will come because functional programming is different) leave it for some time and do other programming and perhaps think about how you would do it in a functional language. Just take small steps.

</comment><comment><USER4> I've been trying to get through SOE and The Craft of Functional Programming. Neither is remarkably helpful to me for learning the language.

They both make confusing (to me, at least) use of math symbols when showing what I think are code examples; they use poor typography to delineate code examples from abstract snippets; and do not seem to give much detail on editing, loading, and running code.

In fact, The Craft of Functional Programming has an appendix that shows the mapping of math glyphs to what you will actually type when editing code, and then uses the math glyphs in the code examples. Perhaps someone with some Haskell chops can explain this; it was yet another WTF experience for me.

The tutorials that I've found most helpful are "Write Yourself a Scheme in 48 Hours" and the one on Lisperati (<http://lisperati.com/haskell/>).

Perhaps the two books I have will make more sense once I get more familiar with the basic mechanics of written and running simple, useful apps. Craft of Functional Programming actual has been helpful in explaining some of the underlying nuts and bolts, but I learn much better when I have some basic, complete code I can experiment with.

In the end, I expect that I'll learn Haskell by writing my own tutorial.

</comment><comment><USER5> I've been working through Yet Another Haskell Tutorial. It's the best that I've found so far. Here's the link:

<http://www.cs.utah.edu/~hal/htut/>

<comment><AUTHOR> Ah! Yes, I believe this has been mentioned in earlier articles, and I thought of that today morning. I guess its easy to take a look at that, and then take on some of the suggestions that the other hackers have put up.

Thank you, all of you, hopefully I will have my mind blown away.

</comment></comment><comment><USER6> I just got "The Haskell Road to Maths and Logic", and I am enjoying it so far. It is heavy on the math and theory, so if you are looking for just a practical book it may not be the right one.

</comment><comment><USER7> I liked The Haskell School of Expression. It was a good first Haskell book. Read it, but also learn by doing, of course.

</comment><comment><USER8> Actually the haskell site (haskell.org) has some amazing tutorials you can use.</comment>


Ask HN: What would it take to free TypeScript from the JavaScript shackles? - <AUTHOR> I really like the looks of TypeScrpit. Why can't we use TypeScript on the server side, maybe the main language in Node.js or maybe standalone, or directly in the browsers without transpiling?<p>What would it take to free TypeScript from the JS shackles? <comment><USER2> The goal of TypeScript is to be a type-safe _superset_ of JS. Removing these type hints and aids _directly_ , you simply have JavaScript.

> Why can't we use TypeScript on the server side, maybe the main language in > Node.js or maybe standalone, or directly in the browsers without > transpiling?

Then you'd end up with the same story as Dart, a language that aimed to solve the shortcomings of JS.

Afaik, it was a totally different language. It was able to compile to JS, had its own engine, Chrome almost shipped with that engine, even had a browser with that engine (Dartium).

But nobody went for it, and the hype quickly died out. The same story with Go, until the hype subsided and everyone either continued using it, or made fun of it.</comment>


Stock Option Pricing Inference - <AUTHOR> https://thomasvilhena.com/2019/12/stock-option-pricing-inference <comment><USER2> The ad hoc method of parameter estimation used here needs some explaining. It looks like the author is trying to minimize the distance between the two lines on the y-axis which is not traditionally how you fit parameters to a distribution and will lead to weird results.

Notice that if you estimated a Gaussian the traditional way: by just computing mean and sample variance you do get wider tails caused by a higher variance estimate. Likewise the estimations for the Cauchy are definitely off using this technique (and precisely because of the Cauchy's infinite/undefined variance you shouldn't use the mean, like the author does, to estimate the center of the distribution).

Since the author uses mean for the estimate and sample sd in the other code I'm confused why this isn't used as the estimate for the variance in the guassian? If you want to demonstrate some sort of numerical optimization it would be better to use a correct, more standard technique like minimizing the negative log likelihood of the data given the parameters.

On top of all this there's very unnecessary amounts of superfluous R code in here. With rnorm and rcauchy there's no need to role your own sampling function

<comment><AUTHOR> Hi, I'm the author, thanks for the feedback!

> The ad hoc method of parameter estimation used here needs some explaining

I tried to imitate a "least squares regression" actually. I confess I wasn't sure if this was the most appropriate approach. I will run the analysis again using the more standard technique you suggested and compare the results.

> Since the author uses mean for the estimate and sample sd in the other code > I'm confused why this isn't used as the estimate for the variance in the > guassian?

The mean value from the density estimate was used for fitting both the Gaussian and Cauchy models because they are symmetric functions, in an attempt to reduce this one-dimensional (single variable) fitting error.

Later on the mean is removed when estimating prices since I was assuming a driftless stochastic process for the underlying stock.

<comment><USER3> Is this what you mean by "log normalization"? [https://www.spec2000.net/08-normalization.htm](https://www.spec2000.net/08-normalization.htm)

I haven't read much further, perhaps you make it explicit later on.

<comment><AUTHOR> I took the natural logarithm of the stock's daily returns. Then when estimating option prices I performed the reverse operation:

> exp(1) ^ dist[["x"]]

In this link you can find more information: \- [https://www.google.com/amp/s/quantivity.wordpress.com/2011/0...](https://www.google.com/amp/s/quantivity.wordpress.com/2011/02/21/why- log-returns/amp/)

<comment><USER3> OK well that is not commonly called "log normalization". It is called "using log returns".

<comment><AUTHOR> Fixed that, thanks! (should take effect in a while)

</comment></comment></comment></comment></comment></comment><comment><USER4> Note that the author is pricing European options, not American options. The standard BSM formula is for European options, not American. If anyone wants to dive deep into a lot of the different models out there, check out The Complete Guide to Option Pricing Formulas by Espen Haug(1).

His site has some wonderful material too(2). I especially like his 'Exotic Option Fantasy Land'(3)

——

(1) [https://www.amazon.com/Complete-Guide-Option-Pricing- Formula...](https://www.amazon.com/Complete-Guide-Option-Pricing- Formulas/dp/0071389970/ref=nodl_)

(2) [http://www.espenhaug.com/articles.html](http://www.espenhaug.com/articles.html)

(3) [http://www.espenhaug.com/manhat.html](http://www.espenhaug.com/manhat.html)

<comment><USER5> Thanks for the interesting link to Espen Haug!

For non-financial engineers, there is a subtle difference between the two option flavors. Holders of an American option can exercise their right to buy/sell the underlying asset at any time while European option holders can only exercise at expiration date.

</comment></comment><comment><USER6> Got worried when I saw the Gaussian approximation but I'm glad to see the author's evaluation.

> Despite the fact that the Gaussian distribution is widely used in fianacial > models, it has some well known pitfalls, namely its inability to encompass > fat tails observed in historical market data. As a result it will fail > accurately describe extreme volatilty events, which can lead to possibly > underpriced options.

<comment><USER7> Given that he is looking at one stock over a period of 6 months where AFAIK nothing particularly unusual happened, I highly doubt any "extreme volatility events" were relevant.

</comment></comment><comment><USER8> Cool stuff. What's hindering you from making money at this point?

I just started a job implementing asset pricing algorithms for energy contracts similar to what you did, even though a bit more involved (using stochastic dynamic programming and quite complex models for coming up with price paths).

Being completely new to trading I naturally wondered what the catch is, i.e. why I couldn't employ the same techniques for making private profits. Shoot me a mail if you'd like to discuss ideas ;)

<comment><AUTHOR> > Cool stuff. What's hindering you from making money at this point?

Thanks! That's the goal in the long term.

Besides being a spare-time endeavour, I believe I'm still in the learning phase, studying different statistical finance concepts and techniques, making experiments like this one, assessing the results.

Then the next step I think is to come up with some strategies, perform backtests with historical data and build a real-time automated trading infrastructure.

I have a few friends working in Investment Banks but they're more into traditional portfolio management than automated trading, so they don't help much.

I will organize my thoughts and shoot you a mail once a get the time!

</comment></comment><comment><USER9> This is a fantastic post, and it looks like this blog is full of fantastic posts. When I have some time I'm definitely going to play around with that code.

<comment><AUTHOR> Thanks for that, I appreciate it!</comment></comment>


Cloudy with a high chance of DBMS: a 10-year prediction for enterprise-grade ML - <AUTHOR> https://blog.acolyer.org/2020/02/19/ten-year-egml-predictions/ <comment><AUTHOR> the actual CIDR'20 paper: [http://cidrdb.org/cidr2020/papers/p8-agrawal- cidr20.pdf](http://cidrdb.org/cidr2020/papers/p8-agrawal-cidr20.pdf)</comment>


90 Seconds To Life – Suprising Lessons Learned Winning A Pitch Competition - <AUTHOR> http://soentrepreneurial.com/2012/06/28/90-seconds-to-life-suprising-lessons-learned-winning-a-pitch-competition/

<comment><USER2> "As I stood up there last week it became crystal clear the difference between successful people and unsuccessful people is simply a matter of delivering when the time calls for it."

Couldn't have said it any better.</comment>


Everything you know about CSS is Wrong - The changes tables layout will bring - <AUTHOR> http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/

<comment><USER2> Great, now we just have to wait until every IE6 and IE7 user has upgraded to IE8. By then, we'll be on to new browser technologies completely.

<comment><USER3> Or you could just use html tables.

<comment><USER4> You could but that would clearly be a very big mistake! Sure it will work perfectly in every browser and it's really simple and easy to work with. But it's a big mistake! You'll have to deal with the fact that it's not trendy and cool. You will be looked down upon by those who are flogging themselves at the altar of cargo cult methodology. Come to think of it, quite similar to the situation those of us who still think Perl is awesome face. Try using Perl and HTML tables in 2008! You won't get invited to any of the cool parties...

<comment><USER5> no, it's a mistake because it's semantically incorrect.

<comment><USER3> It's no more meaningful to talk about the semantics of html generated by programs than it is to talk about the semantics of machine code output by a compiler. Complaining about using tables for layout on semantic grounds is like complaining about using shift instructions for multiplication.

Semantics applies at the level of abstraction where humans look at something. That's the fundamental mistake of CSS zealots. Without consciously realizing it, they have a model of the world in which one is editing web pages by hand, or at least editing templates that are only a thin layer of abstraction above web pages. Which is actually quite backward.

<comment><USER6> I disagree, more or less completely. The semantics of HTML matter to the following:

        1. Browsers which render the HTML
        2. Machines, such as search engines, which "look" at it
        3. People who edit the HTML (in the case that it is a
           template)

Whether your HTML is semantically correct, or even stylistically valid, doesn't much matter to modern browsers because they've been designed under the assumption that most people will be too lazy or inept or uncaring to generate "proper" HTML. Obviously, this issue doesn't exist for compilers, where in the case that a compiler doesn't output proper machine code the program simply doesn't work.

When this starts to matter, however, is when someone leaves the comfort of their Firefox 3 on a huge screen and goes to Safari on a iPhone, for instance. Hacker News, for example, does not scale properly on the iPhone which leads to unnecessary and annoying horizontal scrolling past a certain nesting level, among other issues. This is tied to semantics, though whether or not a font element is used doesn't matter -- what does cause this, however, is the ridiculous reliance on tables, which obviously aren't semantically proper since you're not displaying strictly tabular data.

What about these limited browsers, and "machines" like Google? If you want a sidebar on the left side of your page, with tables that has to come before the main content. Using proper CSS techniques (semantics of HTML withstanding), you can place this after the actual content. People with smaller browsers could view your main content before your navigation with minimal changes and crawlers such as Google will index your content more accurately because of the placement of content in the source document. Semantics come into the picture when elements are misused or not used, such as header elements. These elements _do_ have meaning to search engines.

How about screen readers and other assistive devices? Many of these take context clues from the HTML, such as the type of element used to wrap content and its attributes, as a way to present pages more accurately to the user. Semantics matter a lot when it comes to accessibility. What about page size? The more tables you have on a page, the larger that page becomes to download. Perhaps Broadband is becoming ubiquitous in many places (as far as America goes, at least in somewhat urban areas), but that doesn't mean that it makes sense to waste time transferring bytes.

There are a slew of other applications where HTML semantics bleed out into the real world, such as Microformats and the like, but many of these applications haven't gained wide-spread traction so probably aren't worth adding to my argument.

The point being here is, semantics matter when whatever is "looking" at something cares about the semantics of it. Machine code is very simple: A machine looks at it and executes it based on strict rules. If a shift instruction is used, it's because that instruction will (assumedly) give some kind of performance benefit, not because the machine views it as having a different "meaning" from any other multiplication method. The fact that you can achieve the same thing with a table as you can with a div or paragraph tag doesn't mean it's correct to do so. If everything was _meant_ to work properly and to its full potential as a table-based element, why have all these other silly layout elements?

So, at the end of the day, what do we "CSS Zealots" and semantic HTML proponents get ourselves? Well, we get more maintainable, easier to read, accessible, flexible, more accurately indexed web pages. And in my world (the world of skilled web developers) we all still edit our web pages by hand -- using templates that are just a thin layer of abstraction above web pages. The day you see a META tag that says "Generated by Dreamweaver" on TicketStumbler is the day Dreamweaver has managed to produce equally good or better HTML than I can by hand -- HTML which affords all the advantages and luxuries that the stuff I write does.

Edit: As a final note, I'd like to point out that there is a middle ground here. You can create generally "good" HTML without spending a day deciding what a class should be named. TS supports Microformats for events, but running it through an HTML validator would likely produce some menial errors. I'm not suggesting everyone put 10x the time into writing proper HTML and CSS to present it, I'm just suggesting that they put _a little_ time into it -- for the sake of their site, their visitors, the search engines, and the sanity of web developers like me everywhere... if I have to write another XPath string that looks like /table/tr/td/table/tr/td/table/tbody/td[...] I am going to spit on somebody.

<comment><USER3> 1\. No. Browsers just have to execute html, not understand it, just as a processor when it shifts bits doesn't have to know that the purpose is multiplication.

2\. If you want programs to understand the information on a page at something above a textual level, the right way to do that is to explicitly encode whatever you want as xml, not by using divs instead of tables.

3\. I agree: this is the case where you'd want something like CSS. But editing html by hand is not the only way to get web pages. You can also have software generate them. And in that case munging the results afterwards is as inelegant as patching machine code.

<comment><USER6> 1\. Yeah, I guess I worded that incorrectly, though you can see the tie-in between semantics and how that html is executed (rendered). Using proper semantics = not using tables for page layout = better rendering (under circumstances mentioned)

2\. ... so you're saying we should write HTML, then write XML to describe that HTML? Why not just write HTML which describes itself in the first place? It seems awfully redundant to do it any other way, considering HTML comes with all these handy tags which, when used correctly, describe the content already. Hell, XHML was created as an HTML which conforms to the XML spec for precisely this purpose.

If you write something like:

My Cool Site

You've already "encoded" it. If you write:

<big>My Cool Site</big>

Then, yeah, you've got your work cut out for you to give _that_ any sort of meaning...

3\. _"And in that case munging the results afterwards is as inelegant as patching machine code."_ \-- Right, so your choices are write it yourself or get a bunch of garbage generated by an IDE or Framework or whatever. If you're happy with the garbage then you probably don't need to edit it afterwards or just "edit" it using the same IDE or language or whatever. What happens when your IDE or framework or language can't generate HTML/CSS to do something you need? Then you have to start editing that crap by hand... this should eventually lead to suicide.

<comment><USER7> Personally I think the most important of the anti zealot side of this debate is the insistence on everything being centred on code being written by hand.

Dingy little WYSIWYG editors, machine generated web pages, & (in this context, I suppose) software that allows users to generate anything from blogs to shops to social news sites without any technical knowledge, and all their friends have probably done more for for the web (& it's accessibility) then standards have.

We aren't there yet. From online shops to Slinkset, you still need a little css & html to get you past a certain level of control. But I think it would be an achievement, if these weren't needed any more & 'view source' got taken out of browsers from lack of use.

<comment><USER6> I don't really know what "View Source" has to do with not writing your own HTML, but I completely agree with your argument. I'm not saying I _want_ to always write HTML by hand, I'm saying it should be done until such a time that WSIWYG editors, online web site creators and so forth get to the level that they generate proper HTML. I don't get any more pleasure out of writing boiler-plate HTML than I do from writing boiler-plate code for the backend. If someone has created a framework or library that already does what I need (or gets me on the road to what I need without getting in my way), I'm certainly going to use it.

Needing a little CSS and HTML to get you past a certain level is no big deal, assuming the initial code generated is semantic, (mostly) valid, extensible, blah blah blah. Having tables nested 5-deep is none of these things.

<comment><USER7> No sorry, I think I as unclear. I meant the opposite. 'View Source' will be removed because no one should want to view source.

What I was saying is that the ability of non technical users to make sites, no matter how bad that code, is much more important then anything else in this debate. Standards should (i think) almost be written specifically for machines.

Sure, you can think of creating the best possible environment that makes sense & so that the pages can be used on future browsers & browser like things, but that is dwarfed by the prospect of letting grandma have a website.

Standards should not be built for hand coders.

<comment><USER6> _Sure, you can think of creating the best possible environment that makes sense & so that the pages can be used on future browsers & browser like things, but that is dwarfed by the prospect of letting grandma have a website._

I would argue that the continued evolution and improvement of the Web are far, far more important than letting Grandma have a website. Besides, Grandma can already have a website -- there are dozens of services out there like Typepad, Wordpress, Blogspot, etc. which allow Joe Public to have a website -- and he should be able to have a website, so long as whoever (or whatever) makes that site uses proper HTML, CSS, and Standards to create it.

Would it be great to get to a point where Standards are written for machines, I can write some super high-level markup that describes how I want a page laid out (or just draw it!) and nobody has to write another line of HTML or CSS, ever? Sure. But it's not going to happen any time soon and pretending like it has just hurts everybody.

If your framework generates a 30-character ID for damn near every element on the page (hi, Microsoft), it's Not Good Enough.

If your language generates tables for damn near _everything_ , it's Not Good Enough.

<comment><USER7> _I would argue that the continued evolution and improvement of the Web are far, far more important than letting Grandma have a website_

That's a little cheeky. What I was implying that letting Grandma have a website is more important to the (not as _then_ ) the continued evolution and improvement of the Web.' Standards are (to that end) important inasmuch as they allow the guys that make typepad, wordpress & friends to let her do so. That is the criteria they should be judged by.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> About time. Maybe now a lot of people will stop using tables to define the site layout :)

I know it can be a pain to style a website with divs, but putting presentation inside HTML is definitely worse.

<comment><USER9> Users don't care if you use tables for layout. Sure, if you're nesting tables deeply then maybe it's an issue, but this "avoid tables at all costs" is a bit silly. Especially when the equivalent css is longer, more complex and far less compatible. Try doing some complex colspan/rowspan type things in css, with unknown cell widths etc.

There are more important things to work on :)

<comment><USER10> Initially switching to table-less design is harder. CSS has its own quirks in every browser that can drive a developer mad.

That being said there's a few very good reasons to use a pure CSS design.

 _More accessible_ : Specifically I'm thinking mobile phones and alternative stylesheets where "turning off" a table cell completely breaks the design. This is a breeze with pure CSS

 _Smaller File Size_ : Generally speaking, a site designed with CSS is smaller than a site designed with tables

 _Efficient Caching_ : External stylesheets will cache speeding up response time for the user. For an eCommerce site every second is key.

 _SEO_ : Some may argue with this, but presenting important content first is just one of the many factors involved with on-page SEO. This is accomplished quite easy with CSS and absolute positioning.

 _Faster Updates_ : I find updating a CSS design to be much quicker than a design nested with tables. Want to completely change the look of your site? Modifying only the CSS you can get some impressive results (<http://www.csszengarden.com/>).

For a programmer the time spent ironing out the initial kinks can be spent better elsewhere. But for designers its necessary in this day and age to use and understand table-less designs.

<comment><USER11> Please not another advocate that uses CSSZenGarden.com as a reference. It's a great 'proof of concept' but it no longer impresses me or means anything in the real world.

Show me YOUR site, and how it can be completely changed with just a flick of the CSS switch and I'll be impressed.

Most (arguably all) CSS designs are built to accomplish 1 layout and 1 design.

Now, for more simple changes, like fonts, colors, and small layout changes CSS is the tits.

<comment><USER10> Yes, another advocate of CSS Zen Garden. Its the best available example to display the power of stylesheets.

Here is my site: <http://www.bradjasper.com/>

As you can see, even though the header is presented first the the stories are all first in the source. This touches on my SEO point earlier.

 _Show me YOUR site, and how it can be completely changed with just a flick of the CSS switch and I'll be impressed._

Let's switch the sidebar from the right to the left.

 _#inner { float: left }

#sidebar { float: right }_

Granted that's not completely changed, but its enough of a change to show the effect I'm going for.

<comment><USER12> CSSZenGarden cheats by using images for text...

</comment></comment></comment></comment></comment></comment><comment><USER13> I like this, because I always thought that tables for layout were a lot more intuitive than the mind bending stuff I have to do with css to get a layout to look right. Semantic markup is nice for the flexibility, but I have always struggled to understand css.

</comment><comment><USER14> IE6 has been phased out fairly quickly for IE7 and I'm sure IE8 will come in just as fast.

CSS seems like it's here to stay and it will still be around when it's finally fully implemented.

This is good news for web designers everywhere.

<comment><USER15> Lots of corporations still stick to IE6, and the fact that they put it under the "genuine advantage" wall made it that upgrading to IE7 wasn't as easy & automatic as it should of been, much to the dismay of the internet.

</comment></comment><comment><USER16> Thank God. I think CSS wastes a lot of good behavioral design time with the way it's implemented right now. Hopefully these upgrades will change that.

</comment><comment><USER17> It would go a long way if MS would retro this into IE7 via a browser update. IE6 is slowly being moved from, but IE7 will be around for years to come.

</comment><comment><USER18> i think the best thing about tables design is that you can design something to work on multiple platforms and to flow better.

when using tables you are stuck to the resolution you are designing for, but in a good table-less design you can accommodate a number of form factors, which is important in the emerging mobile device platform.

</comment><comment><USER19> This will be good.

I'm really looking forward to the day that IE6/7 doesn't need to be supported anymore.

</comment><comment><USER20> And it'll be six years before IE somewhat supports it. And another five for the majority to upgrade.

<comment><USER13> The point is that IE 8 does support this. But, it will be at least 5 years before a majority of users have IE 8 :(

<comment><USER21> That seems to be an overly pessimistic estimate.

IE7 Was released almost exactly two years ago and it already has 45% market share (compared to 25% for IE6). Next year it is likely that over 50% of users will have either IE7 or IE8. I think a slight majority of users will probably have IE8 in 2010, and a significant majority will have it in 2011. I expect Microsoft to push IE8 more vigorously than IE7 because IE8 is significantly more secure (on paper, at least) than IE6 and IE7.

<comment><USER13> You're probably right. What I really meant to say was that it will be at least 5 years before the numbers of IE6/IE7 are low enough that anyone can afford to drop support for them. We're going on 7 years of having to support IE6 (although some sites are starting to drop support for it finally).</comment></comment></comment></comment>


The Right to Privacy (1890) - <AUTHOR> http://groups.csail.mit.edu/mac/classes/6.805/articles/privacy/Privacy_brand_warr2.html <comment><USER2> "The right to privacy does not prohibit any publication of matter which is of public or general interest. "

This is not only nearly impossible to define in the general case more importantly what is of legitimate interest to me is potentially different from what is of legitimate interest to you and only by allowing the general publication of facts is it possible for the information relevant to you and i to each flow freely.

" The design of the law must be to protect those persons with whose affairs the community has no legitimate concern, from being dragged into an undesirable and undesired publicity and to protect all persons, whatsoever; their position or station, from having matters which they may properly prefer to keep private, made public against their will."

If I intend to hire you to watch my kids, work in my store, allow you to hang out with my daughter etc etc I have an interest in information about you being available.

" The right of one who has remained a private individual, to prevent his public portraiture, presents the simplest case for such extension; the right to protect one's self from pen portraiture, from a discussion by the press of one's private affairs"

This is great if the press is a handful of newspapers instead of the reality in which it is all of us communicating to each other.

I could go on and on and on but the problem remains that the "right to privacy" so defined is fundamentally impossible to distinguish from a club to stop people spreading the truth.

It would be more useful to continue punishing liars and try to better protect people from being fired/discriminated against for their private lives and speech rather than providing the rich a better way to silence inconvenient truths.

<comment><USER3> >This is not only nearly impossible to define in the general case

And this is why there are courts who decide how law applies in particular cases. This is how case law works. What the law means gets more meaning as precedents accumulate over time.

<comment><USER4> That law is kind of an abstract algorithm that automatically applies to every case based on some general parameters is a misconception that I have seen quite a lot around here. Maybe the habit to think in abstract patterns doesn't really combine well with messy real-world phenomena like case law?

Related: "Trial by Machine" [http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2743800](http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2743800)</comment></comment></comment>