Ask HN: Looking for advice: How do you teach a child computer science? - <AUTHOR> From your own experience(s), what has been useful for teaching a motivated child (e.g. middle-school age) Computer Science? I am looking for advice on how to continue to provide gradually more complex ideas and work and how to present ideas in a consumable and comprehensible manner. How have you taught and/or how have you learned?
I currently think letting the child take Udacity courses, using online resources, and working on problems from Project Euler are a start. While the child is learning on his/her own, there will be one-on-one sessions to elucidate concepts, to introduce new ones, to review old ones, and check work. I think that it is important to show connections from the topic of study to examples in the real world. I am beginning to think that a very useful approach is almost an apprentice model: the tutor and student agree upon a large project to create together with ideas coming from the student and support and guidance coming from the tutor. Once the project is selected, the tutor breaks the project down into actionable items that are learning opportunities (e.g. here would be a good place to practice OOP or a design principle, here would be a good place to examine computational efficiency/complexity, here would be a good place to examine recursion). The smaller pieces will add up and get "harder" until the tutor is autonomous. The tutor does the heavy lifting things that are fundamental and currently beyond the abilities of the student.
* I am not well versed and will be doing my own research into the "how to" of this question. I wanted to ask this here to see what discussion emerges to facilitate what I find and devise.
Thanks! <comment><USER3> I taught my 4.5 year old daughter basic concepts in 10 minutes using scratch jr on a kindle. The animation aspect and ability to edit the characters were a huge appeal to younger children. There is a $5 book you can buy to get you started if you know nothing about scratch jr. There are versions for all of the tablets, so it is quite accessible. The version on the kindle is not super stable, so I would consider exploring the ios version.

We also used a mouse maze toy ( Code and Go Robot Mouse) where she programs the mouse to navigate different mazes that we construct to find the cheese. I switched it up and instead of using cards, I have her physically move the mouse and input each step. My neighbor also purchased this for his 5 year old son after watching my daughter program it. Seeing physical results of your programming is another benefit to this method.

I myself originally started in basic on the mid 80s by typing in different screen games. Eventually you pick up the different constructs and begin to make your own programs.

I was successful with this method for my nephew when he was 12, ten years ago. I had him type in programs from the free Python game book online. He modified them and was pretty fluent in the basics.

My wife has asked me to create a place to share these different resources we use to teach our child. I would be curious to know what resources others use.

<comment><AUTHOR> I think that tangibility and playful feedback are great concepts for making the experience attractive - first superficially (how do you compete with iPad games :)), then deeper as a way to "see" the programming. I've brought in a GUI (Python's turtle [1.]) to help explore programs, computational and mathematical concepts, and to give more feedback and add another dimension.

The introductory programming course for the BS in CS I obtained taught Python and programming/cs concepts and used a robot (IPRE Scribbler 2 + Fluke 2 [2.]).

Did you create a place to share your different resources?

