Sparks: A typeface for creating sparklines in text without code - <AUTHOR> https://github.com/aftertheflood/sparks <comment><USER2> See also: FF Chartwell.

[https://www.scribbletone.com/typefaces/ff- chartwell](https://www.scribbletone.com/typefaces/ff-chartwell)

<comment><USER3> Font looks great, license terms are expensive limiting per page views, or per installed server

</comment></comment><comment><USER4> This is great. I think we're just seeing the beginning of the crazy things that people are going to be doing by abusing (in the best possible sense) opentype.

</comment><comment><USER5> I use things like this and FontAwesome etc. a bunch, and they no doubt solve a real problem. But I also sort of wish that the problem were solved in a way that does not involve stuffing things that are not even remotely text into a font.

It seems like there should be a generic way to say "put image X (SVG, PNG, whatever) on the screen here, as if it were a glyph, and also do scaling and linebreaks and alignment properly, oh and colors and so on". I expect this already exists somewhere deep inside CSS - does anyone know the story?

<comment><USER6> <img src="img.svg" style="height: 1em; display: inline; vertical-align: bottom;" />

<comment><USER7> Baseline

<comment><USER8> Interlinked

</comment></comment></comment></comment><comment><USER9> We already have some rough glyphs for this: Unicode: 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608

<comment><USER10> While these can be helpful, I'm not sure how widespread the availability is so you would probably want to provide these glyphs anyway. (I could be wrong here. But I also don't know a good way to assess their availability.) It's also quite nice that you can just type in data with Sparks and get sparklines which isn't possible with the glyphs you mentioned.

<comment><USER11> is there a resource to assess unicode glyph availability across devices? something like a caniuse?

</comment></comment></comment><comment><USER12> It would be cool for the Readme to explain (without having to click through to the website) what a sparkline is for those like me who have no idea :)

<comment><USER13> A small inline graph! Popularized and named by Edward Tufte. [1]

[1]: [https://en.wikipedia.org/wiki/Sparkline](https://en.wikipedia.org/wiki/Sparkline)

</comment></comment><comment><USER14> > See it working on our website or in one of our interactive notebook examples

Just a note, the website link is 404'd.

<comment><USER15> Apparently the consultancy that built this closed their doors in February of this year.

> On February 25th, after a decade of business, we'll be closing After the > Flood to focus on other projects. We'd like to thank all of our clients and > collaborators for their support.

</comment></comment><comment><USER16> An interesting, but possibly not useful feature is that you can copy the datapoints very easily.

<comment><USER17> I'd say that is super useful as someone who

1) cuts and pastes into plain text files often

2) often wishes to take data from charts and munge it, although sparklines are probably too informationally sparse to bother.

</comment></comment><comment><USER18> Reminds me of this script to generate sparklines in the command line:

[https://github.com/holman/spark](https://github.com/holman/spark)

</comment><comment><USER7> It's 5mb zipped man. That's almost twice the size of chrono trigger

<comment> h-cobordism Luckily the WOFF2 itself is only around 18KB.

It still seems like an inferior solution to just using SVG, but it's not _insanely_ bulky.

</comment></comment><comment><USER19> Can someone explain the advantage of doing this via text?

<comment><USER20> A couple of things that spring to mind:

\- super simple: no need to integrate a charting library or do server-side rendering

\- performance: if you have a table of hundreds of rows each with a sparkline chart (e.g CPU load/QPS/error rate/etc for many nodes etc in a cluster), just some text will be hugely more performant that 100x charting widgets or 100x server-side rendered images.

<comment><USER21> Also gracefully degrades if the font isn't available for whatever reason, you'd see:

{0, 10, 20, 30, 40, 50, 60, 70, 80, 90}

</comment></comment></comment><comment><USER22> Does anyone know if Pango will render this? Could be a nice way to build i3bar widgets.

</comment><comment><USER23> reminds me Datalegreya - [https://www.figs- lab.com/en/projects/datalegreya](https://www.figs- lab.com/en/projects/datalegreya)</comment>


Go's Type System Is An Embarrassment - <AUTHOR> https://functionwhatwhat.com/go%E2%80%99s-type-system-is-an-embarrassment/ <comment><USER2> What's embarrassing is that people are still evaluating programming languages like they were bags of features. The more features you stuff in the bag, the better it must be!

The reality is that generics aren't free. They result in difficult-to- understand error messages and more cognitive complexity.

To quote Yossi Krenin, "You may think it's a StringToStringMap, but only until the tools enlighten you - it's actually more of a... std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >"

Of course, it would be nice to have generics, or something like them, for writing typesafe containers. But there are other goals in the language like fast compilation, easy-to-understand error messages, and overall simplicity. I hope they can come up with an implementation of generics that can keep those good properties of the language. But if they can't, it shouldn't be added just to get a feature bullet point. Use the right tool for the job.

<comment> alok-g I am not convinced that C++ examples are valid as a generalization of the failures of generics for other languages. C++ libraries are often overly generalized with means to "configure" the generics by passing additional type arguments. I do not think it has to be like that.

<comment><USER3> Some of it is also the fault of the compilers for being too explicit in their default error messages. You get that horrible output because string is really a typedef to "basic_string<char>" and basic_string takes two more template arguments with defaults. But why is the compiler resolving the typedef in the error message by default? At least let it be "std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >" instead of that inscrutable noise.

And if you really need to provide the information that "std::string" is "std::basic_string<char, std::char_traits<char>, std::allocator<char> >" then put it on a separate line in the output, once, instead of repeating it internally within every recursive template instantiation.

<comment><USER4> Maybe the typedef:s have been resolved and discarded at the point in compilation where the error is reported?

So using it in the error message would require extra work.

<comment><USER5> So why do we pass that work from the compiler,the tool, to the programmer? Except that I think I know the reason, as I have looked upon the specification and it was not sane.

</comment></comment></comment></comment></comment><comment><USER6> My biggest beef with the Go typesystem is that they didn't get rid of nil. Tony Hoare (the guy who invented null) has acknowledged they were his "billion dollar mistake" [1], common practice in Java and Haskell is moving away from them, and yet Go included them anyway - in a language that's supposed to be robust because you're supposed to handle every case. The Maybe (or @Nullable) type is a much better idea, because it flips the default from "any variable may be null" to "only variables explicitly declared as such may be null".

[1] [http://www.infoq.com/presentations/Null-References-The- Billi...](http://www.infoq.com/presentations/Null-References-The-Billion- Dollar-Mistake-Tony-Hoare)

<comment><USER7> Hoare didn't invent 0-valued pointer. It was there since the beginning of time. Or at least the beginning of the CPUs.

People talk about getting rid of nil like it's actually possible.

It's not.

If you have pointers, they sometimes have to start the life uninitialized (i.e. with a value of 0) hence nil pointers.

As you admit yourself, the proposed solutions don't actually get rid of anything. At best they can force you to handle nil value by wrapping it in some wrapper.

Guess what - if you have that kind of discipline, you can do the same in C++.

Why aren't people doing that?

Because it comes at a cost. There's a cost to the wrapper and when it comes down to it, you still have to write the code to handle the nil pointer whether you're using a wrapper or a raw pointer.

It just doesn't buy you much.

Finally, fixing crashes caused by referencing a null pointer is downright trivial. Spend a few weeks chasing a memory corruption caused by multi- threading and you'll come to a conclusion that fixing a null pointer crashes (which can be done just by looking at the crashing callstack most of the time) is not such a big deal after all.

<comment><USER6> As others have pointed out, I'm not talking about nil as the zero-valued pointer at the hardware level. I'm talking about nil as the additional member of every type in the language's typesystem. A typesystem is an abstraction over the hardware, designed to catch programmer errors and facilitate communication among programmers. There's no reason it has to admit every possible value that the hardware can support.

And people _are_ applying that sort of discipline - see the NullObject pattern in any OO language, or the @Nullable/@NotNull annotations in Java, or !Object types in Google Closure Compiler. The thing is, they have to apply it manually to every type, because the type system assumes the default is nullable. That makes it an inconvenience, which makes a number of programmers not bother.

I'll agree that null pointers are comparatively easy to track down compared to memory corruption caused by multi-threading. Threads are a broken programming model too, and if you want a sane life working with them you'll apply a higher-level abstraction like CSP, producer-consumer queues, SEDA, data- dependency graphs, or transactions on top of them.

<comment><USER8> > Threads are a broken programming model too

Oh come off it. Threads are in no sense 'broken' \- compared to CSP or actors, they just give you a larger set of things you can write. Some of those things are bugs. Others are very useful. For example, a disruptor:

[http://lmax-exchange.github.io/disruptor/](http://lmax- exchange.github.io/disruptor/)

Nulls are broken because they let you write bugs, but don't let you write anything you couldn't write with options or whatever.

<comment><USER9> Really ? How would you even encode Maybe or Option in Java, if you can't use null anywhere ?

The problem is that Maybe doesn't work without Algebraic Data Types.

<comment><USER10> Oh come on, that's trivial

      public interface Maybe<T> {
          boolean hasValue();
      }

      public final class Just<T> implements Maybe<T> {
          public final T value;
          public Just(T value) {
              this.value = value;
          }
          public boolean hasValue() { return true; }
      }

      public final class Nothing<T> implements Maybe<T> {
          public boolean hasValue() { return false; }
      }

You can even get rid of hasValue (but then you need to pay for instanceof each time); or of the Nothing class and make Maybe a class. You may ask what the value of Just.value is before the constructor runs - the value is a machine null and if you somehow manage to access it before the ctor runs, that's a NullPointerException; or what writing "Type varname;" in a function would do - that would be perfectly legal, but you won't be allowed to use it if the compiler can't prove you've initialised it first (which it does right now).

<comment><USER9> Problems :

1) How do you get at the value itself ? (Casting ? That's bad)

2) How do you prevent in Maybe<Integer> x; x == null ?

3) How do you prevent someone from extending Maybe<T> ? e.g.

        public final class LetsHaveFun<T> implements Maybe<T> {
          public boolean hasValue() { throw Exception("Can't touch this");
        }

4) (you need a null check in the constructor)

5) (I dislike the autoboxing this uses)

<comment><USER8> > 1) How do you get at the value itself ? (Casting ? That's bad)

You could add the usual map method to the Maybe type - a Maybe<T> can take a Function<T, U>, and returns a Maybe<U>. If it's None, it doesn't call the function, and just returns None; if it's Some, it calls it with the value, and wraps the result in a new Some. If you want to do side-effects conditionally on whether the value is there, you just do them in the Function and return some placeholder value. You could write a trivial adaptor to take an Effect<T> and convert to to a Function<T, Void>, etc.

> 2) How do you prevent in Maybe<Integer> x; x == null ?

