Text-Only Websites - <AUTHOR> https://sjmulder.nl/en/textonly.html <comment><USER2> I now yearn for the old plain HTML pages with "up / next / previous" links [1]. I used to hate how basic they were, but with "modern" web sites loading so much JavaScript to display static content, I'm starting to see the appeal of basic websites with no styling whatsoever.

[1] [https://www.freesoft.org/CIE/Topics/index.htm](https://www.freesoft.org/CIE/Topics/index.htm) \- I learned from this twenty years ago. Still relevant.

<comment><USER3> With a few lines of CSS in the head section you can have a blazing fast page that looks elegant as well. This site is one, although I think it is a touch too narrow. Also, headers/footers with a different background color are pleasing.

<comment><USER4> Agreed, altough I find myself liking websites with a narrow width lately.

I have no data to back this up, but to me, it seems that when people think about building websites without JS, they completely forget that CSS, or design are a thing.

I am building a website for a simple API I built for my company[1] that I thought others might want to use, and while there is no JS, that does not mean that I just uploaded an unstyled .html file to the root of my server.

While unstyled have their own charm at times, in general, I think a little bit of CSS, design, and inspiration goes a long way.

[1] [https://i.cpimg.sh/pwiyfpBpIKL5.png](https://i.cpimg.sh/pwiyfpBpIKL5.png)

<comment><USER5> I usually use a max-width of 40rem and add 1rem padding for small screens/windows to keep off the grass, as it were. That anchors the width to the base text size so the line length makes basic sense, no matter what the user font settings might be.

<comment><USER2> This type of differences in personal preferences is precisely why I'm for leaving pages completely unstyled...

<comment><USER6> Yes, I agree. I don't like the max-width setting; it should use the width of the window that the user has set. Same with font sizes, and usually, also colours. (Sometimes CSS is helpful (if not overused), but for many documents it will be much better to avoid CSS.) CSS is often what makes web pages look bad.

<comment><USER5> I generally use a full-screen browser. I _never_ want a full-screen line of text.

<comment><USER6> Does your browser have sidebars? You can add sidebars if you want to reduce the width of the document, I suppose. (There is bookmark sidebar, history sidebar, and web developer sidebar; what I think is missing is the table of contents sidebar, which would list the
,
, etc in the current document. Another thing that might be wanted is split-screen mode, I think.) I personally do want a full-screen line of text, although I suppose some people do not want.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I've been thinking of migrating my blog back to text only. When I was a student I kept a "blog" as a list of HTML files that I manually updated. I've been using Wordpress for the past ~15 years and am growing weary of having to keep up with plugin, theme or CMS updates. My blog is not worth this much effort to maintain, I just want a place to share essays and occasional photos. I need time to make the switch, but the simplicity of text only format is attractive.

<comment><USER8> I do something like this. You can write HTML almost as simply as text if you ignore some current best-practice.

<comment><USER9> Google's guidelines for HTML5 [0] are surprisingly good and concise. You can omit most closing tags, and even many "structural" tags are implicitly opened. This is a 100% correct and complete HTML5 document:

        <!doctype html>
        <title>Title of the document</title>

A paragraph

First item

Second item

Another paragraph

writing html tables by hand is especially pleasurable due to the auto-closing tags. As I see it, modern HTML is so concise that markdown is more of a burden than an aid. In most cases, we would be better off writing html directly than markdown. Maybe the only thing that I miss is that an empty line creates a paragraph tag.

[0] [https://google.github.io/styleguide/htmlcssguide.html](https://google.github.io/styleguide/htmlcssguide.html)

<comment><USER10> That's very cool. Do you have a good solution for inline math?

<comment><USER11> I wonder how far could one go with just Unicode symbols. Entry would probably need a proper editor support. Additional use of sub/sup could also help.

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

</comment></comment></comment></comment></comment><comment><USER12> This is great. My only feedback is that, yes you're using text only but please don't shy away from minor CSS changes that can make the site look more pleasant. I have been working my homepage ([https://usmanity.com](https://usmanity.com)) for years to make it minimal, organized, and still pleasant to look at.

<comment><USER13> I agree minor CSS changes make sense, and you'll see I've applied some styling for dark mode, use of serif font, maximum page width and minor other things on specific pages.

But I've chosen not to mess with things line text size and line height. More power to the user (agent)! Also, pleasant is in the eye of the beholder and I like it this way.

(Added your page by the way)

</comment></comment><comment><USER14> Nice! This gives me more confidence on my decision to keep my websites text only.

Please excuse the plug(feedback is welcomed)

A problem validation platform - [https://needgap.com](https://needgap.com)

Curated list of startup tools - [https://startuptoolchain.com](https://startuptoolchain.com)

Startup/Entrepreneurial blog(Has occasional comics, but with transcription) - [https://hitstartup.com](https://hitstartup.com)

<comment><USER15> The first two hurt to look at. And I mean that in a literal, physical way. It hurts my eyes. Consider some alternatives to the colors used.

<comment><USER16> I agree. That pink is very hard to read. Might as well use yellow on white.

<comment><USER14> That was on purpose, the main theme color is RED, the username was made light to shift focus on the problem title instead of users to add friction towards votes biased towards users.

When the users are logged in, the voting buttons get RED and you'll notice less of the pink(Please do give it a try and let me know if it's better).

Thank you for your time.

</comment></comment></comment></comment><comment><USER17> The EU version of USA Today is not text-only, but it is damn fast, with no trackers, no js, and a really fast CDN: [https://eu.usatoday.com/](https://eu.usatoday.com/)

<comment><USER18> This is exactly how websites should be. It loads astonishingly fast, page after page, and there is nothing between me and the information.

I built my website the same way, and spent a lot of time shaving milliseconds off and optimising readability. I wanted to create the same sort of smooth, bullsh-- free experience.

</comment></comment><comment><USER19> Chiming in with Piero Scaruffi's website[1]. I used to read it a decade back and it really hasn't changed that much; the information is plentiful and interesting, the site is fast, and it seems like he nailed down the "static content is all that matters in the end" bit not only way before it became a common reaction to the overencumbered web of today, but also way before the web got overencumbered at all.

[1] [https://www.scaruffi.com/service/aboutw.html](https://www.scaruffi.com/service/aboutw.html)

</comment><comment><USER20> I'm a big fan of simplicity. HTML/CSS index generated by tree v1.8.0. All content US-ASCII text files:

[https://every.sdf.org/](https://every.sdf.org/)

<comment><USER21> I would not call US-ASCII an achievement. A majority of the world's languages (whatever the exact metric might be...) cannot be written using using US-ASCII

Email (SMTP) was defind 7 bit and it took us 2 decades to work somewhat reliably with other languages requiring more characters.

<comment><USER20> Of course it's parochial. The very name is United States-American Standard Code for Information Interchange. It is an antique standard for teletype machines that can still be read and decoded by everything on the planet. It is as close to universal as anything we have. There is a reason that the first 128 decimal code characters in UTF-8 are US-ASCII...

</comment></comment></comment><comment><USER22> If curious see also:

2018 [https://news.ycombinator.com/item?id=17787816](https://news.ycombinator.com/item?id=17787816)

2018 (a bit) [https://news.ycombinator.com/item?id=17921251](https://news.ycombinator.com/item?id=17921251)

2017 [https://news.ycombinator.com/item?id=13337948](https://news.ycombinator.com/item?id=13337948)

Any others?

</comment><comment><USER23> Shameless plug for the minimalistic no-faff blogging platform I'm building: [https://mataroa.blog/](https://mataroa.blog/)

</comment><comment><USER24> Being pedantic, the list strikes me as poorly named. Websites listed do have images and other media, the unique trait they have in common is very minimal CSS (for better or for worse).

They tend to use little to no decorative images outside of main content though, which is nice. Not to imply a list like this doesn't have the right to exist.

<comment><USER13> This is right. The list started with a handful of sites that were (almost) text-only, such as the NOS, CNN and NPR news sites, but as submissions came in it expanded with not quite text-only sites that still espoused many of the same values.

I intend to further curate the list soon and give proper text only sites a more prominent place. Retro, minimal, and text-only sites aren't quite the same.

</comment></comment><comment><USER25> Not quite text only but I just launched a website with a collection of easily copy-and-paste-able lists in plain text.

[https://copypastelist.com/](https://copypastelist.com/)

<comment><USER26> Nice! Very usable, no nonsense. I hope Google sends you to the top for related search results.

</comment></comment><comment><USER27> The Wiby search website is so cool! There is something really comforting and nostalgic about text-only websites. In one of the searches I came across Project Gutenberg Australia. [http://gutenberg.net.au/](http://gutenberg.net.au/) Thank you for sharing this.

</comment><comment><USER28> I should probably email Sijmen but I've been using [https://engineeringblogs.xyz/](https://engineeringblogs.xyz/) to help me keep track of hundreds of product/software development blogs and am keeping it as plain as possible.

<comment><USER29> Nice job. Bookmarked.

</comment></comment><comment><USER30> I like small simple websites like these. I especially appreciate knowing about thin.npr.com

I don't think completely text websites have to look bad. E.g., my personal website looks pretty good with relatively little CSS:

[https://goodlifeodyssey.com](https://goodlifeodyssey.com)

Some of the formatting is a bit sophisticated too, e.g. for block quotes of poetry:

[https://goodlifeodyssey.com/hesiod](https://goodlifeodyssey.com/hesiod)

</comment><comment><USER13> Ha, so nice to see this here! I was wondering were all the new submissions were coming from. Glad to see it's appreciated!

<comment><USER31> One nice thing about this is that you can use most of these sites in obsolete devices — I have an iPad 3 with a glorious, bright retina screen, entirely bricked by its inability to update to the latest iOS . Every day more and more of the web is breaking on it.

This, though: [http://wttr.in](http://wttr.in), will never break. I'll tape my old iPad to the fridge and use it as a weather screen.

</comment></comment><comment><USER32> Craigslist probably belongs on this list.

<comment><USER33> I would also add old.reddit.com, so long as you can forgive thumbnail images. Disabling custom css, makes the site basically hn-like.

<comment><USER34> I would love a text-only Reddit if that exists.

<comment><USER35> I think [https://i.reddit.com](https://i.reddit.com) is "more text-only" even though it does have icons and some thumbnails.

</comment></comment></comment></comment><comment><USER36> I'm not usually a pedant, but something about this drives my brain totally insane. None of these websites are text only. Alternatively, all websites are text only. Several of them even feature that unholy technology which must be struck from the Earth according to HN: javascript. What is the line being drawn here? You might as well call it "Websites that load very fast and have a very plain aesthetic that I enjoy".

If I wanted a clear definition of a text only website, I'd say a text-only website is a website which is served with a Content-type: text/plain header. This is far from that.

<comment><USER13> Yeah, it's not text/plain. The list has also strayed a bit from what I originally intended, which wasn't so much about loading quickly but more about primarily sticking with marked up, hyperlinked text.

I do intend to reorganise the list to focus on those kinds of sites, but this HN submission caught me by surprise so for now it's just a list of sites the sort of match an aesthetic I like. "totally insane" is a bit harsh maybe.

</comment></comment><comment><USER37> I had a dream of a text only "underground" web the other day. Then executed it in a very poor way. If you want to check it [https://tilde.pt/~fimdomeio/index2.html](https://tilde.pt/~fimdomeio/index2.html)

Actually A text only web as a few interesting advantages. Almost instantaneous load even in a poor connection. Very fast development time since you throw away so many things away.

</comment><comment><USER38> I am thinking about a little side project to launch this summer, just for fun, and I'm very tempted to build a simple card game, like kards.com, but text- only. I think it would be super fun, and I think that if well designed, you don't need fancy graphics to appreciate it.

Probably going to use Javascript and angular.js, but open to suggestions. (I used to be good at JS, never used angular so far).

</comment><comment><USER39> I'm working on static site generator for using plain html...

[https://findingmyhtmlgoddess.com/](https://findingmyhtmlgoddess.com/)

[https://github.com/jonascript/htmlgoddess](https://github.com/jonascript/htmlgoddess)

<comment><USER40> > It will be simple as humanly possible to use. No classes, no javascript.

But README.MD start to ask me to install NPM which not beginner friendly...

</comment></comment><comment><USER41> Finally, something I can read in Lynx.

<comment><USER9> dude, at least use "links" or, better, "elinks"

</comment></comment><comment><USER42> I really like Gemini but insisting on TLS and closing connections totally defeats the purpose for me.

I also came up with this concept [https://github.com/runvnc/noscriptweb](https://github.com/runvnc/noscriptweb) which I may never actually code because of time constraints.

<comment><USER6> I have not heard of Gemini before, but I tried the SSH that was linked above, and read about it. It seems a interesting idea. I don't like insisting on TLS either; I think that perhaps better would be like with HTTP, where the URI scheme is different for TLS or plain, perhaps "pgemini://" for the plain variant (the only difference, other than that there is no TLS, is that the 6x response codes are not supported).

</comment></comment><comment><USER43> How about [https://wordsandbuttons.online](https://wordsandbuttons.online) ? Sure, it uses JS for interactive visuals but all the pages are still under 64K by design. There are very few pictures, too. Even the logo at the bottom of pages is the reused icon file.

</comment><comment><USER44> Philosophically speaking. A text only website plus some SVG markup is still considered a text only website?

</comment><comment><USER45> Would [https://old.reddit.com](https://old.reddit.com) count?

<comment><USER46> Maybe even [https://i.reddit.com](https://i.reddit.com)

</comment></comment><comment><USER6> I try to do text only myself. Unfortunately Fossil requires CSS (although it does still work reasonably well with Lynx), but other stuff I write is usually just plain text, or if HTML is needed, it rarely has CSS. I also have a gopher server too.

</comment><comment><USER47> My personal site is text only [1]. There is a tiny amount of JavaScript from Plausible, but there are no web fonts and no images.

[1] [https://benovermyer.com](https://benovermyer.com)

<comment><USER6> Why do you make the fonts so big?

<comment><USER47> Originally, it was to make the text really legible. I've been thinking about a redesign for quite some time now, though.

</comment></comment></comment><comment><USER48> Does this count as a text-only website?

[https://masciintosh.com/](https://masciintosh.com/)

</comment><comment><USER49> I miss things like Slashdot Ultramode. That was from the times before RSS and other syndication methods.

</comment><comment><USER50> archive.today _isn't_ a frontend to archive.org, it's a completely separate archiving site with no connection to Internet Archive whatsoever.

<comment><USER13> My bad, was working to hastily. Fixed.

</comment></comment><comment><USER51> Are there apps which are text-only and look good ?

<comment><USER52> mutt, irssi, newsboat, vim ... ¯\\_(ツ)_/¯

<comment><USER53> manuw - random-ish question i saw somewhere that u were using minikeepass which is deprecated on ios -- any suggestions? what are you thinking of using?

</comment></comment></comment><comment><USER54> The rate.sx site is pretty nifty. It provides a simple REST endpoint that server cryptocurrency exchange rate info. The nifty part is that it's built to be used on the command line!

        $ curl rate.sx        # outputs a nifty table of coins and their market rates
        $ curl rate.sx/:help  # to see how to use the api

I whipped up a shell function wrapper that makes this feel more like a standard cli command. In the off chance anyone is interested, I'm sharing it below (unfortunately, HN turns my tabs into spaces, so indentation is now a single space.)

Note that I was careful to not let it clutter up your environment, so feel free to include it in your .profile with impugnity. Also, this sort of exhibits my current experiments with terse shell style, so don't hate on me for that, but otherwise the function should provide all the typical ergonomics you expect of a standard cli utility.

        ratesx() (
         set -o errexit -o nounset -o noclobber
         RATESX_DOMAIN=${RATESX_DOMAIN:-rate.sx}
         RATESX_CURRENCY=${RATESX_CURRENCY:-USD}
         RATESX_NROWS=${RATESX_NROWS:-10}
         RATESX_FETCH_CMD=${RATESX_FETCH_CMD:-curl --silent}

         usage=$(cat <<-USAGE
         usage: ratesx [<options>] [<command> <arguments>]

         Show information about cryptocurrencies. Command defaults to 'table'.

         Commands
           graph <coin> [<interval>]
             Display exchange rate graph for <coin> over <interval> (defaults to
             \$RATESX_CURRENCY hours)

           value <amount> <coin> [<amount> <coin>] ..]
             Convert sum of <amount>*<coin> to <currency> (defaults to
             \$RATESX_NROWS).

           table         Display table of top coins by market capitalization
           coins         Show list of supported cryptocurrency coins
           currencies    Show list of supported currencies
           info          Show upstream API info

         Options
           -q             Quiet mode. Hide header and footer
           -F             Hide "Follow" line
           -T             Disable ANSI color
           -n <nrows>     Number of currencies (rows) to display in output table
           -c <currency>  Base currency for exchange rate calculations
           -d <domain>    Use API endpoint located at <domain>

         Variables
           RATESX_DOMAIN=$RATESX_DOMAIN
             Default domain name of API endpoint
           RATESX_NROWS=$RATESX_NROWS
             Default count of rows to display in output table
           RATESX_CURRENCY=$RATESX_CURRENCY
             Default base currency for unit conversions
           RATESX_FETCH_CMD=$RATESX_FETCH_CMD
             Default command with which to submit API requests
         USAGE
         )

         fetch() { $RATESX_FETCH_CMD "$@"; }
         table() { fetch "$1/${2:+?$2}"; }
         graph() { fetch "$1/$4${5:+@$5}${2:+?$2}"; }
         value() { u=$1; o=$2; c=$3; shift 3; p=0
          for v in "$@"; do
           p=$((p^1)); [ $p = 1 ] && r="${r:+$r+}"; r="${r:-}$v"
          done
          printf '%s %s\n' "$(fetch "$u/$r${o:+?$o}")" "$c"
         }
         info() { fetch "$1/:help"; }
         currencies() { fetch "$1/:currencies"; }
         coins() { fetch "$1/:coins"; }

         while getopts ':qFTn:c:d:' opt "$@"; do
          case "$opt" in
          q) quiet=q;; F) follow=F;; T) ansi=T;;
          n) nrows=$OPTARG;; c) currency=$OPTARG;; d) url=$OPTARG;;
          :) error "Need argument: -$OPTARG" "$usage";;
          *) error "Unknown option: -$OPTARG" "$usage";;
          esac
         done; shift $((OPTIND - 1))

         nrows=${nrows:-$RATESX_NROWS}; currency=${currency:-$RATESX_CURRENCY};
         url=${url:-$RATESX_DOMAIN}; cmd=${1:-table}; shift || :;

         url="https://$currency${currency:+.}$url"
         opts="${quiet:-}${follow:-}${ansi:-}"
         opts="${opts:+$opts&}${nrows:+n=$nrows}"
         "$cmd" "$url" "$opts" "$currency" "$@"
        )

</comment><comment><USER55> Thank you!

</comment><comment><USER56> missing ludens.cl

</comment><comment><USER57> I wanted to try out making gemini pages. I got some of the example servers, but no where in the official gemini spec, both via http and via gemini, could I find examples of the actual freakin gmi/gml formats!

I started up Wireshark and then remembered that the traffic is encrypted by default ... so yea, that's not going to help.

Are there any gemini tutorial on how to make a gemini site?

<comment><USER58> I think AV-98 has a setting or function for dumping the raw results of a gemsite.

But I think the main reason there's no example is because there's very little to show. Just make a text document and if you need to link to something you use the Gemini method of => URL title text

There's a few other things in the spec that are considered hints for clients (using # as headers, * for numbered lists) but those aren't even guaranteed to be rendered by the client as anything but plain text.

<comment><USER59> So does elpher. But you don't need a dedicated client to see the raw server response, all you need to really do is use something like 'gnutls-cli hostname -p 1965 --no-ca-verification' and then enter the full gemini URL once you have a connection.</comment></comment></comment>


Ask HN: A easy to use GUI tool for building Neural Netowrks? - <AUTHOR> My Biology Professor wants to use Neural Networks but needs students to build the whole model. Is there a simple GUI tool she can use to build it herself?? <comment><USER2> Have you tried using Mathematica for this? It has several builtin neural networks.

See:

      [1] https://www.wolfram.com/language/11/neural-networks/
      [2] http://www.wolfram.com/language/12/neural-network-framework/</comment>


Parsing HTML Using Regular Expressions - <AUTHOR> https://stackoverflow.com/a/1732454/1058671 <comment><USER2> Maybe I'm misunderstanding the question, but it sounds like the question is not asking how to parse HTML with a regex, but how to match HTML open tags specifically.

While you obviously can't match arbitrary HTML with a regex (because arbitrary levels of nested elements requires a stack-based parser), can you not match HTML tags with a regex? It seems to be that it should be possible since you always have the pattern '<' followed by the name of the tag, followed my zero or more "key=quoted-val" attributes, and finally a '>' token.

So, if the question is limited to just how to parse a single open token then it seems like all of the answers have just decided to echo what they've heard in the past which is "don't use regular expressions to parse HTML" when the truth is that a real HTML lexer/parser does use regular expressions for creating these "open" and "close" element tokens for the parser.

</comment><comment><USER3> This is a fun (and classic) thread and it's worth reading the pro and con arguments.

It really falls under the old joke "you have a problem and you decide to solve it with regex, now you have two problems". HTML is very gnarly, and regex is very gnarly. Doesn't mean you can't get shit done if you're aware of the pitfalls.

</comment><comment><USER4> you know when you first read that you think - damn straight you can't parse html with regex, but as it goes on the idea gets strangely enticing. I mean maybe, with the correct rituals, and a gun and a willingness to fight with ancient evils you could maybe parse some html with regex. A sort of Lovecraft/Action flick.

<comment><USER5> Using regex in python to scrape some data from a website works just fine for me... _shrugs_

<comment><USER6> Is there ever a good reason to use regex to do a web scraper instead of using a proper prebuilt parser and walking the DOM?

<comment><USER4> regex is your hammer and you just by chance happen to have a really nail shaped task to do?

</comment></comment></comment></comment><comment><USER7> I am a moderately active user of SE (~25k of flair) and I find the contrast between the regular channel (say, Stack Overflow) and the Meta one (SO Meta) horrifying.

The SO Meta community is such a bunch of bullies that I now hardly go there (even though I recently found two bugs which I did not bother to post). In contrast, the regular channels are pragmatically helpful (pragmatically because you still need to do some God offering sacrifices (called "what effort have you put in the question" and suffer some psychotic down voters). It is interesting to see that both populations are composed from the same individuals who seem to have a personality flip when switching channels.

I would be interested someday to learn about the dynamics of such groups. There are plenty of places on Internet populated by mentally deranged participants (cowards hiding behind Internet) but the SE Meta ones are, I belive, more educated / intelligent in average and, sometimes, more traceable.

<comment><USER8> For a long time, the SO and Meta.SO scores we completely separate. This meant that even if you were a top contributor on SO, you might have very low meta- reputation. It was pretty screwed up. I have a fairly high SO rep (top < 0.2%), but in those days my meta-rep wasn't even high enough to unlock many basic features. I remember reporting bugs and getting treated like a noob.

I'd even complained about the reps being separate, pointing out how this gave the power on meta to people who didn't even necessarily contribute on the main site. A bunch of high meta-rep users descended, simultaneously shooting down the idea of merging the reps while admitting that the main reason they like the status quo was because they didn't want to lose their precious karma. I was petty surprised when SO eventually fixed this, but it's kind of too little, too late. I don't bother with meta anymore despite now having a high rep on it. Too many bad memories.

<comment><USER7> If it was me, I would not have put any rep in Meta. The fact that one is a genius in Java and Python does not mean that he or she is a good moderator or sie admin.

Anyway, I find it sad that they are losing some possibly useful feedback in the name of self-adoration. And this particularly because SE is a fantastic source of knowledge, just reading the Hot Topics made me learn about subjects I did have never looked at.

</comment></comment></comment><comment><USER9> It should be possible to _tokenize_ html with regular expressions, an that's all he seems to be asking for...

</comment><comment><USER10> (2009)</comment>


Twitter's Jack Dorsey: We know we must be easier to use - <AUTHOR> http://money.cnn.com/2015/07/28/technology/twitter-earnings-jack-dorsey/index.html

<comment><USER2> Twitter would be easier to use if they reverted the recent "improvements" to the tweet threading UI.</comment>


A Canadian Energy Company Bought an Oregon Sheriff's Unit - <AUTHOR> https://theintercept.com/2020/02/12/jordan-cove-oregon-pembina-pipeline/ <comment><USER2> This article made me think of what we DON'T hear about: protests against nuclear energy. The oil economy requires so much destructive infrastructure - pipelines, wells, roads, flares, refineries, etc.

By contrast, nuclear requires a few mines and some very careful handling of toxic materials.

<comment><USER3> Oregon had an active nuclear power plant for many years (trojan), that survived peacefully.

portland is home to an active nuclear reactor that's been running since 1968 (reed college), that has also survived peacefully.

I think there's room for informed protests against pipelines in the same place where nuclear was pretty much ignored.</comment></comment>


Rare wooden escalators lead down into a staggeringly monotonous tiled tunnel - <AUTHOR> https://www.atlasobscura.com/places/st-annas-tunnel <comment><USER2> The wooden escalators at Wynyard Station in Sydney were replaced last year, and they turned the old treads into a sculpture:

[http://chrisfox.com.au/interloop/](http://chrisfox.com.au/interloop/)

<comment><USER3> That is incredibly cool. Genius way to preserve, and even honor, the old, even though it is replaced by something newer. Wish we did this kind of thing more.

</comment></comment><comment><USER4> Didn't know that any still existed, here's why they don't in the UK:

[https://en.wikipedia.org/wiki/King's_Cross_fire?wprov=sfti1](https://en.wikipedia.org/wiki/King's_Cross_fire?wprov=sfti1)

<comment><USER5> I remember this. My grandmother was caught up in it coming back from holiday. Back then there were no mobile phones and she couldn't hear her land line phone so everyone was panicking and we had to go to her house to see if she was ok. She was making some tea when we got there and shrugged it off as a minor disruption to her schedule. A lot has changed technology-wise since then.

For the people who don't know, you could smoke on London Underground back then and the place was littered with cigarette butts still burning in some cases. It was just a matter of time.

<comment><USER6> Oh yes. I was living around London at the time, and very well remember being stranded at some station when all trains were halted, shortly after I had gotten on board at King's Cross.

As for mobile phones, I actually believe there were some at the time. They started appearing sometime during the latter years of the eighties, to begin with as rather expensive status symbols, conspicuously flashed by the yuppie mob.

Tangential: Being stranded on the tube was not necessarily a waste of time. Not too long before, I was in a stationary train in a tunnel near Liverpool Street Station, in muted light for the better part of an hour. A woman in her eighties (who said: "I don't like old people") told me fascinating stories about the bombing of London that she had experienced. Only gradually did I realize we were talking about bombings of the _first_ world war. Zeppeliners. Never heard of that before, and found it hard to credit, but of course, everything checked out when I looked it up.

</comment></comment></comment><comment><USER7> That reminded me of some of the nicer speculative psychogeography writings about the Woolwich tunnel time anomaly:

[https://portalsoflondon.com/2017/07/02/the-woolwich- anomaly/](https://portalsoflondon.com/2017/07/02/the-woolwich-anomaly/)

<comment><USER8> This utterly fascinates me. I don't know whether to treat this as someone who actually believes this stuff, a bit like the Mandela Effect, or if it's all just satire

<comment><USER9> It's fiction: [https://www.theguardian.com/uk-news/2018/jan/08/woolwich- foo...](https://www.theguardian.com/uk-news/2018/jan/08/woolwich-foot-tunnel- portals-of-london)

</comment></comment></comment><comment><USER10> I remember using the Old wooden escalators at Macys in NYC when I was little.

And Looks like Macys even kept them after a recent renovation : [https://mobile.nytimes.com/2015/11/26/nyregion/macys- histori...](https://mobile.nytimes.com/2015/11/26/nyregion/macys-historic- wooden-escalators-survive-renovation.html)

</comment><comment><USER11> The wooden escalators are truly a blast from the past for me.

I grew up in Houston in the 1980's, and the Foley's department store downtown was one of the old-school, many floor department stores that used to be more common. (Like the old Wanamaker's in Philadelphia.) I distinctly remember riding the escalators all the way to the top, and the top few floors having these seemingly rickety narrow wood escalators. I see the fire safety risks, but am still glad to have had the opportunity to see it firsthand.

</comment><comment><USER12> I went down this tunnel once, the escalators were out of action unfortunately, so a big lift was used instead. It's surprising how spacious it is down there, and ideal for biking down the tunnel.

<comment><USER13> Cycling down the tunnel is not allowed, unless <5km/h. It's _incredibly_ annoying to be overtaken by cyclists in such a narrow space. In fact, anyone doing this should probably try cycling next to a moving train for comparison.

There's a sign in the tunnel that says something like "cyclists are tolerated, but only at walking speed". I frequently get into arguments wich douchebags who ignore this rule and ring their bells like antisocial nutcases at pedestrians in the tunnel. You know, the way drivers do when cyclists aren't moving fast enough for their tastes.

<comment><USER14> > There's a sign in the tunnel that says something like "cyclists are > tolerated, but only at walking speed".

There's a sign in Denmark, the standard bicycle+pedestrian plus the text "Knallert forbudt"[1], often seen where the path is shared with pedestrians — like on a quay or in a park.

I'd assumed "knallert" was cognate with English "knell", meaning to ring (or the sound of) a bell, and the sign therefore meant a cyclist mustn't ask people to move out of the way. But it seems that "knell" in Danish is "knolde"[2], and the sign is the much simpler "Mopeds forbidden".

I like my meaning better.

[1] [http://mapio.net/pic/p-26687006/](http://mapio.net/pic/p-26687006/)

[2] [https://en.wiktionary.org/wiki/Reconstruction:Proto- Germanic...](https://en.wiktionary.org/wiki/Reconstruction:Proto- Germanic/knuzlijan%C4%85)

[3] StreetView example: [https://email@example.com,12.5994887,3a,75y,27...](https://email@example.com,12.5994887,3a,75y,27.9h,90.3t/data=!3m6!1e1!3m4!1sJ9RpWoFjvey_DR95Hnq- Dg!2e0!7i13312!8i6656)

<comment><USER13> "Knallen" in Dutch can refer to exploding sounds, or it can mean "going really hard/fast", so I had a similar reaction to yours. Languages are a never ending source of interesting tidbits like this.

</comment></comment></comment></comment><comment><USER15> A similar but much more active 100+ year old tunnel in Hamburg: [https://en.wikipedia.org/wiki/Elbe_Tunnel_(1911)](https://en.wikipedia.org/wiki/Elbe_Tunnel_\(1911\))

That one allows both cars and pedestrians. Worth seeing while in Hamburg (along with the miniature model railway museum [https://en.wikipedia.org/wiki/Miniatur_Wunderland](https://en.wikipedia.org/wiki/Miniatur_Wunderland) \- a visit there inspired Sid Meier to re-create Railroad Tycoon).

</comment><comment><USER16> I road some wooden escalators in Budapest many years ago. It was a wonderful experience. An absolute delight. The wooden 'clanking' sounds where especially memorable.

</comment><comment><USER17> The Macy's on 34th street in Manhattan used to have wooden escalators. (Maybe it still does?)

<comment><USER18> They still have a couple with wooden treads on the top floor near the bedding section. There are many more in that building with steel treads and wooden "bodies."

</comment></comment><comment><USER19> There is also Greenwich Foot Tunnel under the Thames.

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

</comment><comment><USER20> I look at that and think "That's a huge canvas for an art school to work on for years."

The white does have the advantage of making any water leakage or disruption of the walls immediately apparent though.

</comment><comment><USER21> A pretty cool viral rap video was shot there last year !

[https://www.youtube.com/watch?v=MvjQTA81MhY](https://www.youtube.com/watch?v=MvjQTA81MhY)

Enjoy !

</comment><comment><USER22> "1876 feet". WHYYYY? You're outside the US, keep your obfuscating imperial measures where we can't see them please.

<comment><USER14> They are writing for an American audience.

I'd like to see a browser automatically translate units, perhaps with an extension like [1], but ideally with standard markup. That could also end the mess of brackets on English Wikipedia.

[1] [https://addons.mozilla.org/en-US/firefox/addon/automatic- uni...](https://addons.mozilla.org/en-US/firefox/addon/automatic-unit- converter/)

<comment><USER22> Well, they shouldn't. The international audience is much bigger.

</comment></comment></comment><comment><USER23> A good excuse for fried food but research sauce options beforehand.</comment>


The Scientist and Engineer's Guide to Digital Signal Processing (1997) - <AUTHOR> http://www.dspguide.com/ <comment><USER2> I can't recommend this book highly enough to engineers, students and tinkerers interested in DSP for audio or data analysis.

Just the first chapter on sampling made so many things click for me (I already had a background in sound synthesis with synthesizers, bpt no theory), and it made it all seem so _beautiful_ (I still think signal processing is one of the most beautiful fields of math, probably because of how the Fourier Transform "happens" to be almost identical to its inverse and this lets you do so much with such a small and simple set of tools).

The book was clearly written by a good engineer, as it is full of wisdom, tricks and intuition of the kind you only learn on the field. It has good exercises and very simple code for everything.

The book takes the discrete-only approach - it doesn't even once show an integral, only sums on arrays of floating point numbers. This is a very good approach that I'm not aware of other texts taking.

I studied most of it while living with a friend who applied and taught DSP on his day job. Every evening we would sit in front of a whiteboard and compare my newly earned knowledge on a tool of discrete signals processing with the continuous version that he used and taught. Invariably, we ended with the conclusion that "my" version was much simpler and more intuitive while preserving all the needed power in practice. So I never even tried to grok the continuous Fourier Transform, and yet my intuition of linear systems has served me very well ever since.

<comment><USER3> Same here, and I did a lot of work in signal processing from designing digital synthesizers to field and post sound engineering. Probably my single favorite textbook, unusually well written.

</comment></comment><comment><USER4> I would be interested in knowing how it compares to Practical Signal Processing ([https://www.amazon.com/Practical-Signal-Processing-Mark- Owen...](https://www.amazon.com/Practical-Signal-Processing-Mark- Owen/dp/1107411823/))

<comment><USER5> Or Richard Lyons book:

[https://www.amazon.com/Understanding-Digital-Signal- Processi...](https://www.amazon.com/Understanding-Digital-Signal- Processing-3rd/dp/0137027419)

<comment><USER6> Lyons' book is more thorough and complete, each chapter builds on the foundation of the prior ones. He aimed for a hands-on approach, not theoretical. It is very suitable for someone who isn't intimidated by math (of which there is ample), but would prefer to see examples of it worked out (especially visually). His list of tips and tricks at the end come in handy for specific applications (some of which I didn't know I need until I later came across them). Smith's book, on the other hand, is cursory and a bit more brief. It might leave you feeling that there is more depth there which you do not understand. Perhaps I feel this way because I read it online whereas I read Lyons' as a physical copy. Smith treats similar subjects but with less detail and fewer of the expert topics. On the other hand, it is a faster read and free. Both are good for beginners who want to understand DSP better!

</comment></comment></comment><comment><USER7> If you want to practice your newly acquired DSP skills, you should check out AudioKit [http://audiokit.io/](http://audiokit.io/) [https://github.com/audiokit/AudioKit](https://github.com/audiokit/AudioKit) an audio synthesis and processing framework for (mac|i|tv)OS.

<comment><USER8> Looks promising, shame it's only available for Apple devices.

<comment><USER9> The JACK Audio Connection Kit offers a cross-platform audio API; see their comparison section for differences: [http://www.jackaudio.org/faq/comparing_jack.html#macos-- ando...](http://www.jackaudio.org/faq/comparing_jack.html#macos--andor- windows-centered-systems)

<comment><USER8> Unless I'm missing something, JACK isn't the same as a platform designed to help create new DSP algorithms.

<comment><USER9> Not at all; it only covers a subset of AudioKit's features, such as low- latency access to audio and MIDI, global timekeeping and routing between clients. But its API is sufficiently terse to get started with smaller clients, and you can chain these pieces together with existing applications.

</comment></comment></comment></comment></comment><comment><USER10> This is a fantastic book. As a Software Engineer with little background in DSP, this book has been invaluable in tackling DSP-related projects that have come up at my current job. Really pragmatic approach to the subject matter, which I've found can easily be lost in other texts.

<comment><USER11> What projects?

<comment><USER10> Primarily those involving frequency analysis and smoothing via bandpass filters of time domain (audio) signals

<comment><USER12> Is this even still relevant though? I had a DSP textbook in college back in the 1980s.

<comment><USER5> HELL YES!

<comment><USER13> Hell machine learning is largely a signals problem.

</comment></comment></comment></comment></comment></comment><comment><USER14> This is one of the best technical books I've ever read. It is extremely to read. It focus on building intuition, and then introduces the mathematics that formally describes what you've just learned. Maybe it's just my learning style, but I _love_ this book.

<comment><USER15> I first read this book online over 10 years ago and it has helped me tremendously in understanding the time domain, frequency domain, and Fourier transforms. I can't recommend this free book enough!

</comment></comment><comment><USER16> Wavelet theory was an active area of research in mathematics when this book was first published, but I'm unable to find any mention of the use of wavelets in the book's table of contents.

<comment><USER17> In terms of an introductory DSP guide, wavelets aren't all that fundamental compared to eg filters, impulse/frequency responses, and the DFT, unless you're working specifically with something like image compression.

<comment><USER18> Aren't wavelets analogous to the fourier transform. Wouldn't that mean it would be a fundamental aspect of DSP these days?

<comment><USER17> True, the Fourier transform can be viewed as a specialization of wavelet transforms, so in that sense wavelets are fundamental. Like many mathematical subjects the specialization is treated before some historical generalization in educational contexts (if the generalization is ever discussed, as it doesn't seem to be here). Practically speaking, while wavelet theory is fascinating, you can get plenty of DSP done without knowing it; but not having some understanding of the DFT is crippling.

</comment></comment></comment></comment><comment><USER19> I for one, would like to see a DSP book that focuses less on algorithms but rather on practical problem solving, such as memory bus limitations, red/write coalescing schemes, register optimizations, caching, and other optimization techniques. It's one thing to know how to conduct an FFT transform, quite another when you've been handed the task to do in on, say, a live 4K video stream.

<comment><USER20> This is a bit higher-level than what you're proposing, but a good introduction is the "C++ in the Audio Industry" talk [0] given at CppCon 2015.

[https://www.youtube.com/watch?v=boPEO2auJj4](https://www.youtube.com/watch?v=boPEO2auJj4)

</comment></comment><comment><USER21> DSP is the ghost that haunted me in school. I took it in undergrad and just tanked. Being the stubborn person I am, I tried again in grad school and barely got by.

I couldn't figure out why I struggled so much. It always felt so abstract.

<comment><USER5> Probably because they shoved Z-transforms down your throat instead of focusing on the concepts. Filtering, correlation, convolution, are easier to understand in the discrete domain. It's a shame DSP is not taught prior to classical signals & systems courses. Instead it's taught as an extension to analog signal processing, at least in EE school.

</comment></comment><comment><USER22> Another interesting book I've been reading lately is _Designing Sound_ by Andy Farnell. The initial section is a simplified (i.e. not heavily mathematical, focusing on intuitive understanding) discussion of sound generation and transmission. Practical exercises are done with Pure Data.

[https://mitpress.mit.edu/designingsound/](https://mitpress.mit.edu/designingsound/)

</comment><comment><USER23> I'm sure this book is fantastic but please, please ask someone (maybe some design students, they always need good, live briefs) to design you a better cover if you're writing an open access book like this. It might be the distant graphic designer in me but it helps to have something at least bit prettier to draw people in.

<comment><USER8> If someone needs a cover to draw them in then the chances are the book isn't for them. Books like this require effort from the reader in order to internalise the information contained within the book, even if the cover is prettier that's not going to be enough to provide motivation to get through the book.

<comment><USER24> You could extend that argument about aesthetic design to any application though, but I think that may be framing it in the wrong way. It's (usually) not much extra effort to, say, choose a nice font or use a pleasing colour scheme. I don't think good aesthetic design should be reserved for the masses or recreational media. Good aesthetic design isn't "beneath" anything; I don't see a reason to justify bad aesthetic design in educational or instructional resources.

<comment><USER8> > "Good aesthetic design isn't "beneath" anything"

I didn't say it was, however if I'm picking up a technical book I'm not fussed what the cover looks like, because I'm already motivated to learn the information contained in the book. It's best if that motivation to learn exists before someone picks up a technical book. If it doesn't the chances of getting through the book are slim to none, regardless of what the cover looks like.

</comment></comment></comment></comment><comment><USER25> I printed, then read the first few chapters. After which, I decided to buy the book to finish reading. A fantastic book, I could not recommend it more.

Especially, for those that feel that they missed something in their undergraduate classes on this material. It really explains the concepts well.

</comment><comment><USER26> I think I've known this website even before I joined university (before 2000)

A good reference

</comment><comment><USER27> Whoa I didn't know about Benford's Law! That is wild.

<comment><USER22> Are you familiar with Zipf's Law?

[https://en.wikipedia.org/wiki/Zipf's_law](https://en.wikipedia.org/wiki/Zipf's_law)

</comment></comment><comment><USER28> Can please someone convert it to a pdf?

</comment><comment><USER29> Too bad DSP is dead. No one is going to study it, compressive sensing has underdelivered and now talented EE undergrads are going into Machine Learning.

<comment><USER30> I am sincerly confused buy this comment. Are you implying DSP & machine learning are not complementary? Don't you need and understanding of DSP in order to extract features that can be used to perform machine learning?

<comment><USER29> Not with a neural network...

<comment><USER30> My passion/hobby project is to assembly music procedurally with NN. I really cant see a NN being able to extract much meaningfully without billions of perfectly annotated training sets (i dont think they exisit) The only success i've experienced is to first extract features from the amplitues via FFT. From there i can get information like pitches and feed those features into a NN. If i had a large enough training set i would certainly try feeding in raw amplitudes but i have my doubts.

<comment><USER13> Have you studied chord extraction? I'm hoping modern NNS can help improve this problem.

<comment><USER30> Well i think about it alot but i havent accomplished much with that. But i really like what you are implying though. If you have all the notes played at a point in time that doesnt mean for know for sure which chord should be played. But a NN could be told the context around it and make a chord classification.</comment></comment></comment></comment></comment></comment>


Lessons learned while starting an online business - <AUTHOR> http://www.grassweb.com.au/blog/3-key-lessons-learned-while-starting-an-online-business

<comment><USER2> Interesting and well written. I like that the author broke the process down into what seems like something simple and repeatable. I would be interested to see the specific price breakdown along with actual hours spent on each step.

Not sure why there's so much hate here, I don't know that selling animal silicon bracelets is any less noble than most of the social startups out there. At least the article wasn't about how he resold buyers shipping information and product purchase history to Walmart...

<comment><USER3> The best part about it was predicting demand for something that hasn't plateaued in Australia yet, based on other, established, markets.

This is essentially how Rocket VC etc make their money.

<comment><USER4> can you provide link to Rocket, not familiar..

<comment><USER5> [https://www.rocket-internet.com/](https://www.rocket-internet.com/)

<comment><USER3> thanks - sorry I forgot to include the link.

</comment></comment></comment></comment></comment><comment><USER6> > dealing with suppliers also only a couple of hours all up

I assume the extent of their product design involved shipping a couple of the kits from the USA to the Chinese supplier and saying "make one of these." I know that's not that uncommon, but still... it just feels a bit unsavory to me. And of course opens them up to all kinds of legal liability with the USA company over IP.

<comment><USER7> More likely, they were already being made in China, he just went on alibaba and found them there

</comment></comment><comment><USER8> I did a similar thing a few years ago. Anti snoring mouthpieces like this [0] cost $1-3 on alibaba for 500 moq. They sell for $60-70 branded (just search "anti snoring mouthpiece" and look at adwords results), but every product is the exact same piece of moldable rubber. On ebay, generic versions sell for $10-15. If you buy a branded version, you are getting ripped off in exchange for a nice package, an expensive advertising campaign, and a fancy stick to hold the mouthpiece in the boiling water.

I bought a bunch on alibaba, sold on ebay with a nice template, made a profit ($15 > $3). Easy $1k in a few months. Issue was slow velocity on ebay (~1 sale per day).

I imagine this could be replicated in a lot of verticals. The only work it required was printing out instructions, buying envelopes, and stuffing the mouthpieces into the envelopes when I got a new order.

Here's a great forum thread on doing this. [1]

[0] [http://goo.gl/QiUgIA](http://goo.gl/QiUgIA)

[1] [http://www.wickedfire.com/products-and- merchants/86310-guide...](http://www.wickedfire.com/products-and- merchants/86310-guide-make-money-tangible-products-e-commerce.html)

</comment><comment><USER9> I love stories like this. You can read similar tales in book form in "Four Hour Work Week" with much more detail (including links) on setting up an online business.

</comment><comment><USER10> So what happened with the unsold inventory?

Maybe you could donate it to a children's home or a school or something?

</comment><comment><USER11> To paraphrase:

\- I want to make money selling anything no matter how meaningless, animal silicon bracelets will do, I really don't care.

\- Get a cheap supplier in China and pay a broke student to redesign the box.

\- Order thousands of said items and sell on eBay.

Did I miss anything?

<comment><USER4> To come out profitable selling anything online is a lot harder than it looks. Really don't appreciate this comment on HN.</comment></comment>


I'm a designer who learned Django and launched her first webapp in 6 weeks - <AUTHOR> http://www.limedaring.com/im-a-designer-who-learned-django-and-launched-her-first-webapp-in-6-weeks/ <comment><USER2> The following really surprised me coming from a designer: _Build the web app first, then design it.It was tempting to build the entire interface first but I deliberately ignored the design until I had things 90% working. This got me to constantly work on the code before working on the "fun stuff", plus encouraged me to launch quickly since as soon as the code was finished, all I had to do was quickly "skin" it before getting it live with the assumption that I would be iterating on the design after it launches. Also, if I needed to abandon the project due to some insurmountable code problem, the time wasted wouldn't include the time spent on design._

I'm impressed that the site looks so good, with design being skinned on afterwards. Was it literally just divs, spans, and lists, and then you did the CSS in one fell swoop (well one fell-iterative swoop)?

<comment><AUTHOR> Pretty much correct — I built it in plain HTML/CSS to get it working, then retired to Photoshop to build how it would essentially look (which I took a lot from the existing weddingtype.com design, so that helped with the speed), then threw in CSS at the end. None of the extraneous pages, like "About", were built either until the CSS point, so it wasn't all design.

Thank you!

<comment><USER3> Did you do wireframes or page description diagrams?

I always need something to help me conceptualize what it is that I want to build, more than just a few bullet points or flowcharts. As a designer/developer, I find it easiest to just dive into photoshop and mock a few things up, even if they're not what I would consider final designs. It helps me think about how things will work, and what the user experience will be like.

<comment><AUTHOR> If I'm working on client work, then I always do wireframes first (giving a choice of three different layout/UX concepts). But for WIL, because I was working for myself and under a self imposed time constraint, I went straight from sketches --> PSDs --> CSS.

I'm going to be revamping the profile pages in the near future, and that process will almost certainly include wireframing, since I have more time to do it "right".

</comment></comment></comment></comment><comment><USER4> Congratulations on launching. It is always nice to see startups targeting that tiny niche market "the other half of the world."

Friendly advice from your neighborhood SEO: owning two sites in one vertical gives you cross promotion opportunities, particularly if one is more linkable than the other (gallery is more linkable than commercial offering). That said, I would give a lot of thought to consolidating your offerings into one site with two facets if you can do it without confusing customers.

<comment><AUTHOR> Something I've thought a lot about, and I'm still unsure on what to do. You mean, consolidate WeddingType and WeddingInviteLove together? It might be a good win for SEO, but I worry on two sites, while both focusing on weddings, are targeting two distinctly different groups. That was my reasoning for making WIL it's own domain, rather than putting it under WeddingType.com. Still think that they'd be better consolidated?

</comment></comment><comment><USER5> "Nothing kills a new idea better than taking too much time on it."

I feel like this might be true of very simplistic ideas, I don't think it holds in any generally applicable form. Some ideas take time to fully germinate and flourish. Imagine if the original pyramid builder had put down the first level and 'launched'.

I think what is clear and of general applicability is that its important to launch at the _right_ time. Some ideas are timely and need to be synchronized with what else is going on in the internet space. Some ideas are just ahead of their time and premature launch is a waste. Some ideas come too late. Like bringing out a faster fax machine now vs 10 years ago.

The idea that startups should be a frenzy of quickly thrown together systems only holds because they are built using tools that are solid and robust.

That said, your site looks fabulous, it has all the charm and modern design of tumblr and the right colors, the right voice and just a great looking site.

<comment><USER6> Yes, +1 to the site looking great.

I would also say that quote goes hand in hand with this one: "If you're learning a new language, don't do tutorials verbatim"

So true, there will never be a tutorial for exactly what your working on because if there is, why are you reinventing the wheel? Also if your busy with tutorials, you might spend to much time on them and never accomplish your main objective. By then your will to finish starts to diminish.

</comment></comment><comment><USER7> Tracy is one of the best designers I've ever met and incredibly driven. When we were working on WeddingType (I was her cofounder) and trying to get into YC, she jumped head-first into learning to use Django and Python. I'm _very_ happy to see her latest project, it looks wonderful!

<comment><AUTHOR> Great to have your stamp of approval — I'm sure you remember the WeddingInviteLove idea from my plan of attack back in the day. :)

<comment><USER7> Yup, sure do. Can't wait to see the rest of the plan come out!

</comment></comment></comment><comment><USER8> Fascinating to read from the opposite view! It's my belief that the better someone is at designing the worse they are at programming, and vice versa; I think your designing is fantastic, so I can imagine how hard getting technical must have been. Great job! I also notice some popular themes from HN, such as pivoting and getting MVPs out the door fast in your strategy, so nicely done again!

I think you're thoughts on monetizing are right. However, I'd add a couple suggestions. You fit 9 huge designer samples on the front page. I'd shrink those a bit and add a "Featured Designers" section over the standard designers area on the front page which you can charge a premium for. Next, if the picture samples are small enough like here ([http://www.weddinginvitelove.com/profiles/little-green- chair...](http://www.weddinginvitelove.com/profiles/little-green-chair- studio/)) you have great ad space on the right side of the page. You can geo target visitors location by IP address and charge a premium to local florists, halls, and other wedding related services. Good luck!

<comment><USER9> _It's my belief that the better someone is at designing the worse they are at programming, and vice versa_

It's been my actual experience that good designers -- i.e., the ones who actually know more than just how to use Photoshop -- tend to be quite good at picking up programming when sufficiently motivated.

It's the transition in the other direction (programming -> design) that seems to be the killer.

<comment><USER10> I've seen it go both ways.

Flexible programmers (generalists) have an easy time learning the basics of design an turning out something that will pass snuff. Its not highly creative work for sure, but it will be easily usuable to the standards of Facebook.com, et all.

Flexible designers on the other hand, can do simple coding too when motivated. However, you're not going to see them say coding a Baysian spam filter by hand, or making creative use of minhashing for auto-suggestion.

The problem is with specialists.

</comment></comment></comment><comment><USER11> It's a pretty good thing you did there: improving your weakness in coding and leaving your strong points for later (design). Thumbs up for you. And your a girl, which makes your story even more awesome!

<comment><USER12> I've received a lot of backhanded compliments in my life (i.e. you're pretty for a dark skinned girl) and they are _annoying_ but I don't think this was one of them. To me it read like, "you're awesome, and the fact that you're succeeding despite the obstacles is even more awesome!"

I know the goal is equality, but I don't think there's anything equal about having to ignore parts of your identity in order to be respected and valued. We can acknowledge that the OP is a woman without losing sight of that goal.

<comment><AUTHOR> I've been deliberately avoiding this thread, but I should probably step in and say that I felt no offense at the original comment, and the comment I'm replying to is a great way to explain why.

I _did_ put gender reference in the title — it would garner me more notice since I'm a minority. Therefore, doesn't bother me if someone points out something I was already pointing out. It's feels more ridiculous when people are like, "Shh, don't mention she's female, it'll be construed that you're sexist."

There is a lot of grey area here, but I'm glad the original commenter hasn't been downvoted to oblivion for what seemed a very honest comment.

</comment></comment></comment><comment><USER13> Things like this make me inordinately proud to contribute to open source (in this case Django). Whenever someone launches something I hope that some small part of what I've done made their job of building something cool easier, be it a designer building her first web app, a startup launching their product, or a journalist building a Pulitzer prize winning site.

</comment><comment><AUTHOR> I would love feedback about the product and any interesting ideas about growing/monetizing. Thanks HN! :)

<comment><USER14> First, beautiful design and implementation!

A couple ideas for growing and monetizing:

\- partner with wedding planners to help grow your community of designers and users \- start subtle (prime placement or pro's choice) advertising relationships with magazines, planners, and other communities \- expand to include other aspects of the wedding "package", i.e photographers, florists, dressmakers/designers

<comment><USER14> Another point - I agree that adding customer reviews would be a nice addition, but how about a twist - allow for "trip advisor" style reviews to show off the designer's end product. This niche has a large emotional buying component to it and so a story and pictures would lend itself better than a 5 star system.

</comment></comment></comment><comment><USER15> You hardly hear of things going the other way. "I'm a developer who learned how to make sexy designs and launched something that looks good in 6 weeks." Good job.

<comment><USER16> I feel the reason is that there are many very good tutorials and open source code to teach people how to develop applications. However, there are not many good resources for learning design. There are many tutorials on designing simple buttons or photoshop patterns, but there is a huge gap between those tutorials and creating modern and functional website designs.

<comment><USER17> This forthcoming book ("Design for Hackers") might be helpful: <http://www.kadavy.net/blog/posts/d4h-the-book/>

<comment><USER18> I agree. (thanks :)

</comment></comment></comment></comment><comment><USER19> Congratulations from another fairly new programmer. :)

One UI suggestion: I find it clunky when a site forces me to choose from price ranges that don't overlap (e.g. $5 to 10, $10 to $15, etc.). Generally people making purchasing decisions aren't thinking in terms of those kinds of ranges; they simply have a maximum budget in mind. I think it's better to allow users to specify "under $5", "under $10", etc. so that each successive group includes the previous groups. I realize there may be a case for trying to get customers to purchase the most expensive item they're willing to purchase, but more often than not having to click each range separately just annoys me and I leave the page.

<comment><USER20> I loved the site and completely agree with the "under $5" suggestion. It makes the user's life easier

<comment><AUTHOR> It's "duh" moments like this that I'm glad to have HN feedback. :) Going to get that working in the next few days, thanks so much!

</comment></comment></comment><comment><USER21> Congratulations on your success. The site demonstrates a lot of your characters and it's all looking good :)

My (sincere) question is regarding the help you had. I noticed you credited extensively to a few folks and your boyfriend. Other than Django/Python, there's also server setup (BitCould?)--did you do that yourself as well? Did you work on this full time for 6 weeks or was this an after 9-5 hours project?

I don't mean to pry; just simply want other folks out there who are also self- taught and are working on their own projects to understand the extend of your hard work with great assistance from experts in achieving this great result. In other words, could you explain the "magic" a bit so we can have a deeper understanding of your process?

A lot of time, people gloss over the hard work parts and in some way that perpetuates a misunderstanding which says: "it's easy to create something good." I don't that is the case. Even in The Social Network, Zuck seems to somehow create Facemash or even Facebook in matters of hours while drinking beer. But I digress.

Thank you for sharing.

<comment><AUTHOR> Server setup was through <http://DotCloud.com>, who set it up for me (I joined them before they were officially launched so there were a few bumps in the road that were paved out by DotCloud themselves for me). Server stuff would have been a much bigger issue if I didn't have them.

As for hours, I worked full-time-ish. I don't have a "real" job — my real job was WeddingType until things fell apart for a bit. I started work on WIL but was also doing client projects on the side to pump up my bank account a bit. I have no idea how many hours total I worked on WIL — it was one of those things where you wake up at noon and work until 2am on and off on various projects, which was mostly WIL but a lot of client stuff as well.

Any more specific questions? Please pry away if I missed anything!

<comment><USER22> You should add "...and did this by sleeping 10 hours each day!" to your main title.

Good job in getting this done! Makes me want to tech my wife a thing or two about web-development.

<comment><AUTHOR> Heh — yeah, I meant, start work by noon, but I will admit I'm a stickler for 8+ hours of sleep at all times. I'm a complete zombie when I get less, and my productivity nosedives.

I'm lucky my significant other, @shazow, is doing the same no-job-working-on- projects thing as me, and with him being a developer and me as a designer, we can work well together to launch projects. It's also a great motivator when you have someone to bug you to work whenever they see you on reddit.com. :P

</comment></comment></comment></comment><comment><USER23> "If you're learning a new language, don't do tutorials verbatim — take what they're teaching, apply it to a different product, and you will learn a lot faster."

By the time you're done researching how to apply the concept to a slightly different problem, you've learned much more than the tutorial is covering.

What about going the other way? I'm a developer that is intimidated by any kind of ui design... What do I do?

<comment><AUTHOR> Just do it. I was a shitty designer when I started, and have only gotten better after much, much, much iteration and many different projects. It isn't quick, but it's the only way.

</comment></comment><comment><USER24> I have a product in the works very similar to your original idea with a focus on businesses.

The directory is good, but it limits your potential unless you expand beyond wedding and include more events (Birthdays, Graduations, etc...). By sending visitors to other websites, you are also letting go of some of your revenue.

I decided to try offering templates (the whole set: business card, LH, ENV, etc..) instead and I think LD can do a great job here for Events. You can differentiate yourself by providing great artwork users can edit on their computer (pdf, ai, psd), or they can also pay you to edit documents properly.

Templates are scalable. Write once, distribute many times. You can also change the price as you please and sell them on your site, the designers' site, inkd.com, graphicriver.net and even through other design-related websites.

I would like to see a site that offers templates with a focus on events. They would have me covered from wedding, to baby shower, to birthday celebration, to girls night out. Basically all things fun. I think this is one area where LimeDaring could do very well. Show me where I can get great document design done for my events, but even better actually be the place where I can actually get them.

<comment><AUTHOR> I disagree with you that expanding beyond wedding (at least, on one branded site) is a good idea. Niche domains and sites are going to garner more trust from consumers than a giant website that does everything. Look at tinyprints.com and weddingpaperdivas.com — you can start covering more areas, but splitting the sites into different branded areas will probably do more good than doing everything with one website.

Templates are a WeddingType.com area, and will be explored. :)

</comment></comment><comment><USER25> Great. Is always good for designers to look under the hood of apps then apply function over form. But i am concerned deeply that startup mania is looking for the mantra "Do it first than think how to monetize". It must be opposite. Think about business idea or how to make value for someone than make something. On the other side. I have similar experience with my developers they were so proud of them selves and start to think that i am stupid because i am designer and don't know nothing about programming. After a year dedication what a surprise \- now they don't mess around::)) Programming is not for every designer, but if one can put an effort and be persistent it pays big in t he end.

</comment><comment><USER26> Beautiful site. Congrats on the launch and getting up to speed so quickly with Django and Python. All of the resources you mentioned are excellent for anyone trying to learn Django/Python.

</comment><comment><USER27> I'd like to learn the design side more. How did you come up with the nice color scheme for the site, just gut feeling?

I've heard recommendations of sites like <http://colorschemedesigner.com/> but if I plug in your maroon flush color from behind "Inky Livie's Workshop", I can't get color scheme designer to recommend any of your other colors no matter which setting I choose.

<comment><AUTHOR> The WeddingInviteLove scheme was taken from WeddingType.com (tying the two apps together that way), which I believe was taken from <http://kuler.adobe.com>. No idea where the original color scheme is on there now, but I'm pretty sure I got it from there.

</comment></comment><comment><USER28> If you're single, you should totally go on a date with this guy: <http://news.ycombinator.com/item?id=1891187>.

Great job on the site. I prefer to delude myself into believing that you accomplished this so fast because you already had a viable MVP, but a part of me still thinks that you're superhuman.

<comment><AUTHOR> I think that @shazow might have an issue with that. ;)

By viable MVP, do you mean WeddingType? The two have completely different code, so I wasn't able to redo anything I had before. I essentially had a design framework, but major design is essentially different.

Superhuman? Nice, thanks. :)

</comment></comment><comment><USER29> Paris (France) is listed in the available cities, but there are no results...? (Why list it then?)

<comment><AUTHOR> Because if a designer was signing up for a profile, they use that same list – if Paris wasn't on there, I'd have to add it manually when someone needed to sign up.

It's _not_ the best solution – this is where my programming inability shows through. Going to be revamping that soon, but right now, it's on there so people can sign up with it. :)

<comment><USER29> Oh, ok, but why did you include "Nantes"? It's unlikely Nantes was already there and it just happened that a designer found it?

I don't see why there couldn't be a different list for signup and for search; or the ability to add cities during signup...

<comment><AUTHOR> Because someone emailed me and asked me to add them under that location. :)

Yeah, probably, I just haven't thought it through yet. I'm still not a rockstar programmer — I figured out that I can make a list in the model which would be referenced by the registration, search, and also apply to the property in the profile model. Initially it seems like having the same list in two different locations and slightly different in each seems like a bad idea, but also having random locations on the search list without results is too. Though maybe I could write something in the search view that will remove listings from the form if they don't have any profiles associated with them...

</n00b>

</comment></comment></comment></comment><comment><USER30> Minor, but you should rename the big button on your apps homepage from "Submit" to "Search"

</comment><comment><USER31> Wow. Thanks for posting this! Besides being interesting, it has inspired me to go pick up a personal project I've sort of abandoned! I'm really hoping to get it working enough to do a Show HN post for some feedback. Thanks! :-)

</comment><comment><USER32> My company has two people learning Django right now(including myself). Do you have any recommendations for learning resources? One person is used to working with frameworks, I'm not.

What was your take on the learning curve?

<comment><USER33> Check out djangobook.com its online and free to everyone. It will give you a good understanding of the fundamentals as well as a few advanced topics. Other than that the best advice I could give you is to jump in feet first and don't look back.

</comment></comment><comment><USER34> any insight as to your YC interview? anything you'd do differently? was your lack of hacking experience part of why you were turned down? advice for those who get an interview on how to survive it?

<comment><AUTHOR> We were told that we didn't have a magic bullet for getting customers, though I'd think that lack of complete hacking experience (we were missing a crucial back end component) probably didn't help either.

If you get an interview, just let them ask as many questions as possible. 5 word answers. Don't elaborate unless they ask, keep it simple. Stay calm. :P

</comment></comment><comment><USER35> That's awesome - definitely helps if you've got the help of @shazow lol. Definitely inspired me to stop being such a whiney bitch and just LEARN. Thanks for sharing!

</comment><comment><USER36> Minor.....but in your About page, the "Get listed..." and "Search for...." buttons would look better if they were vertically aligned. I am using Chrome on Windows.

<comment><AUTHOR> Yeah, they were in Firefox when I built that page but I (oddly) forgot to check on other browsers.

I'm actually in Rome right now and my laptop was stolen a week ago (sigh...) so fixing errors like this unfortunately have to wait until I can use @shazow's computer.

Thanks, on my list. :D

</comment></comment><comment><USER37> The site looks amazing. I sent it to my gf who is just finishing up restoring a Kelsey Excelsior letterpress for this exact purpose.

</comment><comment><USER38> how much programming experience did you have before you started?

<comment><AUTHOR> I took classes in Computer Science (in Java) back in college but detested programming and switched to Art & Design, so programming logic wasn't an entirely new concept to me. I also worked for 4.5 years at a startup doing Java, no programming, but had to read a lot of code so it kept me at least in the loop. Right when I started with Django and this project, I did Learn Python the Hard Way, which brought me completely up to speed about logic and all that.

Otherwise, I don't even do Javascript (it's a major weakpoint), and much prefer "visual" duties like HTML/CSS/design.

<comment><USER39> I'm a designer (psd/html/css) going through Python the Hard Way right now, and I'm loving it. What was your main resource for learning Django?

<comment><AUTHOR> Lots of random tutorials on the internet beyond what was mentioned in my blog post. One thing I forgot to mention is that there wasn't one resource that did everything for me — @kennethlove's tutorial got me about 30% of the way, then it was googling for everything else I needed and learning from StackOverflow/my awesome friends/etc. No Django application really did everything for me as well — every one I installed I had to override in some way to make it fit to my product.

So there wasn't "one" resource — it was a lot of scrappy Googling and asking for help for every problem that got in my way.

</comment></comment></comment></comment><comment><USER40> wow!...amazing works, I agree the key is to launch fast...

</comment><comment><USER41> Congratulations girl!

</comment><comment><USER42> way to go!

</comment><comment><USER43> nice work!

</comment><comment><USER44> It's just so inspiring to read this kind of stories. We are kind of doing the same thing, bootstrap from nothing. I wish there is more help out there for people like us.

</comment><comment><USER45> hey, you learned the Django so fast,

did you know any other programming language before learning Django - like PHP,

did you know CSS/html before learning Django

isnt PHP easier to learn ?

<comment><AUTHOR> \- Back in the day I knew Java (when I was a CSC major briefly) but I haven't written anything in it for years. \- Yes, I'd consider myself very strong in HTML/CSS \- So I've heard, but I've also heard it has its major downsides!

</comment></comment><comment><USER46> Good Job !! Very nice design. All the best.</comment>


We Need Developers Who Can Build MVP's Fast, for a Few Hundred Dollars - <AUTHOR> Email me at email@example.com <comment><USER2> Minimal, Viable, Product. Pick One.

<comment><AUTHOR> Minimal.</comment></comment>


Ask HN: How to compose two mapping functions into a third? - <AUTHOR>

I'd like a good way to do the following, where "good" means some balance of simple and efficient.
I have a bunch of mapping functions. Each takes an integer interval [START,END] and a function FN to call once for each integer N in the interval, passing two arguments: N and some value computed from N.
For example, say MAP1 works this way, passing N and N+10 to the function provided:

  (defun map1 (fn start end)
    (loop for n from start to end do
       (funcall fn n (+ n 10))))
 ...so if you gave MAP1 a function that printed out its arguments, you'd get this:

  (map1 (lambda (n val) (format t "~a ~a~%" n val)) 1 3) =>
    1 11
    2 12
    3 13
 Now say MAP2 does the same, only instead of N+10 it passes N^2:

  (defun map2 (fn start end)
    (loop for n from start to end do
       (funcall fn n (expt n 2))))

  (map2 (lambda (n val) (format t "~a ~a~%" n val)) 1 3) =>
    1 1
    2 4
    3 9
 What I want is a way to make a new mapping function MAP3 that works the same way but composes the computations in MAP1 and MAP2. For simplicity, say I just want to add the values computed by MAP1 and MAP2. Then MAP3 should do this:

  (map3 (lambda (n val) (format t "~a ~a~%" n val)) 1 3) =>
    1 12
    2 16
    3 22
 Any nice solutions? The rules are: (1) it's ok to modify the definition of "mapping function", as long as it's simple, and (2) I don't want to have to make a local copy of everything one of these functions does (because the intervals can be large).
Edit: A solution in Common Lisp would be nice, but I'm interested in good approaches to this in general. Perhaps coroutines? <comment><USER2> What you want is basically the compiler optimization called deforestation:

<http://en.wikipedia.org/wiki/Deforestation_>(computer_science)

It's only valid in a pure language, and in a strict language, it has the embarassing side-effect that it can sometimes make non-terminating programs terminate.

<comment><USER3> Just a note: you need to quote the parens in the link like so:

[http://en.wikipedia.org/wiki/Deforestation_%28computer_scien...](http://en.wikipedia.org/wiki/Deforestation_%28computer_science%29)

And no, I don't know why this isn't mentioned in the FAQ or (better yet) the formatting options...

<comment><USER4> actually thanks guys for the great link... going deeper found this paper by Walder (one of the big gurus behind monads).. certainly a great read... was wondering why non-terminating progs would terminate till I read this paper (though thinking about it common sense would explain why)...

[http://homepages.inf.ed.ac.uk/wadler/papers/deforest/defores...](http://homepages.inf.ed.ac.uk/wadler/papers/deforest/deforest.ps)

</comment></comment></comment><comment><AUTHOR> Thanks for the replies. Several have pointed out that the unique portions of map1 and map2 are simple functions that operate on scalars and are easily composable. However, this is not true of the actual problem I'm working on. I chose a toy example so I could describe it briefly. Unfortunately, it's misleadingly simple (rather obviously so, in retrospect).

I guess I'll just add that it's essential that all of these be mapping functions (i.e. they take a functional argument that they call back over some range, passing a value computed using that range).

</comment><comment><USER5> You could use lazy lists like (I think) Haskell uses:

      (define (lazy-range start end) ; create a lazy list that returns the next number in the range [start end]
        (if (= start end) (cons start '())
        (cons start
          (delay (lazy-range (add1 start) end)))))

      (define (lazy-map fn lst) ; map a function to every element of a lazy list, returning a lazy list
        (if (empty? lst) '()
          (cons (fn (car lst))
            (delay (lazy-map fn (force (cdr lst)))))))

      (define map1 (curry lazy-map (curry + 10))) ; equivalent to map1 from your example
      (define map2 (curry lazy-map (lambda (x) (expt x 2)))) ; equivalent to map2 from your example

      (define (lazy-list->list lazy) ; convert a lazy list to a list (for printing, etc)
        (if (empty? lazy) '()
          (cons (car lazy) (lazy-list->list (force (cdr lazy))))))

      (lazy-list->list (map1 (map2 (lazy-range 1 10)))) ; example use

Because the lists are lazy, the maps will only be applied as each value is actually needed, like you described.

<comment><AUTHOR> Yes, I'm beginning to think the simple solution to this boils down to some flavor of coroutines/continuations/laziness - basically, the stuff that Scheme has that CL does not.

The reason I find this interesting is that it's the first real problem I've run into where CL didn't have an easy way to do what I want. There are workarounds, of course. But it's interesting to run into a production (as opposed to academic) problem where the elegant solution isn't simply available.

<comment><USER6> Have you tried (semi-standard) SERIES?

<http://series.sourceforge.net>

"A series is a data structure much like a sequence, with similar kinds of operations. The difference is that in many situations, operations on series may be composed functionally and yet execute iteratively, without the need to construct intermediate series values explicitly. In this manner, series provide both the clarity of a functional programming style and the efficiency of an iterative programming style."

<comment><AUTHOR> No, I haven't tried it. In fact, I didn't know it was available open-source. Do you use it? If so, do you like it?

</comment></comment></comment></comment><comment><USER7> Perhaps it would be simpler to pass the interval modifiers as functional arguments:

      (def mapr (f x y . fs)
        (let r (range x y)
          (map f r
                 (apply map + (map [map _ r] fs)))))

      arc> (mapr (fn (x y) (prn x " " y)) 1 3 [+ _ 10])
      1 11
      2 12
      3 13
      (1 2 3)

      arc> (mapr (fn (x y) (prn x " " y)) 1 3 [expt _ 2])
      1 1
      2 4
      3 9
      (1 2 3)

      arc> (mapr (fn (x y) (prn x " " y)) 1 3 [+ _ 10] [expt _ 2])
      1 12
      2 16
      3 22
     (1 2 3)

</comment><comment><USER3> Abstract out the mapping itself, and then apply the composed transformation from map1 and map2 to it. map1 and map2 don't need to do any looping themselves, just work take an int and return an int.

Think of it in terms of doing all of your transformations in one pass, if that helps.

</comment><comment><USER8> I might be missing something here, but what about this (I didn't even attempt to run this)? Basically, just call map1 and map2 with a single-number interval, and then apply the function from map3 to that result. This avoids making a local copy, but does require a lot of function calls.

(defun compmap (fn mapper1 mapper2 start end) (cond ((= start end) '()) (else (cons (fn start (+ (mapper1 start start) (mapper2 start start))) (compmap fn mapper1 mapper2 (+ start 1) end)))))

</comment><comment><USER9> www.stackoverflow.com

(no offense)

</comment><comment><USER10> map1 and map2 repeat code. abstract this part to a general mapper function:

(loop for n from start to end do

then you will write the content of the first mapping as a function foo and call the general mapper and pass it foo to accomplish the same thing map1 does.

same with map2, except baz instead of foo.

then map3 is easy. call the general mapper again and pass in something like this: (lambda (x) (baz (foo x)))

or actually it looks like you wanted to add the results, so (lambda (x) (+ (baz x) (foo x)))

basically if you define the interesting part of map1 as one individual thing, and ditto for map2, then you can write the combination easily.

i hope that's clear and didn't miss the point somehow.</comment>


S&P 500 adds Netflix to its queue - <AUTHOR> http://news.cnet.com/8301-13577_3-20025279-36.html <comment><USER2> Some companies continue to surprise, year after year. For me, Amazon and Netflix are the 2 that are the most frequently underestimated. I recall a few years ago when Amazon came out with AWS and stock analysts were like, "Why are they bothering with this tech stuff? They are a bookstore. They should focus on the core competencies." The analysts somehow missed that running a web site on a galactic scale was, in fact, part of Amazon's core competence.

Netflix, in its battle against Blockbuster and other media giants, seems to epitomize that quote that is often attributed to Ghandi:

First they ignore you

Then they laugh at you

Then they fight you

Then you win.

</comment><comment><USER3> Now _that_ is a good headline.

</comment><comment><USER4> i do not have the power to downvote, but I don't think this is a deeply interesting article.

<http://ycombinator.com/newswelcome.html>

<comment><USER5> Netflix replacing the NY Times in the S&P 500? I think thats fascinating to know about.

<comment><USER4> Guess I'm just saying I prefer more in depth articles on HN over news blurbs. For instance, if there was eventually a follow up article that explored the changing landscape of business, that would be the kind of article I would like to see on HN; I can read the headlines elsewhere. That said, maybe the thoughtful discussions _about_ headlines here are worthwhile.

<comment><USER6> If that were what you wanted to say, there are much less snarky ways to go about it. Being snarky is the best way to get a marginal comment downvoted five million times.

<comment><USER4> point taken :)</comment></comment></comment></comment></comment>


Why Are Your Co-workers' Salaries a Secret? - <AUTHOR> http://www.slate.com/articles/business/building_a_better_workplace/2014/09/salary_transparency_why_it_s_great_for_small_businesses.single.html

<comment><USER2> Because the employees who have the same political and religious views as the boss are making more money.</comment>