Show HN: Exposé – a static site generator for photos and videos - <AUTHOR> https://github.com/Jack000/Expose <comment><AUTHOR> so this is just a bit of glue code for imagemagick/ffmpeg that I use to generate my blog.

Last time I was on HN there was some interest in what I was using for the backend, so I cleaned up the code a bit and put it on github

<comment><USER2> Out of curiosity, what kind of photography equipment was used for these photos and videos? They are really nice.

<comment><AUTHOR> I was using a panasonic GX7 with the kit lens and 20mm 1.7 prime, and a few random vintage lenses. I'm glad you enjoyed it :]

<comment><USER3> I see that camera toted by a lot of photographers after I go "Oh wow, these photos look great!"

As much as it's the artist over the tool - I think I'm going to invest in this camera as my next step into photography. I've seen nothing but praise for the GX7.

<comment><USER4> I suggest you also get the mentioned Lumix 20mm lens with it: it's simply a beautiful lens, even compared to more expensive ones. Its only downside is a not exactly state of the art focus speed, but it's manageable, especially if you plan to do this type of travel photography.

<comment><USER3> I was actually planning on that, seeing as I have little knowledge of lens other than the lens matters as much if not more than the camera used.

Figure if I like the output I may as well invest in similar tools and practice. :) (Unless most of those photos are w/ the vintage lens that went unnamed...)

<comment><AUTHOR> I didn't use the vintage lenses all that much, autofocus and zoom is just much more convenient. Also on the web 4k is pretty much the max viewable resolution. Camera lenses are designed for the sensor resolution which is typically 2-4x that amount, so lens quality almost doesn't matter for pictures viewed on the web.

I chose the GX7 because it's really small and light with decent image quality. If I were getting started now I'd be taking a serious look at the sony A7 M1.

<comment><USER3> It sounds like you mixed up two cameras? The Olymus E-M1 and the Sony A7.

[http://www.imaging- resource.com/cameras/olympus/e-m1/vs/sony...](http://www.imaging- resource.com/cameras/olympus/e-m1/vs/sony/a7-ii/)

<comment><AUTHOR> the em1 is probably more comparable to the gx7, but now that the A7ii is out the original A7 is a lot more affordable. I do miss the eshutter though.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> eric-hu This looks amazing. Thank you for generalizing this and open sourcing it.

For anyone looking to use the polygon word wrap feature as in the demo on the Github page with the Eiffel Tower, take a look at its responsive behavior before you make that post. As you shrink the window down on jack.ventures, some text can be cut off, or no longer show up on a clear portion of the image like a wall.

This isn't a bug with the software so much as a flaw with the magazine "words on image clearing" style layout that doesn't translate perfectly to the web medium.

<comment><AUTHOR> I should probably add a redraw on window resize. Right now it does that polygon stuff once on page load.

So if you resize the window and reload the page it should fit everything correctly again.

<comment> eric-hu You may want to consider CSS breakpoints. They'll do that automatically without the page refresh, assuming the content layout is done using CSS already.

A rough design pattern I've seen is Desktop resolutions: use layout in terms percent. For instance: left side of text begins at 50% of image width.

Tablet and mobile resolutions: fixed layouts for each resolution supported.

If you're doing the polygon containment using javascript, I imagine implementing such behavior might get really complex.

<comment><AUTHOR> could do with some CSS media queries. Right now I'm using a javascript calculation for font size to avoid the discrete steps in CSS breakpoints. I figured you don't see anything without javascript anyways so might as well go all the way.

My philosophy for mobile resolutions is to just deliver the desktop experience. The text will be tiny yes, but you can just pinch to zoom. Sites that lock down the zoom kind of annoy me personally so that's why I did it that way.

The second theme does have media queries for mobile sizes though, since it doesn't rely on the text being in a particular spot to be readable.

</comment></comment></comment></comment><comment><USER5> Beautiful work and amazing photography!

Interested in making things at Flickr? Drop me a line at eric at flickr.com :)

</comment><comment><USER6> really cool and I also learned a new way to check dependencies under bash:

command -v convert >/dev/null 2>&1 || { echo "ImageMagick is a required dependency, aborting..." >&2; exit 1; }

</comment><comment><USER7> Added it to staticgen.com now - love these small non-general purpose static gens :)