You're right that using a Maybe does not exclude the ability to use nulls. Nobody can deny that. The point i was making is that there is nothing useful that you can do with nulls that you cannot do with a Maybe instead.

> 3) How do you prevent someone from extending Maybe<T> ? e.g.

You can trivially control extension by making Maybe an abstract class, giving it a private constructor, and making Some and None static inner classes of it. It's a kludge, but it works!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> This masterclass in clickbait titling pulled in 735 comments and counting on /r/programming. Watch and learn, bloggers!

<comment><USER12> It did something similar here before the outage.

<comment><USER13> Was it cached?

<comment><USER12> I don't think so. For the most part people were either curious about why Go did what it did (let you export the `NewHidden` while keeping `hidden` unexported: requires `hidden`s to be created using the specific constructor), or defending Go's choice in letting you export functions that return an unexported type.

</comment></comment></comment></comment><comment><USER14> What's wrong with leaking un-exported element? Your code wants it to be exported. If you care about it, please return an interface type.

<comment><USER15> As I posted before the outage, I don't think leaking un-exported elements is actually that broken either -- Haskell gets by fine with it (you can omit the type and its constructor in the module export list and have types "leak" into the code importing said module). It can be a useful way to keep types opaque and not allow users to construct instances directly.

The actual issue, in my opinion, is the weird behavior of the reflect package which allegedly cannot reflect on the leaked element despite its members being publicly accessible anyway.