[1.] [https://docs.python.org/3.6/library/turtle.html](https://docs.python.org/3.6/library/turtle.html) (pick your python version)

[2.] [http://www.betterbots.com/](http://www.betterbots.com/)

<comment><USER3> I setup a discourse forum on my site [https://nextlesson.com](https://nextlesson.com) but I have to give my wife and her sister an overview of the platform. They will setup the categories.

</comment></comment></comment><comment><USER4> I'll tell you what I did: I always told them not to go into programming. Now two out of three have a skyrocketing career in startups, and the third is a math teacher who can build websites but doesn't...

<comment><AUTHOR> Interesting. What motivated two of them go into programming? When did they not heed your advice?

<comment><USER4> I think there are two drivers in how you as a parent influence your children: what you say, and what you do. The latter usually is stronger. Compare for example how often parents who smoke themselves, succeed in keeping their children off of it..

Also: I guess there's a SO, that person has just as much an influence as you do (including showing passion for something). And of course there are others too.

I think their main motivation was them seeing my passion. And of course: advice are only words, actions speak louder.

In my opinion setting a strong example is the best you can do. Show them your passion. And accept that you will not - and should not - decide how they'll lead their life.

<comment><AUTHOR> I understand your position: talking/speaking is even a subset "actions", so it makes sense that the actions are more affective and informative - <USER2> directly or over time when your children reach different stages in life and understanding. I do have eureka moments about my parents' behavior at times, but sometimes hearing them say why behaved as they did / acted as they did / setting an example or a construct for me to live in, is very useful. It can be a fun conversation. It's as though you wait until the words will be truly meaningful.

<comment><USER4> Upon re-reading I realize my last sentence did not come out exactly as I wanted to say it. What I really meant was that in the end (when they left the house) I realized that you both have and haven't a lot of influence on your children.

And even though I'm really happy with the way they turned out, and we like patting ourselves on the back for that, it's just as true that things could have gone sideways so easily due to bad luck, circumstances, things not under our control.

And all the good intentions beforehand notwithstanding: people have their faults, have bad days, can be unlucky.

Love, understanding, empathy, and humility make life so much better for everyone.

</comment></comment></comment></comment></comment><comment><USER5> I'm currently following the apprentice model you're describing with my own children. Each of my kids are interested in a particular project of their choosing (personal website, mobile game, robotics). All are very simplistic projects but are fun and unique enough that each are excited about their own project and share progress with each other throughout the week. I spend one hour per kid every weekend 1-on-1 reviewing the progress, making suggestions, etc. Its very rewarding.

<comment><AUTHOR> That's awesome; thanks for sharing! What ages are your children? Did your children first begin learning programming basics (e.g. perhaps the content of a CS 101 course or high school course; a sufficient knowledge base to make progress and to know when to seek help)? How far along in learning were they before beginning work on a larger project?</comment></comment>


Engineers Face Horrible Memories From Deaths on the Tracks - <AUTHOR> http://www.nytimes.com/2011/12/11/us/engineers-face-horrible-memories-from-deaths-on-the-tracks.html?src=recg <comment><USER2> Couldn't trains have some kind of arrow-shaped device on its front that just threw anyone on the lines to the sides?</comment>


Infinit – The easiest way to send files - <AUTHOR> https://infinit.io/

<comment><USER2> Finally! [http://xkcd.com/949/](http://xkcd.com/949/)

I just signed up, and I will find out soon if its any good.</comment>


TCP BBR congestion control comes to GCP - <AUTHOR> https://cloudplatform.googleblog.com/2017/07/TCP-BBR-congestion-control-comes-to-GCP-your-Internet-just-got-faster.html <comment><USER2> A warning if you want to try out BBR yourself:

Due to how BBR relies on pacing in the network stack make sure you do not combine BBR with any other qdisc ("packet scheduler") than FQ. You will get very bad performance, lots of retransmits and in general not very neighbourly behaviour if you use it with any of the other schedulers.

This requirement is going away in Linux 4.13, but until then blindly selecting BBR can be quite damaging.

Easiest way to ensure fq is used: set the net.core.default_qdisc sysctl parameter to "fq" using /etc/sysctl.d/ or /etc/sysctl.conf, then reboot. Check by running "tc qdisc show"

Source: bottom note of [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0f8782ea14974ce992618b55f0c041ef43ed0b78)

<comment><USER3> A related warning: your NIC driver can break the qdisc layer (or at least mislead it).

Prior to 4.12 the VIRTIO Net driver _always_ orphans skbs when they're transmitted (see start_xmit()). This causes the qdisc layer to believe packets are leaving the NIC immediately until you've completely filled your Tx queue (at which point you will now be paced at line rate, but with a queue-depth delay between the kernel's view of when the packet hit the wire and when the packet actually hit the wire).

After looking at the code -- even in 4.12 enabling Tx NAPI still seems to be a module parameter.

(I'm not sure which other drivers might have the same issue -- my day job is limited to a handful of devices, and mostly on the device side rather than the driver side)

<comment><USER2> That is good to know. I just deployed BBR on some pilot virtio backed VMs yesterday and I missed this.

As far as I can tell the Actual Hardware I'm running my other BBR pilots on are doing the right thing.

File under: BBR - still a gotcha or two ;-)

</comment></comment></comment><comment><USER4> BBR is, in my opinion, one of the most significant improvements to networking in recent years.

I've started using it on a couple of long-range routes (e.g. Switzerland to Ireland, Frankfurt to Singapore) with Gigabit servers on the Internet, and it turns unreliable ~200 Mbit/s transfer rates into reliable > 850 Mbit/s.

And all that's needed is `sudo modprobe tcp_bbr && sysctl -w net.ipv4.tcp_congestion_control=bbr`.

Great job really!

<comment><USER5> Dumb question: the remote side need to enable it too, right?

<comment><USER6> Doesnt seem like it: [https://news.ycombinator.com/item?id=14814206](https://news.ycombinator.com/item?id=14814206)

</comment></comment></comment><comment><USER7> Today's Internet is not moving data as well as it should. TCP sends data at lower bandwidth because the 1980s-era algorithm assumes that packet loss means network congestion.

BBR models the network to send as fast as the available bandwidth and is 2700x faster than previous TCPs on a 10Gb, 100ms link with 1% loss. BBR powers google.com, youtube.com, and apps using Google Cloud Platform services.

Unlike prior TCP advancements like TCP QUIC which required a special browser, BBR is a server-side only improvement. Meaning you may already be benefiting from BBR without knowing it. BBR requires end users to make no improvements. This is especially relevant in the developing world which use older mobile platforms and have limited bandwidth.

<comment><USER8> There have been a lot of modifications to TCP since the 1980's to allow it to push a lot more bandwidth on faster networks. Most notably perhaps window scaling.

How does BBR avoid killing other streams that happen to share the same pipe? It seems it would consume more than its fair share if the other TCP streams are using older algorithms.

p.s. presumably if you get 1% loss with no congestion there's wireless/mobile involved?

<comment><USER9> BBR uses mode switching to learn what the latency is and what its fair share bandwidth is.

<comment><USER8> Do you know if any experimental results of sharing with the other congestion avoidance flavors are available somewhere? Historically this requirement for backwards compatibility has been a big problem. Maybe YouTube is getting better but other web traffic is getting hosed?

<comment><USER10> BBR yields to CUBIC or Reno somewhat. [https://www.ietf.org/proceedings/97/slides/slides-97-iccrg-b...](https://www.ietf.org/proceedings/97/slides/slides-97-iccrg- bbr-congestion-control-02.pdf) slide 23 [https://www.ietf.org/proceedings/98/slides/slides-98-iccrg-a...](https://www.ietf.org/proceedings/98/slides/slides-98-iccrg- an-update-on-bbr-congestion-control-00.pdf) slides 16-18

<comment><USER8> Cool. Thanks! I worked on a UDP congestion avoidance algorithm that had bandwidth/latency feedback built into the protocol and had to deal with some of the same issues.

</comment></comment></comment></comment></comment></comment><comment><USER11> here is the acm-queue article/paper on the same thing:

[https://cacm.acm.org/magazines/2017/2/212428-bbr- congestion-...](https://cacm.acm.org/magazines/2017/2/212428-bbr-congestion- based-congestion-control/fulltext)

edit-01:

some more sources of information

ietf drafts on the same topic available here:

[https://tools.ietf.org/html/draft-cardwell-iccrg-bbr- congest...](https://tools.ietf.org/html/draft-cardwell-iccrg-bbr-congestion- control-00)

[https://tools.ietf.org/html/draft-cheng-iccrg-delivery- rate-...](https://tools.ietf.org/html/draft-cheng-iccrg-delivery-rate- estimation-00)

and a blog post giving a detailed history of various congestion control mechanisms, and bbr as well:

[https://blog.apnic.net/2017/05/09/bbr-new-kid-tcp- block/](https://blog.apnic.net/2017/05/09/bbr-new-kid-tcp-block/)

<comment><USER12> Link is broken. Is it this?

[http://queue.acm.org/detail.cfm?id=3022184](http://queue.acm.org/detail.cfm?id=3022184)

or this

[https://cacm.acm.org/magazines/2017/2/212428-bbr- congestion-...](https://cacm.acm.org/magazines/2017/2/212428-bbr-congestion- based-congestion-control/fulltext)

<comment><USER11> thanks for the heads up, it is the latter. i have updated the info.

</comment></comment></comment><comment><USER13> Looks like it's being tested inside Netflix on FreeBSD: [https://wiki.freebsd.org/TransportProtocols/26Jan17](https://wiki.freebsd.org/TransportProtocols/26Jan17)

<comment><USER14> Nice. Came into this thread thinking "hmm I wish someone ported this to FreeBSD"… of course it's Netflix :D

</comment></comment><comment><USER15> For those interested in a simple guide on how to try it on your servers, this is the most to the point I've found.

[https://www.admon.org/networking/update-linux-kernel-to- enab...](https://www.admon.org/networking/update-linux-kernel-to-enable- google-tcp_bbr/)

<comment><USER16> CentOS 7 only.

</comment></comment><comment><USER17> As a Chinese whose international bandwidth has been abysmal, BBR has been a godsend. The difference in speed when I turn to BBR on my shadowsocks server is astronomical.

</comment><comment><USER18> > When a GCP customer uses Google Cloud Load Balancing or Google Cloud CDN to > serve and load balance traffic for their website, the content is sent to > users' browsers using BBR. This means faster webpage downloads for users of > your site.

This makes it sound like BRR is only available for Google-managed services on GCP, is that correct? Can I use BRR on GCE servers (which can install the kernel module)? Seems like an odd thing to leave out.

<comment><USER19> Yes, you can use BBR inside a VM in GCE. Here is a quick-start guide if you are interested in doing that:

[https://github.com/google/bbr/blob/master/Documentation/bbr-...](https://github.com/google/bbr/blob/master/Documentation/bbr- quick-start.md)

</comment></comment><comment><USER20> Over the weekend I setup one of the new consumer mesh products that's available, the Linksys Velop, with 9 nodes covering a good sized area between two homes.

One thing I've been noticing though is that there is considerable latency/packet loss at the moment (there is only one wired backhaul at the primary node and all of the other nodes are connected to each other wirelessly).

I've been running Ping Plotter against to all of the nodes and there seems to be considerable packet loss (a few percent) and spikes in latency (average for the two closest nodes to my laptop is about 15 ms, the middle ones out a ways are about 30-40 ms, and the furthest ones are at about 60 ms) but the spikes can be in the hundreds or even thousands of ms.

The area covered is about a 500 ft by 120 ft rectangle more or less (with my house on the bottom left of that rectangle and the other home on the bottom right of that rectangle).

My question would be...would this BBR algorithm help in some way to reduce the latency/packet loss in a situation like this? Or does it only apply for these other situations that Google would normally be encountering/dealing with?

Thanks for the input!

<comment><USER21> BBR solves a different problem. The problem you have is wifi being terrible. There's massive buffering in the firmware which you can't get rid of.

<comment><USER20> In this case do you mean the firmware being provided by Linksys for the hardware, or an additional layer of firmware embedded into the wireless hardware in some way? It actually looks like for the Velop they are using some form of OpenWRT it looks like from what I can see when I pull up the sysinfo page in the router so it makes it seem like they would have the ability to customize/tweak the buffering settings in some way (I took Georgia Tech's Networking class about two years ago now, but it was pretty neat to learn about the buffer bloat problem there in that course and how they were mentioning bigger buffers weren't necessarily better for performance).

<comment><USER22> The radio's firmware, not the Linux OS running on the application processor. All 802.11ac radios have closed-source firmware even when there are open- source Linux drivers to communicate with the NIC. The 802.11n chipsets by Atheros didn't use proprietary firmware and exposed a fairly low level interface to the host system. This led to the open-source ath9k Linux driver being the platform of choice for people trying to fix WiFi in general or improve the Linux WiFi stack in specific.

</comment></comment></comment></comment><comment><USER23> If you have significant page load delays with Wordpress sites, it's probably not a TCP-level problem.

<comment><USER24> Ha, as soon as I saw this I was hoping you were going to chime in!

May I ask if you have any thoughts on BBR? In what ways is networking different from when you published yours that might warrant (or not!) another congestion control algorithm?

</comment></comment><comment><USER25> So, what would be required to use this outside of GCP? All documentation on BBR only discusses GCP.

<comment><USER26> 1\. install 4.10+ kernel

2\. echo "bbr" > /proc/sys/net/ipv4/tcp_congestion_control

3\. save it to sysctl.conf

4\. restart and you are done.

<comment><USER27> > echo "bbr" > /proc/sys/net/ipv4/tcp_congestion_control

[...]

> restart and you are done.

You only need one or the other. Also, you could just reload your sysctl.conf instead.

</comment></comment></comment><comment><USER28> I'd much prefer to see GCP add IPv6 support, which is sorely lacking.

<comment><USER29> Have a look at [https://cloud.google.com/compute/docs/load- balancing/ipv6](https://cloud.google.com/compute/docs/load-balancing/ipv6).

(Disclaimer: I work on GCP, albeit not on networking stuff.)

<comment><USER30> That's not helpful for a wide range of use cases. The most recent one I ran into was running an irc server that would be compatible with the matrix irc bridge, see [https://github.com/matrix-org/matrix-appservice- irc/issues/2...](https://github.com/matrix-org/matrix-appservice- irc/issues/208)

</comment></comment></comment><comment><USER31> This is great. Now please solve the head of line blocking for time critical data.

<comment><USER32> That's solved in HTTP2 and other connection multiplexing protocols.

<comment><USER6> HTTP/2 runs on top of a single TCP connection so it's still vulnerable to TCP ordering requirements.

TCP will probably never have a mainstream solution to this, better to switch to UDP or QUIC instead.

<comment><USER5> While I agree QUIC is a better long term solution[1], saying TCP ordering affects HTTP/2 is misleading. It is true, but it is quite easy to avoid bad behavior by using TCP_NOTSENT_LOWAT (also created by Google), to avoid HoL blocking. For example, SPDY had a similar problem which was ameliorated by only sending when the water mark is low enough:

[https://insouciant.org/tech/prioritization-only-works- when-t...](https://insouciant.org/tech/prioritization-only-works-when-theres- pending-data-to-prioritize/)

[1] [https://news.ycombinator.com/item?id=12282898](https://news.ycombinator.com/item?id=12282898)

</comment></comment></comment></comment><comment><USER33> Sounds like it would be great for wireless ad hoc networks.

</comment><comment><USER34> A smack in the face of net neutrality, because the protocol hogs the bandwidth at expense of all other traffic.

It's like putting a tank on a standard regulation road, and boasting about how well it performs in the standard city congestion environment, because you simply can roll over other cars and trucks and run the red lights.

Beauty of TCP Classic (i.e. Reno) is an ability to scale by fairly sharing bandwidth among flows. When one party is aggressively trying to utilize as much of the bandwidth as possible, it is no longer fair, and will simply force netadmins to classify Google's protocols into more aggressive queues in private, and supply fuel against net neutrality in public.

<comment><USER6> That's a stretch - how do you know this? Especially since BRR has already been live on google/youtube for a while?

This thread has some comments about it: [https://news.ycombinator.com/item?id=14814616](https://news.ycombinator.com/item?id=14814616)

The kernel commit also has a note: [https://github.com/torvalds/linux/commit/0f8782ea14974ce9926...](https://github.com/torvalds/linux/commit/0f8782ea14974ce992618b55f0c041ef43ed0b78#diff-f0cecf8927a4a24ebb8e8a4fe2983704)

"It can operate over LAN, WAN, cellular, wifi, or cable modem links. It can coexist with flows that use loss-based congestion control, and can operate with shallow buffers, deep buffers, bufferbloat, policers, or AQM schemes that do not provide a delay signal."</comment></comment>


Distributed storage system (Dynamo like) for educational purpose? - <AUTHOR>

I am a masters student and for my master's thesis. I was always interested in distributed computing, especially, when I learned about Dynamo, Bigtable etc. I decided to jump into it.
When I started, I found there are many research papers, production level apps (Voldemort, Cassandra etc) but the initial learning curve was very steep.
So, I decided to write yet another Dynamo like clone but, with simpler design, more pluggable architecture (to try out various modules, this way, it won't be restricted to Dynamo features but other algos/features can be plugged in), based on Java.
What do you think about this? Your comments are welcome. Any improvements, additions, changes you suggest? <comment><USER2> I'd be thrilled if instead you would contribute on the GlusterFS project, which provides a FUSE layer to a distributed file system with no single source of failure.

It has plugin ('translators') to enable HA, NUMFA, etc.

It's a very interesting project, but unfortunately hasn't seen as much press lately.

<comment><AUTHOR> Thanks for the reply, but I have already given the project proposal, so I need to work on this. Any suggestions on it?</comment></comment>


Download mp3s from Spotifys webapp - <AUTHOR>

Wow, I can download mp3s from Spotify's webapp.
Open your browsers Console, goto _Network _ and filter on _XHR_. When playing a song, the url will be exposed as _"8bfe132f45b33640f499bfd91eb5a5c7f8e35552"_ or something simular. Right-click on the url and open in new tab.
The song will start playing in that tab, just hit CTRL+S or Command+S and save it to your drive.
What did Spotify think of? <comment><USER2> Follow this link to get access to Spotify's webapp:

[https://apps.facebook.com/get- spotify/?fb_source=notificatio...](https://apps.facebook.com/get- spotify/?fb_source=notification&fb_ref=cazzette_gb&ref=notif)

</comment><comment><USER3> Have you flagged this back to Spotify? It might be a good idea, I can't see them being super happy to leave a bug of that size floating wild.

<comment><AUTHOR> I have and they know about it. Don't think it will be fixed...

<comment><USER3> That seems like a potential show stopper in convincing labels all is well.

<comment><AUTHOR> I've learned that Spotify convinced the labels that it's OK... I think they will change their mind after someone farms the mp3s.

<comment><USER3> Super maximum facepalm! That'll crap all over their business when it happens, hopefully they'll be smart enough to sort it out before taking it out of beta.

</comment></comment></comment></comment></comment><comment><USER4> does it still work? Spotify says :access denied

<comment><AUTHOR> You have to start download before the browser has finished loading the mp3.

<comment><USER4> yep, works :0</comment></comment></comment>


The Best Tech Ad I've Seen Lately - <AUTHOR> http://samuelstern.wordpress.com/2012/11/25/the-best-tech-ad-ive-seen-lately/

<comment><USER2> The only takeaway I have from this post is the continuing idiocy of the Apple vs Android vs Whatever "battle", as if it's some kind of exclusive choice.

"For the record, I'm a huge Android fan so it takes a lot for me to write a blog post about something impressive by Apple."

I own an iPhone 4S and a Nexus 7. They're both great devices. I've seen Windows Phone in action and it looks cool; Mozilla's B2G stuff is looking great and there are many different areas in which mobile OS providers can differentiate and be inspired by their competitors. This sort of religious war helps no-one and impresses no-one. It's the modern day equivalent of writing "M$" instead of "Microsoft" and we should all know better.

Get over yourself.

<comment><USER3> You chose to focus on one aspect of a blog post that gives the reader a little bit of context and background to the author, but otherwise very positively outlines an advertisement that in his opinion executed everything it set out to, and then publicly decried him for _barely_ doing everything your commentary _actually_ does. I found myself nodding in agreement with all he said about the ad, and he said it well.

I think it's _you_ that stands to get over one's self.

<comment><USER2> It wasn't really directed at the author, it was more a general comment on this type of thing. So for that I apologise to the author.

</comment></comment></comment><comment><USER4> I think this is pretty clever.

If you want to check out a few more subtle, minimalist ads (some award winning) from the likes of Lego and Kit Kat, check out the link

I really like the WWF and Orbit ads:

[http://www.buzzfeed.com/copyranter/the-nine-best- minimalist-...](http://www.buzzfeed.com/copyranter/the-nine-best-minimalist- print-ads-in-the-world)

<comment><USER4> Alternative, you can see some of the worst here (some also award winning)

[http://copyranter.blogspot.co.uk/2011/12/worst-8-print- ads-o...](http://copyranter.blogspot.co.uk/2011/12/worst-8-print-ads- of-2011.html)

</comment></comment><comment><USER5> I find it amusing that as I was clicking on this story I was thinking back to the last ad I really remembered and immediately thought of all the pretentious ipad mini ads I've seen that made me not want to ever buy one. I believe such a polarized response probably drives more sales than wishy washy wide appeal ads.

</comment><comment><USER6> I first glance I thought he means the cover of the magazine and how it resembles the tiles in WP 8. It might have been a brilliant ad for MS as well.

<comment><AUTHOR> Apparently MSFT thinks magazine covers are a great way to show off the new Windows 8 UI:

[http://adage.com/article/media/windows-8-push- arrives-14-con...](http://adage.com/article/media/windows-8-push- arrives-14-conde-nast- covers/238356/?utm_source=daily_email&utm_medium=newsletter&utm_campaign=adage)

<comment><USER6> It's just a little sad to see how they did it, when they could have done it so much better. :/

</comment></comment></comment><comment><USER7> I dislike the aesthetic of the ad. The edge of the iPad is aligned _exactly_ to the edge of the magazine. At first glance, I thought this was some sort of printing error: it look egregious. I like the asymmetry, but there is some sort of mottled grey texture behind the majority of the page which is grating. I appreciate that the cover depicted on the device is identical to that of the actual magazine. As for the exaltation due to the 'feat' that it "immediately displays how I can use the device in real life," I don't believe that that is unique to the ad. Most advertisements show how the product can be used. That sort of how ads work. There's very little value in showing a product that isn't functioning or showing a feature or facet that the product doesn't have.

It's a passable ad, nothing more.

<comment><USER8> _The edge of the iPad is aligned exactly to the edge of the magazine._

This framing suggests that the iPad is to scale and isn't scaled down (as it might be assumed to be if it were centered). All of the blank space is also supposed to give you a sense of how small it is relative to the magazine.

<comment><USER9> When I first turned over my copy of the issue, I was holding the magazine by the corner exactly as one would hold a portrait iPad mini. In addition to showing the actual size, I think having it aligned with the edge of the magazine is meant to give the impression of holding an iPad.

Anecdotally, I thought the effect was neat, and spent a few more seconds than I otherwise would have on it.

<comment><AUTHOR> That's interesting, I bet that's why they put it on the edge. I never thought of that because I was reading the magazine on a table.

</comment></comment></comment></comment><comment><AUTHOR> I saw this ad in TIME this weekend and I thought it was awesome. I'm not an expert on advertising by any stretch, any professionals like it as much as I do?

<comment><USER10> I love subtle, ingenious ads but I get the impression they may not be as effective in terms of conversions as traditional image projection type ads (ie showing the latest bmw model or an attractive model wearing a particular clothing line)

<comment><USER11> Why? Every single person holding that magazine clearly likes Time, so the image resonates. Whereas a nice car or model is hit or miss.

Plus, more people are going to buy an iPad than a new BMW.

[Edit: Best of both worlds: <https://www.youtube.com/watch?v=640v8yBcXg8>]

</comment></comment></comment><comment><USER12> Smart! The ability to complement the ad within something that you're already interested in.

<comment><USER13> And an eye-catching simplicity.

</comment></comment><comment><USER14> I'm not convinced that it's the best ad that the author has seen lately. It might be clever but does it command attention?

<comment><USER15> Yes.

</comment></comment><comment><USER16> This article was spoiled, a bit, by the "1 Tip of a Flat Belly" ad that showed up at the bottom. Maybe it's that I use an ad blocker on my main computer, but I'm not accustomed to blocking ads with my mind. But it sure would be nice to see good ads for a change.

<comment><AUTHOR> I use an ad blocker, I didn't even realize I had ads on my blog...

</comment></comment><comment><USER17> You left out one other thing. The battle lines being drawn have a lot to do with the screen proportions. iPads are notoriously not widescreen devices and here Apple is showing exactly why.

</comment><comment><USER18> It was done by Chiat\Day or as they are known on Campus "Media Arts Labs"

</comment><comment><USER19> the most recent New Yorker also had this, I thought it was pretty clever.</comment>


Show HN: New Facebook Newsfeed Storefront - <AUTHOR> https://zoopshop.com/

<comment><USER2> How do payments work?

</comment><comment><AUTHOR> Looking for feedback!</comment>


Why Zuckerberg Has No Desire To Build A Facebook Phone - <AUTHOR> http://www.forbes.com/sites/georgeanders/2013/01/30/why-zuckerberg-has-no-desire-to-build-a-facebook-phone/

<comment><USER2> Look, this is being written about everywhere, and I think the reason a Facebook phone won't exist is really really simple; hardware is a tough business. Hardware is low-margin, capital intensive, and not many succeed.

There is very little reason for a company like FB, which is running a super high margin software business needs to get into the hardware game. Absolutely no reason. IF they wanted to get into hardware, they would do so through a proxy like a mobile OS or an Android fork OR through branding partnerships with existing hardware manufacturers (branding on Touch-wiz or Sense).

<comment><USER3> Facebook just needs to sell it's identity presence as a service to handset manufacturers.

If you can have your phonebook, and also lookup on Facebook all while in your phone.app - that'd be useful.

<comment><USER4> That already exists, no? Pretty sure my Facebook app on Android asked me for sync options when I first signed in.

<comment><USER2> I can confirm that this exists in iOS 6 also.

</comment></comment></comment></comment><comment><USER5> Business Insiders would be sad to read this. It might end their endless link baiting on this topic.

<comment><USER6> Here Is Why Facebook Will Build a Phone This Summer, And It Will Be Huge</comment></comment>


I took a $200 ASUS ZenFone 2 to Yellowstone – and took some awful photos - <AUTHOR> http://imgur.com/a/SmVnM <comment><USER2> I'd blame the photographer rather than the phone here. Learn to use lighting and exposure settings properly. Experiment. Take several shots of the same place with different settings until you get it right. Learn picture composition. The first and the last picture seem good so it's not the phone.

</comment><comment><USER3> too many bits, did not view</comment>


The SNOBOL4 Programming Language [pdf] - <AUTHOR> http://raganwald.com/assets/snobol-green-book.pdf <comment><USER2> Wow, that brings back memories. I wrote some programs in SNOBOL4 when I was a kid, and remember that very book.

The pattern matching features in the language were very advanced for their time (1970).

<comment><USER3> Raganwald here.

SNOBOL4 was my first real programming language, thanks to a particular set of circumstances back in 1971 or thereabouts:

The University of Toronto had a High-Speed Job Stream intended mostly for undergraduates to run programs. It was in a fairly big space mostly occupied by students, keypunch machines, a few verifiers, and tables.

To run a program, you wrote your program on punch cards with a keypunch machine, then slapped a coloured header card at the front. There were cards for ALGOL, LISP, WATFIV, PL/1, and SNOBOL (amongst others).

Then you'd get in line for the punch card reader. When you got to the front of the line, you'd add your job to the back of the hopper, with other people's jobs in front of yours.

Every so often, the machine would engorge itself on a bunch of jobs, queueing them up internally. As it ran the jobs, it would print the results on a massive and noisy line printer.

So after queueing your job up, you'd go hang around the line printer waiting for your output. If there was an error... It would be back to the keypunch and go stand in line again.

The room was unlocked and mostly unsupervised, so as a kid I would ride my bike over and play with FORTRAN. I had no books on the subject, so I'd either ask for help or go to the library to learn.

It was fun, but mostly it was just something to do for a bored kid. Then, one day, I found a copy of the "green book" somebody else had left behind.

I picked it up, started reading, and was hooked. I am embarrassed to say that I tucked it into my bag and took it home, when I really should have left it there or taken it to "lost and found."

Somewhere out there is a UofT grad who had to buy another very expensive textbook. I'm sorry, it was me.

Anyhow, the book captivated me. It was more than just a textbook or instruction manual: It sold the reader on a new way of thinking about programming, pattern-matching.

I felt the hugest "Aha" moment when I felt my brain literally unload the old program for writing programs, and start constructing a new program for writing programs.

I've been chasing that high ever since.

<comment><USER2> Thanks for sharing your story! I also got started in the days of punched cards and line printers. I had used FORTRAN and BASIC before seeing SNOBOL, so SNOBOL greatly expanded my view of what kind of things a programming language could do to help a programmer do complex and interesting things.

</comment></comment></comment><comment><USER4> I learned some roughly thirty years ago. I never used it outside of class, but it made picking up AWK and the Perl a lot easier.

<comment><AUTHOR> I had a similar experience, except it was 40 years ago! I'm getting interested in it again, there's a SPITBOL version that's supported on modern system and it has relevant use cases, even today.

</comment></comment><comment><USER5> I still have a snobol shirt somewhere...</comment>


New York City Police Amassing a Trove of Cellphone Logs - <AUTHOR> http://www.nytimes.com/2012/11/27/nyregion/new-york-city-police-amassing-a-trove-of-cellphone-logs.html?hpw

<comment><USER2> > Police officials declined to say how many phone records are contained in the > database, or how often they might have led to arrests.

> Police officials would not say if detectives had used the call records of > any cellphone theft victims in the course of investigating other crimes.

Why can police refuse to answer these questions? This information should be publicly available by default. There is absolutely no risk to any criminal investigations by releasing this info.

This is one of my biggest problems with government agencies. Laws should require them to be open and transparent by default. They should have to take additional steps to make something not available to the public and should have to justify this action.

</comment><comment><USER3> I live & work in NY. NYC is a police state. You as a citizen have no rights until you retain a lawyer and you can be searched without probable cause (via stop & frisk). The police along with TSA (in some cases) setup subway checkpoints. If they pull you out for a bag search and you refuse, you cannot enter the subway. If you do, you will be arrested. There is no law on the books that says they can do this, but it is their policy and you must obey. The data they collect will be used by other government agencies. They will also collect facial data as well.

<comment><USER4> On balance, how do you feel about this compared to say, the 1970s when muggings in NYC were so commonplace they were almost expected. NYC has transformed from at least a somewhat unsafe city to one of the safest big cities in the world. Is it worth the price?

<comment><USER5> _Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety._

I normally hate people who just throw quotes up to answer a question, but this one seemed appropriate.

I will never live in NYC (though I do travel upstate quite a bit). There are plenty of large cities in the world that are safe or safer without also being police states.

<comment><USER6> Except it's not "a little temporary safety" or "essential liberties".

First, crime has come down by huge amounts in NYC. Some crimes, like murder are 1/4th or 1/5th of the peaks in the 1980's. For decades now, we've seen a huge increase in safety in NYC.

Second, I question whether most of the police actions are giving up _essential_ liberties. I can see how some might think so, but I can see how many would not.

<comment><USER7> > First, crime has come down by huge amounts in NYC.

As many other commenters have mentioned, the decrease in crime is not related to the removal of civil liberties. The crime decreases occurred prior to the implementation of many of these policies.

> Second, I question whether most of the police actions are giving up > essential liberties. I can see how some might think so, but I can see how > many would not.

They are infringing on constitutional rights. I don't see how those rights could be seen as anything but essential.

</comment></comment></comment></comment></comment><comment><USER8> A few months ago here in St Louis, a woman was murdered in broad daylight in an armed robbery attempt.

Police started looking at other recent street robberies reported in the area. It turned out that a week before the murder, a person was robbed at gunpoint just a few blocks from where the murder took place, and their cellphone was taken. After that theft, call records for that stolen phone started showing showed a woman's phone number.

Upon tracking down that number, they got to a woman who said her boyfriend was involved in the murder. That led to two men being arrested for this and at least one other previously unsolved armed robbery.

[http://www.stltoday.com/news/local/metro/cellphone-played- bi...](http://www.stltoday.com/news/local/metro/cellphone-played-big-role-in- arrest-of-two-in-central/article_25de4910-ed40-11e1-a428-0019bb30f31a.html)

However, the NYT article says it can take weeks for a subpoena to be issued and acted upon by the phone company. So I question whether a database like that would really have even been helpful in a situation like this, since they'd need the data a lot sooner after an incident.

Seems to me that this might be more of an attempt to mine phone records on a larger scale and look for drug networks or other emerging patterns.

<comment><USER9> If everybody was forced to have the mic and camera on all the time on their cellphone, I bet the police could catch even more criminals. That is obviously a strawman, but there is a point: there will always be a tradeoff between privacy and safety. I'd rather not give up my privacy to combat what are essentially black swan events.

With my base opinion out of the way, I will say I would be comfortable with the kind of tracking you mentioned if there were strong protections on what the police could do with that data. For instance, the phone's owner should be protected from prosecution in similar ways to evidence gained from an illegal search. This data should also have a maximum lifetime. Finally, it should be clear when the records are being requested so the owner of the number can turn it off if they move the number to a new phone.

Unfortunately, I can't imagine these kinds of laws being passed, so, until they do, I'll stick with my default of believing the government should require more effort, not less, to snoop in my life.

</comment></comment><comment><USER10> "When a cellphone is reported stolen in New York, the Police Department routinely _subpoenas_ the phone's call records, from the day of the theft onward. [...]

But in the process, the Police Department has quietly amassed a trove of telephone logs, _all obtained without a court order_ , that could conceivably be used for any investigative purpose."

Isn't a subpoena a court order?

</comment><comment><USER11> At first, I didn't feel so bad about the police actions described in this article. I've had a phone stolen right in front of me in broad daylight, and it sure would have been nice if the cops had nailed the guy. However, tracking calls would have never led to the guy who stole my phone. I presume my thief had the phone flashed within minutes.

Wouldn't it make more sense to track device stolen S/N or MEIDs, like they do in Europe? I guess that would involve some sort of scary IT investment.

<comment><USER12> Surely there's a form of personal insurance that would get you a new phone in less time than it would take for the police to retrieve yours (if they ever do).

<comment><USER11> Actually, i had insurance. Took about 24 hours to get a replacement on my doorstep.

</comment></comment></comment><comment><USER4> A question arrising from this is, is this database of cell phone records also provided to any federal agencies, FBI, etc? My guess would be that it is, or is easily available to them on request.

</comment><comment><USER13> How many of the same records wind up at AMDOCS/Mossad?</comment>


Ask HN: How can I learn and practice construction? - <AUTHOR>

I'm 26 years old engineer and I want to learn and practice how to build my own house. I live in the Bay Area, and wanna know what is the best way to start.<p>Ideas and recommendations are more than welcome. Thanks. <comment><USER2> I can't find the link right now, but someone recommended this book in another thread:

[http://www.amazon.com/Renovation-4th-Edition-Completely- Revi...](http://www.amazon.com/Renovation-4th-Edition-Completely- Revised/dp/1600854923)</comment>


Integration Is The Killer App - <AUTHOR> http://startupmeme.com/2007/04/29/integration-is-the-killer-app/ <comment><USER2> You know I think that this means that people should probably think twice before basing a startup on a feature or technology that Google could easily implement. By implement, I mean either have their engineers hack out, or buy. To assume that they will buy it from you is foolish by the way. I'm looking at you two GUBA and Revver, but I may as well be talking about every web 2.0 startup I've had the misfortune of having to look at in the past 12 months.

Are there ANY original thinkers out there? Where are you at? Money is waiting for you.

I would like, for once, for three kids to come up to me and say that they have World of Warcraft or Second Life running with full 3D hardware acceleration inside of the browser. WITHOUT A GAD BLESSED PLUGIN OR SECURITY WARNING!!! This would be something compelling that is difficult to implement. It is also something that would take people more than 2 weeks to duplicate.

Think of it this way, how many people get rich anymore by writing say, IDE's? None, because we all use what Microsoft, Adobe, or Eclipse gives us, for FREE? The same thing will happen very soon with social networking, it will be included with your hosting. Probably by leveraging open source. So everyone will be able to start a story telling site with photo uploading for illustration and social features. However, I think it will be more difficult for someone to make a web based Joost with television recording and social features. So if you can, your asking price just went WAY up kid.

The things I have outlined are hard, and that is the point. If I invest in something, I don't want to hear about 35 other startups doing the exact same thing.

I'm not just talking about the web 2.0 people here. You would not believe the number of 'Second Life' knockoffs that are about to hit the market. They all expect that 3 to 30 million people will download and install their plugin, or click 'Yes' on their security warning. You know, the one to give this startup you never heard of FULL access to your machine. That's OK though they tell me, because they only need to get the early adopters to spread the word. The TECH SAVVY early adopters. Yeah, you heard me right, the ones MOST likely to know NOT to give a startup they've never heard of full access to their machines!

If ANYONE can find a tech startup that doesn't infringe copyrights and actually has technology that would take a minute to develop, I think I would fall over from shock.

Sorry about this rant. Just in the office on a Sunday looking at knockoff after knockoff. But hey, I just work for consultants for investors, it's not my money. It is frustrating that no one wants to listen to the minority report though.

<comment><USER3> "Think of it this way, how many people get rich anymore by writing say, IDE's? None, because we all use what Microsoft, Adobe, or Eclipse gives us, for FREE"

So how do you explain Dreamweaver's success over Frontpage?

<comment><USER2> Dreamweaver is not successful.

Analyse Dreamweaver's cost/profit ratio. Remember, Dreamweaver is boxed and sold at retail. The advent of AJAX gave Dreamweaver a little more life, since to make an impressive AJAX page requires a ridiculous amount of not very well structured code. Keeping track of not very well structured code is what IDE's are good at, and what Dreamweaver's target audience is bad at. That said, as a percentage of total revenues, Dreamweaver sucks. Check it out for yourself in Adobe's latest quarterly report:

<http://finance.yahoo.com/q/sec?s=ADBE>

Dreamweaver sales were used to bump up the "Developer Solutions" line of the quarterly report. Notice it is a small percentage. This would not be so bad, until you notice that even the line in the quarterly report marked "Other" is bigger!

Here's some free advice, do not invest in a startup that plans to make a straight IDE play.

<comment><USER3> Seemed pretty successful to me:

"Adobe buys Macromedia for $3.4bn" <http://news.bbc.co.uk/2/hi/business/4456895.stm>

"The individual products within the Studio solution also remained solid, with Macromedia Dreamweaver MX standing as the company's largest individual product ... The MX family also continued to receive industry accolades." <http://www.adobe.com/macromedia/ir/macr/news/2004/jul23_q104_results.html>

"to make an impressive AJAX page requires a ridiculous amount of not very well structured code" ... ", do not invest in a startup that plans to make a straight IDE play."

Why wouldn't an AJAX IDE make a good investment? People would be queuing up to buy it if making impressive AJAX pages is as hard as you say it is.

<comment><USER2> Also, do a search on Expression Studio. It can also be used to make a straight AJAX page without all of the Silverlight CLR garbage.

</comment></comment></comment></comment></comment><comment><USER4> I don't know these online email readers very well, but wasn't there another post recently that said that GMail has only a very small percentage of users? So I am surprised that GMail integration killed Kiko. Isn't there an email service out there where you could plug in things? That used to be the trend among web applications, to provide a Web Service/API so that it could be extended?

</comment><comment><USER5> very interesting post, and even more interesting "rant" bilbo0s. Its that knockoff are knocking off other knockoff its insane, lol seems inovation is on vacation right now, lets hope it gets back soon.</comment>


Monads explained by Eric Lippert - <AUTHOR> http://ericlippert.com/2013/02/21/monads-part-one/ <comment><USER2> Monads are complicated because the word "monad" bears too much weight in any discussion about them.

1) There is a category theoretical concept of a monad. This is largely irrelevant in a practical explanation of monads since Monads are usually talked about in terms of another category theoretical concept called the Kleisli Category or Kleisli Triple. However, if someone starts talking about "monad laws", they're probably referring to the theoretical sense of this.

2) There is, in Haskell at any rate, a typeclass called the Monad (note the capital "M"). This is mostly important because when a type is an instance of this category, the Haskell do-notation is useful. Aside from that, you can only use the handful of operations that the Monad typeclass implements that you don't have to implement yourself for it to be an instance of Monad.

3) There are Monad type constructors, such as Maybe, IO, and State. This is where things actually start getting interesting for the practitioner, because each provides a specific abstraction of a concept, such as input/output or partial functions (IO and Maybe, respectively).

4) There are Monad types, both abstract and concrete, like Maybe a, IO a, Maybe Int, State MyType and so on. These are the types you actually will program with.

5) There are Monad values, which are instances of the Monad types, which are, themselves, instances of the Monad type constructors, which are instances of the Monad typeclass.

6) Then just to add a slightly extra confusing layer on top of it all, you have the values _inside_ the Monad you'll actually be doing computations with.

7) And finally, it doesn't help when in code examples, type variables and function variables are conflated by name, such as in:

        get :: State s s
        get s = (s,s)

Unfortunately, that's much more clear for an expert than a beginner in regards to what's going on there, so if you're reading code samples, likely written by people with expertise, they're going to be confusing.

So, yeah. Simple concept of explicit effects. Seriously semantically overloaded stack of terms to actual reason with them about.

<comment><USER3> Minor nitpicks:

"Monadic types" and "Monadic values" would be better for 4 and 5, because "Monad types" are the type constructors (which are also sometimes named types). And "monad values" is not a term I've ever heard used.

Also, values have-type, they're not instance-of. So it would be slightly more accurate to say monadic values are values of a monadic type, whose type constructor is an instance of the Monad type-class.

I agree better and more accurate use of accepted terminology for all these concepts could be useful.

As for the namespacing issue in the examples, it might be confusing for a complete beginner, but one of the first things you learn in Haskell (ideally before Monads) is how scoping works.

<comment><USER2> I'm sure I've made some terminology decisions that are questionable, but in light of someone writing the community approved guide to talking about monads, I'll try to explain what I was trying to get across.

First, I was trying to emphasize that a type constructor is not strictly a type in the sense of a value having a type. While we commonly speak about to the parameterized types without their type arguments, they aren't really "types" in the type theory sense while there are still type arguments to be supplied. That is, "Maybe"'s kind is * -> * while Maybe a's kind is * even though a is a generic type.

When referring to something as a "monadic value" I was just trying to emphasize that the monad that contains a value is itself a value in the Haskell runtime system and that such a "monadic value" is separate from the value contained there within.

Finally, maybe this is a bad habit of mine, but I've always referred to values as instances since they inhabit types.

I disagree that the namespacing is only ever an issue for a complete beginner. The visual separation between a type expression and a value expression in Haskell can be pretty thin. It's not just about whether they are unambiguous but how much attention you have to pay to while you're skimming code. Honestly, I don't think there's much that can be done about it, but it's just the cherry on top for beginner and intermediate users. Especially ones who aren't using Haskell regularly.

</comment></comment></comment><comment><USER4> Note that this is a series of posts. The first post that is being linked to doesn't have much IMO.

<http://ericlippert.com/2013/02/21/monads-part-one/>

<http://ericlippert.com/2013/02/25/monads-part-two/>

<http://ericlippert.com/2013/02/28/monads-part-three/>

I wasn't clear for me but in the last post he mentioned that there would be more posts to come.

<comment><USER5> He sure takes his time..

 _Episode 4: Conclusion: But we are so close! Next time on FAIC we'll make a small but vital modification to the signature pattern ApplyFunction to arrive at the actual second requirement of the monad pattern._

<comment><USER6> Eric is attempting to explain it to a wide class of C# developer -- most of whom are pretty unfamiliar with lambdas and higher-order functions, much less eclectic type polymorphism and computation.

</comment></comment></comment><comment><USER7> Monads should be a familiar concept for the seasoned C# programmer. LINQ's 'from in' syntax and the haskell monad 'do' syntax are almost the same!

Heck, the type signature of SelectMany and (>>=) are even the same!

        (>>=) ::  m a -> (a -> m b) -> m b

and

        public static IEnumerable<TResult> SelectMany<TSource, TResult>(
        	this IEnumerable<TSource> source,
        	Func<TSource, IEnumerable<TResult>> selector
        )

        m = IEnumerable
        b = TResult
        a = TSource

        =>   m<a> SelectMany<a,b>(this m<a> source, Func<a,m<b>> selector)

The type signatures are _EXACTLY_ the same. This isn't a coincidence. LINQ is actually a monad :)

So I think taking this approach to explain the Monad voodoo to a C# programmer is the way to go. He actually uses them already :)

<comment><USER8> Further proof for my personal conviction that C# is a very interesting, progressive language which masquerades as a Java clone.

I once copied the style of a maybe monad using LINQ - the WinRT apis lack a "FileExists?" method, so I used LINQ to search a directory's contents for a filename. An IEnumerable of size of zero represented None, and size one represented Some.

Unfortunately, a simple try/catch around an attempt to open the desired file was more efficient and clearer to understand.

<comment><USER9> LINQ has an .Empty() extension method, and you should use that instead of .Count()==0 when determining if an expression is empty.

</comment></comment></comment><comment> daniel-levin Monads are actually a very simple concept. They're really hard to understand at first because of how much knowledge is prerequisite. I found that by teaching myself Haskell incrementally, in small steps, I was able to understand monads just as easily as anything else. For me, it was simply resolving the following dependency graph:

Algebraic data types -> type classes -> functors -> applicative functors -> monoids -> monads.

I need to emphasise that understanding of each stage is predicated on understanding of the previous stage. Trying to learn monads without understanding these other concepts is like trying to learn Maxwell's equations without an understanding of calculus and physics.

Lippert states: "Plenty of developers have used the monad pattern entirely by accident, not realizing that they're re-inventing something that already has a name.". This is completely true. For instance, watch this video on refactoring by Ben Orenstein [1]. He 'destroy[s] conditionals with a NullObject'. This is exactly how the maybe monad works.

[1] <http://www.youtube.com/watch?v=DC-pQPq0acs>

<comment><USER10> Learn You A Haskell teaches precisely in that order and I've found it worked great for me. I was never confused and at every step it was obvious why the concepts were useful.

</comment></comment><comment><USER11> I'm beginning to think that all the people who have ever understood monads have written an article trying to explain them.

<comment><USER12> I understand monads and use them everyday, but I've never written an article about them. I did once try to explain to someone what a monad is... that could be the reason I've never tried.

<comment><USER13> You should write an article!

<comment><USER12> I'll start with the continuation monad, explaining that via the Curry-Howard correspondence it is related to a double negative. I'll go on to show that the continuation monad is more general than any other monad by showing how to implement some common ones (state, list, IO, coroutines) using it. I'll finish with a half-baked analogy.

<comment><USER14> Write a program which generates explanations of monads. By the time Haskell compiles it, it will be provably correct without the need for tests.

</comment></comment></comment></comment></comment><comment><USER15> Do you know what I miss about these explanations?

Technical people can't go straight to the point. They go around, around, around, going into corners, etc

(not only on explanations, mind you)

For example, math has some very high-level/generic explanations, and curiously, I find them more understandable.

So, I've given up on understanding Monads (or at least Haskell ones), I'll probably understand them when I come up with a similar problem and think about how to solve them.

<comment><USER16> "For example, math has some very high-level/generic explanations, and curiously, I find them more understandable."

That's because math always "goes straight to the point". There's nothing but the raw substance in it.

<comment><USER17> When I read math, I really like some motivating examples before digging into the definitions and theorems. For me, concrete examples makes it way easier to grasp abstract concepts.

<comment><USER15> Oh, I agree, sometimes it's too generic =)

Especially if you don't know the names used in the description.

The problem is that I can't stand explanations that would go like this if it was explaining Math:

"So, we have a natural number, that is 2, 7, or 34232345 and by the way they're all integer numbers as well, also they are rational numbers as well, oh and there's equation you can do with them, but ok, so you can sum those numbers, etc"

I'd rather go with

"This turns the natural numbers (N, +) into a commutative monoid with identity element 0,"

</comment></comment></comment></comment><comment><USER18> I tried to like this series. I really did. And it starts out so strong...

The thing is, you can't escape talking about the specific implementation details of monads while talking about monads, otherwise you lose the plot of what we're doing and why. Saying, "Monads are just code patterns" is like saying, "All matter in the universe is just energy patterns," strictly correct but unhelpful for any true insight.

Its okay to skip the monad laws at first, but what's not okay is to talk about why there are so many Monads or what actually constitutes a monad. The best writing I've ever seen on this subject is from Learn You A Haskell for Great Good, where they walk you through a piece of code and then show how using a monad _makes it cleaner and less tedious_.

By the end of those 2 chapters from LYAH, you end up with the sense that monads are obvious and natural. And they are once you understand the sorts of problems they solve. I wish we had more of that.

</comment><comment><USER19> As a C# developer, here's the explanation that made it all crystal clear to me: <http://stackoverflow.com/a/2484101/80112>

</comment><comment><USER20> Why do you need to understand monads? Nobody explains groups to people using integers, either.

<comment><USER21> You've never been curious about something you don't know about, but don't immediately need?

<comment><USER20> In general the Haskell community seems way too obsessed about monads. I just checked the "official" tutorials [0]. I was happy to see they all introduce IO without talking about monads. However, the linked wiki page has a whole section about monads. In contrast, there nothing about concurrency or transactional memory, despite that fact that this is one of the strong parts of Haskell.

<http://www.haskell.org/haskellwiki/Tutorials>

<comment><USER22> >In general the Haskell community seems way too obsessed about monads

You need to understand monads to do anything beyond trivial exercises. It is something that virtually every single person coming to haskell from another language is unfamiliar with. I don't see how a focus on such a fundamental aspect of the language is a bad thing.

</comment></comment></comment></comment><comment><USER23> @DigitalJack's comment [<http://news.ycombinator.com/item?id=5325542>] reminded me of another talk on monads viewed by me recently, by none other than dear ol' Dougie!

[http://www.yuiblog.com/blog/2012/12/13/yuiconf-2012-talk- dou...](http://www.yuiblog.com/blog/2012/12/13/yuiconf-2012-talk-douglas- crockford-on-monads-and-gonads-evening-keynote/)

</comment><comment><USER24> I've also (sorry!) written a blog about understanding monads as a design pattern [http://kybernetikos.com/2012/07/10/design-pattern-wrapper- wi...](http://kybernetikos.com/2012/07/10/design-pattern-wrapper-with- composable-actions/) It was motivated after I'd written a simple promises library and suddenly realised that promises are monads too.

</comment><comment><USER25> The simplest explanation of Monads I've ever read (as a Python developer) was actually one in a comment by a Hacker News user 'frio':

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

<comment><USER26> That is an incorrect explanation fyi...

<comment><USER25> Dammit, how wrong?

</comment></comment></comment><comment><USER27> The monad is the clitoris of programming.

<comment> marco-fiset What is that supposed to mean ?

<comment><USER28> I took it as a reference to the clitoris being "Nature's Rubik's Cube" --- the most difficult puzzle in the world. Pretty funny, actually.</comment></comment></comment>


Facebook to lose $150 million next year - <AUTHOR> http://plentyoffish.wordpress.com/2008/02/15/facebook-to-lose-150m-next-year/

<comment><USER2> No matter how much money it makes, Facebook is a roach motel where your data goes to die.

</comment><comment><USER3> What IS Facebook's underlaying technology? I Googled, but nothing substantial.

<comment><USER4> They're running a massive web app. That means they have all the usual stuff any site would need. I imagine it's mostly just a matter of adding enough servers to handle their growing load. They must do quite a bit of data crunching as well.

Their third party app infrastructure must be quite significant. They're proxying and processing huge amounts of traffic. Almost certainly doing it with a custom server app that's probably quite interesting technically.

A huge portion of that $150M must be going towards network infrastructure (where it's damned easy to spend millions) and datacenter space/power, etc.

</comment></comment><comment><USER5> A sensationalist headline from a (lame) Facebook "competitor"... hmmmm.

<comment><USER6> Since when is plentyoffish a facebook competitor? You should read his blog - his insights are valuable.

<comment><USER4> Dating is a significant part of what Facebook is used for. They're definitely competitors.

<comment><USER6> There's some overlap, but I don't think either company would suggest that, unless they did so in the broad sense of competing for a user's time on the internet. I'd be interested to see stats on dating on FB though.</comment></comment></comment></comment>


Renowned Yale Computer Science Prof Leaves Darwinism - <AUTHOR> https://stream.org/renowned-yale-computer-science-prof-leaves-darwinism/ <comment><USER2> Oh no, the Brain Eater has come for David Gelernter, and he's apparently swallowed a bunch of creaky old arguments. The arguments are:

1) not enough transitional fossils / [http://talkorigins.org/indexcc/CC/CC200.html](http://talkorigins.org/indexcc/CC/CC200.html)

2) the low probability of useful proteins evolving (the article mentions 10 __77 at one point) / [http://talkorigins.org/indexcc/CB/CB150.html](http://talkorigins.org/indexcc/CB/CB150.html)

3) "There are no examples of mutations that are not fatal". / [http://talkorigins.org/indexcc/CB/CB101.html](http://talkorigins.org/indexcc/CB/CB101.html)

This is sad.

<comment><USER3> I think the Cambrian Explosion alone stands as a refutation of Darwin's theory as it is commonly understood -- i.e., as a random process.

</comment></comment><comment><USER4> Well there will always be weird people. I do not think the theory is under threat at this point.

</comment><comment><USER3> Some interesting new arguments here. And the old argument that the fossil record does not show life forms slowly modifying over time has always been convincing.</comment>


Atlanta, Seattle, Chicago Desperate for Software Engineers, Says Job Search Firm - <AUTHOR> http://spectrum.ieee.org/view-from-the-valley/at-work/tech-careers/atlanta-seattle-and-chicago-are-desperate-for-software-engineers-says-job-search-firm <comment><USER2> It's amazing how employers seem to think they're exempt from supply and demand.

The real problem is that employers in those areas can't find employees in those areas at the rates they want to pay—and not just in monetary terms. Employers outside California often demand onerous non-compete agreements, and claim they're "standard." Employers outside California often lowball candidates, and claim "that's the average pay here, besides that the cost of living is lower!"

Guess what? If you want to hire now, you're competing with employers in an area with beautiful weather, high pay, AND state law prohibiting non-compete agreements that actually gets upheld regularly in court. That means you need to actually make at least as attractive an offer just to keep up.

<comment><USER3> Generally speaking, we don't advertise the salary range for positions.

So when we find it difficult to fill a role, it's not because we're not going to pay a competitive salary. It's more likely because the candidates that are applying aren't the right fit. When that happens, we revamp our sourcing approach: change the JD, tweak the keywords we filter on, etc.

> Employers outside California often lowball candidates, and claim "that's the > average pay here, besides that the cost of living is lower!"

With websites like Glassdoor and Payscale it's pretty trivial to determine the market rate in a given location.

It's probably a variety of factors, but I believe one factor is a lot of the companies (at least in Seattle) are companies you haven't really read about in Techcrunch, Re//code, or even HN. While the big-cos: facebook, msft, Amazon, Google, have their share of open job recs, they at least have the brand name recognition to recruit engineers. Silicon Valley probably has their share of off-brand software companies, but by and large, there are many more house-hold names there.

<comment><USER4> Define 'right fit.' (Asking the question in earnest, not to be snarky.)

<comment><USER5> Usually the candidates being seen don't measure up or match the intended position.

As an example, "we want to hire a devops person"; okay, you start getting people who do a lot of on premise stuff with Ansible/Chef/Puppet, and have to be told explicitly what to do. What you really wanted was someone familiar with AWS, setting up cloudformations, autoscaling, VPC configuration, etc, and who could be given an app, said "here's how it runs", and then figure out what needs to be done on their own.

</comment></comment></comment></comment><comment><USER6> I looked at the cities with average salaries and saw that they were at an average of $110k. Why would you bother with that kind of salary when you can work for a SV based company remotely for probably more cash and better growth opportunities? It's rather rare to get stock options or grants to begin with. Then add in how unexciting the companies are typically (can someone even name a tech-heavy company from Kansas City that's not an onshore outsourcing center like a lot of NC's RTP area or much of the Southeast?).

Unlike the FB or Googler comparisons often cited I'm nobody special or talented and managed to get $130k+ from miserly employers in not very tech friendly areas, so I can't see how anyone with decent talent taking local jobs in places with as horrible traffic like Chicago or Atlanta with solid career prospects would want to go there. Lack of locally grown talent from universities certainly isn't a problem for most (Georgia Tech is pretty solid, for example). So doesn't that mean they're suffering from brain drain to a fair degree?

<comment><USER7> I am always in awe of how well-paid SW Engineers in the US are, like, I know SAP developers in my country with a salary of $7k per year.

<comment> tuna-piano Curious, what country? And do you think the $7k developer is a similiar quality as the US $100k developer? Crazy that the difference in citizenship can matter that much.

By the way, I'm from Chicago, and knew many talented folks with 2-3 years post college getting in the $70k's. Much lower than the easy $100k quoted here.

<comment><USER8> Someone I know in Chicago with 2 years post-school experience has entertained several offers in the 90k range for front-end dev positions this past year, and this is with a 2-year degree. I assumed back-end/compsci grads were pulling much higher than that, am I missing something?

</comment></comment></comment></comment><comment><USER9> I'm in Chicago and I'd jump in a second if someone was offering a competitive salary. Nobody is budging here. They're trying to find senior devs with junior salaries.

<comment><USER10> how are the consulting opportunities there?

<comment><USER11> Chicago consultancies won't pay you market rate either

<comment><USER12> Working as an FTE for a consultancy isn't consulting.

</comment></comment></comment></comment><comment><USER13> Sure didn't feel desperate in Atlanta last fall when I was looking for a job. I left the state and got a job elsewhere.

<comment><USER14> That comment is a surprise. The demand in ATL is pretty crazy. That being said, if you are not wanting to go downtown things can get pretty scarce in a hurry.

On a side note, Atlanta is very much a recruiter town. The size of even the smaller firms lends them to recruiter models. Other than the startups in the incubators, the "small" software companies are 100+.

</comment></comment><comment><USER15> Not surprised about Chicago and Atlanta but Seattle seems odd to be on that list. It's a great town that I'd love to be stuck in.

I'm from Chicago and currently in Austin. My wife and I would be happy to move back, if anyone has 110K for me. Fork that over with no on-call rotation and I'll join your devops team.

<comment><USER16> Why is Seattle odd? Tech is booming here! Largely fueled by Amazon at the moment. But all the big software companies are growing their Seattle presence.

<comment><USER17> Many companies are hiring in the Seattle area. And there's always Microsoft . . . or Amazon, if you're hungry (in several senses of the phrase :-) ).

As to the climate: I spent 20 years in Silly Valley, have lived in the Seattle area for 12 now, and I don't miss the Bay Area at all.

</comment></comment></comment><comment><USER18> Where are those Junior: DevOps Engineer, general software engineer, and front- end developer jobs?

Is it the responsibility of the job market to allow people to gain the experience needed to fill the mid-level and senior level jobs. Overall, how are we as aspiring developers supposed to gain the needed experience to fill the demanding roles?

I have several years of experience in IT via System/Network Administration and I've been teaching myself programming after my work hours (mostly JavaScript over the last 8 months). I've taken the Microsoft Virtual Academy for Introduction to Programming with Python, Getting Started with PowerShell 3.0, Advanced Tools & Scripting with PowerShell 3.0; Codecademy for HTML/CSS, JavaScript, Python even college for C# and a myriad of other free online courses to push my knowledge further.

As an individual that lives in Seattle, I'd love to fill an engaging and exciting opportunity to round out my experience while growing my skill set. Sadly, I'm just not seeing the opportunities out there that would allow me to move forward. I know that there are some that would say, create the opportunities to move your career forward. But, as an individual that is bound by an employment contract that has an "Employment Exclusivity" clause and broad reaching "Ownership Of Intangible Property" clause. That is extremely difficult. There's also the other side of the thought process that states if companies are truly desperate for talent, that they'd find a way to curate and grow the talent in those areas to fill the demand. I don't know if that is even happening. Hell, I'd even be willing to work at sub-standard wages if I was able to find an organization that is willing to work to mentor a candidate to solidify their skills and experience. (No, my current employer doesn't do that.) Average wage is what 89k/yr ... I'm pretty sure that several people would be willing to work for $54k to $60k if it meant the opportunity to grow their skills, knowledge and work on exciting projects. But, maybe I'm just thinking of myself here.

</comment><comment><USER19> I feel like this will be controversial to this thread but what about companies that do match SV wages? I am sure there are several in all these cities, there are many in Chicago.

it is super difficult to find the talented candidates that are passionate, curious and are down for solving complex issues at the seniority we want to higher at.

Maybe I am wrong to think its not a salary thing, the market doesn't currently have / isn't pulling in enough talent to feed the demand.

Do the HN economists think if the salaries were raised 20% in a market it would correct the problem?

</comment><comment><USER20> Tech Recruiter here in Chicago. It depends on the field/tech stack. Looking for a Windows DevOps engineer? Good luck. Need a senior .net developer? No problem. Enterprise .net and java have been in chicago forever so there are plenty of developers. Mobile, Automated QA, DevOps, even Ruby developers are all a lot more difficult to find here. I think that's quickly changing though. I've helped two guys from Florida and another from Nashville relocate here this year. Those type of people hit the ceiling in their smallish tech community and gravitate to a legitimize tech hub like Chicago.

Edit: I'll add a self promotional bit here... I read hackernews on my own for fun but I am a tech recruiter in Chicago. I am confidant that I cant help almost any 2-8 year software developer looking for 80K-120K find a new job. I don't code but I can promise you I am better than most the recruiters that message you every day. If you are interested in chatting, even if you are not looking right now, i'd love to talk.

Proof I'm a real person: [https://www.linkedin.com/in/taylordorsett](https://www.linkedin.com/in/taylordorsett)

I got a couple reviews on there from some people you may know if you are local to chicago.

Email me at firstname.lastname@example.com or email@example.com

</comment><comment><USER21> I'd love to hear HN readers' explanations of the differences between these terms:

\- mobile engineer vs. mobile developer

\- software developer vs. general software engineer vs. software architect

<comment><USER22> About 30% in pay...always call yourself an engineer if you're a developer.

<comment><USER21> LOL. I think you're on to something.

</comment></comment></comment><comment><USER23> I'm graduating from a Seattle area college on Saturday. This is exciting news to hear.

</comment><comment><USER24> I'm desperate for a Ferrari. But I'd rather not pay for it...

</comment><comment><USER25> I'm constantly getting lowballed by recruiters in NY. The truth is these places aren't paying enough to get the talent. I.e trying to pay good local rates, when software development is increasingly remote and world wide.

</comment><comment><USER26> Translation: Companies idea of "Market Rate" is not, in fact "Market Rate".

</comment><comment><USER27> The situation is beyond hopeless</comment>


Work ethic of immigrants - <AUTHOR> http://econlog.econlib.org/archives/2012/02/griswold_on_imm.html

<comment><AUTHOR> I interpret it this way... People who fight to come here work hard. I'm not sure if it is due to the difficulty of the trip scaring the lazy, or the relative opportunity, but immigrants drive this country. The first generation works hard. The second works smart. The third works rich. The next blows it all. :-)

</comment><comment><USER2> Oof. Please remember it is much, much easier to measure something like labor participation rate (which is what the study actually measures) than work ethic (which is the interpretation that the blogger is drawing out of that data). If one group of people is working less than another, it might be because they're lazy and shiftless. It also might be because they're in a different environment, facing a different set of positive and negative reinforcements to hard work.

</comment><comment><USER3> If you are going to stereotype and collect statistics, why make generalizations of all nationalities?

Why not break down the "work ethic" by country of origin, age, etc.

This whole study is ridiculous. I have a feeling it's not aimed at Canadian immigrants to the USA but instead Mexican.

If that's the case, why don't we help build up Mexican commerce by taking all the stuff we buy/build in China and build up Mexico instead? What if Mexico had the factories that we helped build in China? What if foxconn was in Mexico instead of China?

ps.

 _the labor-force participation rate of the foreign-born in 2010 was 67.9 percent, compared to the native-born rate of 64.1 percent_

Isn't 3% considered a margin of error unless there is a massive amount of data?

<comment><USER4> Sorry to say it, but your comment is one of the dumbest things I've read in HN.

You have an objection to the study because immigrants are categorized together? Then you choose Mexican immigrants out of a hat and then assume the study is about that specific group. On what basis? Are you saying the sources cited in the group only care a specific subset of immigrants? Or are you alleging that the study must only be about an immigrant group that you have certain preconceptions about?

And that the hell does FoxConn being in Mexico have to do with American immigrant work ethic? You are just not making any sense at all.

Get your ideas and facts straight before posting. Google is your friend for getting facts straight. You cannot have an immigrant study reflect Canadian immigrants because Canadian immigrants make up such a small proportion of all immigrants.

<comment><USER3> You don't follow how if people coming here to work is seen as a problem, to help make jobs in their country helps us?

I have a problem with anything that says all/most of any kind of people are the same.

Immigrants are not one kind of people with one kind of mentality. Neither are natives.

Oh and I assumed the study was about Mexican immigrants because if you actually read the website, the study is from the Pew Hispanic Center and specifically talks about about Texas immigration. You're welcome to your opinion but I don't appreciate the personal attack.

<comment><USER4> "People coming here to work is seen as a problem" is precisely what the debate's about. It's not a conclusion.

And how can this be a broad generalization if it's already about immigrants?

"Immigrants are not one kind of people with one kind of mentality." Hmm ok... But what if your data is not partitioned the way you like? Should they still draw conclusions from dta that does not exist?

If you see the actual source PDF document, the sources cited are much more than just Hispanic immigrants.

Oh and Hispanic means a bunch of different countries, not just Mexico. So please don't equate "Spanish speaking" with "must be only from Mexico." Only about half of Hispanic immigrants to the USA come from Mexico.

It's not a personal attack. I have a problem with how you wrote what you wrote, I've written lots of dumb things myself, including my first reply to you.

</comment></comment></comment></comment><comment><USER5> It should be noted that this is true only to some parts of the world, and more specifically, true only to some nationalities and cultures of immigrants. The situation with immigrants' and lacking work ethics is grave in most of Europe. _Grave_.

<comment><USER4> More specifically, to the USA only, if would look at the works cited in the original work, it lists only American data sources.

</comment></comment><comment><USER6> So, illegal Mexicans shouldn't be on the right-wing agenda this electoral cycle, or am I missing something?

<comment><USER7> No, the article underscores that laissez-faire economic states allow illegal immigrants to work so that's where they migrate. You do see bizarre coalitions on immigration issues: right wing "open border" types allied with left wing "poor starving masses" champions. That reflects the Bush/Kennedy attempt at amnesty a few years ago. You see left wing labor advocates agreeing with right wing "lower legal immigration rates only" types to restrict the supply of labor and drive American wages up. You think a poor, liberal American black guy wants cheaper labor "taking his job"? I wouldn't describe his agenda as "right wing".

<comment><USER6> Could you just tell me why Griswold's opinion on the benefits of illegal immigrants over [African-American implied] welfare recipients as they apply to the US economy is subject matter for Hacker News? Relevance?

Wait, don't bother. Econlib/Cato/Griswold/Koch sell kooky theories to the unintelligent to mask their war on poor people. I don't actually take them seriously.</comment></comment></comment>


Fuck You Instagram - <AUTHOR> http://jasongrimes.com/2013/10/26/fuck-you-instagram/

<comment><AUTHOR> When they can afford to do something to preserve something important it can be lasting. Look at the PDX Trailblazers, the EMP Museum in Seattle, South Lake Union development. Hackers making huge profits should know when to take and add value. Me personally I'm not worried about FB making money. But u r dead right about the bling. I just expect more from them.

</comment><comment><USER2> Since when do hackers get mad when someone tries to turn their hack into a profit?</comment>


India focused comprehensive software discovery platform- Softwarelist.in - <AUTHOR> https://www.softwarelist.in <comment><AUTHOR> Find and compare software products and services targeted towards Indian users. Use for software discovery or to generate leads for your SaaS business.</comment>


Feedback for an email alternative service - <AUTHOR>

Hi everyone!
First of all, HN is awesome and I'm really excited to learn about and join this community of fellow entrepreneurs; to receive and provide feedback on our ideas is such a great feeling. Secondly, I want to disclose that we applied to YC for the S15 class and didn't get an interview... although disappointed, we're actually really motivated by that. Hear me out.
We're developing a service that is an alternative to email. It's unbelievably ambitious and I'm jealous of the folks that have visions that are far easier to implement. With that said, Lucolo believes that email communication needs to be made more efficient and we believe that we're the masochists that were born to give that a try. We're developing a super simple service that enables folks to start conversations online, have full control over the conversations' participants and content, and even how those conversations are viewed. We've studied real-life conversations and have basically mirrored their nuances for the internet. I know - we should've started an IoT company.
Anyway, we're trying to determine if we're onto something. If you agree we're even sniffing at a problem that needs to be solved, please head to www.lucolo.com and sign up for an invite. I'd also love any feedback you have - either leave a comment or send me an email to email@example.com and it'd be great to hear you out.
Best, Dave <comment><USER3> I've seen 3 companies that tried to disrupt email and bring alternatives to email and they all failed, they had great developers, great ideas but they still failed.

My question to your team would be, why do you think people want this. Are you seeing people claiming that they wish email was better? It is hard to change people's behaviors and this is the reason why these companies failed. I agree that there are better ways to communicate now, slack, hichpchat, facebook, but why try to reinvent the wheel.

People are not going to drop something reliable as email for a new fad. what would make your product different that would make me want to use it?

Cheers

<comment><AUTHOR> You're absolutely right about the problem we're solving (which is the cause of many sleepless nights).

Hopefully it's Lucolo to do this, but we believe that this idea will win on a strategy that alleviates perceived (or real) switching costs (possibly through integration) and has a feature set that is simple, effective, and obviously superior over email for the user. We have to be careful to not work to "replace" email but simply build an alternative that users couldn't imagine not having before. Kind of like the iPhone, or Dropbox, even Google, or - <USER2> I say - the car.

It's ambitious for sure, but we don't believe the answer is IRC-like XXMP services since they don't provide the same experience and value as email. We want to hit a larger audience than those that are familiar and see value in chat-based architectures (like me as I'm 27 and grew up on AIM and loved it).

Lastly, we're really going to rely on our first few batches of users for input and feedback on how Lucolo makes the feel about communicating via the internet; it sounds obvious but the closer we get to creating a communicative experience that adds the most value and reduces the most noise and pain, we think we'll have a winner.

These are great questions you pose and not 5 seconds goes by without me thinking about them....

</comment></comment><comment><USER4> Clickity Click - [http://www.lucolo.com/](http://www.lucolo.com/)

Advice

\- You mention what Lucolo does not do - but it is not clear what it does do, o make it a viable email alternative. No mention of any features either.

\- If you are not comfortable providing screenshots, a simple mockup would do as well. This works wonderfully on conversion rate (in your case visitor to email capture)

\- Have an "about" page on the website, that gives us some information on who you are and why we should trust you with our email addresses.

All the very best!

<comment><AUTHOR> This is great advice - thank you for it! I'll add the "about" page to give the project context, a differentiating feature list, and a "preview" page that is a duplicate of what the conversation page looks like in the application.

Thanks for your input!

</comment></comment><comment><USER5> happy to provide feedback... just got on the list.</comment>


Bash That JSON with Jq - <AUTHOR> https://blog.appoptics.com/jq-json/ <comment><USER2> >>Note: This article was originally published on Librato, which has since been merged with SolarWinds®AppOptics™. Learn more about application performance monitoring using AppOptics.

FYI ^

Maybe it's good that someone in marketing world point out JQ one more time. My aliases are littered with magical jq stuff.

alias whatscomplaining='sudo journalctl -fxe -o json | jq "{ timestamp: .__REALTIME_TIMESTAMP, commandline: ._CMDLINE, message: .MESSAGE }"'

The author has a more jq relevant repo here:

[https://github.com/djosephsen/jq-irl](https://github.com/djosephsen/jq-irl)</comment>


Remote LD_PRELOAD Exploitation - <AUTHOR> https://www.elttam.com.au/blog/goahead/ <comment><USER2> The unix security model of "you have to know how it works to make it secure" is starting to show it's issues...

Clearly, the author of this code thought of environment variables as any other kind of variable - a simple key-value map, which can have any keys and any values.

The fact that there are special keys and special values is just insane. Either environment variables should be a general purpose key value map, with no special values, or it should have _all_ special values, pre-allocated keys which don't allow collisions, or not allow custom definitions at all.

There are lots of cases of this across unix-like OS's. For example "directories contain a special entry called '..' which goes up a level" or "TCP ports under 1024 are 'special'.

This is, in my opinion, poor API design, and we're paying for it now in the form of bugs and security issues.

</comment><comment> half-kh-hacker Wow - Using stdin as the LD_PRELOAD target seems super obvious in retrospect, now.

Good job to the author(s).</comment>


Starbucks 'paid just £8.6m UK tax in 14 years' - k-mcgrady http://www.bbc.co.uk/news/business-19967397

<comment><AUTHOR> Anyone who whines about this (a) doesn't understand international tax law and (b) has never run their own business. Corporate tax on profits is a pure money grab. If you tax profits to the point where it's no longer profitable for companies to be in your country they will leave and then you get ZERO benefit from their presence, like salary tax, sales tax, employees putting discretionary cash back into the economy etc. When countries start doing something FOR companies instead of doing things TO them (like suing them) then they can ask for more money. Until that day comes I say that corporations should keep whatever the law allows them to keep and "ethics" (it really has nothing to do with ethics) be damned.</comment>


The 50 Best Places in America to Start a Business - <AUTHOR> https://www.inc.com/surge-cities/best-places-start-business.html <comment><USER2> Yet the best place to incorporate a company is still Delaware</comment>


Cheapest IO Domains for Start-Ups - <AUTHOR> http://en.gandi.net/domain/price/detail/io/

<comment><USER2> GANDI are a good registrar but don't forget you need to add French taxes to that $39, plus any conversion rates and cross-border fees charged by your bank to pay Crédit Mutuel, their bank.

And you need to do that each year for a .io as you can't register that TLD for a multi-year period.

As for GANDI's service: DNS and DNSSEC is good,their free mail service is a reliable back-up for me and they are prompt at answering questions for which they have an answer, though I've found they tend not to answer when they don't know...

And I'd never think of them as cheap!

</comment><comment><USER3> Did you do some research on registrars and then find that this was the cheapest? Because this looks like an ad.

</comment><comment><AUTHOR> Yes of course I did a research :-) This is not an ad! I wanted to find the cheapest place possible that offered .io Ones I did, I thought HR users would like to know too ^_^

</comment><comment><USER4> Spoiler Alert: They ain't "cheap" or "the cheapest"

<comment><AUTHOR> Do you know any better ? In that case please share. This one is $39/year the cheapest I could find after doing research for a few days.

<comment><USER4> Sure, I pay under $12 a year for a variety of domains (.com, .net, .pw) via namecheap, includes free dns hosting too.

Unless you feel that a .io domain is a prereq for your startup because of your deep affinity for the deep blue of the Indian ocean .. or something.

<comment><AUTHOR> NameCheap does not offer .io domains yet, same goes for GoDaddy. As for .io prefix it stands for input/output for most of us (or at least me) and not Indian Ocean ;-) Its kind of like .pro prefix, for some its "professional" for some "programmer", and .co for some its "company" for some "code". You make you're own meaning per domain/prefix I guess.

<comment><USER4> You really aren't, you're just buying into a particularly successful form of advertising that has convinced you that .io's tentative connection to programmer specific jargon make it attractive to the startup culture, despite being more expensive than virtually all alternatives.

<comment><AUTHOR> Well yeah big part of is is "Geotargetable domains" > [https://support.google.com/webmasters/answer/1347922?hl=en](https://support.google.com/webmasters/answer/1347922?hl=en)

But I was talking about what it means to many and/or me :-) for example, if you're interested read this; [http://www.russellbeattie.com/blog/artisanal- websites-the-ri...](http://www.russellbeattie.com/blog/artisanal-websites-the- rise-of-io-domains-for-well-crafted-web-services)</comment></comment></comment></comment></comment></comment>


Harmony of the Sphere - <AUTHOR> https://thehappykoala.github.io/Harmony-of-the-Spheres/#/scenario/Europa%20Clipper%20-%20Hohmann%20Transfer%20to%20Jupiter <comment><USER2> Aww, thanks for sharing. If anyone has any questions, let me know and I would be very happy to answer them!

</comment><comment><AUTHOR> [https://github.com/TheHappyKoala/Harmony-of-the- Spheres](https://github.com/TheHappyKoala/Harmony-of-the-Spheres)</comment>