Reminds me of ThumnsUp: [https://github.com/rprieto/thumbsup](https://github.com/rprieto/thumbsup)

</comment><comment><USER8> This is really great! Is it open source? I couldn't see a license or anything in the readme so wasn't sure.

<comment><AUTHOR> oops, thought I'd picked a license when I started the repo.

just added MIT license.txt

</comment></comment><comment><USER9> Got a question: for fun I did this over about 400 to 500 photos. I partially did it also to stress test it. But the HTML file is empty. Did I do something wrong? The rest of the folders are there.

Here is the output if someone is interested to brainstorm about this problem. I edited the output a bit to make it slightly more readable.

<begin output>

Scanning directories.

Populating nav.

Reading files...........................

................................

................................

............................................

<some_conversion_errors_b/c_of_corrupted_file_ommited>

..............................................................

..............................................................

..............................................................

..............................................................

..............................................................

.........................

Building

HTML..........................................................

..............................................................

..............................................................

..............................................................

..............................................................

..............................................................

..............................................................

................................................/Users/my_user

_name/Downloads/Expose-master/expose.sh: line 139:

/usr/bin/sed: Argument list too long

Starting encode

fotos0001

fotos0002

fotos0003

...

<huge_error_of_same_corrupted_image_omitted>

...

fotos0489

fotos0490

fotos0491

</end output>

Anyways, I checked the image which was indeed corrupted, so ImageMagick was right on the money on that one. I still don't get it though why there's no HTML in the HTML file.

<comment><USER10> >/usr/bin/sed: Argument list too long

Maybe all of the filenames are passed as a single argument to sed?

<comment><USER9> I do have reasons to believe this is the error. Currently I tested it with 10 photo's (corrupted image removed), 200, 100, 150 and now I'm doing 190 (note: numbers are a ball park estimate).

Interestingly, 200 didn't work, but it also gave the "/Users/mettamage/Downloads/Expose-master/expose.sh: line 139: /usr/bin/sed: Argument list too long" error, while the others did not.

Edit: tested out all combinations. Argument list too long is indeed the error.

I got this with 188 pictures: Scanning directories. Populating nav. Reading files......................................................................................................................................................................................... Building HTML........................................................................................................................................................................................ Starting encode fotos0001 fotos0002 .. etc.

And I got this with 189 pictures.

Scanning directories. Populating nav. Reading files.......................................................................................................................................................................................... Building HTML........................................................................................................................................................................................./Users/mettamage/Downloads/Expose- master/expose.sh: line 139: /usr/bin/sed: Argument list too long

Starting encode fotos0001 fotos0002 ... etc.

xargs it is!

<comment><AUTHOR> added a patch that should resolve this. Is it working for you now?

</comment></comment></comment></comment><comment><USER11> This looks amazing.

I was using a tool one of my friends made, with a similar idea, just put images and videos in directories and have a script automatically generate a nice output. It can be found at [https://github.com/jlaine/django- coconuts](https://github.com/jlaine/django-coconuts), but yours looks spectacular. I'm tempted to switch.

</comment><comment><USER12> Lovely. Would be swell if you could plug it straight into a Dropbox folder.

</comment><comment><USER13> This is very cool. Love that its just a shell script.

In a similar vein, I have a Jekyll plugin that reads folders of images and can create galleries: [https://github.com/callmeed/jekyll-image- set](https://github.com/callmeed/jekyll-image-set)

Nice that you have video support. Can't wait to give this a try.

</comment><comment><USER14> Thank you very much!

I appreciate the use of simple bash shell script instead of a scripting language with lots of runtime dependencies.

</comment><comment><USER15> Thank you, this is exactly what I was looking for (actually thinking how to cobble up together myself). So I guess I am target audience :)

I want to add that sites look awesome and this is perfect for large number of people, I just want to thank you one more time for making this, it is also excellent starting point for photo sites.

<comment><USER16> > actually thinking how to cobble up together myself

Same here, it has been floating around my mind for a couple of weeks now and then this shows up :)

</comment></comment><comment><USER17> Very cool. Somewhat off topic: I've been looking recently for a good way to host many GBs of photos and videos for my friends and family to browse and download. Basically an open source version of Google Drive's file browser, with thumbnails and image and video previews. Any suggestions?

</comment><comment><USER18> Phenomenal. I've bounced between Tumblr/Wordpress with photoblog themes, Flickr, 500px and Instagram for sharing my film photography with friends. This is better than all of those, especially with the captioning.

Since most of my photographs are organized by trip or theme, this is perfect.

</comment><comment><USER19> This is really nice! Getting photos and especially video online in an easy way but still have it be beautiful has been really tricky. I'll definitely use this.

</comment><comment><USER20> This looks cool. Is there a demo link that I can check out?

<comment><USER21> I think the link in the post to [http://jack.ventures/](http://jack.ventures/) is a demo.

<comment><USER22> It looks like he originally built the site for himself (it made HN awhile back) and then generalized and open sourced it for everyone.

</comment></comment></comment><comment><USER23> i like the results. now, it would be very useful to have a friendly GUI to edit those things and generate the YML files for you.

</comment><comment><USER24> Given that it's a static site, why the JS requirement? Most browsers already intelligently handle keeping the "right" number of assets in memory, do you believe your JavaScript handles it better?

Also, it's not at all responsive to different viewport sizes; this might be a good thing to address.

EDIT: Oof, that's a kick in the karma. Aah, well.

<comment><AUTHOR> I'd actually agree that most static sites shouldn't require js. For image galleries though it really needs the lazy loading to save bandwidth imo.

Also it's "sort of" responsive, it just doesn't handle window resize right now. I didn't think that was an important use case, but now multiple people have pointed it out so I'll add it.

</comment></comment><comment><USER25> Nice work. I guess that for a sitegen so focused on photos and videos, a bash script works well - lets you do whatever you need directly with imagemagick and ffmpeg, no beating around the bush.

And I like your sites! Now... all I need is to be a better photographer, then I'd be able to actually create something nice with your script. Hahaha.

</comment><comment><USER26> I didn't know that I needed this, but now that I know it exists I really need this. Awesome job, thank you.

</comment><comment><USER27> Would be cool if you could do something similar to this with git repositories as well... Hmmm..

</comment><comment><USER28> This looks amazing - really great work. I'll definitely check this out properly.

</comment><comment><USER29> This is wonderful. Superb work.

</comment><comment><USER30> This is seriously cool! I'm going to have to checkout the code for this one to see how some of this was handled.

Do you have any other sites doing photo/video stories which have been an inspiration for this project?

<comment><AUTHOR> you've probably seen this already, but I'm a big fan of Stammy: [http://paulstamatiou.com/](http://paulstamatiou.com/)

and the the NY times multimedia presentations: [http://www.nytimes.com/newsgraphics/2013/12/30/year-in- inter...](http://www.nytimes.com/newsgraphics/2013/12/30/year-in-interactive- storytelling/)

</comment></comment><comment><USER31> Looks beautiful. Support for google photos would make this more versatile.

</comment><comment><USER32> I just got back from a trip and I have a lot of photos and some videos. This is perfect! I'm going to try this out as soon as I get home tonight

</comment><comment><USER33> Beautiful work! I'm in love with your site. I'm definitely going to be using the software. Thank you Jack!

</comment><comment><USER34> Love, love, love this. I travel and shoot a lot of photos, so this would be perfect for putting those out there.

</comment><comment><USER35> This is an excellent way to present images and videos. Also, reading about your work is an inspiration. Thanks!

</comment><comment><USER36> Looks great, but man... this seems like websites for the top 10% of the world with great internet speed. This sites are really not good with slow(er) internet. Also look at amount of traffic needed for full example of [http://jack.ventures](http://jack.ventures) even do not want to spend my mobile traffic on that example (although LTE is fast enough).

<comment><AUTHOR> you can actually adjust the compression settings in the script. I just have mine on the high end out of personal preference.

On mobile it should load the mobile-size version, which is much smaller than what you see on the desktop.

<comment><USER36> yes, don't get me wrong. It looks beautiful on desktop and I wished everybody could have great internet speed. But I know from professional experiences that e.g. people from South Africa will hate your pages (1-2Mbit is good DSL there). I know I only complain... but I also see bad styling. Most people nowadays browse with mobile and your fonts are too small and unreadable there (I also know there is no easy solution together with the pictures alignment). Just saying... for people on desktop on good internet speed +1 but definitely not a solution which everybody should copy (even not photographers, there is a reason why thumbnail galleries exist, a good example is Google Photos)

<comment><USER37> You seem to have pretty clear ideas about how users with slow connections might want to experience this.

Would you consider making a pull request with an alternate theme (there are two already included)? You could adjust the styling as you see fit, and so forth. Best of all, were you to actually use this, you could modify the compression settings and even the scaling in a way that fits your needs, even if you don't end up making a PR on the original.

Looking at this, there are lots of ways where it feels like there could be things added to this to make it better -- a photo reorganizer, or something that would let you auto-tag / order photos from within the interface. Those kinds of things would be really neat, but are likely outside the scope of the (amazing) tool that Jack was kind enough to give us. If one were to go far enough down those rabbit-holes, pretty soon one would have rewritten it as a CMS. ;)

</comment></comment></comment></comment><comment><USER38> I really don't understand the appeal of these static site generators. Why don't people just toss something like CloudFlare in front of their dynamic sites and turn the edge caching up. I mean this is free, the bandwidth expenses are covered, and you now have a globally accessible site.

Unless you're just trying to get away with hosting your whole site as a GitHub page ;)

<comment><USER39> You can use S3 to make hosting your site super simple, and super cheap.

I don't understand why people use a database for content that (for the most part) doesn't need one.

<comment><USER40> Agree 100%. Requiring an active server and database seems like overkill for a site that's read-only (or very nearly so)

You could easily replace his rsync with an s3cmd sync to ship the stuff straight to the S3 bucket.

Sure, S3 may cost more per byte shipped than serving it yourself, but probably not for a personal site (if you factor in the need to pay for a running server and the extra hassles and time cost involved with maintaining that server). You can pay for a lot of S3 bandwidth with what you pay for even a cheap VPS.

</comment></comment></comment><comment><USER41> Very cool.

I have little else to add, but I wanted to let you know anyway :) Keep it up!

</comment><comment><USER42> if this would exist for S3.. i would be soooo happy. tried to find similar (even thumbnails would be ok) .. nothing out there.

</comment><comment><USER43> can the video clips play the audio when brought into focus? maybe we want to play the audio just once I guess?

</comment><comment><USER44> Thank you so much for sharing.

</comment><comment><USER45> tight.

</comment><comment><USER46> Wow, love your bio: "These days I mostly travel and work on random stuff that I find interesting. I'm not really looking for employment, but I've always wanted to work at NASA and/or Google. So if you're NASA and/or Google HR, drop me a line ;]"

I wish I had that freedom.</comment>


Virtual DOM in Elm - <AUTHOR> http://elm-lang.org/blog/Blazing-Fast-Html.elm

<comment><USER2> Having done some benchmarks with TodoMVC before, I knew something was off about these results.

They play to the strengths of the virtual dom approach by manipulating the benchmark via dom instead of what ever interface was implemented within each TodoMVC implementation.

So I forked the benchmark and changed both the Backbone and Mercury implementations to work through their respective apis.

Here it is: [https://github.com/smelnikov/todomvc-perf- comparison](https://github.com/smelnikov/todomvc-perf-comparison)

as you can see the giant gap between Backbone and mercury is now gone while both tests perform the exact same tasks. (feel free to step through it in the debugger to see for yourself)

Here's my commit log: [https://github.com/smelnikov/todomvc-perf- comparison/commit/...](https://github.com/smelnikov/todomvc-perf- comparison/commit/7e1a5f8f4150a6436b9eeba233102b64a2bd5a78)

Note: I've added a new method to the Backbone implementation for toggling completed state as the old one was horribly in-efficient. This is not something inherit in Backbone but rather is specific to this TodoMVC implementation. See my comments in the commit log.

Note 2: Exoskeleton, which is basically backbone without the jQuery dependency is roughly 2-3x faster than vanilla backbone, I'm going to predict that it will actually be significantly faster than mercury.

Note 3: I think the virtual dom is great and seemingly has many benefits but I feel as though the speed benefit has been greatly exaggerated.

<comment><USER3> In all javascript apps the part that is slow is the DOM, not the javascript interface.

This benchmark was taken from the webkit source code then forked into [http://vuejs.org/perf/](http://vuejs.org/perf/) then forked to include mercury then forked again to include elm.

Neither elm nor mercury came up with this benchmark and just added themself to it.

What this benchmarks shows is that async rendering is really fast. Mercury, vue & elm all use async rendering where DOM effects are batched and only applied once.

A better, close to real user experience benchmark would be one using mousemove since that's an event that can happen multiple times per frame.

<comment><USER2> There is interaction occurring with the DOM in both benchmarks.

The way that the Backbone TodoView is designed does not take into account the possibility of a user adding 100 items using the dom within a tight loop. Probably because such a use case is impossible outside of this type of benchmark. By doing so the Backbone implementation ends up performing a lot of unnecessary renders. Therefore as far as Backbone performance is concerned this benchmark is not indicative of any real world scenario.

Just to re-iterate; when you're loading a set of todos from your local storage to display when the user first opens the page, you would not populate the "new todo" input box and fake an enter event for each item that you want to add. Instead you would reset the Backbone.Collection with a list of your new todos (go through the interface). That's basically the change I made to the benchmark. Sorry if it wasn't clear.

<comment><USER4> Running your perf test, I consistently get Backbone being the fastest, Angular the slowest, and the projects using Virtual DOM approach somewhere in the middle. Is that expected? [http://evancz.github.io/todomvc-perf- comparison/](http://evancz.github.io/todomvc-perf-comparison/)

edit: I was running the original test instead of your fork.

</comment></comment></comment></comment><comment><USER5> There's another advantage to virtual DOM: you can hot-swap code while developing and have React run its diff algorithm without reloading the page. If your component has no (or little) side-effects, it means you get live reload as you edit for free. This is impossible with Backbone/jQuery soup of a view.

See my proof of concept video: [https://vimeo.com/100010922](https://vimeo.com/100010922)

And actually runnable example that you can edit without refresh: [https://github.com/gaearon/react-hot- loader](https://github.com/gaearon/react-hot-loader)

I plan to write a blog post explaining how to integrate it into React project soon.

<comment><USER6> Yeah, the Om beginner tutorial demos this in lighttable with clojurescript, it's pretty epic.

edit: [https://github.com/swannodette/om/wiki/Basic- Tutorial](https://github.com/swannodette/om/wiki/Basic-Tutorial)

<comment><USER5> Where can I take a look? In my case, this is pure JS, no Light Table or browser plugins needed. No messing with V8.

<comment><USER7> Om hot reload doesn't require Light Table or browser plugins, just eval support from your editor setup. There's no way to see this easily beyond going through the Om tutorial. But as you say this is just a benefit that more or less falls out of React if you're careful w/ state - Devcards is another ClojureScript example of the possibilities - [http://rigsomelight.com/2014/06/03/devcards-taking- interacti...](http://rigsomelight.com/2014/06/03/devcards-taking- interactivity-to-the-next-level.html)

</comment></comment></comment></comment><comment><USER8> This technique may be the most revolutionary thing in web development in the last several years, IMHO. I've been using React for a while, and starting to integrate Mori for persistent data structures, and the things I can do with it is insane. The fact that it's not only far better performant, but a way better abstraction for dealing with UIs, is crazy.

<comment><USER9> If this technique is much more performant (batching diffs of the DOM), why don't browsers perform this "back-buffering" natively?

<comment><USER10> They do perform this "back-buffering" natively. When you manipulate the DOM in a modern (post-2009 or so) browser, it's just changing a pointer and flipping a dirty bit.

The problem is that it's _very_ easy to force a full recalculate of the whole page layout. Whenever you call .offsetHeight or .offsetWidth or .getComputedStyle, you're doing it. The full list of properties is about 2 dozen strong:

[http://gent.ilcore.com/2011/03/how-not-to-trigger-layout- in-...](http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in- webkit.html)

Most web developers don't know this, and so they're actively making their pages slow. Worse, many popular frameworks build this into the library, and so if you use them, there is _no way_ to keep your pages responsive. JQuery, for example, can easily cause 4-5 layouts with a single call to .css; on a mobile phone and a moderately complex page, that's about a second of CPU time.

<comment><USER11> This got me wondering how React handles this requirement. Can you use React if you need to know offsetWidth/Height to do complex layout?

<comment><USER12> Once the component is mounted (there's a componentDidMount callback) you have access to the real DOM node and can access them (or perhaps store them as a property if necessary). The DOM node is also available from event callbacks and such.

</comment></comment></comment></comment></comment><comment><USER13> My first thought when looking at the benchmarks is that I find it strange that Backbone is faster than React. Not that I imagine Backbone to be slow, particularly, just that this article is about one of React's key features - the virtual DOM - and that's something which Backbone doesn't have. I'd expect to see React up there with Om, Mercury & Elm.

I've just had a look at the code and React is using a localstorage backend, while Backbone is using its models + collections with a localstorage extension... so I'd expect there to at least be some overhead there, but apparently not.

Does anyone have any quick thoughts on what might be happening here? I can't shake the feeling that these benchmarks might not be terribly useful.

<comment><USER14> I've seen some AngularJS vs React benchmarks a while back. I believe it was [http://jsperf.com/angular-vs-react/5](http://jsperf.com/angular-vs-react/5)

I consistently got the result of Angular utterly and completely destroying React. Initially I blamed the virtual DOM approach, but after seeing other frameworks utilizing it and outperforming Angular by a huge margin, it seems to me that React is not written for performing well on small DOM documents. (There might be a turning point, considering how bloated Facebook pages it was designed for.)

<comment><USER15> Our performance benchmarks suggest that application performance is most certainly better off with: (a) DOM reuse (b) calculating expensive things only once (c) reducing GC pressure == not discarding/recreating things (d) coordinating actions that may trigger reflow. It is independent of what framework you are using.

My limited understanding of React is that it fails in (a), (b) and (c), and only limited measures can be applied to improve them. Re-creating the entire DOM on each update probably does not help. I have no information if (d) is possible with it.

I am using Angular.dart for a while now, and it can be used to get all of them in an optimal way.

Disclaimer: I'm working at Google.

<comment><USER16> (a) You can use the key attribute in order to get DOM reuse. If you are looping over N keys then React is going to reuse the nodes and move them around.

(b) You can implement shouldComponentUpdate in order to have a quick way not to re-render a sub-tree if nothing changed.

(c) See (b) but we're also working on changing the internal representation of the virtual DOM to plain js objects that can be reused[1]. We were super worried about GC but it turns out that it hasn't been the bottleneck yet for our use cases.

(d) If you are writing pure React, all the actions are batched and actually, it's write-only, React almost never reads from the DOM. If you really need to read, you can do it in componentWillUpdate and write in componentDidUpdate. This will coordinate all the reads and write properly.

A really important part of React is that by default this is reasonably fast, but most importantly, when you have bottlenecks, you can improve performance without having to do drastic architecture changes.

(1) You can implement shouldComponentUpdate at specific points and get huge speedup. We've released a perf tool that tells you where are the most impactful places to[2]. If you are bold, you can go the route of using immutable data structures all over the place like Om/the elm example and you're not going to have to worry about it.

(2) At any point in time, you can skip React and go back to raw DOM operations for performance critical components. This is what Atom is doing and the rest of their UI is pure React.

[1] [https://github.com/reactjs/react- future/blob/master/01%20-%2...](https://github.com/reactjs/react- future/blob/master/01%20-%20Core/05%20-%20Descriptors.js) [2] [http://facebook.github.io/react/docs/perf.html#perf.printwas...](http://facebook.github.io/react/docs/perf.html#perf.printwastedmeasurements)

<comment><USER17> I am currently writing an implementation of React in Scala.js. It's inspired by React and by the documentation of React, but I have not looked at the actual source code so far.

You seem to be an implementor, so two questions that maybe spare me looking at the source code :-)

1\. How do you batch updates? 2\. I am currently using an algorithm for longest increasing subsequences for avoiding superfluous dom insertions of children when diffing lists. I also make sure that the node containing the active element will not be removed from the tree during the diffing (if possible at all). Are you doing the same?

<comment><USER16> 1\. The boundaries are currently at event loop. Whenever an event comes in, we dispatch it to React and every time the user calls setState on the component, we mark it as dirty. At the end of that dispatch, we go from top to bottom and re-render elements.

It's possible to change the batching boundaries via "Batching Strategies" but we haven't exposed/documented it properly yet. If you are interested, you can look at requestAnimationFrame batching strategy. [https://github.com/petehunt/react-raf- batching](https://github.com/petehunt/react-raf-batching)

2\. We cannot really use normal diff algorithms for list because elements are stateful and there is no good way for React to properly guess identity between old and new. We're pushing this to the developer via the `key` attribute.

See this article I wrote for a high level overview of how the diff algorithm is working: [http://calendar.perfplanet.com/2013/diff/](http://calendar.perfplanet.com/2013/diff/)

<comment><USER17> Thanks a lot, very useful info. Yes, I know that because of state "diff" is really not diffing but synchronization of "blueprints" with actual "components". Still, after the update the order of the existing children of a node might have changed, and it is possible to devise a simple, not too costly (n log n, n is the number of children), and optimal strategy for rearranging the nodes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Why so many strings and so few types, especially for somethings like Elm?

The same in PureScript would be

profile user = mkUI spec do div [ className "profile" ] [ img [ src user.picture ] , span [ text user.name ] ]

See, types everywhere. [https://github.com/purescript-contrib/purescript- react/blob/...](https://github.com/purescript-contrib/purescript- react/blob/master/example/tutorial/tutorial.purs)

<comment><USER19> Because the underlying DOM is essentially untyped. This is a low-level adaptor library. One could easily build a more strictly typed wrapper on top.

<comment><USER18> Let me rephrase the question: why haven't they already?

<comment><USER19> Why haven't _you_ already?

They're literally announcing the untyped base library layer and the post specifically calls out the desire to build higher level abstractions. Elm is moving incredibly fast, so your question is totally unreasonable.

<comment><USER18> I don't use Elm. I'm more interested in PureScript. But, the API looks silly for a Haskell like language. There is some positive feedback for whoever cares. Like, I wouldn't take that API out in public because everyone will think, "why is there string-based programming in Elm?"

</comment></comment></comment></comment></comment><comment><USER20> Virtual DOM is fast, but it's not the only way to provide free and fast DOM updates. The author removed the Vue.js implementation from the benchmark, which does not use Virtual DOM but is as fast or even faster than Mercury and Elm.

Disclaimer: I'm the author of Vue.js. The benchmark is a fork of a fork of the Vue.js perf benchmark ([http://vuejs.org/perf/](http://vuejs.org/perf/)).

<comment><USER21> Ah! Well done on Vue. I'm finding it quite nice to play with outside work, currently we're using Mithril for our "small-non-angular" apps and components, but unfortunately while I adore it, a lot of the other devs Javascript isn't strong enough to deal with the flexibility Mithril gives you. Does Vue have the same issue? From what I've seen it sort of does, but with a bit more structure thus mitigating it a little. Thoughts?

</comment></comment><comment><USER22> As a startup who's built all of its UI on AngularJS, does introducing React/Om into the stack make sense? We have a B2B product where the users deal with a lot of CRUD forms and dashboards.

React looks interesting, but only if it gives significant advantages (time-to- market, maintainability, etc) vis-a-vis AngularJS in managing a large code- base.

Any first hand reviews?

<comment><USER6> YES - I've built two enterprise app frontends (CRUD forms and dashboards) in react since react came out. Now that I know what I'm doing and have my tools built out, I am contracting and hitting ridiculously tight schedules that I would never have been able to hit without the level of abstraction react enables. It helps that a react codebase is massively smaller than a comparable OOP-style codebase (I've used Backbone, Knockoutjs, and ExtJS in comparable apps)

<comment><USER23> Are there any helpers/libraries you use when building CRUD forms? I haven't seen one for React yet - or TBH a well functioning one in any language I use - and it's a pain point I would like to solve.

<comment><USER6> [https://github.com/wingspan/wingspan- forms](https://github.com/wingspan/wingspan-forms) [https://github.com/dustingetz/react- cursor](https://github.com/dustingetz/react-cursor) [http://www.dustingetz.com/2014/02/18/react-dynamic- forms.htm...](http://www.dustingetz.com/2014/02/18/react-dynamic-forms.html)

<comment><USER23> Fab thank you! I look forward to exploring these... any system that makes CRUD less painful is a system I want :)

</comment></comment></comment></comment></comment><comment><USER24> All of the empty brackets to describe the virtual DOM looks bad to me. I'm curious if this is regarded as a language smell.

<comment><USER25> It's easy to use partial application to get rid of that problem: the type of the function node is:

      node : String -> [Attribute] -> [CssProperty] -> [Html] -> Html

We could define a convenient function div, for example, with

      div : [Attribute] - > [CssProperty] -> [Html] -> Html
      div = node "div"

that would let us say "div [] [] [text "Hello world"]" instead of "node "div" [] [] [text "Hello world"]". Of course, this doesn't fix your problem with the empty brackets. This can be fixed with something like:

      bareDiv : [Html] -> Html
      bareDiv = div [] []

letting us do "bareDiv [text "Hello world"]"

</comment></comment><comment><USER14> Elm looks extremely promising to me. However, I tried the Elm's implementation of TodoMVC here: [http://evancz.github.io/TodoFRP/](http://evancz.github.io/TodoFRP/) and got an unusable list of strings with basically none of the features seen in other prototypes. Is it the one used in these benchmarks? What results would we see in an identical test?

Update: the benchmark uses a correct implementation available here: [https://github.com/evancz/todomvc-perf- comparison/tree/maste...](https://github.com/evancz/todomvc-perf- comparison/tree/master/todomvc/elm) so it was a false alarm on my part. Tried it out at [https://rawgit.com/evancz/todomvc-perf- comparison/master/tod...](https://rawgit.com/evancz/todomvc-perf- comparison/master/todomvc/elm/index.html)

<comment><USER26> I think you may have gone to the wrong address. The second link in the article is the most recent implementation (using a virtual DOM)

[http://evancz.github.io/elm-todomvc/](http://evancz.github.io/elm-todomvc/)

</comment></comment><comment><USER27> I've never heard about mercury before! Great to see more virtual DOM development.

I hope the new framework gets animation right, I'd love to see it as flexible as in D3, in my opinion this is something currently React currently lacks (the transitions are there but they are too simplistic to cover complex web app cases).

<comment><USER28> Care to try out [https://github.com/chenglou/react-tween- state](https://github.com/chenglou/react-tween-state)? I've been experimenting with animation in React and would love to see the general paradigm behind this and implement it in React.

</comment></comment><comment><USER29> Anyone know of a Haskell or proper Haskell subset that can do something similar (hopefully batteries included)?

<comment><USER30> Absolutely not "batteries included" but I've put some work into a React interface for Haste, which is a Haskell->JS compiler.

[https://github.com/takeoutweight/shade](https://github.com/takeoutweight/shade)

<comment><USER29> Awesome. Thanks a lot.

</comment></comment></comment><comment><USER31> You can run the tests by yourself here: [http://evancz.github.io/todomvc-perf- comparison/](http://evancz.github.io/todomvc-perf-comparison/)

</comment><comment><USER32> I've been thinking why there's no virtual dom implementation other than react. Glad to see there's finally some out there.

<comment><USER33> If you're using Dart, I have an experimental implementation: [https://github.com/google/dart-tagtree](https://github.com/google/dart- tagtree)

I'm sure others are experimenting as well, so we should see more implementations soon.

</comment></comment><comment><USER34> Elm seems Incredibly fast. By using requestAnimationFrame like described in the article I managed to bring my own library to satisfying performances [https://github.com/evancz/todomvc-perf- comparison/pull/1](https://github.com/evancz/todomvc-perf-comparison/pull/1)

</comment><comment><USER35> What could possibly be done in the React.js version to make its performance closer to Mercury/Elm? I notice some 'shouldComponentUpdate' methods are already overwritten.

Or is this the limit of an overly mutable language like js?

<comment><USER35> After investigation, it turns out react has the potential to be faster than Om if it fixed its batched updates. Another huge performance issue is Function.prototype.bind which is called extensively.

The Om example does some kind of Event delegation using channels which is much faster.

</comment></comment><comment><USER36> Anybody have any good reviews on elm?

<comment><USER37> It is fun to play with and I managed to pick it up very quickly (after having already spent a significant amount of time learning Haskell).

I am a bit concerned about the lack of typeclasses and what that could mean if I try and build something bigger using it. Maybe I could use Purescript and Elm together.

<comment><USER38> Type classes are syntactic sugar for explicit dictionary (record) passing.</comment></comment></comment>


Nasty Gal, an Online Start-Up, Is a Fast-Growing Retailer - <AUTHOR> http://www.nytimes.com/2013/03/25/technology/nasty-gal-an-online-start-up-is-a-fast-growing-retailer.html?pagewanted=all&_r=1& <comment><USER2> I don't know anything about fashion but I spoke to some friends who are lifelong fashion addicts. Apparently in the fashion blogosphere they're more well known for copying small designers than they are for the quality of their clothing:

[http://la.racked.com/archives/2013/01/09/nasty_gal_engages_i...](http://la.racked.com/archives/2013/01/09/nasty_gal_engages_in_some_supernasty_instagram_bickering.php)

<comment><USER3> Amancio Ortega has made $50 billion copying other designers. Sincerest form of flattery and all that.

<comment><USER4> How does protection work on fashion? Anyone got a tldr on fashion copyright/design protection?

<comment><USER5> There's an interesting 1hr podcast (with transcript) here: [http://www.econtalk.org/archives/2010/06/blakely_on_fash.htm...](http://www.econtalk.org/archives/2010/06/blakely_on_fash.html)

The tldr is: _In the fashion industry there is limited protection for innovative designs and as a result, copying is rampant. Despite the ease of copying, innovation is quite strong in the industry and there is a great deal of competition._

I would add that, (1) the clothing industry is similar now to the the time IP was being legislated so it was directly addressed rather than derived by similarity to other areas. Its a little more logical and true to the original goals of IP than areas that derive. (2) There is a big element of hivemind/zeitgeist/emergence in fashion because people invent their own outfit every time they dress. (3) The combination of innovative fashion & quality is what makes high fashion brands valuable. (4) the lack of IP protection actually fuels innovation as a design will remain somewhat exclusive for a season only.

<comment><USER6> This is an excellent podcast. There was a similar video a while back, actually showing the garments that they talked about, but I can't seem to find it.

What I find most humorous about those that are so bent out of shape about the copying is that they themselves are copycats, but they hold themselves to different standards. To them, it is okay to copy a design from 10-20 years ago, or to pull 10 different design elements from a current design...but if someone does it to them, they want to sue. The simple fact is that design elements of contemporary fashion are always recycled. Runway fashion is innovative (from an art and design perspective, as much as this crowd would probably laugh at that), but not marketable, as most people (even fashionistas) do not want to be walking art exhibitions.

<comment><USER7> I'm guessing it was the ted talk by the same person.

[http://www.ted.com/talks/johanna_blakley_lessons_from_fashio...](http://www.ted.com/talks/johanna_blakley_lessons_from_fashion_s_free_culture.html)

</comment></comment></comment></comment></comment></comment><comment><USER8> Paywall-less Google link to article: [http://www.google.com/url?sa=t&rct=j&q=&esrc=s&#...</a>

</comment><comment><USER9> Sophia gave a very good, albeit a bit long, interview recently: <http://www.youtube.com/watch?v=y04gnM57Sow>

This has a lot more insights into how she built Nasty Gal, and how she raised her series A.

<comment><USER10> Wow....thanks for this.

I LOVE this girl. She built Nasty Gal in the most healthy way possible. LOVE IT!!

</comment></comment><comment><USER11> Downtown LA is home to a thriving fashion startup scene, but it doesn't get much coverage (aside from male-led startups like ShoeDazzle) because fashion isn't something that the (largely male) startup world understands.

<comment><USER12> what other companies are in that scene that I wouldn't have heard of?

<comment><USER13> Combatant Gentlemen ( <http://www.combatgent.com> )

<comment><USER14> Is there seriously a sex scene in the background?!

<comment><USER15> That... is tacky.

<comment><USER16> But in a way a lot more honest than 99% of the implicit sex-driven advertising.

<comment><USER15> The notion that you will get laid because you bought a $160 suit is about as dishonest as it gets.

<comment><USER16> In what way is that dishonest? Wearing better clothes instead of ugly ones makes you more attractive to the opposite sex, that's just a fact.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> This seems like a great founder/product fit. She's hip/cool/fashionable and knows her product and demo pretty well.

I really like the fact that stuck through the grind, and slowly built up a loyal following. I think that is something missing from a lot of start-ups in the valley right now. People tend to shut down their projects when people don't come flocking. This also might be a testament to just building something people want.

<comment><USER18> There's nothing in that article that suggests she "did a startup" though, which is the other side of the coin. She resold some clothes on ebay to make a few extra bucks, and it grew from there.

<comment><USER19> What's your definition of startup? She started a company and it grew. Works for me.

<comment><USER18> I run in to loads of people that want to "do a startup". They've subscribed to the culture of 'tech startup', they know all the buzzwords, go to the right networking events, learn about VC and term sheets before they even have a product or service, and so on.

She did have a Virgin tattoo, and was/is a fan of Branson from an early age; I'm assuming from that she had a head for business early on, and built from that, but that is miles different from the 'startup culture' I run in to these days ("how many accelerators have you applied to? are you on angel list?" etc)

</comment></comment></comment></comment><comment><USER20> I'm surprised to read Nasty Gal being seen as a fad - what indicators of stability are stronger than 6 years of consistent growth? Don't fashion fads have a single season 6 month life expectancy?

<comment><USER3> For a brand like Nasty Gal, it's dependent on the people running it and their ability to constantly shift with the tide. Very few can do it, but some entrepreneurs do pull it off (and they often end up as huge fashion brands).

Fashion trends have a short life expectancy, but if you can change with them season after season, then you'll be a monster in the fashion world.

<comment><USER21> So, you're Friendster one year, Facebook the other? Don't most industries work in the same "it-girl" cycles?

<comment><USER7> Not as extreme as fashion, there's a reason vogue is called vogue :)

</comment></comment></comment></comment><comment><USER22> A great success story. She just mapped her own personality online, and tried to make money out of it - which her company did, boatloads of. Could be a classic example of "look around, and try to solve a problem that you face yourself and people like yourself. that would be a great idea for a startup".

</comment><comment><USER15> It would be interesting (but unlikely) to hear about the company's entire financial picture. After working in online fashion retail, it's clear almost nobody is making money, despite what their revenues are.

<comment><USER3> If you spend some time on their site, you'll notice they have huge margins.

eg: <http://www.nastygal.com/clothes/paisley-sky-overalls>

$78 for overalls.

Or $65 for a bikini bottom -

<http://www.nastygal.com/clothes/righteous-bikini-bottom>

It wouldn't surprise me at all if their net margin is great (compared to most retail).

<comment><USER15> That doesn't really mean much - most online fashion retail has similar markups, and nobody else is making money.

Edit: In the case of the 2nd piece, Nasty Gal probably isn't making much money on it at all. It's made in the USA (which is usually a higher cost item), and the direct from manufacturer price is 63 dollars. Thus, it's probably a drop ship item with a razor thin margin.

<comment><USER23> Nasty Gal initially started out by selling vintage clothes which happen to have huge margins. One piece she purchased for $8 sold for $1000. So I'm sure the margins are still there now that Nasty Gal is trying to become more of a brand. It wouldn't make business sense to abandon a profitable strategy only to shift and scale to a non-profitable one.

<comment><USER15> That is how most of the fashion sites start out. There's some point in time where they find a desperate luxury goods manufacturer willing to give them a deal, or meet a guy who inherited his family's shirt factory and wants to try out something new, or they get lucky selling a few pieces of vintage clothing. Then for a while, the site does very well.

Eventually they run out of high margin stuff to sell, because they literally run out of the stuff (in the case of vintage clothing) or their suppliers start raising their prices. Then they need to sell more stuff, which requires more employees, and bigger warehouses, which continues to eat at the margins.

There's also many copy cat fashion sites, since between 2009-present "fashion internet" seems to have been a trend for fresh MBA grads. I'm not really sure how they get started, but I'm pretty confident they also don't make any money.

</comment></comment></comment></comment></comment><comment><USER24> This might be off-topic, but it reminded me of some recently uploaded documentary footage of a 1996 LA teen subculture "Dirty Girls".[0]

0\. <http://www.youtube.com/watch?v=h3MxEHQk644>

</comment><comment><USER25> Nasty Gal are killing it - my girlfriend is totally obsessed with them.

</comment><comment><USER26> How does this company compare to Rue La La? <http://www.ruelala.com/>

<comment><USER27> Rue La La is a flash sale site (a la Gilt Groupe, Amazon's MyHabit, and so on). Their inventory changes pretty quickly (something like 48 hours, I think), and different brands are featured during each iteration.

NastyGal doesn't appear to have rolling inventory; rather it seems they have relationships with some set of brands, but the brands themselves aren't front and center. Moreover, NastyGal also appears to have its own brand, which RueLaLa does not (though Gilt Groupe does have its own Gilt Home (ie furniture) line).

</comment></comment><comment><USER28> Interesting story, but I find the whole cinderella angle extremely tiresome. Isn't cinderella about women dreaming about being courted by a rich man? Seems to me there are plenty of rags-to-riches stories/legends that are better fits - but then again, those are not about women...

<comment><USER15> "Cinderella Story" is now a pop phrase which simply means exceeded expectations. It is most commonly used in sports. In this context it fits perfectly.

<http://en.wikipedia.org/wiki/Cinderella_(sports)>

</comment></comment><comment><USER29> Here is a great fireside chat with Nasty Gal's CEO Sophia Amoruso [http://video.pandodaily.com/t6t2/fireside-chat-with-nasty- ga...](http://video.pandodaily.com/t6t2/fireside-chat-with-nasty-gal-ceo- sophia-amoruso/)

</comment><comment><USER30> Grig Gheorghiu, their VP of ops, just did a great Q&A:

[http://boundary.com/blog/2013/03/18/grig-gheorghiu-on-the- mu...](http://boundary.com/blog/2013/03/18/grig-gheorghiu-on-the-murky-world- of-devops/)

Yes, very hot company.

</comment><comment><USER31> This seems like advert for 'eBay pages'.

<comment><USER32> "Ms. Amoruso also outgrew eBay, which she said was a terrible platform to start a business. Competitors started flagging Nasty Gal for breaking the site's rules by, for example, linking to Ms. Amoruso's Myspace page. Fed up, she decided it was time to start ShopNastyGal.com."

<comment><USER33> It's not just this. Many users are terrible and will leave you negative feedback based on what they are feeling that day, even if you did everything right.

I bend over backwards for my customers and still get negatives. College students seem to be the worst. If they don't get things exactly their way, you get a negative.

</comment></comment></comment><comment><USER34> that's true and a really interesting company.

</comment><comment><USER26> The eBay misspelling trick is nothing new: <http://lmgtfy.com/?q=ebay+mispelling>

<comment><USER35> Worst use of lmgtfy ever?</comment></comment>


Ask HN: How to maintain interest in completing a Sideproject? - <AUTHOR> Well, I have a big problem when it comes to completing things. Every time i have an awesome idea i start working on it asap and stay focused on 120% like a beast for some good time.
And always when it comes to finishing the project  i loose interest. For a example, I do have a big thing i want to create. I have a complete concept since this idea exists for about three to four years now. We've got a professional logo designed which is the best one I've ever let a contractor create and every aspect of the project is perfectly planned. I already had some type of prototype but always when it comes to "finishing" it, I'll just loose the interest in completing it. Everytime I tell someone about the Idea everyone is just amazed and says it's perfect and that I really need to finish it. Now im a freelancer and don't have much time for side-projects anymore because im struggling to make enough money to survive. I often thought about maybe trying to get some funding but in germany i have no idea how to get that done.
So to get back to my main question: How do you maintain keeping intereset in finishing your side projects? <comment><USER2> Find your "currency". By currency I don't mean money, but we all do things for different reasons, and a lot of time money isn't the one that will motivate us most, those reasons are our currency.

Some examples of things that I do to keep me motivated:

\- Not letting people down, motivates me more than how much money I can potentially make (money motivates me later). So I tell lots of people what I am doing.

\- My ability to do things for people in my community is also a motivator for me, I find a way to tie what I am doing to a goal there too. This isn't always as easy to be fair to find it as my community is rural and not high tech in anyway.

\- Kinda like with the first point, I also like to find early customers and make some basic commitments to them which motivates me as well. I'll make commitments super early in the idea stage, that pressure makes me more motivated to push through. And I setup future meetings early on so that I have to show up and talk too someone about it, which means I don't want to be embarrassed so I'll work harder.

A lot of people use the act of telling other people what you are doing and knowing they will keep asking you for updates as motivation. I definitely use this as you can see.

</comment><comment><USER3> I use a project management tool (gitlab's issue tracker), and spend sometime on planning. And I force myself to solve 3 bugs/features each day.

I also take breaks. After a few weeks working on different things, I come back to the project feeling more productive.</comment>


Phone serves 400 ads per hour – Blockada adblocker beats them all - <AUTHOR> https://raymii.org/s/blog/My_phone_serves_me_400_ads_per_hour_blokada_blocks_beats_them_all.html <comment><USER2> Most of that is probably analytics and not ad tracking

<comment><AUTHOR> Analytics for ?</comment></comment>


We're creating a "Startup toolbox". What apps should go in it? - <AUTHOR> http://thestartupfoundry.com/2011/02/09/hn-we%E2%80%99re-creating-a-%E2%80%9Cstartup-toolbox%E2%80%9D-what-apps-should-go-in-it/ <comment><USER2> A few that I swear by:

github <http://github.com> for source control and wikis

sendgrid <http://sendgrid.com> or Amazon SES for email

mogotest <http://mogotest.com> for browser testing

recurly <http://recurly.com> for managing recurring payments

tender <http://tenderapp.com> for support / help desk

linode <http://linode.com> for hosting or Amazon EC2

mocksup <http://mocksup.com> for quick and easy mockups

clicky <http://getclicky.com> for analytics

zerigo <http://www.zerigo.com> for dns and monitoring

AWS <http://aws.amazon.com> S3, EC2, and everything else :)

</comment><comment><USER3> Geckoboard: <http://www.geckoboard.com/> \--- "a hosted, real-time status board serving up the indicators that matter to you."

Freshbooks: <http://www.freshbooks.com/> \--- "painless billing"

Linode: <http://www.linode.com/> \--- "Deploy and Manage Linux Virtual Servers in the Linode Cloud. Get a server running in minutes with your choice of Linux distro, resources, and node location."

</comment><comment><USER4> Hard to imagine why someone creating a traditional Ruby-based web app wouldn't start with Heroku.

<http://heroku.com>

</comment><comment><USER5> Why MediaTemple specifically? Is there something they provide more/better than other hosts to make them so much more popular among webdevs and creatives? I've tried to figure out how people justify their higher price relative to other hosts like Dreamhost on the simple hosting end to VPS.net on the hither end...

I'd really be interested in any insight any MediaTemple users have!

Edit: I should mention that I recently purchased a domain from MediaTemple because currently you can registe one .com for $5. Otherwise, though, I'm currently using Dreamhost for site hosting and my other domain registrations. I'd really like to know what more they truly offer for hosting!

<comment> wh-uws I use mediatemple.

My setup is the mediatemple for client projects and a linode vps for my own personal playground

I like them because they are like an entry level honda to, for comparison, say the Rolls Royce of one of the more expensive Rackspace plans.

I don't know if anyone else has used rackspace but I had a client who did once. You pay them something like $2000 - $4000 a month but everytime you call them you _instantly_ get a person on the phone that can get you to someone who can help you fix your problem.

With mediatemple you have to deal with a machine answering and wait 5 or 10 minutes but you only pay $200 for the whole year. And the service and knowledge of the support people is comparable.

They also have a great control panel with all of the standard dns configuration, 1 click app installation, administrative stuff.

Long story short they have plenty of things that automate the tedious setup process of building a site and pretty good customer service.

Though I would agree for the more tech savvy go for the free Amazon ec2 instance and scale up from there or invest in a vps with linode or slicehost.

If you have any specific questions feel free to ask. I know my answer was really general

<comment><USER5> Thanks for responding! I do have a couple questions. What type of site are you running on your MediaTemple account? If just a standard website or blog, why MediaTemple over, say, Dreamhost? I would personally compare Dreamhost to a honda and MediaTemple to a Rolls Royce when thinking of hosting, say, a design blog, but that would be solely based on price. For just standard hosting, $97 can get you a year's hosting at Dreamhost or many other similar hosting companies. Do you have any idea what they offer to make it worth double that for basic hosting?

Thanks again for your time and for replying!

<comment> wh-uws You're welcome!

and phone support is about the only difference as far as I can tell.

Its nice to be able to call someone

</comment></comment></comment></comment><comment><USER6> MongoHQ: <http://mongohq.com/>

If anyone wants to work with MongoDB (nosql database) it's a lot easier to let them handle the details instead of adding it to your already huge list of things you need to do, know, learn etc. They have free databases you can mess around with, and their paid ones are a lot cheaper than getting more vps's/dedicateds/cloud instances - these guys save me time, headaches _and_ money.

BizSpark: <http://www.microsoft.com/bizspark/>

Free MS software for 3 years including Windows, Visual Studio, SQL Server etc. Generous terms when your 3 years are up.

DNSPark: <http://dnspark.net/>

Very cheap DNS, I use them at Playtomic which millions of people hit each day. They have generous query limits - $14/year for 5 million queries/month should well and truly cover most startups - and if like me that's closer to "a day" then a month they're still yet to implement overage charges.

Pingdom: <http://www.pingdom.com/>

Uptime and latency monitoring for your servers. I'm still only using their free plan which is a mistake on my part - I just haven't had time to get it all set up properly and have the data piped into my own dashboard but it is on my to do list.

High Scalability: <http://highscalability.com/>

Not a service, but an awesome blog that you should read if you are dealing with big numbers or big data, or aspiring to. They're one of the few out-of- my-industry blogs I actually go to _without_ coming through HN.

Web Hosting Talk: <http://webhostingtalk.com/>

If you're not excited about being billed per hour, per request _and_ per gigabyte for storage and bandwidth in teh cloudz then you can get awesome deals on all levels of hosting there, esp good for dedicateds and vps.

Fusion Charts: <http://www.fusioncharts.com/>

I don't use them anymore but they have a great library of free Flash charts you can use. AMCharts (<http://www.amcharts.com/>) is another one that I still use but only for their world maps.

</comment><comment><USER7> Some of the tools we're using ourselves:

Team collaboration: <http://www.flowdock.com/> No matter what are the other tools you're using, Flowdock keeps your team organized and up-to-date. Google Wave done right.

Version control: <http://www.github.com/>

Agile project management: <http://www.pivotaltracker.com/>

Customer feedback: <http://www.uservoice.com/>

Service monitoring: <http://www.pingdom.com/>

Scalable database: <http://www.mongodb.org/>

Programming languages: JavaScript, Ruby, Scala

Everyone in the company is using an OS X desktop, and our servers (hosted in several places) are powered by Ubuntu Linux and Chef (systems management).

</comment><comment><USER8> If you recommend MediaTemple add a disclaimer to stay away from (gs). Their dv service is alright, but gs has terrible performance. I tweeted a few weeks ago that I was switching away from MT (gs) and their twitter support DM'd me admitting that gs "sucks" as they tried to sell me on their DV package.

I'm sure many people here would recommend Linode, Slicehost, or Heroku as competent alternatives.

<comment><USER9> Greets! -- spell out those acronyms, please. If we are trying to educate people on services etc... dont assume they know what everything means.

<comment><USER10> The acronyms are how Media Temple refers to their different hosting packages. A look at their website reveals (gs) = grid service, (dv) = dedicated virtual.

Personally, I have worked on one site that was hosted on a (dv) server with Media Temple (for three months.. I was only filling in), and had nothing but good experiences with them.

Their prices are definitely high though, so I don't know if I'd call them exactly startup-friendly. I wasn't the one paying for the site I worked with, but if I had to pay for it myself, I'd probably look elsewhere.

</comment></comment></comment><comment><USER11> Dropbox, Github, Pivotal Tracker, Balsamiq

</comment><comment><USER12> domain: godaddy.com ($7.67 with promo code)

hosting and db: google app engine (free)

mail: google apps (free)

support: get satisfaction (free)

blog: tumblr (free)

graphics: gimp (free)

analytics: google analytics (free)

:this is what I use for all my projects: <http://shaloc.com>, <http://checkinmania.com>, <http://misotrendy.com>

more at <http://initlabs.com>

<comment><USER13> Excellent suggestions. The awesomeness of App Engine should not be under estimated. It makes running a web app extremely easy and painless (and free, at first).

It has some gaps though depending on what you're going to use it for. For example, its sending/receiving to/from custom domains is quite limited.

To fix that I've used: -To send emails from a custom domain: SendGrid.com -To receive emails sent to a custom domain: CloudMailin.net

For buying domain names, I've switched from GoDaddy to name.com, just to get away from the awfulness that is GoDaddy's UI.

</comment></comment><comment><USER14> TrueCrypt + DropBox = protect your data from almost anything.

I've been using this for programming, it has been working flawlessly. And DropBox is the _only_ system so far that handles my 1GB file without choking, and does so quickly enough that a day's changes (and the repo changes) only take a few minutes to scan and upload.

</comment><comment><USER15> The Hacker's Diet: <http://www.fourmilab.ch/hackdiet/>

If you don't take care of yourself, nothing else in your toolbox matters.

<comment><USER16> Not only that, but it's good practice for the methodology you should be using when developing your product. Constantly measure and keep track of your results so you can see what's working and what isn't. Keep track of trends and don't overreact to short term changes.

</comment></comment><comment><USER17> There's an awesome collection of startup tools here:

<http://startuptools.pbworks.com/w/page/17974963/FrontPage>

</comment><comment><USER18> Pretty much everything listed here: <http://steveblank.com/tools-and-blogs- for-entrepreneurs/>

</comment><comment><USER19> unfuddle.com ... free git/svn hosting and ticketing.

domaintools - domain monitor for stalking that domain that you absolutely have to have <http://www.domaintools.com/monitor/>

</comment><comment><USER20> Surveys: <http://surveymonkey.com/>

I'm currently using the free plan for a handful of projects and it's awesome.

<comment><USER21> In the same line our own survey startup <http://www.impressity.com> is another free survey option. The surveys are 100% free without limitation. You can set 10 survey questions to private, and the remaining will be public. We welcome any feedback, and hope this can contribute to HN community.

</comment></comment><comment><USER22> <plug>

Visual Website Optimizer <http://visualwebsiteoptimizer.com/> for A/B testing

</plug>

</comment><comment><USER23> > Mockups: Photoshop (or Pixelmator for really tight budgets)

Only thing with Pixelmator is it's Mac only (unless I missed fine print somewhere). You might not have Macs laying around if you're on a really tight budget. Gimp might be good to throw out there since it's free and works on multiple platforms.

<comment><USER24> I use <http://mocksup.com> for mockups, clickable and connectable.

</comment></comment><comment><USER25> Codebase: <http://codebasehq.com> for Git/Subversion/Mercurial hosting, tickets, wikis, time tracking etc. Cheaper and more flexible than Github (though I also love Github for public projects). And they have a new version out in Q1

<comment><USER26> With a Codebasehq account also comes a free deployhq account. You commit changes to your git-branch and deployhq will ssh into your production server and update the code. Extra commands (e.g. rake db:migrate) can also be executed. It's basically like Capistrano but as-a-service, but easier to set up (and less versatile probably, but I haven't come across anything I couldn't do).

They're also working on Deliverhq, basically transactional email delivery like Sendgrid.

</comment></comment><comment><USER27> Infrastructure: github, heroku, linode, dropbox

Team: skype, google voice, googleApps,

Development: stackoverflow

Customer Understanding: clicky

</comment><comment><USER28> <http://getsatisfaction.com> is a great way to get feedback from users on your startup. Easy to manage and free for the feedback widget. I have not tried to pay for features yet.

<comment><AUTHOR> That's an interesting app. I've heard good things about it but I've never used it myself. How often do you use it?

<comment><USER28> We use it all the time during our closed alpha. Provides a quick and simple way to have users ask questions, provide new ideas, and offer feedback. Allows admins to comment back and answer any questions so its pretty engaging.

</comment></comment></comment><comment><USER29> mixpanel: for specific analytics and metrics

yammer: to communicate with your teammates

gomockingbird.com easy way to create mockups browser based

amazon ec2/s3 for hosting

</comment><comment><USER30> Goplan for project management: <http://goplanapp.com>

(Disclaimer: I work on the app - we'll also cut a deal for the toolbox if it moves forward)

</comment><comment><USER31> IndexTank: <http://indextank.com> Full-text indexing & search service (realtime, incl. free options, geo/faceting).

</comment><comment><USER32> Those two have not been mentioned yet:

Hosted SVN/Git: <http://www.assembla.com/> -> I prefer it over Github.

Real Browser Website Monitoring: <http://www.alertfox.com/free-website- monitoring/> -> Once you have your web app running, make sure it really works.

We have been using both for more than a year now. Great services! Both over free plans, too.

</comment><comment><USER33> I've created a Collaborative Task Manager, <http://managewith.us> which allows remote members of a team to manage a list of tasks, seeing updates in real- time (a bit like Etherpad).

There's a free version, but I'd be happy to give your readers a discount on the Pro and Enterprise packages (they are relatively affordable anyway).

If you're interested drop me an email, which is info@ the domain above :-)

Andy

</comment><comment><USER34> If you're in any way technical, why would you go MediaTemple (or other VPS provider) and not Amazon EC2? With the new micro instances, Amazon is very competitive on the low end, and they've got configurations to scale up to the highest volumes. I think as far as features go, they're miles ahead of the competition, but feel like there's something I must be missing.

</comment><comment><USER35> For the bootstrapping budget startups:

bitbucket.org --> Free private repositories

amazon ec2 --> Free usage tier for a year

uservoice --> basic functionality is free

</comment><comment><USER36> Lots of great stuff mentioned, but here's some I didn't see:

SEO:<http://raventools.com/>

Password Management: <http://passpack.com/>

Stickers: <http://www.stickermule.com/> :-)

</comment><comment><USER37> For web design/mockup work, Fireworks is way more suitable than Photoshop. It's also a lot cheaper.

</comment><comment><USER38> Google Apps, Dropbox, Evernote, LAMP, VIM, Google (learn the advanced search operators)

</comment><comment><USER39> <http://Uservoice.com>: feedback box

</comment><comment><USER40> This isn't so much as a toolbox item but a must read I think <http://nvie.com/posts/a-successful-git-branching-model/>

</comment><comment><USER41> Hoptoad: <http://hoptoadapp.com>

Exception notification, mainly ruby but has an easy to implement API. Plugins available for many other frameworks afaik.

</comment><comment><USER42> My <http://startupdeathclock.com> is great for cheering yourself up.

Only to be used in the week after you close a round!

</comment><comment><USER43> My web app at poplytics.com helps website owners collect feedback. Would love for it to be included. Currently free

<comment><USER44> I and my cofounder are starting our beta team, and we are considering using your app to gather and manage feedback. Seems interesting, though we just started researching today. Will give feedback tomorrow.

</comment></comment><comment><USER45> Plimus.com for easy billing/recurrent billing

</comment><comment><USER46> Recurly or Chargify for recurring payments.

</comment><comment><USER47> Vim

</comment><comment><USER48> Shortcut to Hacker News

</comment><comment><USER49> coffee

</comment><comment><USER50> DropBox, GitHub, Basecamp, Balsamiq, vi, DynaDot, Linode, Gmail, Twitter, Gimp

<comment><USER6> +1 for Dynadot, forgot to mention them earlier. I don't really think of them much but I've used them for years.

</comment></comment><comment><USER51> PostGreSQL</comment>


Factor 0.96 now available – over 1,100 commits - <AUTHOR> http://re-factor.blogspot.com/2013/04/factor-0-96-now-available.html

<comment><USER2> Having been a long-time user of HP series of calculators (HP48g, HP50g), postfix notation is not foreign to me. So I tried Factor, and gave up on it for several reasons.

First, there were obligatory stack effect declarations on each word. Want to refactor your program? Sure, rewrite your words, together with stack effect declarations. That part was extremely annoying when it came to exploratory programming. For the uninitiated: stack effect declarations are akin to function prototypes in C, only lacking type information. IMO, once you have them, and they're obligatory, you get all the drawbacks of postfix languages, and no benefits.

Second, the language and standard library rely heavily on stack combinators. Reading the standard library code requires intimate familiarity of what words like bi, bi@ and bi* do (among a whole lot of others).

Third, I find Factor's documentation extremely confusing. For example, there are "Vocabulary index" and "Libraries" sections, with little or no overlap between them. But vocabulary is a library (or package, whatever, same thing), so WTF?!

Then there are important and powerful features like generic words, but if you click on the "Language reference" link on the docs homepage, you get a menu with no mention of generics, and you have little clue in which section to look for them. (It's under objects.) Then you eventually find out (sorry, I was unable to dig up reference to the docs) that generics support only single dispatch, and only "math" generics (plus, minus, etc.) support double dispatch.

In short, the manual is a maze of cross-references with no head or tail.

Fourth, I dislike writing control structures in postfix. This is the part that, IMO, RPL on HP's calculators got right. Instead of forcing you to write something like

        10
        "Less than 10"
        "Greater than 10"
        [ < ] 2dip if ! 2dip is a stack combinator, guess what it does!

you could write

        IF 10 < THEN "Less than 10" ELSE "Greater than 10" END

(Postfix conditionals were available for the rare cases where they were the most convenient form.)

Last but not least, it supports only cooperative threads.

<comment><USER3> You wouldn't write a conditional like that, you'd do:

        10 < [ "less than 10" ] [ "greater than 10" ] if

This is pretty easy to read. If the boolean condition is true, run the first quotation, if it is false, run the second.

The unusual names lke 'dip', 'bi', etc are just common names that once learned make code easier to read. 'dip' is from Joy IIRC.

I do agree that combinator heaviness can make things difficult for a beginner. Especially if code uses a combinator that isn't common it requires time to look up and see what it does. You really need to immerse in Factor development for a while to get familiar with them.

Stack effect declarations exist to make refactoring safer. Prior to having them enforced by the compiler it was common to change a words stack effect only to find it broke random code using it elsewhere. Making the check enforced provided a safety check that you hadn't forgotten to change word usage elsewhere.

<comment><USER2> Oh, I've mixed up order of arguments to if.

The refactoring problem could have been solved in a more practical way (though more difficult implementation-wise) by implicit versioning of symbol definitions. Plus, I find that stack effect declarations read like line noise (see for example the declaration for if; IIRC from browsing the docs it's one of the moderately bad ones.)

</comment></comment></comment><comment><USER4> It takes a few hours to get used to, but once you get the hang of it it becomes an amazing language. For most things postfix notation that Factor uses reads better than applicative (prefix) notation other languages uses. It's like jQuery's or linq's method chaining, only better :) and with less syntax. For example here is the solution to problem 22 in Project Euler (<http://projecteuler.net/problem=22>):

        : names ( -- seq )
             "names.txt" ascii file-contents [ quotable? ] filter "," split ;
        : score ( str -- n ) [ 64 - ] map sum ;
        : solution-22 ( -- n )
            names natural-sort [ 1 + swap score * ] map-index sum ;

<comment><USER5> Reverse polish notation means you have to start reading from the end of the expression:

        "hello world" print

This is also why ternary expressions in C like languages is hard to read.

<comment><USER6> I find the ternary expressions very easy to read and understand and never understood why others find it difficult at all.

I see no semantical difference between

        if(expr1) expr2 else expr3;

and

        expr1 ? expr2 : expr3;

Okay you need to learn the syntax, but it should be second nature after a few times. I also think the question mark is very intuitive.

<comment><USER7> If it was that simple, people wouldn't have any issue with the conditional operator. The problem is there actually is a semantic difference between the two lines you wrote in most languages.

If-Then-Else is a statement. It doesn't return a value. It's just a branching operation between the two blocks.

The conditional operator is an expression. It returns a value hence it has a type. And that's where things start to be messy. Typing rules for the conditional operator are, well, not trivial and varie from language to language. Let's use an exemple from Java Puzzlers (Joshua Bloch and Neal Gafter) :

char x = 'X'; int i = 0; System.out.print(true ? x : 0); System.out.print(false ? i : x);

will print X88 but the same thing in C++

            char x = 'X';
            int i = 0;
            cout << (true ? x : 0);
            cout << (false ? i : x);

will print 8888.

And I am not even talking about the priority mess when you try to use a conditional operator in a conditional operator.

<comment><USER6> Yes, you are absolutely right. I forgot about this one major difference. However, you cannot generally say if-then-else is a statement; there are languages such as CoffeeScript in which if-then-else works exactly like the conditional operator and therefore has a type and return value.

As for the priority mess, I spend my brain cycles elsewhere and use parentheses, which also helps the next guy as well as me.

<comment><USER8> Or virtually every language that is functional in a way. For example Lisp and Haskell.

</comment></comment></comment></comment></comment></comment><comment><USER9> I must say, that the syntax and semantics are not intuitive at all. I've spent half an hour trying to learn how does this thing work, and have not been able to. I guess, a damn good tutorial is in order. I think one of the primary reasons Python took off really well, was because of very good tutorials available. The language of Factor's documentation is still only tuned for language designers, not language users.

<comment><USER10> It has nothing to do with python being particularly intuitive and everything to do with it being very similar to every other imperative language you already know. If your first language was forth or PS you'd find factor intuitive too.

<comment><USER11> Postscript was around my 9th language[1] and I find Factor pretty easy to read. I might be a special case as I hate reading Python and every time I try an S-expr language I really never get the hang of it.

Thinking about Python, looks wise it is kind of the opposite of any of the stack languages. I get the feeling that you can like one or the other.

1) various 8-bit BASICs, 6502 ASM, Modula-2, 370 ASM, C, Ada, foxbase, SQL, Postscript, Forth, Objective-C (weird listing it out)

<comment><USER10> I started with C++ and thought I was just good at picking up languages because I picked up Java and Python in a day or two. Then I realized it was because they were so similar. When I learned Common Lisp I had to do some real work even though ny then I had been programming for 7-8 years.

</comment></comment></comment></comment><comment><USER12> Its interesting how Factor avoided "library fragmentation" by trying to include everything in the main distribution - definitely a win here, given that in the smaller communities you can't afford duplication. The average quality of the libraries is higher because of that...

I could never get over the syntax though - even though the #factor folks say its a matter of getting used to and theoretically not "harder" than Lisp, Lisp feels very natural to me, but Factor always required a big overhead.

</comment><comment><USER3> For those looking for "Why Factor" material you might like to look at some of Manfred von Thun's writings on the Joy programming language [1]. Joy is similar to Factor and Manfred wrote a lot of theory on the "why" of concatenative programming languages.

[1] [http://www.latrobe.edu.au/humanities/research/research- proje...](http://www.latrobe.edu.au/humanities/research/research- projects/past-projects/joy-programming-language)

<comment><USER13> Or "Why Factor?": <http://concatenative.org/wiki/view/Factor/FAQ/Why%3F>

</comment></comment><comment><USER14> This is really cool!

I have always admired the engineering work on Factor, but had thought the project would die when Slava Pestov took his job at Google. Great to see it continue to improve.

</comment><comment><USER15> I like the old logo better, <http://re-factor.blogspot.com/2012/11/new- logo.html> is waaay too busy.

<comment><USER16> Ah, the new logo is hideous! I don't see anything better about it other than the fact that it fits in a square. What's the purpose of the late-90's computer graphics style round triangle button thing? It's like a big skeuomorphic upvote button with an airbrushed Mario level in the background. Just get rid of it!

</comment></comment><comment><USER17> My TA for a cryptography class worked on this. I had the pleasure of messing with it one afternoon. Pretty cool stuff.

<comment><USER18> Factor the language or factor the Unix command?

<comment><USER17> The language

</comment></comment></comment><comment><USER19> As cool as an approach that Factor has, I cannot fathom why it is being developed for x86 for the life of me. (Besides claims of cross-platform native executable compilation.)

On ARM it would be interesting- or if it had a highly modular structure that would allow it to be "easily" ported to other microprocessors.

But on x86? What niche is it trying to serve? Is it a language- lover's-language? I guess what I'm asking is, why would I use a "high-level" Forth on x86? There has to be a reason, I'm just missing it.

<comment><USER3> Factor used to run on ARM [1]. Back then Windows Mobile only had 64MB of ram and it wasn't quite enough to do anything useful in Factor.

I used to run a video sharing website written in Factor [2], sadly the server crashed a few weeks ago and I haven't recovered the data from the disk yet.

Factor feels more like a Scheme than a Forth to me when programming.

[1] [http://web.archive.org/web/20111117015025/http://www.bluishc...](http://web.archive.org/web/20111117015025/http://www.bluishcoder.co.nz/2007/02/factor- on-windows-mobile-5.html) [2] <http://web.archive.org/web/20130118204336/http://tinyvid.tv/>

<comment><USER19> Woah thanks for that link, there could be some assembly worth salvaging there.

Currently working on an ARM forth-idea with some scheme-ideas. There's this nagging intuition I have that there's a symbiosis between Lisp atom/Forth word and S-expression/Forth dictionary.

I have to get something going pretty quickly so I can't get too pure about the idea, as I don't want to get bogged down in the necessary GC yet.

Thanks for your reply, it already made me more interested in Factor from an implementation standpoint, even if I wouldn't use it on x86.

<comment><USER20> Isn't Factor (at some level of abstraction) basically Lisp/Scheme with more minimal syntax? It replaces prefix notation and parentheses with postfix notation and a stack. All the benefits Lisps get from minimal syntax, Factor gets too.

<comment><USER19> That's exactly what I'm thinking, but I haven't had time to stress-test the idea or find any precedent. And remember i'm talking about a ~36kilobtye forth, not this large-sized and resource-intensive kind of x86 forth that I don't understand the reason for.

Theoretically you would have the HLL incredibleness of a lisp with the low level genius of Forth. I asked some old timers if the idea made sense and they were silent in specifics but not discouraging. Which would indicate to me they think it is a huge learning opportunity for me one way or the other. Have you done any deeper analysis?

</comment></comment></comment></comment></comment><comment><USER21> Under new libraries I see a reddit API lib listed. Why are they including things like this in Factor itself. Doesn't it kind of bloat things? Factor can strip this out if it isn't used of course, but can you really maintain _all_ of these libraries? If you just add random things to Factor itself you're eventually going to end up with something that is impossible to maintain without a very large number of invested people.

<comment><USER22> Because there are like 10 person using it. Until the language grows and acquires a package manager it's easier to just put everything in the stdlib.

<comment><USER21> Sure, but I'd vote for doing things right to begin with rather than waiting for complaining users. But I guess we might disagree on what 'right' means in this context. :)

<comment><USER22> There is another aspect too: when everything is in the stdlib it forces developers to collaborate and not create their Nth implementation of the same lib because theirs is better. There is a breaking point in number of developers where it becomes more efficient to distribute the work trough a package manager but then you also introduce package hunting which can become quite a time consuming task.

</comment></comment></comment></comment><comment><USER23> Where is Slava Pestov now? Haven't seen him for a long time.

<comment><USER24> He got a job at Google back in 2010 and pretty much handed over the reins at that time due to lack of free time to work on Factor. He still posts on the mailing list though periodically.

</comment></comment><comment><USER25> Is there a HelloWorld example I can try?

<comment><USER24>
      "hello world" print

...although, more realistically, you're probably interested in something like the gettings started section of the docs [1]. There are also some great short example posts on the planet feed [2] from various blogs.

EDIT: I'll plug my own blog for this too, as I started writing a Beginning Factor series of posts a long time ago [3], but never got beyond a couple entries.

[1] <http://docs.factorcode.org/content/article-handbook.html>

[2] <http://planet.factorcode.org/>

[3] <http://elasticdog.com/2008/11/beginning-factor-introduction/>

<comment><USER26> Hey Aaron,

From your second article[1] introducing Factor

"Next time we'll stick with a theme of "flow" and discuss control flow for your words and after that, the typical work flow when developing code with Factor. Hope you enjoyed this installment!"

I am still waiting for that article. Your introductions to Factor are awesome and more would be delightful.

[1] [http://elasticdog.com/2008/12/beginning-factor-shufflers- and...](http://elasticdog.com/2008/12/beginning-factor-shufflers-and- combinators/)

</comment></comment></comment><comment><USER12> Anyone knows how one could compile to Factor VM? Slava once said that would be a good idea - imagine having a Lisp in that modern environment? (I love Slime don't hit me).

</comment><comment><USER27> What is it? Why should I learn it? What are its "killer" features? Ain't nobody got time to learn about every new prog. language.. :)

<comment><USER28> You don't have to learn it. It is probably mostly interesting to users of concatenative languages, or those who just want to broaden their horizons..

Personally, I've fallen in love with it a few years ago. Even though I don't use Factor for anything practical, the language itself (as well as Forth) has taught me a completely new way of thinking about problem solving. Something that I benefit from in other languages I use.

So if there is one reason you should at least check it out, it is that it will make you a better programmer. And I think anyone who's been writing code long enough, will know that there is always room for self-improvement.

<comment><USER27> Ok, but that is not true for any new programming language. So why downvote my question?

</comment></comment></comment><comment><USER29> Looks very interesting. What distributions package it?

<comment><USER30> Arch Linux has it in AUR, I'm currently in process of updating it to 0.96.

</comment></comment><comment><USER31> Oh look, they're basically dissing this community to hell in the irc logs. For instance,

"10:10:24 <RodgerTheGreat> another HN gem: "I must say, that the syntax and semantics are not intuitive at all. I've spent half an hour trying to learn how does this thing work, and have not been able to.""

It's horrible to watch when a language community has this sort of a elitistic attitude, especially when it's doubtful that the language has any future.

Source: <http://bespin.org/~nef/logs/concatenative/13.04.21>

<comment><USER32> If a person says that something is a gem, they can be sincerely saying that they think it has positive value. Your interpretation was that the phrase was being used in a sarcastic manner. That may well have been the case here, but it doesn't have to be so.

<comment><USER33> I think the "half an hour" bit is significant. If someone complained that they tried to learn Prolog and gave up after half an hour they wouldn't get much sympathy from me.</comment></comment></comment>


Say goodbye to your 30 pins - <AUTHOR> http://blog.punchthroughdesign.com/post/20435979048/say-goodbye-to-your-30-pins

<comment><USER2> I would add that Bluetooth Low Energy isn't totally free. Somewhere in your cost you have FCC/IC/CE testing, Bluetooth licensing/testing/certification, possible software stack cost and more expensive components (radio, antenna, etc). You also have a larger power requirement as low energy isn't as low as UART. I won't give specific numbers here as I cant't legally, but the cost difference is probably a wash. That's assuming your doing the radio layout and not using a module. Apple's move to wireless is definitely for their sake. I could also see an argument made that because of the possible extra costs for doing Blouetooth Low Energy (chips, testing, power, RF design, etc) you may see less accessories for a while.

In any case I think you're right that the tell tale signs are there.

<comment><AUTHOR> The move to wireless is one part Apple's sake, and one part for users (no parts left over for developers, unfortunately). People tend to favor wireless accessories and associate a higher value with them. In some cases it just makes more sense- people want to use an accessory without handing over their iPhone (I'm looking at you, speaker docks)

The cost may be a wash, but it really does level the playing field.</comment></comment>


Offline Advertising Still Rules - <AUTHOR> http://www.fitzblog.com/bid/1975/Offline-Advertising-Still-Rules

<comment><USER2> The ultimate offline advertising source is www.onlinenewspapers.com. It lists and links to nearly every newspaper in the United States and for those not in the US it does the same for other countries as well.</comment>


Facebook's Bankers Are Divvying Up The $100 Million They Made Shorting $FB - <AUTHOR> http://www.businessinsider.com/facebooks-bankers-shorting-facebooks-stock-2012-8 <comment><USER2> _the bank gets paid its full IPO commission on the extra shares it sells if exercises its option, so it has an incentive to sell them regardless of how much excess demand there is. And there's no risk to the bank if the stock price jumps, because the bank can cover its short buy buying the stock back at the IPO price.

And if the stock drops after the IPO? Well, then the bank really cashes in. Because then the bank makes money from (1) IPO commissions (2) Proceeds from shorting the stock at the IPO price and then buying it back at a lower price._

There are so many inherent flaws with the commission + fee incentive structure. We see this structure most often manipulated by the Agent + Broker model (applies to both Wall St brokers and real estate brokers).

(1) For an Agent, reward is decoupled from risk;

(2) For a Brokerage, risk is decreased by controlling as large a part of the "market" as possible, which usually equates to controlling as many Agents as possible;

(3) There's more "potential reward" for gambling with other people's money than there is fallout from that risk. Brokers encourage Agents to take risks that reward "The Brokerage" and yields Agents kickbacks; Agents encourage clients to take risks that _potentially_ reward clients, but _guarantee_ reward for Agents, who are then _potentially_ rewarded by their Brokerage. The catch is that Agents require clients to be contractually bound to Brokerage (thus the Brokerage acquires more control over the market). Agents are glad to do this, in return for guarantee of being "proportionately" rewarded.

(4) The "fallout" from risky behavior is disproportionately distributed, and almost always falls on the client. Fees put the client at an immediate "loss" in an investment, which encourages aggressive risk to recover the loss (the higher the fees, the higher the risk)

(5) Brokerages profit from "unstable" markets, where turnover generates fees.

(6) Agents profit from commissions (usually percent commission), which are generated by turnover.

(7) Clients can only profit when their return reaches a number > [Broker Fee] + [Agent Commission]. Due to information asymmetry, it's very difficult for a client to know when this is.</comment>


MIT's Open courseware expanding to other top tier schools - <AUTHOR> http://news.wired.com/dynamic/stories/M/MEGAUNIVERSITY_WORLD_CLASSROOM?SITE=WIRE&SECTION=HOME&TEMPLATE=DEFAULT&CTIME=2007-12-29-12-49-41

<comment><USER2> Weird. I was just in the middle of watching lecture 3 of Strang's course.</comment>


A Frightening Week - <AUTHOR> http://www.businessinsider.com/a-frightening-week-2011-1 <comment><USER2> Direct link to the same article on the author's own web site was submitted here:

<http://news.ycombinator.com/item?id=2158529></comment>