<comment><USER16> Author here. What I've written regarding the reflect behaviour isn't entirely true and I should probably update the article to reflect that. It's possible to get (but not set) the value of unexported fields as long as they are of a built in type (e.g. int). What's not possible is to get access to unexported fields as empty interfaces, which means you cannot type assert them to structs or other types. This seems like an arbitrary limitation (although I'm sure there is a reason for it) and somewhat limits the usefulness of the reflect package.

</comment></comment></comment><comment><USER17> I love go, but my personal gripe with the type system is that there is no way to pass type information around without using a zero valued (or fully populated, it makes no difference) instance. For example, I have a factory struct with a New method that returns interface{MySignatures()}, but I cannot inform the factory of the concrete type I want it to produce without passing in something like new(ConcreteStructWithMySignatures). Some have suggested I pass in a string, but what is the point of a type system if I have to use strings to reason about my types?

</comment><comment><USER18> Go is designed to be a small, simple language, it's not hard to release that. If you want a fully featured type system, go program in Ocaml, Haskell or another 'big' language.

<comment><USER19> That falls flat on it's face as a cop out when you look at a language like nimrod that manages to be practically as simple as go while including full generics. Oh, it's faster too.

[http://nimrod-lang.org/tut2.html#generics](http://nimrod- lang.org/tut2.html#generics)

<comment><USER20> Nimrod is a gem. Just needs a big company to host release parties and sponsor it.

I am convinced, a good part of Go's popularity is Google. As a language it is ok. Has good stuff in it. Quite often the argument for adoption is "Google is behind it, and it is becoming really popular". Which, is not completely irrational -- it is nice to have a large company throwing away perhaps years of quality full-time dev work at a language.

<comment><USER21> How come Google plays a good part of Go's popularity while the language per se is open-sourced and a fair amount of its contributors don't relate to Google at all? If you had observed what's happening around Go and Google since the language was released, you would have noticed that everything that happens inside Google is due to its creators motivation to push the language into the company rather than Google being "behind it". Dart on the other hand is backed by Google for good. Go? Except Google App Engine, i don't see it.

<comment><USER8> Quite. The idea that Google is "behind" Go is mistaken. The situation is that _some people inside Google_ , some of them quite well-known and influential, are behind Go. There are also people not inside Google who are behind Go, and people who are inside Google who aren't keen on Go.

Therefore, Go is certainly not in the same position as things like Chrome or Android, where the company as a whole has a stake in their success.

<comment><USER20> > The idea that Google is "behind" Go is mistaken.

Does Google pay full time salaries and lets primary Go creators work on Go during the day?

Does Google blog about implementing and deploying Go based services?

Let's just put it this way, Google is a lot more behind Go than it is behind Nimrod.

Pretty sure there are developers at Google that like Nimrod but there is night and day difference between associated of Google and Go and Google and Nimrod.

<comment><USER21> "Does Google pay full time salaries and lets primary Go creators work on Go during the day?"

Have you ever read any interview or watched any presentation about Go by Rob Pike, Andrew Gerrand, or any other Go/Google engineer? If so, you wouldn't say that so easy. Just browse through Google Jobs and tell me if you find any Go job.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> Are we complaining about generics again?

<comment> alok-g I see nothing wrong with that. I would like to keep on complaining till they listen! :-)

<comment><USER23> It's not that "they" aren't listening. There's a limited number of developers working on the language, there are many other problems being solved.

So far despite all the people lamenting the lack of generics in Go I've yet to have seen someone propose a viable (eg: backwards compatible, realistic to achieve with the current compilers and runtime, etc.) way to implement, nevermind someone who's produced a prototype.

Maybe that sort of thing will be easier once more of the toolchain is rewritten in Go later this year.

I don't think anyone is denying that generics make writing certain types of code easier, but it's worth getting them right since major language additions are something you need to support for a long time.

<comment><USER24>
       So far despite all the people lamenting the lack of generics in Go I've yet
       to have seen someone propose a viable (eg: backwards compatible, realistic
       to achieve with the current compilers and runtime, etc.) way to implement,
       nevermind someone who's produced a prototype.

This seems to make it even more of an issue that they weren't included in the first place. Based on your statement, it's likely that when generics are finally added, they will initially cause the community some pain or they will feel tacked on.

</comment></comment></comment></comment><comment><USER25> Type system power really is the only question i have left relative to go. I've always seen go being used for low level very technical stuff, where you don't need lots of abstraction, but rather powerful primitives and libs. I've always wondered how it scales to business process modeling, and the lack of generics always worried me.

On another aspect, 2013 was the year of Go being unanimously praised, and i've got the feeling 2014 is going to be the year of the backlash.

Still, i don't see any other languages able to take the crown back. Rust looks way too unpolished and has not only one but multiple pointer types.

<comment><USER26> Rust really doesn't target the same uses that Go targets. Go basically targets people who need a faster Python or a simpler Java. It doesn't have enough low- level control to be used for most of the things that C is still used for.

Rust targets the low-level uses where a high degree of control over memory management is necessary. One of it's main goals is to make it possible to statically reason about memory ownership.

You would never try to implement something like a modern browser or a production-quality language runtime in Go. On the other hand, Rust is targeted directly at that kind of thing, and the multiple pointer types are absolutely necessary for those use cases.

</comment></comment><comment><USER27> Are we trying to make Go into Java or JavaScript as it relates to dynamic or static?</comment>


How Much Does Live Streaming Cost on AWS? - <AUTHOR> https://aws.amazon.com/blogs/media/frequently-asked-questions-about-the-cost-of-live-streaming/ <comment><USER2> TL;DR = "Well, there's no way to know exactly but it's a lot!"</comment>


J2objc - A Java to iOS Objective-C translation tool and runtime - <AUTHOR> http://code.google.com/p/j2objc/ <comment><USER2> If you're curious how this handles memory management--the largest impedance mismatch between Java and Objective-C--see <http://code.google.com/p/j2objc/wiki/MemoryManagement>.

The preferred method, for iOS apps at least, seems to be use reference counting. This implies that any objects with cyclical references will not be released. Thus, the semantics of this approach will be subtly different than that all JVMs, which have GCs which can detect cyclical references. Thus, the documentation suggests using "runtime and tool support to detect memory leaks".

<comment><USER3> _"runtime and tool support to detect memory leaks"._

So... a garbage collector?

<comment><USER4> Well, if it's just detecting, that's not GC. That's just, "Hey! There's trash here!"

<comment><USER3> Once you know where the trash is, the easy part is deallocating it.

<comment><USER5> Its not automatic, you need to explicitly release. They are referring to the tools builtin in xcode which you will have to use manually to debug memory problems in Objective-C then move it back to your Java code as annotations.

</comment></comment></comment></comment></comment><comment><USER6> I'm going to have to play with this just to see if I would like writing iOS apps in java or not. I have really gotten use to Objective-C and I really do like it, seriously. The issues with a translator is that anytime you want to fix a performance issue or tweak the translated code, you now start coding yourself into a painful place. It gets harder and harder to maintain. But, I cannot poo-poo it until I have tried. One of the reasons I jumped into iOS was to get out of java land for a while since it has been my primary source of income for 13 years. I hope to hear some other opinions on the subject.

<comment><USER7> I've looked a bit through the documentation and noticed how exception blocks are translated to the Objective-C version (@try / @catch ...). Of course most often Objective-C coders would use NSErrors through indirection pointers in situations where Java coders would use exceptions, the use of @try / @catch is often discouraged. This is just 1 example of a possible issue, I also don't like how the namespacing is being handled (camel case name of the Java namespace). In Objective-C we're used to a 2 or 3 letter prefix. Because of issues such as these I wouldn't be very inclined to use it in my own projects.

<comment><USER8> When it comes to exceptions, its not even a matter of semantics and needing to be very clever. There are cases where exceptions in Java just don't carry over to Objective-C.

A really good example of this is NullPointerException. Objective-C lets you message _null_ (although, its called _nil_ in this context) without any problem.

</comment></comment></comment><comment><USER9> Another project that focuses on Java to Objective-C is <http://xmlvm.org>.

XMLVM also offers an Android compatibility layer, including some UI support.

<comment><USER10> > In XMLVM, byte code-based programs are represented as XML documents. This > allows manipulation and translation of XMLVM-based programs using advanced > XML technologies such as XSLT, XQuery, and XPath.

I don't even...

<comment><USER11> Oh, come on. While I dislike XML as much as anyone, I can definitely see the advantages of representing an AST as XML and manipulating using a functional language (e.g. XSLT). I think the Stratego languages also do something similar, and they seemed to be quite effective last time I checked.

<comment><USER12> XML isn't a hipster technology though! How can I be a good hacker if I can't be a hipster too?

</comment></comment></comment></comment><comment><USER13> Google should work on creating their own Android tools, or at least make a very optimized Eclipse for Android.

<comment><USER14> Curious. When you say "very optimized Eclipse for Android", what optimisations/improvements would you like to see exactly?

<comment><USER15> Faster, more responsive, prettier.

<comment><USER16> So, IntelliJ?

<comment><USER17> But free.

<comment><USER18> They have "Back to School" sale on personal licenses. I find 100 euros for an excellent IDE _very_ cheap. It's a different story if you want something open source though.

<comment><USER19> But it's only for IntelliJ 10/11, and 12 is coming by end of this year (usually).

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Or, this could be a viable solution - <http://pyzia.com/technology.html>.

Apparently, one can write apps in Python and the Python spec gets converted into source codes for various platforms. Looks interesting. Has anyone tried it yet?

<comment><USER21> Or [Xamarin](<http://xamarin.com/>) for C#'ers.

 _Note to pg: support subset of markdown for HN v2?_

</comment></comment><comment><USER22> As interesting it may ever sound, i still can't think about good use-cases for those kinds of translation tools. I have been fiddling around a bit with XMLVM (which gives really has a nice generic approach) but the point that you basically can't use any libraries leads quickly to a dead-end. Also i'm not convinced that any automatic translation of plain business-logic could compensate the sacrifice of Obj-C features.

<comment><USER23> In the early days of iOS I worked on a JavaME to C++ source translation tool. No idea if it was a commercial success or not, but it did have customers.

The main desire is for games - ones that just have a canvas or GL - so porting is easier. Also some companies want shared business logic.

It turned out to be a small market though, since iOS and Android took out the market it was easier to write twice than handle the fuss of porting.

</comment></comment><comment><USER16> Why not use something like gcj to compile directly to native code?

<comment><USER23> There's no supplied GCJ for iOS. While it could be supported last time I looked GCJ had some strange assumptions around the architecture it uses.

Plus this way it's fairly simple to treat your Java as a business logic layer and code the UI in Cocoa/ObjC. Your UI is going to be device specific anyway.

</comment></comment><comment><USER5> It translates Java to Objective-C code without GC support (uses reference counting which you need to annotate). It doesn't define any UI so effectively you need to work on a Mac just without all the wonderful tools for UI building that apple provides and without any of the WORA you get from Java. When something doesn't work you are still stuck debugging in Objective-C. And googling stack overflow trying to understand how to translate Objective-C code to your problem.

Codename One solves all of the above issues by giving "actual WORA" which is the true value of Java.

</comment><comment><USER19> Can't find whether it's translated from bytecode or from source file. Would be great if it's from bytecode, which means we can use tons of other languages (Clojure, Groovy, Scala, JavaScript, Python)...

<comment><USER24> It parses java source code.

<http://code.google.com/p/j2objc/wiki/Motivation?tm=6>

<comment><USER25> So, no Clojure on iOS here?

</comment></comment></comment><comment><USER26> You can already write code in C/C++ that works across both platforms. It's trivial to interface with objective-c, and pretty easy to call from Java using JNI.

<comment><USER15> The Android NDK tools are an unholy abomination. Have you worked with it?

</comment></comment><comment> m-i Considering that there more iOS apps than Android out there (at least according to the AppStore), I would have exected exactly the opposite direction translator from google.

</comment><comment><USER27> Wait.. This is from Google??? Aren't they the ones who make that other "competing" OS?

Well that seems odd... Not sure what to make of this.

<comment><USER23> Simple - they want people to code for Android first. It's a tool to push to writing for Android then translating to iOS as cheaper than writing twice - since you can't go ObjC to Java.

<comment><USER28> Or perhaps personifying a giant company as a single individual with a single set of wishes, hopes, and desires is a fallacy.

There are many thousands of people inside of Google who just wish to ship great software, and enable others to do the same.</comment></comment></comment>


Web application from scratch, Part II - <AUTHOR> https://defn.io/2018/03/04/web-app-from-scratch-02/ <comment><USER2> Great post for learning. Can be used as a base for creating new web framework</comment>


Nintendo NX is powered by Nvidia Tegra technology - <AUTHOR> http://www.eurogamer.net/articles/digitalfoundry-2016-nintendo-nx-mobile-games-machine-powered-by-nvidia-tegra <comment><AUTHOR> I can't say I expected this, but it makes a lot of sense. The Wii U was well loved but didn't sell well. With this kind of set up, they get to provide the same kind of experience to their home console users with a fraction of the development resources, while making their bread and butter mobile users happy with more powerful hardware. Meanwhile NVIDIA has hemorrhaged money on their mobile chipsets for years, and now they finally have a committed customer that can take advantage of their graphics expertise, ramp up production and maybe even lead to them becoming more competitive in the smart phone and tablet markets. Nintendo gets the kind of leverage Sony and Microsoft had over AMD when they were desperate for customers for their APUs, NVIDIA gets to take back a slice of the console pie.

</comment><comment><USER2> Cool. I wonder how well this will compete with new cell phones and 2.0 versions of the xbox one and playstation 4.</comment>


Most of the code you write, has probably been written before. Why not reuse it? - <AUTHOR> Would love some feedback on a feature I am validating for a startup.
The feature "Code Seeker" finds the code you need. It shows you real code from your, your teams, your organization or even public repositories. You can navigate the code by selecting next or previous and zoom in or out to see more of the code.
The benefit is code reusability as well as learning from existing code.
Any feedback is welcome - <USER3> <comment><USER4> I love code reuse!

However...

License matters.

Control matters (what if I need to make a change to fit a certain scenario? How does that happen? Is it propagated upstream? How/when?)

Searchability matters. How do I know what I am looking for, especially across domains and companies?

<comment><AUTHOR> We though we may be able to actually show the license type as well. However keeping it simple to start with and just track new ideas/improvements.

The Code Seeker feature would not actually apply changes, it will allow you to import into whichever IDE you are using and the mechanism or VCS you currently use will still apply. Does this make sense or am I not understanding the Control matters part?

Indexing and Searchability are going to be interesting to implement. I use IntelliJ and Rubymine and at times the indexing is too heavy handed and they are only indexing the current project.

</comment></comment><comment><USER5> I doubt most of the code I have written has been done before, as most of it relates to the business domain and specifically the parts of the business domain that are currently under focus.

Anything that is generic, e.g. a double entry accounting system, an Actor model, etc. should be in a package management system - a Gem, a Nuget Package, a NPM pacakage etc. rather than copy pasted.

At the micro level for specific line-of-code level problems (usually due to language/platform quirks) we have StackOverflow.

</comment><comment><USER6> Sounds great - where is it? Can I test it? I'm not sure what you mean by "next" and "previous", or what you mean by zooming in and out.

How do I specify what I'm looking for? What level of granularity does it work at? What languages does it cover? How is this different from using libraries? How can I trust the code I find?

Does it exist yet?

<comment><AUTHOR> At this point just validating that the feature should be built. So nothing yet.

I will be posting some more details, videos... Which will give you more detail of how we think it should work.

</comment></comment><comment><AUTHOR> Hey - I now have a video [https://youtu.be/9EPaBi1_pwo](https://youtu.be/9EPaBi1_pwo) It explains in more detail how "Code Seeker" could work. And I included a couple of your suggestions. Hope you can take a look and give me some additional feedback. Thanks

</comment><comment><USER7> I think it's difficult to search a functionality by words. For example, if I want to fund matrix multiplication, the function name could mulmat, matrixProduct .... could be anything.

second, even code is found, building requires lots of work. missing dependency, mismatching interfaces, unsupported os...

<comment><USER8> Smalltalk had a neat solution to this. You gave some arguments and a result, then it tried all the methods with the right types, and listed the ones that gave the result. Searching for '(a b c) and 'a would tell you what car is called in Smalltalk.

<comment><USER9> prolog does this too, but it's not enough. if you don't have enough data, you could find a match that will fail in the future.

To answer OP's question, the reason people rewrite is that it's "faster" to write a new one than find what's out there

OR

I don't want an entire house when all I want is a faucet. Today if you want a faucet. you might have to do something such as house = new House(); faucet = house.getFaucet(); So you have to tear apart/copy and paste the code, if it's loosely coupled enough, you find yourself dealing with all the dependencies.

This is a question lots of people have been asking tho, checkout this talk from the creator of Erlang asking the same question [https://www.youtube.com/watch?v=lKXe3HUG2l4](https://www.youtube.com/watch?v=lKXe3HUG2l4)

<comment><AUTHOR> The house analogy makes sense - I need to research Smalltalk and Prolog Checking out the video - <USER3>

</comment></comment></comment></comment><comment><USER10> A tangential comment: Isn't the whole point of higher order functions (in functional programming) this kind code reuse? So what you're looking at sounds like a way to search for higher order functions and patterns in a codebase. That way of framing it suggests similarities with Hoogle: [https://www.haskell.org/hoogle/](https://www.haskell.org/hoogle/)

</comment><comment><USER11> 99% of the code I write has already been written before.

99% of programs/apps already exist.

99% of things I say and do have already been said and done before.

Code reuse is not the solution. We must rethink software and communication as a whole. As far as I know, nobody is attempting anything close to this.

PMs are welcome.

</comment><comment><USER12> I am always reusing code from prior programs that I've written. No point in re-writing it again, especially if i need it to do the same exact thing. Even if it only needs a few changes, I'll just copy and paste the code and tweak it.

</comment><comment><USER13> Seems like it would encourage bad design. You should be keeping your code DRY by creating reusable functions in the first place. If it's across repos, then you should probably make one of the repos usable as a library.

<comment><AUTHOR> Agreed - copy and paste can definitely be problematic.

DRY typically is discussed as it relates to a single project. What are your thoughts on this? Code reused across projects or repos is not the same. We can and should have duplicated code but why write it from scratch? For a simple example if I always want to have an Avatar in a navbar, why not make it easy to find and reuse in another project.

</comment></comment><comment><USER14> Sounds cool. A little bit like Github's "Gist".

</comment><comment><USER15> Would love to test it. Where do I use it from???

<comment><AUTHOR> I will post additional info here. Probably next week.

</comment></comment><comment><USER16> Not a very well thought out product.

<comment><USER14> Haters gonna hate.

<comment><AUTHOR> :) not a product yet vetting an idea but haters could identify real issues</comment></comment></comment>


Princess Alice disaster: The Thames' 650 forgotten dead - <AUTHOR> https://www.bbc.co.uk/news/uk-england-london-44800309 <comment><USER2> see also:

[https://en.wikipedia.org/wiki/PS_General_Slocum](https://en.wikipedia.org/wiki/PS_General_Slocum)

[https://en.wikipedia.org/wiki/SS_Eastland](https://en.wikipedia.org/wiki/SS_Eastland)

Current passenger ship safety regulations are very much written in blood.

<comment><USER3> Interestingly the saftey regulations also _contributed_ to the sinking of SS Eastland (your 2nd link):

> During 1915, the new federal Seamen's Act had been passed because of the RMS > Titanic disaster three years earlier. The law required retrofitting of a > complete set of lifeboats on Eastland, as on many other passenger > vessels.[7] This additional weight may have made Eastland more dangerous by > making it even more top-heavy. Some argued that other Great Lakes ships > would suffer from the same problem.[7] Nonetheless, it was signed into law > by President Woodrow Wilson.

</comment></comment><comment><USER4> A more recent collision

[https://www.independent.co.uk/news/uk/pleasure-boat- disaster...](https://www.independent.co.uk/news/uk/pleasure-boat-disaster-on- river-thames-was-a-1614686.html)

I think I remember it appearing in a fictional work as well or being alluded to

</comment><comment><AUTHOR> Reason I posted this to HN, not only because it was interesting, but having recently finished watching Ripper Street, there's a character in that show who's backstory relates to this.

</comment><comment><USER5> Some original articles -

[https://trove.nla.gov.au/newspaper/article/220442169](https://trove.nla.gov.au/newspaper/article/220442169)

[https://trove.nla.gov.au/newspaper/article/107939744](https://trove.nla.gov.au/newspaper/article/107939744)

> Is sewage deadly?

No, the Thames back then would have been the same as many rivers in many poorer countries today. Many of these rivers are scavenged, not without issue, but a quick dunk isn't going to have immediately killed anyone. Author needs to travel more, oldie England is still alive and kicking around the world.

<comment><USER6> Just how vile and dangerous the Thames was in Victorian times can't be underplayed though (my mother remains pretty vocal about how terrible it was in the _60s_!). The idea of moving Parliament out of London was even considered as the smell from the Thames was affecting daily life as far upstream as Westminster: [https://en.wikipedia.org/wiki/Great_Stink](https://en.wikipedia.org/wiki/Great_Stink)

An interesting aside related to the Princess Alice disaster is that the main northern sewer was only finally fully working months before the disaster and its outflow was very close to the crash site. Work began in the next decade to purify the sewage rather than just dumping it into the Thames there.

But I'd argue (and this is just a hunch) that sewage was "deadly" then in the sense that if the water then were as clean as now, the death toll would have been _far_ lower, especially as the crash happened so close to (admittedly rather muddy) land.

<comment><USER7> Sewage was _widely believed_ to be deadly due to its association with "night airs", which the (now disproven) miasma theory of disease held was responsible for many infections. While John Snow demonstrated the epidemiological evidence for contagion (physical contact) as the mechanism for disease transmission in 1857, actual _proof_ that bacteria were the caustative agent in contagious infectious disease only became available in the late 1870s (via the work of, in particular, Robert Koch and Louis Pasteir), and medical opinion (as with public opinion) was slow to adapt to new scientific findings in those days.

More on the miasma theory of disease here: [https://en.wikipedia.org/wiki/Miasma_theory](https://en.wikipedia.org/wiki/Miasma_theory)

<comment><USER8> There's definitely still a sewage treatment plant near the site of the accident:

[https://www.google.com/maps/place/Sheerness,+firstname.lastname@example.com,...](https://www.google.com/maps/place/Sheerness,+firstname.lastname@example.com,0.0848886,1853m/)

[https://en.wikipedia.org/wiki/Beckton#Sewage_works](https://en.wikipedia.org/wiki/Beckton#Sewage_works)

But you can't discount the difference between the dictionary definition of " _sewage_ " versus the reality of incidental pollution as discovered in-situ.

Case in point:

[https://en.wikipedia.org/wiki/Gowanus_Canal](https://en.wikipedia.org/wiki/Gowanus_Canal)

[http://nymag.com/daily/intelligencer/2010/03/post_25.html](http://nymag.com/daily/intelligencer/2010/03/post_25.html)

[https://www.timeout.com/newyork/blog/ten-feet-of-black- mayon...](https://www.timeout.com/newyork/blog/ten-feet-of-black-mayonnaise- line-the-gowanus-canal-101315)

[https://ny.curbed.com/2018/7/19/17590126/brooklyn-gowanus- dr...](https://ny.curbed.com/2018/7/19/17590126/brooklyn-gowanus-dredgers- canoeing-superfund-site)

[http://nautil.us/blog/in-the-black-mayonnaise-of- brooklyns-g...](http://nautil.us/blog/in-the-black-mayonnaise-of-brooklyns- gowanus-canal-alien-life-is-being-born)

[https://www.brownstoner.com/development/gowanus-canal- black-...](https://www.brownstoner.com/development/gowanus-canal-black- mayonnaise-superfund-epa-cleanup-brooklyn/)

[https://www.dnainfo.com/new-york/20161123/gowanus/gowanus- ca...](https://www.dnainfo.com/new-york/20161123/gowanus/gowanus-canal-debris- removal-epa-environmental-protection-agency/)

Also:

[https://en.wikipedia.org/wiki/Newtown_Creek](https://en.wikipedia.org/wiki/Newtown_Creek)</comment></comment></comment></comment>


Portable AWS-style infrastructure service for Docker - <AUTHOR> https://github.com/rancherio/rancher <comment><USER2> Chief architect of Rancher here. Rancher.io is in fact completely open source. The intention is that Rancher will run below Docker. Rancher currently wraps Docker but going forward that will no longer be the case. We very much want users to use the native Docker CLI and remote API.

Rancher is packaged as a set of Docker containers. This may seem like inception but we build off of the portability guarantees provided by Docker. This means that the storage and networking services we provide should run anywhere Docker runs.

The source code for this project is mostly in [https://github.com/rancherio/cattle](https://github.com/rancherio/cattle) at the moment. We will be moving things around quite a bit and in the end we will have a lot of repos that comprise the project. [https://github.com/rancherio/rancher](https://github.com/rancherio/rancher) serves as a meta-repo that packages up all of the other repos.

</comment><comment><USER3> I went to have a snoop around the code but all I can really see is installation files. Genuine question, is this project closed source?

I haven't really worked with Docker in anger yet - but I guess I could pull down the files / run it and then take a look inside to see how it works.

Is there a link to the original code? Is there a risk that projects are going to start to be released in a way where it's going to take jumping through a couple of hoops to see how they work?

I don't want to sound disparaging to the project (it sounds interesting). I was just curious in having a really quick glance at the code to see if it was something I wanted to keep an eye on.

<comment><AUTHOR> Seems like some of the source code of different components are here: [https://github.com/rancherio](https://github.com/rancherio) * Agent: [https://github.com/rancherio/rancher- agent](https://github.com/rancherio/rancher-agent) * Cattle: [https://github.com/rancherio/cattle](https://github.com/rancherio/cattle)

</comment></comment><comment><USER4> Off topic to rancher maybe but how about [a tool for] treating (packaging) docker images as [Debian/rpm] packages, at least persistent images (images that are not one shot jobs) ?

Some of the images workflow as deploying/removing from a host, replacing existing images (upgrades), dependency management (app image v1.0 depends on Nginx image v2.0), metadata like OS startup scripts (pg image needs to start on boot) seems to already be covered by apt/rpm and that tools like Ansible/others leverage for deployments in infrastructures.

</comment><comment><USER5> Here is a blog post announcing the project: [http://www.ibuildthecloud.com/blog/2014/11/11/announcing- ran...](http://www.ibuildthecloud.com/blog/2014/11/11/announcing-rancher-dot- io/)

It looks like this is a renaming and refocusing of Sstampede.io, which was discussed before at [https://news.ycombinator.com/item?id=8210100](https://news.ycombinator.com/item?id=8210100)

</comment><comment><USER6> Hi, some obligatory HN nay-saying here.

I feel like alternatives to all these services exist already. What AWS provides is packaging and integration.

If I want S3, I can use one of several distributed filestores.

If I want EBS, I can use one of several network disk systems.

If I want queues, or distributed K-V stores, or monitoring, etc etc etc, there are solutions coming out of our collective ears.

AWS is an IaaS. People are paying for the service, not the infrastructure.

</comment><comment><USER7> The vision seems to be docker on top of rancher on top of docker? Afraid I can't see how this would help? Unless it's just to inspire "yo dawg" Xzibit jokes? b^)

<comment><USER8> A docker container can manage the docker installation on the host. This is done by binding the docker.sock from the host to the container with the following command line argument: `-v /var/run/docker.sock:/var/run/docker.sock`

<comment><USER9> Of course it can. The question is, why would you want to?

<comment><USER10> Guessing so that installation process is portable and isolated from original host.

</comment></comment></comment></comment><comment><USER11> Looking forward to the Volume Management and Load Balancing features. Keep up the good work.</comment>


Ask HN: How would you validate data on both back end and front end? - <AUTHOR>

Dear HN,
in most projects you want to do validation of the submitted data both client- and server-side.
When using node/js the validation is simple, of course, because the validation rules are written once. But, more often than not I don't work in JS or use another server side language.
My Question: Do you know of any good way to validate objects/data structures in a language agnostic way?
I have considered something like JSON-schema or some sort of code generation.
Any ideas? <comment><USER2> Client side validation is a user interface improvement when it provides convenience. It does not replace server side validation because server side validation ensures application integrity. Of course applications that run in the browser muddy the water a bit, but still whatever hits the server requires scrutiny.

</comment><comment><USER3> Do basic validation client side - if you can, rely on html input types and html5 validation attributes. It should be enough to be helpful in most cases without being overly onerous to maintain or hard to match server-side exactly.

Put your full detailed validation rules server-side.

</comment><comment><USER4> In some java web applications, I wrote form validation rules in javascript for client side validation, and reused them server side using java's scripting API.

</comment><comment><USER5> Can you give an example of what you mean by 'validate'? The word is highly overloaded and has different meaning depending on where the data is being used.

</comment><comment><AUTHOR> By validate I mean, rules like:

\- is "title" set, \- when "age" is set "birthday" must not be set. \- the cart can have a max of 10 items.</comment>


Google's new IoT Core service helps businesses manage their IoT data and devices - <AUTHOR> https://techcrunch.com/2017/05/16/google-launches-cloud-service-to-manage-internet-of-things-data/ <comment><USER2> This is great and all except I had registered the company I work for to be on the private beta, and have not heard anything for weeks. There's not even a place or number or email to contact, it's just a Google Form. I even signed up for their Brillo/Weave program (now Android Things), and also heard nothing back. You either have to have some internal connection to get any attention or just wait for their service to go into production, which is God knows when.

<comment><USER3> One of the many reasons AWS is eating their lunch.

</comment></comment><comment><USER4> It is more than one year that I work with IoT and honestly I don't have understood the google offert.

I had the pleasure to work with IoT and the Lora protocol writing and managing a Lora network server, the piece of software that takes Lora messages send through radio and decode them from radio -> udp -> MQTT (encrypted) -> MQTT (clear) [shameless plug, I packed my experience in an on-premises service: [http://loranetworkserver.com/](http://loranetworkserver.com/) ]

The difficult part I believe is this one, after you got the MQTT message in clear what you do with it is quite simple, straightforward and overall a solved problem (unless you are not getting millions of messages per seconds, but very few businesses have such load).

From what I understood from the google page they are solving the simpler problem of getting the data from an MQTT message and save it to disk, and maybe use later for data mining. It is weird because I wouldn't accept to have my data saved in someone else disk, at the bare minimum I would require to have the data duplicated in some standard (pg, MySQL, mongo) db (even a db managed by AWS or Google, but a standard one that I can move at will).

It doesn't seems the most valuable piece of architecture that they could develop.

<comment><USER5> The real valueble piece would be probably something up the stack, maybe similar to the great offering of thingworx, but better.

But that would mean competing with partners , so it has its own issues.

Maybe by focusing on something like authentication , and offering Google branded security , they could both achieve some lock-in in and not scare partners ?

<comment><USER4> My point of view is quite local, however I don't see any of the company I work with having their data only on Google or AWS without a very clear way to get it out.

Honestly I see IoT a lot like Machine Learning, everybody is talking about it, everybody want to be part of the game, but there is not a clear solution.

Businesses have very specific use cases that require some, not trivial, understanding of the technology, to be fulfilled in full. Even more to actually use the data gathered.

For the foreseeable future I see the need to a quite senior figure to enable IoT in businesses.

Once a senior figure has such data in clear, a way to mine value out of that data I see at least unlikely that she is going to push all of that only on google only to fetch then back once you need to do your visualization or analysis. Maybe if you are completely sold to the google ecosystem, it may make sense, but still...

</comment></comment></comment><comment><USER6> Doesn't Microsoft also market an "IoT Core" of their own?

<comment><USER7> Yes, Azure IoT Hub.

Works pretty well, and the Business Intelligence backend is pretty powerful. Not sure what Google's version of that is here.

</comment></comment><comment><USER8> Taking a quick look at this it doesn't seem to offer much more over AWS. Device management and remote access might be nice. But its been my experience in B2B land that anything like this gets locked down by internal IT depts.

It might be a useful service for B2C devices though.

<comment><USER9> What does AWS offer for these use cases?

<comment><USER8> AWS has an IoT platform that offers roughly the same features. They also have "Device Shadowing" which lets you store up some state that behaves as the device when the connection is lost. [https://aws.amazon.com/greengrass/](https://aws.amazon.com/greengrass/) also looks interesting if you requires some edge computing services for your IoT devices.

I don't actually use either of these platforms currently. I put together an in house platform for the few features I need. Provisioning new device firmware and updating are probably my biggest pains. Yocto is kind of awful as well, but its the best that we have right now.

<comment><USER10> What are the big pain points around provisioning new device firmware?

<comment><USER8> Giving the device I unique ID, registering it somewhere. Mount the image and inject configuration information. Then you need to build some production worker friendly appliances to actually program your devices.

</comment></comment></comment></comment></comment><comment><USER11> Honest question, I don't understand these "IoT servers". Aren't they just standard servers that accept agreed protocol? E.g. HTTP or MQTT? Isn't this something you can do yourself with $5 Digital Ocean?

<comment><USER12> Everything is something you can do yourself. The value is in not having to.</comment></comment>


Twitter Takes Step Toward Commercial Accounts - <AUTHOR> http://bits.blogs.nytimes.com/2009/07/24/twitter-takes-a-step-toward-commercial-accounts/?hp

<comment><USER2> It's a little mysterious how Twitter manages to stay in business now, given that they don't seem to charge anyone for anything.

<comment><USER3> They're in business with the money they raised. The fact that putting up a few content pages nets them an NY Times story probably doesn't hurt attracting further investment..

<comment><USER2> Yes, that's what makes me nervous. I remember back in 1999 listening to a startup CFO saying her company was having cash-flow problems and needed more VC funding, and thinking that what they really needed was a _revenue stream_. (That was when I realized with a clunk that the dot com bubble's days were numbered.)

Twitter has been remarkably successful at attracting a huge community of users and developers for their service, but sooner or later they're going to have to find a way to monetize that - without alienating the huge user base on which any viable monetizing plan must depend.

<comment><USER4> Currently, Facebook, YouTube, and Twitter are all in the red. They have enormous value because of their _potential_ to make gobs of cash due to the amount of eyes that look at them everyday. The problem during the dot-com boom/bust was that ideas that were basically crap (aka. had no real users, nor much potential to get them) were getting wayyyy too much money, and were often being started and led by business types who thought they could just hire some programmers and their ideas would spring to life and make them infinitely rich. FB/YT/Twitter are all in a very different position and actually have potential to make their investors infinitely rich in the not too distant future.

<comment><USER2> _FB/YT/Twitter ... have potential to make their investors infinitely rich in the not too distant future._

Yes, but _how_? And what is stopping them from doing it already?

 _Edit:_ I understand that Google is working on algorithms that will let them parse content from videos so they can include targeted ads (I've heard it suggested that Google's free 411 service is an exercise in collecting speech samples for just this purpose).

<comment><USER3> Facebook and YouTube have a lot of user who spend a lot of time there. This at least makes an ad model possible. Twitter does not have that, especially considering how long it's been around (it was launched about 6 months after YouTube) and how unbelievably overhyped it is, and a large share of the users it does have are spam accounts.

Only time will tell, but I think along with "make their investors infinitely rich in the not too distant future" there's also a strong option of "completely forgotten in the not too distant future".

</comment></comment></comment></comment></comment></comment><comment><USER5> It's still blows my mind in exactly how popular Twitter has become.

<comment><USER6> Consider how much publicity they get.

<comment><USER5> But thats my point. Why?

Twitters entire concept is just a head spin, As a casual bystander to the twit phase, I gather that 90% of the posts are either ego trips, basic daily occurrences, spam or marketing.

Why can't you meet your friends for coffee instead of twittering them about it from Starbucks.

P.S: Sent from my iphone.</comment></comment></comment>


What It's Like To Work On Board a Gulf of Mexico Oil Drilling Platform - <AUTHOR> http://www.fastcompany.com/magazine/39/shell.html

<comment><USER2> According to dishwasher Pete, it involves lots of swearing. If you don't use the F word more often than Tony Soprano, you don't fit in.

<http://en.wikipedia.org/wiki/Dishwasher_Pete></comment>


Google released new logo for Chrome (as expected) - <AUTHOR> http://twitpic.com/49vzoz

<comment><USER2> I liked the rendered one. This is sort of ugly, even though it is consistent with the general new look for Google apps.</comment>


Reforming the Mathematical Language of Physics (2002) [pdf] - <AUTHOR> http://geocalc.clas.asu.edu/pdf/OerstedMedalLecture.pdf

<comment><USER2> My brief reading of this suggest it isn't mathematically sound in terms of its presentation.

On page 9 he discusses what he calls the geometric product. The problem is that the geometric product of two vectors is not a vector. This means that the space he is really working is larger than the vector space he started with. This isn't explained to the reader. What is this larger space?

Equation (7) shows that the geometric product of a and b is a.b + a wedge b. From this it's clear that he is working in the exterior algebra of the vector space.

Reading further shows that what he is really doing is giving geometric meanings to the operations in the exterior algebra where V is R^2 and R^3. This is useful and I think it has merit but I also think one should start with the proper setting.

Looking on page 9 going from (11) to (12) requires quite a leap. He says to square (11) but the right hand side of (11) is not a vector and the geometric product of this object hasn't been defined. It was only defined for vectors in V and not for other elements of the exterior algebra.

<comment><USER3> This short lecture is not intended to be a comprehensive introduction to what Hestenes calls "Geometric Algebra" (some other people call this the Clifford Algebra of a real vector space, or similar).

For that, see his numerous other papers and books about the subject, or the several books by other people in the last 10–15 years.

It's unfair to label this expository sketch "mathematically unsound" on the basis that it skips a bunch of steps... when there's no space to be fully rigorous in the context.

> _On page 9 he discusses what he calls the geometric product. The problem is > that the geometric product of two vectors is not a vector. This means that > the space he is really working is larger than the vector space he started > with. This isn 't explained to the reader. What is this larger space?_

Anyway, you are absolutely correct that the geometric product of two vectors isn't a vector: instead, it's a scalar plus a bivector (scalars + bivectors form a space isomorphic to the complex numbers, conveniently).

You might notice that the conventional inner product (dot product) of two vectors is also not a vector. Likewise, while the cross product of two vectors is defined to be a vector, it's not really the same type of vector as the two original vectors and must be treated differently, causing endless confusion, especially for students. Reducing this confusion by clearly embedding geometric products of vectors in a larger space is the whole point.

For more, see:

[http://geocalc.clas.asu.edu/html/Evolution.html#References](http://geocalc.clas.asu.edu/html/Evolution.html#References)

[http://geometry.mrao.cam.ac.uk](http://geometry.mrao.cam.ac.uk)

[http://geometricalgebra.net](http://geometricalgebra.net)

[https://en.wikipedia.org/wiki/Geometric_algebra](https://en.wikipedia.org/wiki/Geometric_algebra)

<comment><USER2> I'm not a physicist and don't understand their perspective on these matters. I say it is mathematically unsound not because it isn't rigorous. I'm not expecting rigor.

However, I do expect well founded definitions and operations. To define an operation on two vectors and not point out that it isn't a vector while stating that the geometric algebra is different "from all other associative algebras" is misleading. Associative algebras are closed under the operations they have. So something ought to be said about the peculiarity of talking about associative algebras while not having an operation that is closed.

The only paper I've read from Hestenes is the paper in question and the perspective I have is that of a mathematician. My comment only dealt with this paper and from my perspective things were muddled a bit. He talks about confusion of physics students in graduate school on the topic of vectors. I'm assuming such students will eventually have to deal with tensor products and the exterior algebra when they study general relativity. Hence my belief that one should talk about the larger algebraic structure from the get go rather than glossing over the fact that the geometric product of a two vectors is not a vector and the mystery of squaring a wedge product.

Scalars + bivectors are isomorphic to the complex numbers provided the base field is R and the isomorphism is as vector spaces not as algebras or rings.

<comment><USER3> Scalars + bivectors (obviously talking about those generated by geometric products of vectors in R2) are isomorphic to the complex numbers, as a ring.

<comment><USER2> I didn't read enough of the paper to see how bivector multiplication is defined. I'm assuming everything is in the exterior algebra and thus made my comment with that assumption.

</comment></comment></comment></comment></comment><comment><USER4> There are two very good introductory textbooks on the subject by the same author:

[http://faculty.luther.edu/~macdonal/laga/](http://faculty.luther.edu/~macdonal/laga/) [http://faculty.luther.edu/~macdonal/vagc/index.html](http://faculty.luther.edu/~macdonal/vagc/index.html)

<comment><USER5> The LAGA link is gold. Wish I could give more upvotes.

This paragraph I think gives context to both the HN thread author and the commenter:

Geometric algebra as practiced today originated in the 1960's. It is currently under vigorous development. It has found important applications in computer science (in graphics, robotics, and computer vision), engineering, and physics. It is available to game developers for the Xbox and PlayStation video game consoles. This text is an attempt to keep up with these modern developments.

Putting on my must read/study list (I am proficient in linear algebra, so hoping for a gentle push into geometric algebra)

<comment><USER4> I'm sure you will like it. Macdonald is an excellent teacher.

Years ago (2009) I sent an e-mail to David Hestenes asking him if he was planning on writing an introductory textbook on geometric algebra. He said it was in the planning stages.

From what I understood later, it seems he is attempting to write a 100% purely geometric algebra book unlike macdonald who reserved it for the second part of laga.

</comment></comment></comment><comment><USER6> An article introducing Geometric Algebra ( _A Unified Mathematical Language for Physics and Engineering_ ) was posted to HN ([https://news.ycombinator.com/item?id=8192054](https://news.ycombinator.com/item?id=8192054)) and may be of interest.

It's authors also have other articles and teaching resources on their website: [http://geometry.mrao.cam.ac.uk/](http://geometry.mrao.cam.ac.uk/)</comment>


Glyphish icons for Retina now on Kickstarter - <AUTHOR> http://www.kickstarter.com/projects/jpwain/great-icons-for-iphone-4-apps

<comment><USER2> This is a pretty cool use for Kickstarter. The author gets paid, people who pitched in get something extra, and everyone else gets to benefit from the author's work. I like it.

</comment><comment><USER3> I'm amazed by the amount of money people are raising on Kickstarter. Seems pretty awesome.

<comment><AUTHOR> It's a lot of money, but Glyphish is not exactly unknown - particularly now when app phone development is so popular - and he's been hyping the Kickstarter project for a while.

I think he would have raised a lot more if he did a better job at getting the word out, but guess he's doing well with what he's done already.

</comment></comment><comment><USER4> He got me with the little script "i" in a circle in the upcoming simple icons. Just the thing for iPhone web apps.

</comment><comment><USER5> Looks like he's already reached his goal?

<comment><AUTHOR> A lot of people use Kickstarter as a shop rather than a place for receiving donations - see many of the (comic) book projects for reference. While $2000 doesn't seem like a guaranteed success, the donation rewards seem to reflect that the creator expected it to do so. The $2000 is probably a minimum rather than a goal, which the figure usually reflects on Kickstarter; making a profit on a project is not something you usually associate with Kickstarter.

Kickstarter only takes 5% of the donations, so it's a perfect digital platform - and physical if you can handle production and logistics yourself.

I submitted it as an equal service to HN users and Joseph Wain. As aforementioned, Kickstarter projects can be a lot of things.

</comment></comment><comment><USER6> When will kickstarter let non-US projects in?</comment>


Show HN: headless WordPress hosting—make your WP secure and up to 10x faster - <AUTHOR> https://www.hardypress.com/?ref=HN <comment><USER2> I work for a company that got its wordpress sites nastily hacked many times, and I also came to the conclusion that the only to secure this thing is (to update regularly and) to serve static pages. I have imagined a workaround with the module WP-Super Cache in order to achieve that. I'm just saying that their is, sadly, a need for this.</comment>


What percentage of Facebook accounts are fake or test accounts for products? - <AUTHOR>

Overtime, more people friend me who I have no connection to. What percentage of Facebook accounts are fake or not a person's actual personal account? I probably in the aggregate have created 4 Facebook accounts including my personal for other projects. Does Facebook take this into account? <comment><USER2> No way does Facebook even acknowledge this.

Bottom line: Facebook is worth $x per user. If you have 4 accounts, you are 4 people as far as they are concerned ;)

<comment><USER3> Facebook has safeguards such as requiring a certain amount of friends in a certain network to add you before you actually become a part of that network (i.e. a high school network), and if you don't meet that quota in a certain amount of time they disconnect that account. Facebook also sets a limit on the number of friends you can add in an amount of time after you join their site, i think its about 100, more than that and you'd trigger flags and they shut you down and don't let you do stuff.</comment></comment>


The Browser Statistics That Matter - <AUTHOR> http://mediatemple.net/blog/tips/browser-statistics-matter/ <comment><USER2> This is a very insightful article. Our website revolves around Chromebooks, Chrome OS etc. Our browser stats, obviously, heavily favor Chrome. Regardless the platform, our Chrome usage in any given month is around 85-90%. Global statistics have their place but not here.</comment>


Ask HN: Only good at jumping through hoops. How to 'start-up' my life? - <AUTHOR>

--TLDR: I've only got to where I am by comparing myself to others, and chasing the proverbial carrot on a stick. I've always been independently minded, but I suck at anything that's not assigned to me by someone. How can I start achieving the goals I set for myself?--
I'm in my mid-20's and I've realized I only excel at tasks that are assigned to me by others. Whether its school, work, or fitness trainer, I can bust my ass, and be successful in this type of environment. I can even make myself do things I find boring, mundane, and exhaustive. The motivation comes from not disappointing others, fear of being judged, and sadly, comparing myself to others.
However, I've seen people here and elsewhere who are completely self-directed, autodidactic, and incredibly self-disciplined. Usually they are the type that don't go to class, because they can learn in their own time. They teach themselves a new language, pick up new skills and activities apparently effortlessly. They run side-businesses, and are generating passive income through various ventures. And they all seem to be great amateur photographers. No one tells them to do these things - they just go out and do it.
Their motivation seems to be the opposite of mine: They work only on interesting things, but they also have a perspective that makes everything seem more interesting. I'm sure they also need to work on things that are boring, mundane, and exhaustive, but its usually at a junction to get to something they find even more interesting afterwards. Most importantly, they have the prescience and confidence to forego short-term success for long-term success. They don't see life as some sort of competition with their peers or any of that nonsense.
I admire these people to no end. I never skipped class, even if I know the material is easy and I can teach myself faster, because I also know I'd never open the book on my own volition. Even if its stuff I find interesting. I just procrastinate to no end.
How can I start moving in the direction of these people? Any goals that I set for myself end up failing. Either because I don't structure them properly or because there is no immediate reward/punishment as feedback.
I have many goals for myself, including starting a company, that can only be obtained by self-discipline and self-direction. But I know if I don't change, and learn to do things without some hand holding, I won't be able to achieve them.
If it matters any, I come from working class family and grew up with the idea of "doing what your told" seems like the safe way to be 'successful'. I've realized money beyond a certain point won't do anything for me, and if all I have is my 9-5 job, I'm not going to be happy. But doing a 9-5 is all I have trained myself for up to this point. <comment><USER2> Your post is very interesting to me, as I'm currently examining a project to address a similar issues.

I'm curious. Do you find that you have trouble finding goals on your own which are worth pursuing? Or is it more of an issue that you just don't seem to have take the actions necessary in pursuing a goal?

I saw a clip from the founder of Patagonia (climbing gear and outerwear) who said that when he has an idea, he takes the first step toward his goal. If that feels good, he takes another step. Before you know it, you've summited the mountain.

If motivation is your issue, have you checked out Daniel Pink's work? <http://www.ted.com/talks/dan_pink_on_motivation.html></comment>


Ask HN: Good reads about ethics for programmers? - <AUTHOR> Looking for resources, articles, blog posts, or just a discussion about programming ethics.
For example, ACM has a Code of Ethics: http://www.acm.org/about/code-of-ethics
But, it's quite old. Looking for some more modern examples and thoughts about how we choose the kind of work that we will do. Particularly as software finds its way into more and more of everyone's life. <comment><USER2> A Gift of Fire, [http://smile.amazon.com/Gift-Fire-Ethical-Computing- Technolo...](http://smile.amazon.com/Gift-Fire-Ethical-Computing- Technology/dp/0132492679), is used often in university level CS Ethics courses.

</comment><comment><USER3> I thought this was a great talk from PyCon this year: [https://www.youtube.com/watch?v=uSbKjRRbjZs](https://www.youtube.com/watch?v=uSbKjRRbjZs)</comment>


X Windows on an Early Amiga - <AUTHOR> http://blog.paradroyd.com/post/184076847051/x-on-amiga <comment><USER2> Is that from an obscure classic software or is it a new development?</comment>


There's a Dirty Unix Joke in the New York Times' Facebook Backlash Story - <AUTHOR> http://www.geekosystem.com/dirty-unix-joke-nyt-facebook-nyu/

<comment><USER2> Click through to the NYT story and the original photo has been cropped to remove the joke!

[http://www.nytimes.com/2010/05/12/nyregion/12about.html?part...](http://www.nytimes.com/2010/05/12/nyregion/12about.html?partner=rss&emc=rss)

</comment><comment><USER3> Anil Dash had a dirty Internet-Culture joke in the NYT a few years back (scroll down the article to the picture of Mr. Dash):

[http://www.nytimes.com/2005/06/02/fashion/thursdaystyles/02G...](http://www.nytimes.com/2005/06/02/fashion/thursdaystyles/02GOOGLE.html)

<comment><USER4> Who in his right mind wears a Goatse shirt?

</comment></comment><comment><USER5> These guys have gotten more pictures taken of them than lines of code written.

<comment><USER6> If they do half as good a job at coding as they do at marketing they're on a home-run.

The amount of free publicity they've gotten carries a huge risk though, which is that people will be over-expecting, probably leading to them being scolded for under-delivering. The general feeling seems to be that these 4 are going to roll out a distributed facebook by September first or so. I've pulled a few all nighters in my life, I think they're not quite aware yet of how difficult this really is.

I'm loathe to discourage them though, figure that plenty of people succeeded simply because they didn't know that what they were doing was impossible.

</comment></comment><comment><USER7> Honestly I'm a little disappointed they didn't check the manual pages for any of these commands.

In case it wasn't clear... (e.g. man grep, man touch, man fsck, man mount, etc.)

</comment><comment><USER8> I always thought it was strange that you couldn't fsck a mounted volume... that's so _unnatural_ , everyone knows you need to mount something to fsck it!

</comment><comment><USER9> Another way to enjoy unix commands is to observe their witty output:

<http://www.gnu.org/fun/jokes/unix.errors.html>

</comment><comment><USER10> The full version:

updatedb; locate; talk; date; cd; strip; look; touch; finger; unzip; uptime; gawk; head; apt-get install condom; mount; fsck; more; yes; yes; yes; more; umount; apt-get remove --purge diaphram; make clean; sleep</comment>


Emails That Win You Clients - <AUTHOR> http://emailsthatwin.com

<comment><AUTHOR> This is a book I wrote over the course of the past year. I started Workshop, a service that helps freelancers find work. A lot of members made a lot of money but there was also another group who made nothing.

I found out it was because of the emails they were sending, not their level of freelance work. So I started working with everyone individually and extracted the lessons from those sessions into this book.

</comment><comment><USER2> This feels like an overt attempt to sell me things instead of actually providing me useful information.

<comment><AUTHOR> it's a product, not a blog post

<comment><USER3> So a slashvertisement, in other words?

</comment></comment></comment><comment><USER4> I really enjoyed this book—useful guide to communicating with clients. Has me thinking a lot more about what I write before pressing send.</comment>


AVA-IA  Agnostic Virtual Assistant - <AUTHOR> https://github.com/ava-ia/core <comment><AUTHOR> The main purpose of AVA (Agnostic Virtual Assistant) is create a clever/fast assistant for any kind of context. This repository concerns the core of AVA so feel free for try in your NodeJS projects.

Nowadays we can find a lot of assistants, and more and more in coming years, all of us know that Apps in future will be more conversational and less click/action. For that reason our approach is create an agnostic and reusable system for help developers to create any kind of virtual assistants.</comment>


Deploying a Go Application on Heroku (video) - <AUTHOR> http://thesourcetank.com/episodes/1-deploying-a-go-application-on-heroku

<comment><AUTHOR> I've been thinking for a long time how I wanted to start making educational content and I knew I wanted to use video as a medium. Rather than waiting any longer, I decided to make a screencast on a topic that I'm rather interested in right now and I hope is the same for others. Please forgive the rough edges.

The goal with SourceTank is to create screencasts on a variety of topics; Go, Rails, Node, Angular, etc... Basically anything that a web developer may want to learn in the course of their work.

I drew a lot of inspiration from RailsCasts (as many of you can probably tell!) and other screencasts on tech subjects.

I'd love to hear feedback, criticism, ideas for new episodes or anything else!</comment>


Best Small Digital Marketing Agencies of 2020 - <AUTHOR> https://jungletopp.com/small-digital-marketing-agencies/ <comment><AUTHOR> Looking to brush up on your brand's digital marketing? High traffic and heavy engagement are vital check marks for any successful business. For those interested in adopting stronger strategies and creating effective campaigns that result in greater ROI, you need the right firm on your side.⠀</comment>


A Seattle vigilante who beats the police to bike thieves - <AUTHOR> http://www.outsideonline.com/2108066/emerald-citys-velo-thieves-have-problem-bike-batman <comment><USER2> For those not in the Seattle area, it may be useful to understand that Seattle PD is in the middle of a months- or years- long work slowdown - a police strike, when you do away with euphemisms - in response to federal oversight of the department. They will barely respond to most crimes, so rising vigilantism is hardly surprising.

<comment><USER3> Ha ha, oh wow:

"We found that SPD has engaged in a pattern or practice of excessive force that violates the Constitution and federal law. Our investigation further raised serious concerns that some SPD policies and practices, particularly those related to pedestrian encounters, could result in discriminatory policing."

[https://www.justice.gov/crt/investigation- documents](https://www.justice.gov/crt/investigation-documents)

<comment><USER4> How old is that? There's supposed to be some new head honcho that will fix things.

<comment><USER5> There's always some new head honcho that'll fix things. The FOP won't have anything to do with fixing things. They're above the law.

</comment></comment></comment></comment><comment><USER6> Every college town has at least one theft ring that operates this way. If you see a beat up truck full of bikes on the highway, it's one of these guys moving bikes from where he stole them to where he is selling them.

Finding this activity is as easy as falling off a log. If you want to try this for yourself, you are literally minutes away from meeting a bike thief. He'll have 10-20 bikes on the cheapest locks on a campus bike rack, especially this time of year, or he'll set up a sketchy meeting as in this story.

WTF are cops doing if they are not busting patently obvious theft rings? Making this kind of bust should be utterly basic police work. It should be what the new guy does on his first day. Oh, right, they are raising revenue and fighting the long ago lost Drug War or looking for non-existent "terrorists." This is why policing has utterly disconnected from quality of life and middle class concerns.

<comment><USER7> Hah. After I tracked down the seller of my stolen iPhone, I came across an eBay profile that was about as blatant as you can imagine.

Laptops, iPads and all such things, most "without chargers". Phones, most "activation locked".

100+ items.

Told the police. They declined to investigate.

<comment><USER6> Should have called back and said "Never mind, I shot him."

<comment><USER8> you joke, but I have been told by police on two separate occasions (one car break in, one apartment break in) that I should have shot the assailant rather than calling the police first.

</comment></comment></comment></comment><comment><USER9> I had my bike stolen while a poor student at University. It was my only mode of transport I had and it was the best bike I have ever owned. As the article mentions it's true that bike ownership can have a emotional aspect that other things don't.

I even remember seeing the guy who probably stole it. He was wearing a greatcoat even though the weather wasn't cold.

He would needed a greatcoat to hide the giant boltcutters he would have needed to cut through the very good chain I used to lock my bike up.

Still bitter.

<comment><USER8> I cycle about 40-60 miles around my major metro most days, and I also see a guy pretty often cycling in a big heavy coat, even in 100 degree (f) heat.

I wonder if he is a thief.

<comment><USER10> Well, is he on a different bike every time?

<comment><USER8> No, but why would he be? It makes the most sense to scout for bikes on one bike and when you find a score stash it as soon as possible, not ride around town leisurely on a stolen bike

</comment></comment></comment></comment><comment><USER11> This is such a frustrating issue. I understand that from a financial perspective it makes no sense to try and stop people stealing bikes or vandalising cities and I'm falling over myself trying to find a justification for doing so anyway but has any city ever tried?

<comment><USER12> Bikes are just like any other stolen item. They typically end up with brokers who warehouse and distribute these goods in ways that are hard to scrutinize. The problem is that there will always be crackheads and there will always be sketchy people that willing to transact stolen goods. Its like a cosmic-scale version of wack-a-mole.

The best way to deal with bike theft is for owners to get wise about how they store and lock their bikes. Some amount of common sense about bike choice helps too. If you can afford a $3000 bike you can also afford a secondary $100 bike that doesn't make bike thieves salivate while you're grocery shopping.

<comment><USER13> But it doesn't have to be this way. I was in Copenhagen a few weeks ago. I couldn't get over the number of bikes parked overnight that were locked only to themselves. Many bikes simply had their U-lock run through their front tire as a deterrent to anyone who might ride off on it. The bikes weren't actually locked to anything at all. Amazingly, these bikes were still there in the morning. In Portland, none of those bikes would have lasted an hour "locked" like that.

Ask yourself "why is that?"

<comment><USER14> What percentage of Denmark's population is transient/homeless? People with nothing to lose are more likely to steal something.

<comment><USER13> That's a bit of my point. In America, we allow far too many to get to a place where they have nothing left to lose. I'm not sure if Basic Income is the answer. Perhaps an actual mental health system. Whatever the solution, the status quo in the USA is shameful.

<comment><USER15> Yeah, I'm definitely for an actual mental health system. As well as a free, robust, and easily available addiction treatment system. And an energetic program to get down-and-out people off the street and back into productive lives.

People inevitably say, "what will it cost?" But that ignores how much we spend now. Wasted lives, mangled minds, broken families that pass trauma and dysfunction to the next generation.

Having personally lost bikes and chased thieves, I applaud join this vigilante's efforts. But that can't be the only thing to do. No 7-year-old wants to grow up to be a meth-addicted bike thief. As doing a Five Whys teaches us, if you're serious about solving a problem, you have to attack multiple levels of causality at once.

</comment></comment></comment></comment></comment></comment><comment><USER16> Pretty interesting & fun story. The article itself was did go a bit over the top beleaguring the heroic super-hero nature of the person, but if you can read around the purple prose & redundant praise there were some cool pieces of info:

\- The bike index is an interesting concept, working around the balkanized nature of PD databases.

\- The actual narrative was quite funny & interesting.

\- How pervasive an issue this is escaped me as a non-biker. I didn't realize how expensive bikes are and how often they get ripped off.

</comment><comment><USER8> My friend recently had his bike stolen. It was recovered after it was thrown over a fence of a local business.

The thief most likely didnt know how to ride a fixed gear with no brakes, crashed, and ditched the bike.

<comment><USER17> A bike with no brakes is dangerous. Almost good riddence.

<comment><USER18> Fixed gear bikes have the brakes built in. Just stop peddling.

<comment><USER8> or put your feet on the ground

<comment><USER19> I recommend diving face first into the first available wall. That is by far the fastest way to reduce the speed.

If a wall is not situated conveniently enough, old ladies are surprisingly sturdy, and will stop even a high speed fixed-gear hipster at the reasonable cost (to the cyclist) of a broken hip or a few legs or arms.

</comment></comment></comment></comment></comment><comment><USER20> It seems to me that the connecting of bikes on Bike Index with bikes for sale on various online marketplaces could be, at least partially, automated. It seems like a fun challenge, especially the pictures-only marketplaces...

<comment><USER8> Like I posted somewhere else in this thread, people fencing stolen goods usually list a bike that is different from, but similar to the bike (or any other item) they are selling. When contacted, they'll say they already sold that bike, but can gladly sell this other bike they have that is similar, and usually for a lower price that almost guarantees a purchase.

</comment></comment><comment><USER21> I'm disappointed this article wasn't about Seattle's true superhero, Phoenix Jones.

[https://youtu.be/t2pNxzmZDbs](https://youtu.be/t2pNxzmZDbs)

<comment><USER22> Phoenix is by all accounts not helping: [https://en.wikipedia.org/wiki/Phoenix_Jones#Arrest_record](https://en.wikipedia.org/wiki/Phoenix_Jones#Arrest_record)

<comment><USER4> You mean he has more than a single arrest with no charges?

<comment><USER22> "Seattle City Attorney Pete Holmes has called Jones a "deeply misguided individual."

</comment></comment></comment></comment><comment><USER23> Here is an idea. Given a Craigslist listings and Tensor Flow deep learning whatever, build a tool for searching stolen bikes -- batman style.

<comment><USER14> The people selling stolen bikes often don't put much information, so you'd get lots of false positives.

<comment><USER24> You _might_ get a lot of false positives. I'd go so far as to say it is likely.

However, the point is the algorithm may just surface a pattern that you hadn't considered.

</comment></comment></comment><comment><USER25> I always wonder where this never ending market for stolen bikes is. I live in SF I'm on my 3rd bike in two years, this time I learned my lesson and bought a beater.

I'm also not sure what I want done about it. On one hand, feeling that your personal property is unsafe makes it very hard to build a healthy community so it's worth policing small thefts. On the other hand, I know the cops around here have way bigger issues to tackle.

</comment><comment><USER26> Interesting. I always wondered what motivated this personality type. Seems that they get a high from it. (Not that I am bothered by it, I am glad they do).

</comment><comment><USER27>
      But do you know 5miles? Or Letgo?  Or OfferUp or Neerbuy
      or Saily or VarageSale? These sites are a visual
      marketplace, showing pictures of an item but often
      including few words to describe it. They offer the seller
      anonymity while making it hard for police or others to
      search the web for keywords. Lost a bike? You could spend
      hours scrolling through pictures across more than a
      half-dozen sites trying to track it down. Then do it
      again the next day. These sites may sell legit
      merchandise. But they're also the 21st-century way to
      fence stolen goods.

This makes it sound an awful lot like these sites are knowingly - or at least with a Lucille Bluth wink - catering to people fencing stolen goods.

<comment><USER8> I seriously doubt their business model is based on fencing stolen goods but I would be interested to hear the customer service directors excuse for why this is not the case.

<comment><USER28> I don't work for one of those apps, but have used one. I like it because it is a lower-friction way to buy and sell items. I can take pictures of items in my garage with my phone and quickly list them without going to my desktop and writing up a Craigslist post. It's the same old story of Uber/Tinder/etc making something easy to do on your phone.

</comment></comment></comment><comment><USER29> I've had three bikes stolen, but none in the traditional way of coming back to a bike rack only to find the bike missing.

Two were stolen from my garage by workers, these were by people with jobs and not by homeless crack heads. One was a $2500 road bike and the other was my mountain bike.

The other a multi-speed street bike was lost to a mugging (like a bike- jacking) by an organized bike theft gang of around eight that attacked me all at once. (Stay clear of suspicious groups of cyclists in isolated areas where one spry rider is riding double.)

The workers didn't get my nice tri-bike because it was in the house attached to a wind-trainer.

It's all very irritating; the value of the bikes to the bike thief is so low compared to the cost of replacing them.

</comment><comment><USER8> Here is an old Reddit AMAA of a bike thief that sheds some light on the business and the reason the thieves are motivated to steal the bikes

<comment><USER30> Looks like you're missing a link. Could you provide it please?

<comment><USER8> sorry about that

[https://www.reddit.com/r/IAmA/comments/cir79/iama_former_bik...](https://www.reddit.com/r/IAmA/comments/cir79/iama_former_bike_thief_amaa/)

</comment></comment></comment><comment> X-Istence Had my bike stolen when I was in college. Still miss it, at the time the cops didn't give two shits.

</comment><comment><USER31> Anyone have experience with insurance companies like Velosurance[0] or claims against renters (or homeowners with a reasonable deductible) insurance for bike theft?

[0] [https://velosurance.com/](https://velosurance.com/)

</comment><comment><USER32> Priceonomics did a story on the stolen bike problem : [https://priceonomics.com/post/30393216796/what-happens-to- st...](https://priceonomics.com/post/30393216796/what-happens-to-stolen- bicycles)

</comment><comment><USER33> Minor, but: the URL has a bunch of params like a user ID from a mailing list. Is it standard practice to remove these on HN? I wasn't sure but thought I'd mention it.

</comment><comment><USER34> MUMEN RIDER!</comment>