9999999999999999.0 – 9999999999999998.0 - <AUTHOR> http://geocar.sdf1.org/numbers.html <comment><USER2> I don't understand all the crap that IEEE 754 gets. I appreciate that it may be surprising that 0.1 + 0.2 != 0.3 at first, or that many people are not educated about floating point, but I don't understand the people who "understand" floating point and continue to criticize it for the 0.1 + 0.2 "problem."

The fact is that IEEE 754 is an exceptionally good way to approximate the reals in computers with a minimum number of problems or surprises. People who don't appreciate this should try to do math in fixed point to gain some insight into how little you have to think about doing math in floating point.

This isn't to say there aren't issues with IEEE 754 - of course there are. Catastrophic cancellation and friends are not fun, and there are some criticisms to be made with how FP exceptions are usually exposed, but these are pretty small problems considering the problem is to fit the reals into 64/32/16 bits and have fast math.

<comment><USER3> > considering the problem is to fit the reals into 64/32/16 bits and have fast > math

Floating-point numbers (and IEEE-754 in particular) are a good solution to this problem, but is it the right problem?

I think the "minimum of surprises" part isn't true. Many programmers develop incorrect mental models when starting to program, and get no feedback to correct them until much later (when they get surprised).

It is true that for the problem you mentioned, IEEE 754 is a good tradeoff (though Gustafson has some interesting ideas with "unums": [https://web.stanford.edu/class/ee380/Abstracts/170201-slides...](https://web.stanford.edu/class/ee380/Abstracts/170201-slides.pdf) / [http://johngustafson.net/unums.html](http://johngustafson.net/unums.html) / [https://en.wikipedia.org/w/index.php?title=Unum_(number_form...](https://en.wikipedia.org/w/index.php?title=Unum_\(number_format\)&oldid=873507492) ). But many programmers do not realize how they are approximating, and the "fixed number of bits" may not be a strict requirement in many cases. (For example, languages that have arbitrary precision integers by default don't seem to suffer for it overall, relative to those that have 32-bit or 64-bit integers.)

Even without moving away from the IEEE-754 standard, there are ways languages could be designed to minimize surprises. A couple of crazy ideas: Imagine if typing the literal 0.1 into a program gave an error or warning saying it cannot be represented exactly and has been approximated to 0.100000000000000005551, and one had to type "~0.1" or "nearest(0.1)" or add something at the top of the program to suppress such errors/warnings. At a very slight cost, one gives more feedback to the user to either fix their mental model or switch to a more appropriate type for their application. Similarly if the default print/to-string on a float showed ranges (e.g. printing the single-precision float corresponding to 0.1, namely 0.100000001490116119385, would show "between 0.09999999776482582 and 0.10000000521540642" or whatever) and one had to do an extra step or add something to the top of the program to get the shortest approximation ("0.1").

<comment><USER4> When I went to university in 1982, one of the lower level courses was called "Numerical Methods". It went over all of the issues related to precision, stability, as well as a host of common numerical integration and approximation methods.

I'm just a sample size of one, but isn't this kind of class a requirement for CS majors?

<comment><USER5> > isn't this kind of class a requirement for CS majors?

I think most CS departments dropped numerical analysis from their requirements by the end of 1980s. Nowadays you are more likely to find such a course in some dusty corner of math or engineering departments.

<comment><USER6> My university moved it from a 100 series course to a 200 series course but it's still being taught to ECE undergrads.

The problem is more that we don't have the tools to track and understand how the errors are altered as we do the math (e.g. how would you even begin to try representing catastrophic cancellation at compile-time) and doing the numerical error analysis on the abstract math itself is hard once the math gets complex let alone trying to figure it out after you've optimized the code for performance & tweaked the algorithms for real-world data/discrete space.

Now perhaps it could be possible to do it at runtime in some way but I suspect the performance of that is prohibitive to the point where arbitrary precision math or decimal numbers is going to be a better solution.

</comment></comment></comment></comment></comment><comment><USER3> A useful website for these that I ran across recently: [https://float.exposed/](https://float.exposed/)

For example, entering 9999999999999999.0 into "double" gives [https://float.exposed/0x4341c37937e08000](https://float.exposed/0x4341c37937e08000) and entering 9999999999999998.0 gives [https://float.exposed/0x4341c37937e07fff](https://float.exposed/0x4341c37937e07fff)

My wishlist for such a page would contain two additional features:

1\. Allow entering expressions like "a OP b == c", so that one can enter "0.1 + 0.2 == 0.3" or "9999999999999999.0 - 9999999999999998.0 == 1.0" and see the terms on the left-hand side and right-hand side.

2\. Show for each float the explicit actual range of real numbers that will be represented by that float. For example, show that every real number in the range [9999999999999999, 10000000000000001] is represented by 10000000000000000, and that every real number in the range (9999999999999997, 9999999999999999) is represented by 9999999999999998.

The author of this one has a blog post about it: [https://ciechanow.ski/exposing-floating- point/](https://ciechanow.ski/exposing-floating-point/) and I also like a shorter (unrelated) page that nicely explains the tradeoffs involved in floating-point representations and the IEEE 754 standard, by usefully starting with an 8-bit format: [http://www.toves.org/books/float/](http://www.toves.org/books/float/)

<comment><USER7> > 9999999999999999.0 into "double" gives > [https://float.exposed/0x4341c37937e08000](https://float.exposed/0x4341c37937e08000)

Nice that it reformats the input to "10000000000000000.0", gets the point across that a 64 bit double float just doesn't have enough bits to exactly represent 9999999999999999.0, but that it does happen to be able to represent 9999999999999998.0.

<comment><USER8> An easy rule of thumb is each 3 decimal digits takes 10 bits to represent. 9999999999999999 is 16 (= 15 + 1) decimal digits. And 3 bits can only represent 0-7. So you need more than 3 bits for that final decimal digit. So, 50 + 4 bits.

IEEE 754 64-bit floats have 53 significant bits ("mantissa").

</comment></comment></comment><comment><USER9> The arithmetic is correct - the problem is that "9999999999999999.0" _isn 't_ representable exactly.

9999999999999998.0 in IEEE754 is 0x4341C37937E07FFF

"9999999999999999.0" in IEEE754 is 0x4341C37937E08000 - the significand is exactly one higher.

With an exponent of 53, the ULP is _2_ \- so parsing "9999999999999999.0" returns 1.0E16 because it's the next representable number.

        Using one of these workarounds requires a certain prescience of the
        data domain, so they were not generally considered for the table above.

Doing arithmetic reliably with fixed-precision arithmetic always requires understanding of the data domain. If you need arbitrary precision, you'll need to pay the overhead costs of arbitrary-precision: either by opting-in by using the right library, or by default in languages like Perl6 and Wolfram.

</comment><comment><USER10> What is the "right answer"? Is the article claiming that such languages don't respect IEEE-754, or that IEEE-754 is shit?

If you want arbitrary precision, use an arbitrary precision datatype. If you use fixed precision, you'll need to know how those floats work.

Pointless article, imho.

<comment><USER11> The point is to illustrate a simple fact that most of us know- but maybe some don't.

[https://m.xkcd.com/1053/](https://m.xkcd.com/1053/)

<comment><USER2> It doesn't even illustrate that particularly well. As is, the page just seems to be pointing at floating point and yelling "wrong", with no information on what's actually happening.

By all means embrace the surprise and educate today's 10,000, by why not actually explain why these are reasonable answers and the mechanics here behind the scenes?

</comment></comment></comment><comment><USER12> _Using one of these workarounds requires a certain prescience of the data domain_

I'm a little concerned if merely knowing the existence of floating point arithmetic constitutes "prescience."

</comment><comment><USER13> Are there any mainstream languages that consider a decimal number to be a primitive type? I feel like floating point numbers are far less meaningful in every day programs. Even 2d graphics would be easier with decimal numbers. Unless you're using numbers that scale from very small to very large, like 3d games or scientific calculations, you don't actually want to use floating point.

<comment><USER2> Julia has built in rationals (as do a few other languages).

I'm not aware of any language (other than Wolfram) that defaults to storing something like 0.1 as 1/10 - i.e. uses the decimal constant notation for rationals, rather than having some secondary syntax or library.

<comment><USER14> Even in Wolfram, 0.1 is not the same as 1/10.

        In[1]:= Precision[0.1]

        Out[1]= MachinePrecision

        In[2]:= Precision[1/10]

        Out[2]= \[Infinity]

<comment><USER2> Ah, thanks for the correction.

I don't currently have a license, so out of curiosity is 0.3 == 3/10 in wolfram?

<comment><USER14> Yes that's true.

According to the documentation of Equal†,

> Approximate numbers with machine precision or higher are considered equal if > they differ in at most their last seven binary digits (roughly their last > two decimal digits).

Which is why in Mathematica, 0.1+0.2==0.3 is also True.

If you need a kind of equality comparison that returns False for 0.3 and 3/10, use SameQ. Funnily, SameQ[0.1+0.2,0.3] is also True, because SameQ allows two machine precision numbers to differ in their last binary digit.

†: [https://reference.wolfram.com/language/ref/Equal.html](https://reference.wolfram.com/language/ref/Equal.html)

</comment></comment></comment></comment></comment><comment><USER15> The linked post is a bit poorly expressed, but I think there is a good point there: fixed-size binary floating-point numbers are a compromise, and they are a poor compromise for some applications, and difficult to use reliably without knowing about numerical analysis. (For example, suppose you have an array of floating-point numbers and you want to add them up, getting the closest representable approximation to the true sum. This is a very simple problem and ought to have a very simple solution, but with floating-point numbers it does not [1].)

Perhaps it is time for the developers of new programming languages to consider using a different approach to representing approximations to real numbers, for example something like the General Decimal Arithmetic Specification [2], and to relegate fixed-size binary floating-point numbers to a library for use by experts.

There is an analogy with integers: historically, languages like C provided fixed-size binary integers with wrap-around or undefined behaviour on overflow, but with experience we recognise that these are a poor compromise, responsible for many bugs, and suitable only for careful use by experts. Modern languages with arbitrary-precision integers are much easier to write reliable programs in.

[1] [https://en.wikipedia.org/wiki/Kahan_summation_algorithm](https://en.wikipedia.org/wiki/Kahan_summation_algorithm) [2] [http://speleotrove.com/decimal/decarith.html](http://speleotrove.com/decimal/decarith.html)

<comment><USER16> Do note that UB on integer overflow is (at least nowadays) more of a compiler wish for optimization reasons than it is technically necessary (your CPU will indeed just wrap around if you don't live in the 80s anymore, but a C++ compiler might have assumed that won't happen for a signed loop index).

</comment></comment><comment><USER17> Also worth checking: [http://0.30000000000000004.com/](http://0.30000000000000004.com/)

most popular previous discussion: [https://news.ycombinator.com/item?id=10558871](https://news.ycombinator.com/item?id=10558871)

</comment><comment><USER18> There's an easier way to specify long floats in Common Lisp: use the exponent marker "L" e.g. 9999999999999999.0L0. No need to bind or set reader variables.

That said, even in Common Lisp I think its only CLISP (among the free implementations) that gives the correct answer for long floats.

CLISP:

        [1]> (- 9999999999999999.0L0 9999999999999998.0L0)
        1.0L0

SBCL, CMUCL and Clozure CL:

        * (- 9999999999999999.0L0 9999999999999998.0L0)
        2.0d0

The standard only mandates a minimum precision of 50 bits for both double and long floats, so there's no guarantee that using long floats will give the correct answer, as we can see.

[http://www.lispworks.com/documentation/HyperSpec/Body/t_shor...](http://www.lispworks.com/documentation/HyperSpec/Body/t_short_.htm)

</comment><comment> mark-r Is floating point math broken?

[https://stackoverflow.com/questions/588004/is-floating- point...](https://stackoverflow.com/questions/588004/is-floating-point-math- broken)

No, it's just that a lot of people don't understand its limitations.

</comment><comment><USER19> It's nice that JavaScript has arbitrary-precision integers now. 9999999999999999n - 9999999999999998n === 1n

</comment><comment><USER20> Google calculator gives answer 0 where as duckduckgo calculator answers with 2. xD

<comment><USER21> Bing gives 1 though!

<comment><USER5> So duckduckgo uses the normal 64bit floating point, and the clever people at bing automatically switch to bignums when needed. But I have no idea what google does to get that 0?

<comment><USER21> I think Google is truncating the numbers. You get 0 even if you do:

9999999999999999 – 9999999999999990

<comment><USER5>
        9999999999999999 - 9999999999999971 ==  0
        9999999999999999 - 9999999999999970 == 30
        9999999999999999 - 9999999999999969 == 32
        9999999999999999 - 9999999999999966 == 34

</comment></comment></comment></comment></comment><comment><USER22> This is particularly sucky to solve in C and C++ because you don't get arbitrary precision literals.

        #include <boost/multiprecision/cpp_dec_float.hpp>
        #include <boost/lexical_cast.hpp>
        #include <iostream>

        using fl50 = boost::multiprecision::cpp_dec_float_50;

        int main() {
            auto a = boost::lexical_cast<fl50>("9999999999999999.7");
            auto b = boost::lexical_cast<fl50>("9999999999999998.5");
            std::cout << (a - b) << "\n";
        }

works

        int main() {
            fl50 a = 9999999999999999.7;
            fl50 b = 9999999999999998.5;
            std::cout << (a - b) << "\n";
        }

doesn't, even if you change fl50 out for a quad precision binary float type.

<comment><USER3> > Even user-defined literals in C++11 and later don't let you express custom > floating point expressions

Note that in your code sample you're not actually using user-defined literals ([https://en.cppreference.com/w/cpp/language/user_literal](https://en.cppreference.com/w/cpp/language/user_literal)). This works (based on on your earlier code sample and adding user-defined literals):

        #include <boost/multiprecision/cpp_dec_float.hpp>
        #include <boost/lexical_cast.hpp>
        #include <iostream>
        using fl50 = boost::multiprecision::cpp_dec_float_50;
        fl50 operator"" _w(const char* s) { return boost::lexical_cast<fl50>(s); }
        int main() {
            fl50 a = 9999999999999999.7_w;
            fl50 b = 9999999999999998.5_w;
            std::cout << (a - b) << "\n";
        }

<comment><USER22> Thanks, it's nice to be wrong! For some reason I had it in my head that you couldn't get the token as a char const* for floating point expressions...

</comment></comment></comment><comment><USER23> Note in C you can get the correct result if you use long doubles, which normally go to 80 bits[1]:

printf("%Lf\n", 9999999999999999.0L - 9999999999999998.0L);

In my x86_64 computer it breaks when you add enough digits. At this point it started outputting 0.0 as the difference:

printf("%Lf\n", 99999999999999999999.0L - 99999999999999999998.0L);

With 63 bits for the fraction part you more or less get around 19 decimal digits of precision, and the expression above uses 20 significant digits.

[1] [https://en.wikipedia.org/wiki/Extended_precision#x86_extende...](https://en.wikipedia.org/wiki/Extended_precision#x86_extended_precision_format)

</comment><comment><USER24> Interestingly, SQLite gets it wrong, returning 2.0, but MySQL, MariaDB, Postgres, and Cockroach all get it right at 1.0

I guess this comes down to most of them having implementations of arbitrary precision decimals.

<comment><USER25> In PostgreSQL, if you specify a decimal literal, it is assumed to be type NUMERIC (arbitrary precision) by default, as opposed to FLOAT or DOUBLE PRECISION.

If you stored your values in table rows as DOUBLE PRECISION, you would of course get the wrong answer.

</comment></comment><comment><USER26> With python, I get 2 even when using Decimals.

        Python 2.7.3 (default, Oct 26 2016, 21:01:49)
        [GCC 4.6.3] on linux2
        Type "help", "copyright", "credits" or "license" for more
        information.
        >>> from decimal import *
        >>> getcontext().prec
        28
        >>> a=Decimal(9999999999999999.0)
        >>> b=Decimal(9999999999999998.0)
        >>> a-b
        Decimal('2')

That is unexpected.

<comment><USER27> The issue is that 9999999999999999.0 == 10000000000000000.0. You need to pass a string: Decimal('9999999999999999.0')

</comment></comment><comment><USER28> There is interesting ongoing research on representing exact reals: [https://youtu.be/pMDoNfKXYZg](https://youtu.be/pMDoNfKXYZg)

<comment><USER29> Quick summary of the talk:

A specialist number representation is made for exact representation of values in geometric calculations (think CAD). Numbers are represented as sums of rational multiples of cos(iπ/2n).

Exact summation, multiplication and division (not shown) of these quantities are possible, and certain edge-cases (eg. sqrt) have special-case handling.

The system was integrated into and tested on an existing codebase.

The speaker was also one of the authors of Herbie, if other people remember that.

</comment></comment><comment><USER30> 2 with 64 bit floats, 0 with 32 bit floats.

<comment><USER31> I could understand 0, but how does it get 2?

<comment><USER32> FP numbers are (roughly) stored in the form m×2^e (m = mantissa, e = exponent). When numbers can't be represented exactly, m is rounded. My guess is that these numbers end up being encoded as 4999999999999999×2 and 4999999999999999.5×2, where the latter is rounded up to 5000000000000000×2.

</comment></comment></comment><comment><USER33> $ php -v

PHP 7.2.10 (cli) (built: Oct 9 2018 14:56:43) ( NTS )

$ php -r "echo 9999999999999999.0 - 9999999999999998.0;"

2

$ php -r "echo bcsub('9999999999999999.0', '9999999999999998.0', 1);"

1.0

bcmath - [http://php.net/manual/en/function.bcsub.php](http://php.net/manual/en/function.bcsub.php)

<comment><USER34> Result for all versions of PHP: [https://3v4l.org/JYlrp](https://3v4l.org/JYlrp)

<comment><USER34> And with bcmath: [https://3v4l.org/AmOQt](https://3v4l.org/AmOQt)

</comment></comment></comment><comment><USER35> The accounting software we use has a built in calculator which has a similar problem.

5.55 * 1.5 = 8.3249999999999....

26.93 * 3 = 80.7899999999999....

I raised it with the supplier some time ago, they said it's just the calculator app and the main program isn't affected. Quite shocking that they are happy to leave it like this.

</comment><comment><USER36> Pros and cons of the different ways computers can work with fractions: [https://softwareengineering.stackexchange.com/a/167166/10934...](https://softwareengineering.stackexchange.com/a/167166/109343)

</comment><comment><USER37> The author says, "That Go uses arbitrary-precision for constant expressions seems dangerous to me."

Why?

My thoughts: 1) more inefficient programs because encountering an arbitrary- precision expression requires arbitrarily large memory and computation, 2) more complicated language implementation.

<comment><USER38> Constant expressions are evaluated at compile time. Compilation would suffer any eventual performance penalties. This probably makes the compiler simpler - no need to implement different arithmetic for different types & no need to guess the types.

The dangerous bit is, that just extracting a variable from constant expressions might change the result slightly. That should not be a problem, unless you are depending on exact values.

</comment></comment><comment><USER39> While it is not the default literal type in Haskell, you can use coercion and the Scientific type to compute an (almost) arbitrary precision result. For example this prints 1.0 in the repl:

import Data.Scientific

(9999999999999999.0 :: Scientific) - (9999999999999998.0 :: Scientific)

</comment><comment><USER40> Java also has BigDecimals for this kind of work.

</comment><comment><USER41> How do Perl, Wolfram ans Soup get the "right" (ahaha...) answer ? (I'm not familiar with these langages)

Of course for others it should "fixable" where needed:

      ~ python3
      Python 3.6.7 (default, Oct 22 2018, 11:32:17)
      [GCC 8.2.0] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> from decimal import Decimal
      >>> Decimal('9999999999999999.0') - Decimal('9999999999999998.0')
      Decimal('1.0')

</comment><comment><USER42> Do any of the languages mentioned give a compiler warning? To help educate?

<comment><USER43> IMHO it's unfeasible, because the exact same situation as with 9999999999999999.0 (a literal that's impossible to represent accurately as double and will get rounded to something else) applies also to very common cases such as 0.1 (which can't have an exact binary representation at all) - adding a compiler warning for that will mean that the warning will trigger for pretty much every floating point literal.

<comment><USER44> I don't think that's quite true. For 0.1,the algorithm for printing back the number will still result in 0.1, but the same is not true for 9999999999999999.0, which comes back 1e16. So compilers could easily warn for this specific situation, where what I'd call the round trip value of the literal is broken.

But I don't think such a warning would be all that helpful. How often do we use literals with 16 significant digits, expecting exact representation?

The bigger gotcha here is catastrophic cancelation. This is the issue of an insignificant rounding error becoming much more significant due to subtracting of very nearly equal numbers. You can't generally detect this at compile time if you don't know all your numbers in advance (e.g. you're not working with only literals).

<comment><USER45> You can do abstract interpretion and calculate rounding precision at each line. The problem is that as soon as you have loops, you'll pretty much get that warning everywhere. Being sure that there is no cancellation is even harder, but possible in some cases. I'm sure there are better approaches, there's tons of research papers in that area.

</comment></comment></comment></comment><comment><USER46> > Several of the results surprised me. Did they surprise you?

Well, the perl6 result surprised me, since that means it's using something more precise than double precision floating point :)

<comment><USER47> It surprised me too, since it's not what I got.

        $ perl6 --version
        This is Rakudo version 2018.03 built on MoarVM version 2018.03
        implementing Perl 6.c.
        $ perl6 -e 'print 9999999999999999.0-9999999999999998.0;print "\n";'
        2
        $

(Incidentally, I would have used "say" rather than "print" with an explicit newline.)

<comment><USER48> Indeed, there was a bug with determining when to switch to floats, that was fixed by Zoffix in August:

        https://github.com/rakudo/rakudo/commit/fec1bd74f97e257d4c88673cd62fdcae39f587a3

</comment></comment></comment><comment><USER49> Well, one answer is to use IEEE 1788 interval arithmetic, which will at least give you IEEE 754 high and low bounds for a calculation, rather than one answer that's clearly wrong. Otherwise, some inaccuracy is the trade-off for fast floating point calculations.

</comment><comment><USER50> So.. Can someone better versed in the ways of system level programming tell me why we still use IEEE 754 exponential notation?

Iv'e seen article after article of how "horrible it is". So, are there default libs to use Binary Coded Decimal (BCD) or something like that?

<comment><USER51> We use it because it's fast, accurate and very useful for many applications. It's not horrible.

<comment><USER52> In fact, as discussed in another thread, it's the optimal representation for many purposes. The only problems are that some languages over-privilege them to the point where it's difficult to use alternatives, and some programmers don't understand them.

</comment></comment></comment><comment><USER53> Interestingly `bc` as well as `bash expr` on the command line give the correct result.

<comment><USER54> "bc - An arbitrary precision calculator language"

bc is doing its job!

</comment></comment><comment><USER55> Welcome to Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1). Type :help for assistance.

      1> let foo = 9999999999999999.0 - 9999999999999998.0

foo: Double = 2

</comment><comment><USER56> Actually Wolfram|Alpha does give 1, but Mathematica 11.3 gives 2.

<comment><USER57> Mathematica interprets the real numbers 9999999999999999.0 and 9999999999999998.0 as having machine precision. To work in arbitrary precision, you need a backtick after the number, followed by the number of significant digits.

In this case,

9999999999999999.0`17-9999999999999998.0`17 does indeed return 1.

[https://reference.wolfram.com/language/ref/Precision.html](https://reference.wolfram.com/language/ref/Precision.html)

</comment></comment><comment><USER58> In perl5 it's easier:

        perl -Mbignum -e'print 9999999999999999.0 - 9999999999999998.0'
        1

The BigFloat solution on the website is suboptimal.

<comment><USER48> In Perl 6 even shorter than that:

        perl6 -e'print 9999999999999999.0 - 9999999999999998.0'
        1

</comment></comment><comment><USER59> [https://play.golang.org/p/_EkSHUIrg1y](https://play.golang.org/p/_EkSHUIrg1y)

<comment><USER59> But, [https://play.golang.org/p/naE55o3_xFP](https://play.golang.org/p/naE55o3_xFP)

I guess the first link is converting the float constants to ints at compile- time?

(edit: oh, it's actually mentioned in the article. I should read more carefully)

<comment> dan-robertson In gcc, there is software emulation for hardware floating point arithmetic so that compile time constants may be evaluated for any target architecture (even if the compiling architecture does not support that format). It seems go approximates this as "just evaluate with a high precision then convert to float" which is probably mostly fine but having arithmetic be different between compile time and run time seems likely to be not fun.

</comment></comment></comment><comment><USER60> Not that this is specifically a "floating point" problem.

Plenty of languages are going to get upset if you add 2 billion to 2 billion.

</comment><comment><USER61> its good to educate people about default representations of numerical literals and their corner cases.

Whenever I see these examples I do get annoyed st the Haskell one because we never are told what type it gets defaulted to, which only happens silently in the ghci repl, but will trigger a warning if it's in a source file that's being compiled.

</comment><comment><USER62> sqlite> SELECT 9999999999999998.0 - 9999999999999999.0; -2.0

MariaDB [(none)]> SELECT 9999999999999998.0 - 9999999999999999.0; -1.0

</comment><comment><USER63> I don't get it. Why is the author complaining? He requests 17 digits of accuracy which is not something you should be using floats for in any form. Just import/link a package which can do arbitrary precision arithmetic of your choice and pay the overhead price.

</comment><comment><USER64> Pascal/Delphi gives the right answer:

writeln(FloatToStr(9999999999999999.0 - 9999999999999998.0));

1

</comment><comment><USER65> Groovy 2.4.5 gets it right:

println(9999999999999999.0-9999999999999998.0) 1.0

</comment><comment><USER66> Just tried it in PHP and was given an answer of 2.

</comment><comment><USER67> The default should have been arbitrary precision bignums with easy opt-in for floats and ints of varying sizes.

But oh well.

</comment><comment><USER68> Yeah, one more article shitting on IEEE-754, yaay.

</comment><comment><USER69> For some reason, this -very old- situation doesn't seem to trouble enough quadrillionaire coders.

Perhaps inflation will fix it. Or the first quadrillionaire AI.

</comment><comment><USER8> Well, duh. One of those numbers isn't accurately representable in IEEE 754 64-bit "double" values, which is likely what all of the failing languages use.

If you want more than 53 significant bits, you need something wider than a 64-bit IEEE double. And anyone who cares about such precision knows this and will expect to use a higher precision library. (Or is an incredibly specialized math language, like Wolfram.)

If you think having only 53 significant bits is bad, you should see how many bits common trigonometry operations lose in libm implementations.

Another fun example: video games (historically) have thrown away even 53 significant bits for the higher performing 32-bit floats.</comment>


Invisible Click Tracking Using "Empty" UTF-8 Characters - <AUTHOR> http://kaspars.net/blog/web-development/invisible-click-tracking

<comment><USER2> Just to point out that hovering over the link shows URL-encoded codepoints, i.e. %u200B (in Firefox, for me, at least). I do think it's a better solution than the existing approach with GET parameters which does look clumsy.

<comment><USER3> Interesting. Chrome on Windows doesn't.

<comment><USER4> Here neither. But even then, for very long URLs (can easily happen with that SEO crap), just hide your tracking byte so that when Chrome/FF truncates the URL for display, the bytes will be inside the hidden area.

</comment></comment></comment><comment><USER5> Nitpick:

> The idea is to use zero-width and space characters of UTF-8 such as U+200B, > U+200C, U+200D

That must be Unicode, not UTF-8.

<comment><AUTHOR> Fixed it, thanks!

</comment></comment><comment><USER6> Isn't this exploiting the same kind of Unicode ambiguity that allowed phishing sites to impersonate trusted domains by substituting certain latin characters with identical-looking cyrillic equivalents? I would expect this capability to last long in the wild.

<comment><AUTHOR> Interestingly, none of those "zero-width" characters are allowed in IDN domain names [http://unicode.org/faq/idn.html#22](http://unicode.org/faq/idn.html#22)

</comment></comment><comment><USER7> Anyone have a suggestion of how this would be used in practice for uniquely identifying something?

So there are a certain number of non-width space characters. As far as I can find in the links in the OP, U+FEFF, U+180E, U+200B, U+200C, U+200D would make 5.

So we have at least 5 values to work with, which would make... 120 combinations if they're ordered differently? Surely we would need more if we want to uniquely identify something such as a referral, or are there more non- width spaces?

I'm kind of dumb and bad at probability, also. You're encouraged to correct my thoughts on this and show me the errors of my thinking.

<comment><USER8> Surely you could put as many of them in there as you wanted? So you have an alphabet of 5 characters to make an infinite number of words from.

<comment><USER7> Good point. 0-9 work the same way. Glad I asked :)

</comment></comment></comment><comment><USER9> i don't see any variables in the url when i run the inspector.

<comment><USER10> Copy and paste the link into python, like so:

        >>> repr('http://kaspars.net/blog/web-development/invisible-click-tracking')
        "'http://kaspars.net/blog/web-development/invisible-click-tracking\\xe2\\x80\\x8b'"

EDIT: Yeah, they didn't show up anywhere in the Safari inspector for me either.

<comment><USER11> I'm not seeing this in Python either. Perhaps the URL on the article has been "fixed"?

</comment></comment></comment><comment><USER12> So who would pay for a tool to make creating/handling/analyzing these links as easy as using UTM parameters?

<comment><USER13> It's not that big of a deal to have these fields visible in the first place. The post is a nice trick, but I doubt it has a market for a startup.

</comment></comment><comment><USER14> There are only a few chars, so urls grow huge, once click count increases. JS is probably better

</comment><comment><USER15> Post as many as character you want and it will work. Here:

[http://kaspars.net/blog/web-development/invisible-click- trac...](http://kaspars.net/blog/web-development/invisible-click- tracking?)

</comment><comment><USER16> Does this also work in mail readers?

<comment><USER17> I tested this in Thunderbird by subscribing to the blog's feed. It didn't show the characters when hovering although Firefox does.

</comment></comment><comment><USER18> I actually like this. Assuming you agree there are non-creepy reasons to track clicks (not a given on HN) then this lets you keep your urls nice and clean when people just want to copy and paste them.

I imagine it might break in some scenarios (the url ends up with junk in it from bad unicode conversion) but it's up to you to be permissive in the urls you accept.

<comment><USER19> There are non-creepy reasons for click-tracking--e.g., you're a nonprofit supporting a cause, trying to identify preferences of your supporters. But caution: it might become creepy when you /appear/ to be hiding the tracking from your supporters. Why not give them readable URLs and be totally upfront about what you're doing?

<comment><USER20> I don't think creepy stuff is less creepy if you're not doing it for profit.</comment></comment></comment>


San Francisco zoning: Needs more density and tall buildings - brown9-2 http://www.slate.com/blogs/moneybox/2013/04/11/san_francisco_zoning_needs_more_density_and_tall_buildings.html <comment><AUTHOR> I mostly hate San Francisco, but I don't think there would be any serious negatives (except displacing renters, predominately poor and minority, and SRO residents, which could if politically needed be addressed by other forms of assistance and resettlement) by completely redeveloping the TL, Bayview, and HP as high-density, and the Mission heavy rail corridor as at least the original 8 story plan.

The current Mission Bay and South Beach stuff seems to have gone really well.

Leaving Haight, Noe, etc. with the Victorian character would probably be enough to preserve SF's historical features.

I'm not really sure about increasing density in "suburban" SF (Sunset, Richmond) -- it's already 2-3 story apartment buildings and townhomes, so the next jump is up to 5 or so, and it's not very well served with transit now.

<comment><USER2> Agreed on TL, Bayview, HP. For those unfamiliar with SF: Tenderloin is in the heart of SF (walking to Union Square shopping, Financial District) and where you go if you want to score drugs, offload stolen good, pick-up, or feel scared at night. Bayview and Hunters Point comprise miles of water-front property, close to the city center, on transit (T-line trolley car). Today they are a mix of industrial use, abandoned/empty/derelict industrial (there are brick warehouses that have been condemned since the 1989 quake), mixed in with some low income housing, and converted military barracks.

For a city infamous for its high rent, small rental stock, and boom in highly paid jobs to leave miles of water-front property undeveloped is near criminal. AFAIK, there are some complexities around industrial clean-up, but either way someone needs to get it done.

<comment><AUTHOR> HP is particularly special because of all the ships from Pacific nuclear tests being taken there to be cleaned, which mostly consisted of spraying them with water (left to drain on-site). So in addition to chemical contamination from Navy facilities of the era (PCBs, particularly), there are various radioisotopes.

<comment><USER2> Yup, cleaning up HP will be expensive. But isn't that a perfect case for an economic stimulus project? Invest now to create an asset that will improve economic productivity for the following century.

The fact is that HP will _one day_ be a gorgeous place to live and watch the sun rise over the bay. The question is whether that's a 100 years from now, or whether we start on it now, so we can see the benefits in our life times.

</comment></comment></comment></comment><comment><USER3> America needs more dense cities like NYC, for economic, national-strategic, and environmental reasons. But the citizens of cities will decide how they want to live.

The people and property owners of San Francisco may not be able to make the sacrifices that going ultra-dense require, even though San Fran is putting a huge amount of effort toward becoming far more dense than it already is.

IMO Los Angeles is more likely to have the ducks lined up for becoming ultra- dense over the next 25 years. Perhaps the demographic and geographic conditions are making this possible. Perhaps the strong, small property owners are also removed enough from where the corridors density will occur.

<comment><USER4> > America needs more dense cities like NYC, for economic, national-strategic, > and environmental reasons. But the citizens of cities will decide how they > want to live.

Sure, but you have to let people actually decide, instead of municipal zoning boards.

<comment><USER5> Isn't a municipal zoning board an example of "people deciding"?

<comment><USER6> The basic problem is that non-residents who would like to live there can't vote.

Until the 1970s, anyone could basically build whatever residential housing they wanted to anywhere. Not coincidentally, prices were low and relatively stable (by modern standards). During the 1970s, the city of Petaluma in CA passed the Petaluma Plan, which drastically restricted development. Courts accepted this and more and more residential restrictions.

In the short term they didn't seem to matter much. But in the last 40 years, as the population has grown and as people have realized that cities are pretty awesome in many ways (including economically), supply and demand have gotten way out of whack. One example is Santa Monica, which has the same number of residents it did in 1970 but vastly higher prices: [http://www.slate.com/blogs/moneybox/2012/10/12/sustainable_s...](http://www.slate.com/blogs/moneybox/2012/10/12/sustainable_santa_monica_coastal_california_is_green_but_without_population.html). Existing property owners, especially of existing single-family houses, like restricting property so the value of their property goes up (although they often disguise this in other rhetoric). Potential new residents can't vote, and courts have empowered existing residents and municipal boards.

Hypothetically, if we had some kind of national zoning / municipal board setting policy across the country, people in Texas or Arizona who wanted to move to SF would get equal weight with the people already in SF. As it stands, property owners in SF can exclude Texans through voting. I cite this as a thought experiment, not as a proposal.

Further reading: Edward Glaeser, _The Triumph of the City_.

<comment><USER3> Really good info here!

City of Quartz is also goot to read and goes into NIMBYism and other related issues for the case of LA.

<comment><USER6> I'm looking for an e-mail address and can't find one in your profile or G+ or Twitter; this is probably too late, but if you see this send me a message at seligerj AT gmail DOT com.

</comment></comment></comment></comment></comment></comment><comment><USER7> The worst possible thing SF could do would be to completely change density and building heights _in a boom period_. The money is here now, so are the people. But are the entrepreneurs in soma going to stick around if the VC money dries up? Are the hip kids in mission going to stick around once their six figure tech salaries leave the area?

SF is a unique city on the west coast. It would be a travesty to let a bunch of out-of-towners come here for a few years, complain loudly enough to get their changes passed, then leave a barren and soulless modern wasteland once the boom dies down. _Dont do radical expansion during a boom!_ The south and south-east bay will look like Detroit in a few decades, dont let it happen to SF.

Of course the politicians wont help. Brown and Newsom were so greedy/ambitious respectively, they would probably have loved to work with the tech crowd. Lee achieved what he set out to do the day he was elected; he will now most likely look to consolidate his financial situation and his power. I dont think theres been a mayoral candidate since Jello Biafra who has actually cared about the city itself.

Some of the problems SF would have if density increased significantly: -public transportation is made a for a much lower density than other big american cities. That wont be fixed until bart turns into a comprehensive subway system, which isnt happening while the state is broke. -highways and their off-ramps in the city are made for a much lower density city. -The zoning laws for big-box stores and (i think) grocery stores is pretty restrictive. That will need to change. Which is pretty significant. Maybe we dont want SF turned into SJ/LA?

My personal suggestion would be to impose a severe, severe congestion charge within city limits. This would help to separate the wheat from the chaff, but also to keep services in line with population. The problem is that city leaders are making so much money from tourism and the boom (and potentially development) that they have no interest in helping the city.

The hippies moved to haight because it was cheap and that was all they could afford. The techies moved to SF because it is a first world playground that hadnt been used up yet. Well congratulations, youll get there.

<comment><USER8> You propose a congestion charge to eleviate the problem of there not being enough housing?! Thats completely and utter nonsense. The only way around overpriced housing is to build more. If people move away and the prices drop, the flats become bigger and people will have a better life style (assuming they have jobs). Instead you suggest that all should cram into small housing and talk about how awesome the place is. I'm sorry to say it, but thats bullshit.

The "detroit" problem that you mention is of a different kind. What do you do with derelict areas?! Thats politics and something you can figure out later. But not at the expense of everyone who now is paying way too much for shitty housing.

<comment><USER7> a congestion charge would lower density. People wouldnt cram in, most would just leave. Obviously we have different goals in mind for the city.

</comment></comment></comment><comment><USER9> I don't understand why people keep saying SF "needs" more density. Why? I'm assuming because the cost of living is so high? That is primarily caused by the Ponzi scheme of renter rights that make it so anyone renting for more than a few years is hugely disincentivized to move because they will lose their cheap rent, since their rents can never be increased to meet the market. So people stay in their crappy old apartment rather than upgrading, which reduces the inventory and drives up prices for everyone else.

Secondly, you don't just build apartments and you're done - a density increase requires more services to handle those new people. That's supermarkets, restaurants, hospitals, police, etc. All of that needs to be built up as well and usually isn't considered. If you DON'T add any of that, all you have done is reduce the services available for everyone in that area. What's the advantage of this again?

Finally, comparing the density of SF to Manhattan is not remotely accurate. Manhattan is the highest density part of NYC. SF contains a number of huge parks, mountainous areas like Twin Peaks, deeply residential areas like St. Francis Wood, etc. If you compare the density of the Mission vs. Greenwich Village or something like that, I could see it being relevant, but SF vs Manhattan is apples to oranges.

<comment><USER4> Manhattan is precisely the right thing to compare to San Francisco. San Francisco's borders are drawn in a way that encompasses what in other cities would just be the dense inner neighborhoods. E.g. Oakland is a separate city while Queens is part of New York City proper, but they're functionally and geographically equivalent.

If you go neighborhood by neighborhood, you'll see that San Francisco isn't really very dense. No neighborhood besides Chinatown and the Tenderloin are more than 50,000 per square mile, and popular areas like the Mission are only 25,000 per square mile. In New York, the UES and UWS are over 100,000 per square mile. Greenwich Village/SoHo (same community area) is 60,000 per square mile. Chelsea is about 45,000 per square mile.

<comment><USER10> The tenderloin is 72,000 sq/mi.

<comment><USER4> Corrected.

</comment></comment></comment></comment><comment><USER11> Almost a year ago, the author, Matthew Yglesias, wrote nearly the exact same article with respect to Washington, D.C. ([http://www.slate.com/articles/business/moneybox/2012/04/d_c_...](http://www.slate.com/articles/business/moneybox/2012/04/d_c_s_height_restrictions_on_buildings_are_hurting_america_.html)).

Washington, D.C. is an interesting & relevant case-study in this regard because of the Heights of Buildings Act of 1910 ([http://en.wikipedia.org/wiki/Heights_of_Buildings_Act_of_191...](http://en.wikipedia.org/wiki/Heights_of_Buildings_Act_of_1910)) which restricts the maximum building height in the District. Depending on your viewpoint, the law has led to the desired "lightness and airiness" of D.C. as envisioned by planners of that generation; it has also led to expansion and sprawl into Northern Virginia and the Maryland suburbs of D.C.

<comment><USER4> What it has led to is a little city of 600,000 having the worst traffic in the country as it tries to play host to a metro area 10x larger full of people who commute every day in random directions because the hight limit prevented the creation of a proper central business district which could be served with proper transit infrastructure.

</comment></comment><comment><USER12> Having NYC style density is one thing, actually supporting it is another. If anyone has used the MUNI light rail system in SF it is plagued with constant delays, breakdowns, inefficient routing, and of all things traffic jams. The light rail is also a hybrid aboveground/underground system, and when above ground is not separated from the motor vehicle traffic, which causes more delays. When underground several lines merge onto one track (bart does this too) this is another pain point.

As for bus service thats even worse. One of the original goals of muni was that residences should be within 2 blocks of a MUNI stop. That sounds great on paper, but in reality it makes trips excruciatingly long. When a bus route has to stop at every other block, or in some cases every block, especially on flat terrain, it exemplifies the absurdities of MUNI's grand plan.

</comment><comment><USER13> No!

Why more density? What will that accomplish?

There are _a lot of cities_ that could use the business.

The other side of the Bay. Stockton.

Stop cramming people into a closed space, it will result in a miserable and still expensive place.

<comment><USER14> The flip side logic works too: if you want wide open sprawl, move to Stockton or Livermore or wherever. "Cramming people into a closed space" is a way to make it easier for more people to live where they want.

People in SF right now are already OK with a high density environment. Lots of people who want to move to SF are, too, but can't because there is no space for them.

The idea that "density" is "miserable" is a uniquely post-war american one. It really doesn't work that way.

<comment><USER13> It is miserable when architects are trying to cram everything to tiny sizes because of costs caused by real-estate speculation.

Yes, I lived in a college dorm, tiny, but not miserable (college helps, of course ;) ).

Now, see this: "[http://realestate.aol.com/blog/2013/03/07/san-francisco- micr...](http://realestate.aol.com/blog/2013/03/07/san-francisco-micro- apartment/)

160 sq. ft. (or around 14m2 for the metrically able, or my favorite measure, this is the size of a square with a side of 3.7m)

That college dorm I lived, no kitchen, no shower, was around this size.

<comment><USER14> Then surely you would _support_ the argument in the linked article which would allow building more square feet of living space by increasing allowed building heights, right?

You're equating living space with physical land area, and that's not right at all.

<comment><USER13> I know they are different

Increasing build height poses a burden on the road/transport system.

Believe me this is a bad idea. You can't do that with either a good investment in public transport and road work (which is usually not possible since you can't reduce the size of the buildings to make roads wider)

That's one of the reasons for massive traffic jams in cities like Sao Paulo for example.

New York has a higher density, but a very good public transport system.

<comment><USER14> NY didn't always have that transport system: it built it as it grew. The same can be true for SF. Again you're making an assumption (SF can build apartment buildings but somehow not subway tunnels) that is both flawed and addressed by the linked article.

It's _fine_ that you don't want to live in SF. But that simple fact doesn't make increasing density a bad idea for those who do. And to be clear: there are a _lot_ of people who want to live in SF.

<comment><USER15> NYC kind of did always have that transport system, though. The subway hasn't significantly expanded for 100 years.

<comment><USER14> And interestingly the housing density along the subway lines hasn't changed much either. Manhattan has always been as dense as its infrastructure will allow. The point is that you can build infrastructure to support density. NY did, SF didn't. But now SF is in a situation where increased density would be preferable, so the solution is to _build infrastructure_ (housing and transit, etc...) and not to use the lack of one to refute the need for the other.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Instead of lobbying, or fighting policy (the old way) hack together a crowdsourced version of a future San Francisco,and let the people chose how they want the city to look 400 years from now.

Something similar to the Manhattan Project, in New York, but instead of looking back 400 years, look forward 400 years.

The Manhattan Project, gives a mapped 400 year history of New York. One can watch the TED below.

Source: <http://welikia.org/> <http://www.ted.com/speakers/eric_sanderson.html> [http://www.ted.com/talks/eric_sanderson_pictures_new_york_be...](http://www.ted.com/talks/eric_sanderson_pictures_new_york_before_the_city.html)

</comment><comment><USER17> A lot of smart, well-informed people object that increasing density will make things worse. They are not entirely wrong; from the current 10 people/acre moving to 15 or 20 in a clumsy way will make things worse, but moving to 30 in a smart way will unlock vast benefits. See Alex Steffen's Carbon Zero for more: <http://www.alexsteffen.com/carbon-zero-2/>

</comment><comment><USER18> There is a certain point where density begins to become a hindrance and can as a result create communities that are just as 'dead' as some suburban ones.

For example, here in Vancouver we have more condos per capita than anywhere else in North America--with maybe New York ahead of us and San Francisco just behind. In areas where there are 4-6 story buildings, I find that the communities are vibrant and have a lot of activity on the sidewalks.

However, go into neighbourhoods like Yaletown or newer developments in North Burnaby, you'll find that the large towers are actually not very vibrant and just act as terminus-es for those who live there.

I believe that there was an Economist article a few years back that discussed this very problem affecting Tokyo, which is pretty much the epitome of urban densification.

Cities need density in order to thrive, but there is a point where too much density leads to problems. It might be premature or naive to call for San Francisco to make itself even more compact considering that it is already one of the most dense cities on this continent.

<comment><USER19> The important ingredients, so often overlooked, include mixed-use zoning and public spaces. If all you have are a bunch of condo towers abutting each other, you're almost guaranteed a dead high-density area.

Once you start mixing things up, though, it gets much better. Add some restaurants and shops and other businesses on the ground floors of the condo towers (even better, mix in a few two-to-three-story retail centers), and some small parks, squares, and other public areas, and the density can be leveraged to create a thriving street-level area.

</comment></comment><comment><USER20> Article has great points, but I must remind everyone of the unbelievably rapid pace the city is already being developed. Business in SOMA, let alone its status as an extension of the Valley itself, practically didn't exist 15 years ago; the real estate boom saw a huge number of affordable(ish) apartments turned into crazy-expensive condos that can sit vacant for months before a purchase, and the real estate bubble never popped on single-family homes in the more appealing neighborhoods. This has a nearly immeasurable effect on its demographics and tax base that the city can hardly keep up with. It also wouldn't hurt if resources were allocated for construction projects to be much more accelerated. I don't understand why large-building construction takes 3x as long in this city as others (and no, its not just permits/redtape).

Is more, and rapid, development critical today? Sure, maybe. Do I support it? Yes.

But its complicated...

<comment><USER4> It's incredible to me that people think San Francisco is all that dense or rapidly developing. It has half the people of Manhattan in twice the area yet still rents between the two cities are approaching parity. Much of the city is a glorified suburb and needs to be razed and developed into proper civilization as quickly as they can work the bulldozers.

<comment><USER15> It's the 2nd densest city in America. Even if it's not comparable to Hong Kong, that is why Americans might think it's dense.

<comment><USER4> Maybe that's the reason...

As an aside, San Francisco is denser on paper than in real life because of how its borders are drawn relative to other cities. The core of Chicago fits the population of San Francisco into 31 square miles with an average density of 25,690 per square mile. 1.3 million people in Chicago live in a neighborhood with at least the average density of San Francisco, with a total average density of 22,240 per square mile. If you take a subset of Chicago neighborhoods with the same average density as San Francisco, it has about 2.4 million people.

</comment></comment></comment></comment><comment><USER21> On one hand urban planners tells us density is the future and inevitable for American cities to not fall behind and .

On the other hand the fastest growing cities in the US are the low density type: Houston, Raleigh, Phoenix, etc. Cheap housing and easy growth, and new vehicle technologies (hybrid, electric) are challenging the transit energy advantage. Most cities have a hard time building new housing and becoming more dense after a certain stage (SF) and a large proportion of the lower-class workers starts to commute as they are priced out of their workplace.

[http://www.newgeography.com/content/003629-houston-rising- wh...](http://www.newgeography.com/content/003629-houston-rising-why-next- great-american-cities-aren-t-what-you-think)

The author has his biases, but offers a different perspective from the mainstream.

</comment><comment><USER22> To be fair, the perspective here is insanely skewed. Most of the people here have moved to SF in the past 5 years or so and have this idea that the city should basically rebuild itself to optimally accomodate the SF startup community. However, much like everyone's hometown, people actually live here and care about maintaining a bit of the culture. Deciding that because people who have a lot of money and need housing right now are temporarily moving here necessitates rebuilding an entire city with those peoples needs in mind and basically not caring at all about current residents needs and wants seems pretty silly and selfish honestly.

It seems like "improvement" is the modern code word for "build housing poor people can't afford so we can get rid of the poor people"

</comment><comment><USER23> As others have mentioned, increasing units without increasing infrastructure will only make things worse. NYC is great because of its transportation, subways for intra-city and rail for the suburbs. Even then, NYC isn't perfect. The middle class can't afford to live safety in NYC. It is polarized for the rich-poor. Living in Manhattan is price-prohibitive, $2500+ for a decent one bedroom. The bronx is mostly poor with a high crime-rate. Queens/Brooklyn are polarized too. The middle class need to commute from the suburbs (NJ, upstate NY, long island/CT), with commutes of 1 hour+ each way. Fortunately the rail system can mostly handle it, but it is still a lot of time out of the day.

</comment><comment><USER24> > a height limit of 85 feet, or 8-story buildings, for > Mission Street, > between 16th Street and Cesar Chavez > Street, in order to take advantage of > Mission Street's > high transit service, including BART and Muni line

Has the author ever tried to ride a bus down Mission street now? It takes like 45 minutes to go 8 blocks and you're packed in there like a sardine can.

Imagine if you made the buildings twice as tall you'd have to triple the amount of buses. Which probably wouldn't help because with the current amount of traffic you spend more time stopped than you do moving.

<comment><USER4> That's more of a problem with the traffic management than the density. Mission district has a density of only 25,000 per square mile.

</comment></comment><comment><USER25> There's tons of space to do this in without compromising the quality of the city. Bayview and south from there, all the way to South San Francisco where there is tons of undeveloped space, and where the combination of new large developments with high-speed commuter rail (i.e. modern fast BART, with a couple of branching lines - CalTrain is decades past prime) could end up being cheaper and faster to build. It doesn't have to be the heart of the city, nor does it have to be the suburban sprawl you commute to/from +2hrs per day. It should be a menu of options.

</comment><comment><USER26> A major problem with the high-density occupancy issue is the persistent absolute insistence that every vertical structure end at a few hundred feet, forcing everyone to ground level. Of course frequent forcing of a volumetric problem to a planar solution will have congestion problem, and increasing the range of the third dimension just makes moving from one building to another worse.

To wit: stop limiting buildings to single-block dimensions. Span the roads, not just with the occasional bridge, but by extending whole buildings.

</comment><comment><USER27> Yes. I love the bay area, but the idiocy of the city council when it comes to building stuff is absurd ; especially when they then complain about a lack of affordable housing.

</comment><comment><USER28> Sort of funny how the article is about packing them in even tighter in SF and the picture is of a bunch of empty hills behind the GG bridge.

<comment><USER29> well it's not like you are going to put condos on the Marin headlands.

<comment><USER28> Yup. They're not because people fought back in the 60's to preserve large amounts of land in Marin. Don't expect any different in SF. The existing residents don't want more density and rightly so since it lowers their standard of living. This article just seems like a bunch whining. If you can't afford an apartment, just get a roommate.

</comment></comment></comment><comment><USER30> This is true everywhere. We sacrifice quality of life for old world living.</comment>


Are self-driving cars 33 times more deadly than regular cars? - <AUTHOR> http://andrewgelman.com/2018/03/23/self-driving-cars-deadly-regular-cars/ <comment><USER2> It's also possible that _Uber 's_ self-driving cars are many times deadlier than regular cars, but the other players in the space are more responsible.</comment>


Ask HN: How to prepare for a future startup? - <AUTHOR>

I plan to do a startup a year or so from now.  What do you think I should be doing to prep for doing a startup in the future? I'd like any advice/anecdotes on skills to pick up, cities to move to etc. Keep in mind that I have no prior startup experience. <comment><USER2> Do you have a particular idea that you're looking to implement, or do you just want to do some sort of startup?

If you do have an idea, you should get to work on it ASAP. There is no better time than now. The longer you wait, the more likely it is that someone else is going to implement your idea and execute it well before you even get started.

If you don't have an idea, then finding an idea should be your first step. You can't really focus on picking up certain skills unless you know what you're going to accomplish. On the other hand, if you know you want to do a web application startup, then you should start learning PHP, Ruby on Rails, etc. right now.

Moving is a tough one. Don't discount your network of friends and family in your current city. They provide a lot of support and friendship that you will have to do without while you settle into a new city. If you live in or near a large city you should look for networking events aimed at startups. Startups love to present their product, and it's a great environment for meeting like- minded people. Check LinkedIn for groups in your area.

On the other hand, if you were already looking to move then the change of scenery could be just the thing you need to shake your life up kick you into startup mode. Also, you won't have any pesky friends or social engagements to occupy you for a while after moving, so there's even more time to work on your code. Really, though, you just need to pick a big city that you enjoy and can afford. Definitely visit several cities first and spend some time there before you make a decision.

Most importantly, however, you need to remember that planning and thinking are great, but _doing_ is what gets things done. Focus on doing.

<comment><AUTHOR> That's great advice! Thanks so much. I have a couple of ideas, but they aren't terribly big ideas. They are neat, and I would use them if they were available as a product today. I'm OK with building small products from a few neat ideas - I just want to get started.

As for moving, I've always been told that you need to be in the Valley to be able to do a reasonably successful startup. How much of it is true? I live in Seattle, and there's a pretty good (albeit small) startup community here.</comment></comment>


Scott Adams' Financial Advice (2014) - <AUTHOR> https://www.mattcutts.com/blog/scott-adams-financial-advice/ <comment><USER2> Reminds me of [https://web.archive.org/web/20171023045242/http://www.samefa...](https://web.archive.org/web/20171023045242/http://www.samefacts.com/2013/04/everything- else/advice-to-alex-m/)

"What _is_ this simple free best personal finance advice that fits on a 3×5 card? "

* Max your 401k (or equivalent)

* Buy low fee, diversified whole market funds

* Never buy or sell individual stocks

* Save 20% of your money

* Pay your credit card balance in full every month

* Maximize tax-advantaged savings vehicles like Roth, SEP & 529

* Pay attention to fees and avoid active management

* Make financial advisors commit to a fiduciary standard (or fee-only!)

* Promote social insurance programs to help people when things go wrong

<comment><USER3> Translation: Earn at least 30% more than all your expenses combined, after tax.

<comment><USER4> Curious where you got the 30% from out of that? Where does the extra 10% come from on top of the "Save 20%" bit?

<comment><USER3> If you're saving 20% of your earnings, then that's 25% of the remaining 80% (which is assumed to be expenses). I estimated another 5% for the miscellaneous other stuff like buying shares, maxing 401(k), paying financial advisers etc. If all of that was meant to come out of the original "save 20%" then call it 25% (of expenses) rather than 30%.

<comment><USER4> Ah. You're just flipping around what the percentages are based off. Makes sense I suppose. Neat.

</comment></comment></comment></comment></comment><comment><USER5> This kind of simple list reminds me of a simple gym workout or simple cardio.

For 95% of Americans, doing any kind of exercise is better than what they're doing (or nothing), and similarly, for 95% of Americans, a simple proscription like this that is easy to follow will be better than whatever they're doing currently.

Complexity can lead to paralysis and inaction, and any positive action, even if technically imperfect, is better.

</comment><comment><USER6> Maybe I am missing something but how can this advice work for 95% of people? Maxing out the 401k and IRA would take $25,000 a year [0]. The median personal income in the US is only about $30,000 a year [1].

[0] [https://www.irs.gov/newsroom/401k-contribution-limit- increas...](https://www.irs.gov/newsroom/401k-contribution-limit-increases- to-19000-for-2019-ira-limit-increases-to-6000)

[1] [https://en.m.wikipedia.org/wiki/Personal_income_in_the_Unite...](https://en.m.wikipedia.org/wiki/Personal_income_in_the_United_States)

<comment><USER7> It doesn't. Depending on where you look, 40 - 80 % of Americans live paycheck- to-paycheck. (The Guardian says it's 80 %: [https://www.theguardian.com/commentisfree/2018/jul/29/us- eco...](https://www.theguardian.com/commentisfree/2018/jul/29/us-economy- workers-paycheck-robert-reich))

Matt Cutt is just talking because he doesn't know any better, tech is booming, and he became wealthy because he joined a very successful company early on.

</comment></comment><comment><USER8> "Pay off your credit card balance"

Most Americans will never be able to get past this one. If you can, you already know how to spend less than you earn and are way ahead of the game.

This advice is sort of like telling a society of overweight people to "eat less calories than you burn". True, but not very helpful.

<comment><USER9> I am fascinated at how credit cards are both quite a good deal and a very bad deal at the same time. If you use them right - which is mostly pay off each month - you can get nice sign-up bonuses (up to $600 is not unheard of if you're lucky), you can get 1.5-2% back on every purchase and 5-6% on selected categories, and if you're careful, you can also take zero APR longer-term loans with some credit cards (provided you pay them off properly) which helps structure unexpected spending like major appliance breaking down.

On the other hand, you get unbelievably bad deal with 20+% APR if you don't use them right, and on top of that various fines for not paying on time, so if you get the wrong end of the deal, you can pay 2x-3x of the original amount.

One of many things on the credit market which makes your life much easier if only you can prove you don't really _need_ their service.

</comment></comment><comment><USER10> I might quibble with one of the points:

> Put six months' expenses in a money market account.

This is presumably supposed to be the "oh crap" emergency fund ... i.e., for major, unexpected expenses which can't or shouldn't be covered by credit card.

Putting this in a money market account can make it just a little bit too inconvenient to withdraw for emergencies, and it's subject to market fluctuations.

My equivalent account currently has several hundred less dollars than I've paid in to it. I know it'll be better later on, but if I needed it right now, that would be a loss I'd hate to take.

You can now get 2.25% APY on savings accounts at legit banks (example: [https://www.mymoneyblog.com/cit-bank-savings-builder- account...](https://www.mymoneyblog.com/cit-bank-savings-builder-account- review.html)). Two and a quarter sucks way worse than a healthy market, but it's about on pace with inflation and it's a lot better than a crappy market. It's also a lot more liquid: if I needed the cash right now, I could do it with a bank-to-bank transfer and I should have the funds in my checking account pretty quickly. If I wanted to liquidate my market account, there's a couple-day waiting period while things are sold and transferred around.

I've found it helpful to break things down into:

\- cash-on-hand: what I could walk into any business and spend right now;

\- emergency fund: a modest stash that I could access in about one business day;

\- near-term investments: market accounts and the like;

\- long-term investments: IRA.

But as other folks have pointed out, if you're saving anything at all then you're doing better than most Americans.

<comment><USER11> Money market account != money market fund. For example, I have a MM account over at Capital One. It's FDIC insured. The only material difference (from the customer's perspective) between it and their traditional savings account is that you only get the 2% rate once you've met the minimum balance (otherwise the rate is lower than for the savings account). Transfers from the MM account to my checking account work in exactly the same way (and are just as fast) as savings to checking, even down to the 6-withdrawals-per-month limit.

Agreed that there are other options with higher rates and are considered regular savings accounts, but for most people the distinction doesn't matter. For me, the hassle of switching banks wasn't worth a quarter percent. YMMV.

</comment></comment><comment><USER12> The 70/30 split on stocks to bonds is a little suspect. Traditionally what you want to do is start your career with high (probably 100%) stock allocation and slowly move towards more more bond allocation with time. There's no right single number there so maybe that's where 70/30 came from, but yeah, don't do that for your entire career.

<comment><USER13> A 70/30 or 60/40 split with regular rebalancing can smooth out market fluctuations. When stocks do well this pulls money out and locks in the gains at a time when psychologically you want to let it rise. When stocks are doing badly this also forces you to buy at a discount when you might be inclined to keep the money on the sidelines out of fear of future losses.

</comment></comment><comment><USER14> I read a really interesting thread recently, can't find it but the gist of it was Index Funds appreciating isn't guaranteed (as they're pitched) and localizing at a country level is a mistake for the future w/giant "emerging" economies in China / India.

The counter "example"used was the Nikkei index which peaked in ~1990 and still hasn't recovered:

[https://www.macrotrends.net/2593/nikkei-225-index- historical...](https://www.macrotrends.net/2593/nikkei-225-index-historical- chart-data)

The argument was to leverage index funds as a component of portfolio along with real estate, etc.

Would be curious the HN view.

<comment><USER15> An index fund by definition just tracks an indicator. You don't have leave the USA to see a long-term decline; the Nasdaq is currently below its Feb 2000 peak. All index-fund investing advice includes diversification across several asset clases. (Insert plug for [https://research.wealthfront.com/whitepapers/investment- meth...](https://research.wealthfront.com/whitepapers/investment-methodology))

<comment><USER16> Nasdaq composite was 4698 in Feb 2000. Currently it is 6584. ( see here : [https://finance.yahoo.com/quote/%5EIXIC/history?period1=9467...](https://finance.yahoo.com/quote/%5EIXIC/history?period1=946702800&period2=1546059600&interval=1mo&filter=history&frequency=1mo) )

<comment><USER15> You're correct, but its inflation-adjusted Feb 2000 peak was 6970.

Source: [https://www.macrotrends.net/1320/nasdaq-historical- chart](https://www.macrotrends.net/1320/nasdaq-historical-chart)

</comment></comment></comment></comment><comment><USER17> As a first commenter, I think I can say this is at least decent advice. Especially around paying off debts (he specifically mentions credit card debit, but it applies to most forms, Imo). Ignoring the other stuff around Scott Adams, I think this is decent for most, but of course depends on the individual.

<comment><USER18> What other stuff around Scott Adams, and what's the relevance to this?

<comment><USER19> He's a lunatic narcissist with questionable critical thinking skills [http://comicsalliance.com/scott-adams-plannedchaos- sockpuppe...](http://comicsalliance.com/scott-adams-plannedchaos-sockpuppet/)

<comment><USER4> I believe his response to that was that people were purposely misinterpreting what he said. I haven't looked into it in detail for a while, but last time I did, it seemed like a perfectly reasonable defense.

<comment><USER19> How do you misinterpret him going around the internet anonymously praising himself?

</comment></comment></comment></comment></comment><comment><USER20> Great advice. (Not so easy to stick with all of it, but it is very sound advice.)

</comment><comment><USER21> Please add 2014 to the title

</comment><comment><USER22> I would add investing in precious metals to that list. Especially silver and gold right now. Its been extremely undervalued, and steadily moving sideways. When this stock market tanks even more then it has the last few weeks, we are going to see metals sky rocket like it has in the past. Gold and silver are an indispensable long-term inflation hedge. Look at jpmorgan, they were shorting silver for how long, now they are going long buying almost 2million ozs a day, i think they are up to over 750million ozs. All the central banks are buying up as much as they can get there hands on, so id say its a safe move to use a % of your savings and buy physical silver and gold. Im staying away from the paper precious metals investments, because if we do have a financial melt down, at least i know ill have some of my savings in my physical possession. ;]

<comment><USER23> No, that's very poor advice. Precious metals are comparable to individual stocks -- by making a purchase, you are not "investing"; you are _speculating_. There is no guarantee of long-term gains.</comment></comment>


Lyft valued at $24.3B in first ride-hailing IPO - <AUTHOR> https://www.reuters.com/article/us-lyft-ipo/lyft-valued-at-24-3-billion-in-first-ride-hailing-ipo-idUSKCN1R92P4 <comment><USER2> This is first time I consider betting against stock in 5-year time horizon. Lyft as a company and business model is almost exactly like the dot-com era failure.</comment>


UX review of your SaaS landingpage - <AUTHOR> Because I work with multiple SaaS companies every day, I get to learn what works and what doesn't from a variety of sources.
In order to gather more data & learnings for my team and myself, we wanted to experiment with a free UX review service.
Simply email me (see bio) your SaaS website. We'll spend 5min checking it out and write you a short UX report based on what we see.
You get free actionable and practical advice. We get to collect, learn and compare multiple sources to better our knowledge pool. <comment><USER2> Got some speedy feedback from Karim. Definitely some great advice! Thanks

</comment><comment><USER3> This is great - messaged.

</comment><comment><USER4> Sent the message, thank you very much for the opportunity.</comment>


Mounting partitions from a dd image - <AUTHOR> https://assafmo.github.io/2018/05/09/mount-dd.html <comment><USER2> This is doing it the hard way. Make the image a loop device:

       losetup /dev/loop0 /path/to/your/image.img

Now you can use /dev/loop0 like it's a normal disk. If you're not seeing your partitions (/dev/loop0p1, etc.):

        partprobe /dev/loop0

When you're done, detach the loop device:

        losetup -d /dev/loop0

I use this trick to transparently compress ddrescue images with brtfs: [https://brashear.me/blog/2017/11/14/how-to-create-a- compress...](https://brashear.me/blog/2017/11/14/how-to-create-a-compressed- ddrescue-image/)

<comment><USER3> Thanks, not OP but that looks useful to me. For context, I've used the strategy in OP to debug a small linux system running on an SD card, if I have one version that has a bug and one that doesn't, and I don't know the difference, I can image them both, mount them and diff the whole system (i.e. with meld.) And it can be done with the same card over time. I'd like to figure out how to do this with VM disks as well but I've never had a pressing need.

<comment><USER4> > _I 'd like to figure out how to do this with VM disks as well but I've never > had a pressing need._

Everything that you will (probably) need is here: [http://libguestfs.org](http://libguestfs.org)

If you happen to need something that isn't already included, the APIs make it pretty easy to build your own tools as well.

Conveniently, those tools are also already packaged up for your distro (unless you use some esoteric distribution, perhaps).

</comment></comment></comment><comment><USER5> OpenBSD uses vnconfig (also FreeBSD; on NetBSD it's vndconfig). An example:

      # vnconfig vnd0 install63.fs

Then you can treat _vnd0_ as if it was a disk:

      # disklabel vnd0
      # /dev/rvnd0c:
      type: vnd
      disk: vnd device
      label: fictitious
      duid: 138b4f2a2e184426
      flags:
      bytes/sector: 512
      sectors/track: 100
      tracks/cylinder: 1
      sectors/cylinder: 100
      cylinders: 7382
      total sectors: 738240
      boundstart: 1024
      boundend: 737280
      drivedata: 0

      16 partitions:
      #                size           offset  fstype [fsize bsize   cpg]
        a:           736256             1024  4.2BSD   2048 16384 16142
        c:           738240                0  unused
        i:              960               64   MSDOS

For instance, to mount the 'a' partition:

      # mount /dev/vnd0a /mnt

You can also associate an encryption key with the device. All data written to the diskimage will then be encrypted.

<comment><USER6> FreeBSD does not use vnconfig, FreeBSD uses mdconfig:

        # mdconfig -f smartos-latest-USB.img
        md0
        # gpart list md0
        ...
        scheme: MBR
        Providers:
        1. Name: md0s1
           ...
        # mount -o ro -t msdosfs /dev/md0s1 /mnt
        // (or, use labels)
        # mount -o ro -t msdosfs /dev/msdosfs/SMARTOSBOOT /mnt

Or for ISOs, in one line:

        # mount -t cd9660 /dev/$(mdconfig -f image.iso) /mnt

<comment><USER4> I was just about to correct your correction, because I can quite clearly recall using _vnconfig_ on FreeBSD.

Apparently that's been a little while, however. According to vnconfig(8):

> _The mdconfig utility first appeared in FreeBSD 5.0 as a cleaner replacement > for the vn(4) and vnconfig(8) combo._

5.0 was released just over 15 years ago.

</comment></comment></comment><comment><USER7> One time I tried to create a tool to do in-place conversion between Linux software RAID volumes (e.g. RAID-0 to RAID-1 (assuming data fits), or RAID-1 to RAID-5, etc.) I used disk image files and the loopback device to test it to avoid having to reformat physical partitions.

Despite reading all of the documentation I could find, and even going so far as to read kernel source code, I could never get the system to recognize my striped block data. That is, I tried to generate three files composing a RAID-5 "by hand", but mdadm would refuse to mount them. I never figured out if there was some additional id-block I was missing, or if my striping algorithm was not correct.

</comment><comment><USER8> Under Linux, this can also be achieved with kpartx(8).

[https://linux.die.net/man/8/kpartx](https://linux.die.net/man/8/kpartx)

</comment><comment><USER9> Or without needing root using guestfish ([http://libguestfs.org/guestfish.1.html](http://libguestfs.org/guestfish.1.html))

        $ guestfish -a img.dd -m /dev/sda1
        ><fs> ll /

guestmount works if you want to mount it on a local directory (implemented using libguestfs + FUSE).

</comment><comment><USER10> I think ZFS has the easiest way to do this sort of thing:

        # fallocate -l 256M disk.bin
        # zpool create filepool /root/disk.bin
        # zfs set mountpoint=/root/filepool filepool
        # df -h /root/filepool
        Filesystem      Size  Used Avail Use% Mounted on
        filepool        208M     0  208M   0% /root/filepool

<comment><USER11> Sure, ZFS has lots of awesome features, but the point of loopback device lets you to attach and mount basically any disk image that has kernel or fuse drivers.

</comment></comment><comment><USER12> You can directly expose the partitions using the tool `kpartx`, which will create a `loop` device for you:

      > sudo kpartx -a test.raw
      > lsblk
      NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      loop0       7:0    0     4G  0 loop
      └─loop0p1 253:0    0     4G  0 part
      > sudo kpartx -d test.raw

</comment><comment><USER13> > mount -t -o ro,offset=$((512 _63)) x.dd partition_1

> mount -t -o ro,offset=$((512_96390)) x.dd partition_2

Isn't the mount type "-t" value missing?

<comment><AUTHOR> Thanks! I missed this. Fixed. :-)

</comment></comment><comment><USER14> libguestfs > losetup > fdisk

I.E. libguestfs is safer when dealing with images of unknown origin, and losetup has inbuilt support now for partition scanning.

Here's an old fdisk/parted wrapper I used to use:

[http://www.pixelbeat.org/scripts/lomount.sh](http://www.pixelbeat.org/scripts/lomount.sh)

</comment><comment><USER15> Is it also possible to repartition the image with conventional tools?

How about setting a boot flag and writing it back to e.g. an USB stick?

<comment><USER16> Yes, you can use losetup.

      ~# dd if=/dev/zero of=image.img bs=1M count=100
      ~# LODEVICE=$(losetup --find --show image.img)
      ~# fdisk $LODEVICE
      ~# losetup -d $LODEVICE

^ The above creates a 100MB disk image, binds it to a loopback device, runs fdisk, and then detaches it. I'm not sure how formatting the partition would work but presumably those tools have an offset option too?

edit: this page explains using offsets for mke2fs and doesn't require losetup: [https://superuser.com/questions/737072/userspace- manipulatio...](https://superuser.com/questions/737072/userspace-manipulation- of-partition-and-disk-images)

also, losetup can now scan the device for partition tables and make partition- specific loopbacks! [https://stackoverflow.com/a/15200862](https://stackoverflow.com/a/15200862)

<comment><USER17> Extlinux on an ext4 partition doesn't need an offset. Or at least didn't when I wrote this: [http://www.blackkettle.org/posts/archive/2013-08-19-bootable...](http://www.blackkettle.org/posts/archive/2013-08-19-bootable- mountable-vm-images/)</comment></comment></comment>


Asbestos – A Matter of Time (1959 film by the US Bureau of Mines) - <AUTHOR> https://www.youtube.com/watch?v=PVQVfIB4MIc <comment><USER2> I love these old educational films. First, the music is absolutely hilarious. Everything had to be accompanied by a Disney-style orchestral soundtrack. Of course, there's no mention of the fact that asbestos literally _kills people._ Everything in these movies is built around the belief that governments and technology are making the whole world better for everyone. As a child of the 60's, I grew up with these ideas. In adulthood I learned, along with the rest of the world, that technology and government won't save us and, in fact, are often a great source of harm.

</comment><comment><USER2> The title (and final quote of the film) is unintentionally prescient: "For asbestos, it's still a matter of time." Indeed. Asbestos currently causes a quarter of a million deaths every year.</comment>


Think smaller - <AUTHOR> http://jeannicholashould.com/post/36067940845/think-smaller

<comment><USER2> This is something I view along with the "Ship it" idea. When I work on any project, I try to think of what the minimum is for the project to reach the real alpha stage. Where it is at least usable. Only then do I begin to entertain the various notes I have made on additional features or details.

I always go back to the sentence: "The best camera is the one you have". Finishing something and getting it out, no matter how much it lacks in terms of features, is important. The best way to finish is to keep it simple (or small).

</comment><comment><USER3> Almost anything is daunting when taken as a whole, but when broken down into smaller steps becomes much more approachable. Nice writeup.

On a somewhat related note: When cross-site requests are turned off the text renders as black text with white dropshadow on red background which is very, very hard to read. This may or may not be under your control, but I would support the idea of graceful degradation - if the bells and whistles are turned off, the text should render as black on white or some such high contrast thing. Thanks.

</comment><comment><USER4> Can you say, "feature bloat"? I think your mantra helps avoid that whether in a hackathon or not.

Spot on description of motivation at the beginning of a hackathon.

I find that more often, what you're describing comes from the "business folks" in a group, that don't know what is involved in shipping apps on an aggressive deadline.

</comment><comment><USER5> I agree. I've got a little personal mantra of my own that goes "Don't worry about the big problems, they're just lots of little problems to be done later"

<comment><USER6> Or as the famous quote goes:

> I recommend to you to take care of minutes: for hours will take care of > themselves. ~ Lord Chesterfield</comment></comment>


MakerBot CEO Bre Pettis Steps Down - <AUTHOR> http://www.businessinsider.com/makerbot-ceo-bre-pettis-steps-down-2014-9

<comment><USER2> I hope this will be good for Bre. He's a good guy, did a great job bootstrapping an entire 3D printing industry, and made a small fortune in the process.

I still remember him at Gnomedex 5-6 years ago, chatting with a handful of folks about the vision of a crowdsourced manufacturing line of printed objects, when the first MakerBot was still in beta. We're not there yet, but he got pretty close to the vision.

For those interested, strongly recommend watching the documentary _Print The Legend_ [1]. Seems it'll be on Netflix later this year. I watched the premiere at the last sxsw, and it painted a colorful (and somewhat bittersweet) picture of what happened behind the scenes with Bre, MakerBot, and its main competitors. Can't say much more without giving any spoilers.

[1] [http://printthefilm.com/](http://printthefilm.com/)

<comment><USER2> From the 3D Print post[2]:

 _"We have exciting news to announce about Bre. Now that we have a team in place to carry on with MakerBot and continuing to move Full Speed Ahead, Bre is launching a new initiative (separate from MakerBot), The Innovation Workshop, with Robert Steiner, Liz Randel and Aljosa Kempele, to showcase what is possible with MakerBot, Stratasys and Solidscape 3D printers. I can't wait to see what they make … and for the launch party!"_

[2] [http://3dprint.com/14012/makerbot-ceo-bre- pettis/](http://3dprint.com/14012/makerbot-ceo-bre-pettis/)</comment></comment>


DNS Provider NS1 Experiencing Outage East Coast - <AUTHOR> http://www.nsonestatus.net/ <comment><AUTHOR> "Identified - We continue to mitigate a network incident that is currently isolated to the East Coast of the US. We will provide additional updates here.

Dec 1, 15:11 EST

Investigating - We are observing increased rates of packet loss in the NS1 network. The issue is being mitigated by engineers and we will post further updates here as soon as we have them.

Dec 1, 14:57 EST"</comment>


Navigating the Dynamics of Co-Founder Relationships - <AUTHOR> http://rocketship.fm/episodes/ep-111-george-diab/

<comment><AUTHOR> Not everybody speaks the same language. Communication shouldn't be taken lightly.</comment>


EdgeConf (London, Feb 9th 2013) - a conference on advanced Web technologies - <AUTHOR> http://edgeconf.com/

<comment><USER2> Looks like it's gonna have a great lineup</comment>


Obama Hints at Renewed Pressure on Encryption, Clinton Waves Off First Amendment - <AUTHOR> https://theintercept.com/2015/12/07/obama-hints-at-renewed-pressure-on-encryption-clinton-waves-off-first-amendment/ <comment><USER2> wasn't it determined that these attacks were planned using SMS or other unencrypted forms of communication? i feel like i'm taking crazy pills.

<comment><USER3> Coordinated in real time, as I recall. Planning, don't know. Don't know if the NSA et. al. would admit if they'd vacuumed such up but failed to recognize it in time.</comment></comment>


Startup Job Interview Cancelled Because Applicant Asked How Much She'd Be Paid - <AUTHOR> https://www.buzzfeed.com/ishmaeldaro/skip-the-wages <comment><USER2> On the one hand, I am largely "pro people" and there's no question that humans have an amazing capacity to perform intellectual and creative feats that are mind blowing. But situations like this remind me that humans also have a nearly unlimited capacity for stupidity.

Seriously, how fucking stupid do you have to be to do something like this? Even if they were right that the question reflected poorly on the candidate somehow (which seems unlikely), you don't send an email like that and not expect it to blow up in your face.</comment>


Tardigrades - <AUTHOR> http://en.wikipedia.org/wiki/Tardigrade

<comment><USER2> AKA waterbears, moss piglets, or elephant worms.

Pretty cool wee beasties; lots of photos and videos just a google away.

My daughter likes looking at these as well, though we haven't ever looked at real ones -- that's a project worth trying!

Currently we're growing butterflies (got 5 little caterpillars delivered by post in a jar with food for them -- they wandered around and got fat in there, then made chrysalises which we transferred to a big mesh cage (where we now have 1 chrysalis left and 4 butterflies; we're feeding them mashed ripe banana and flowers with sugar water dripped on them).

One of the caterpillars left his head out of the chrysalis... and we were startled to notice that the old head was left behind when the butterfly hatched out. They basically liquify in there and grow entirely new bodies from a new set of stem cells.

</comment><comment><USER3> If you are interested in seeing them for yourself, it is quite simple given a small amount of luck.

First, collect dry moss. Soak it in warm for 30 minutes. Squeeze out the moss, and examine the collected liquid closely under magnification, searching for localized motion. Even a 10x hand lens or loupe will be fine for identification, although a microscope would of course be better.</comment>


Facebook Value Drops To $2 Billion - <AUTHOR> http://www.alleyinsider.com/2008/12/facebook-value-drops-to-2-billion <comment><USER2> I was talking with some friends last night about Facebook, or "Shitebook" as one called it. We all agreed that Facebook was annoying, but not as annoying as MySpace.

The first social networking site that does it right will make a fortune.</comment>


Ask HN: Trouble with Next Career Move - <AUTHOR> Throwaway account. Right now I'm struggling to get some advice on what to do next. So far in the last 15 years I've co-founded a startup, been a CTO at a company and grown it to north of 20M in revenue, and coached several startups at early stages. Right now I really want to build something new, ideally from scratch with the right people. The issue right now is the spaces I'm most interested in are quite saturated with other startups, and strategically I think that would be a bad way to spend ones time.<p>Does anyone have any ideas around how to go find inspiration, problems, and maybe ways to do work that let those things happen, without feeling like you're wasting your time? <comment><USER2> Do you just want to make more money, start something (anything) new, or solve an actually important (and challenging) problem? Your answer to this should guide you on next steps. Ex. if (1), follow the normal startup problem search path. If (2), it doesn't really matter what you do as long as you're personally interested in it. If (3), make a list of the big problems facing the world today and decide which ones you can personally help solve, then figure out how to go about it.

Oh, and if you say "all three" you're not being very honest with yourself. If your next step doesn't feel like a hard choice you're doing it wrong.

<comment><USER3> > follow the normal startup problem search path.

What would that be?

</comment></comment><comment><USER4> You sound like an impostor ...

A CTO doesn't "grow a company."

A founder doesn't wait around and "look for the right people."

If I were you, I would look in the mirror and decide if you're a founder or just a wantrepreneur.

Come back in 90 days with "Tell HN", not "Ask HN."

</comment><comment><USER5> If a big problem issue is a draw for you: start investigating how to help solve the fake news issue. Just spend an afternoon looking into it, and if it does not fascinate and get your creative juices flowing, I'd be surprised. Tackling fake news is probably one of the most pressing and transparent problems we globally have. Fake news is not just a USA problem, but a global issue that is burning like a wildfire.

</comment><comment><USER6> > Does anyone have any ideas around how to go find inspiration...

Richard Hamming's classic advice on this subject is timeless > [https://www.youtube.com/watch?v=a1zDuOPkMSw](https://www.youtube.com/watch?v=a1zDuOPkMSw)

</comment><comment><USER7> It seems like a lot of billionaires act on what they have read in books. Books about the state of the world today and what it could be. Problems and opportunities. Fantasies (sci-fi/philosophy). Systems (economics, cultures, religion). Find out how everything goes together and see if there's something that could be done better, but nobody is around in the position to do so.

</comment><comment><USER8> I think you should not fixate on other startup's being present in the areas you are interested in. You might bring in different perspective to the problem they are trying to solve also once you start getting customer feedback it might shape the product differently than the way other startup's are tackling it or even the way you thought it ought to be. In short go for it.

<comment><USER3> Zoom is a great example of a startup that made it in a field that seemed saturated, essentially because they offered a great product

[https://www.jotform.com/blog/dont-disrupt-an- industry/](https://www.jotform.com/blog/dont-disrupt-an-industry/)

</comment></comment><comment><USER9> > I really want to build something new, >> ideally from scratch with the right > people.

These are personal issues instead of professional wishes, so you should disconnect for a while and ask yourself what you really want to do with your life, assumed that financial independence is sorted? Once you are on the way that makes you feel good, projects and people will come naturally.

</comment><comment><USER10> I think the classic answer to that question involves taking a lot of time, doing some reading, and having lots of spare time for your brain to wander to interesting places, rather than the stuff you normally immerse yourself in every day.</comment>


Rep. Holt to introduce bill to repeal Patriot Act & 2008 FISA Act - <AUTHOR> http://americablog.com/2013/07/rep-rush-holt-to-introduce-bill-to-repeal-patriot-act-2008-fisa-act.html

<comment><USER2> Good. The bill will likely not pass, but it will force the current representatives to go on record as either for or against these. At the moment, they can pretend to be one or the other.</comment>