Show HN: Hack your tastebuds to enhance the flavor of whiskey and soften burn - <AUTHOR> http://miracle-nutrition.com/ <comment><AUTHOR> Good morning fellow hackers! I came across this great video that shows the impact of Synsepalum Dulcificum (miracle berry) on the flavor profile of high end whiskeys and thought you guys may find it interesting: [https://youtu.be/MBcp-kY_XGo?t=322](https://youtu.be/MBcp-kY_XGo?t=322)

I did a miracle berry cocktail night last weekend and it was incredible. We were able to make some super smooth, unsweetened cranberry-vodkas and whiskey sours. Best thing, since there was no sugar, we didn't have much of a headache the next morning :D

I heard posting in the morning was worth a shot on HN. Since I have your attention, miracle berry also has applications to breakfast. I personally use it everyday because it makes my Greek yogurt creamy, rich, and delicious. I have some people who use it with their coffee because, like the alcohol, it can significantly remove the bitterness of coffee to make it taste much smoother without the need to add as much cream and sugar.

I spent the last year making a formulation that dissolves 10+ times faster than the competition. Whereas the pills on market (depicted in the video) take 5-10 minutes to dissolve, my pixy-stick like product dissolves in 10 seconds.

I would love to hear what you guys think about the product! I believe miracle fruit has the potential to take willpower out of the equation of a healthy diet by making nutritious foods taste as indulgent as the junk foods that are otherwise killing us. No one has the patience to wait 5 minutes in the morning while they are rushing to school or work, so I knew this is what needed to be changed in order for miracle berry to go mainstream and positively impact people's diet and health.

Please use the code "hn" for 10% off at checkout if you're interested.

<comment><USER2> Cool. Do you have any idea how that FDA ban on miraculin is going?

Side note: I wish this had a different name than "miracle berry" or "miraculin". "Miracle" just sounds so scammy.

<comment><AUTHOR> Lol you are totally right...the number of times people thought this was a scam. I need to rebrand my website and I've started using the Latin name.

Miraculin isn't banned, it is just not allowed to be sold as a food ingredient. For example, it can't be incorporated into a Coke product. For that same reason, Coca-Cola did a toxicology study Q4 of 2019 and showed there were no possible long-term side effects. They are trying to get it approved as GRAS status because they are working on a natural diet coke that doesn't taste bad. Here's the study:

[https://pubmed.ncbi.nlm.nih.gov/31421212/](https://pubmed.ncbi.nlm.nih.gov/31421212/)</comment></comment></comment>


MitM-ing Postgres - <AUTHOR> https://thusoy.com/2016/mitming-postgres <comment><USER2> Excellent post. The post doesn't detail a problem with Postgres per se, rather the author uses plain language to explain Postgres' TLS connection mechanisms and how they are applied in AWS and Heroku RDBMS services.

When quickly iterating on software, I must admit I don't always consider configuring a root cert for the db. This nuanced look at Postgres' security options gives me much to consider for real production work.

tl;dr: configure a root cert for your Postgres db and use verify-full in your connection string.

<comment><USER3> > configure a root cert and use verify-full

Edit: The interpretation below is incorrect, see the answers to understand why.

I don't understand why the post insists on using self signed certificates and ?sslmode=verify-*. It's MitM-prone by design.

Just use ?sslmode=require and a CA-issued certificate. It's even easier than with a webserver and clients can identify that you are the domain you pretend to be. Obviously Postgres did it wrong by being to lazy to deploy normal certificates for all dbs.

"Verify" is only with client certs, which are difficult to issue and install, and allows the server to identify the client.

Am I correct?

<comment><USER4> > Just use ?sslmode=require and a CA-issued certificate.

This is not secure. See Table 31-1 here:

[https://www.postgresql.org/docs/9.5/static/libpq- ssl.html#LI...](https://www.postgresql.org/docs/9.5/static/libpq- ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS)

As you can see, "require" provides no MitM protection. The _only_ option among the six options that provides both eavesdropping and MitM protection under all scenarios is "verify-full".

Your misunderstanding is reasonable, and shows what can happen when software is insecure by default and has too many different security-sensitive options. I'll bet that very few Postgres users fully understand the nuances between the various sslmode options.

<comment><USER5> he is not incorrect. if you are on a secure network you can stick with the default i.e. a aws network could be secure.

<comment><USER4> tajen advocated a CA-issued certificate along with the "require" option, which makes sense under no common scenario. If your network really is secure, you don't need TLS at all, so you can use "disable" and not bother with a cert. If your network isn't secure, then you need "verify-full" to actually have security.

<comment><USER5> actually i just wanted to point that out. actually on aws you actually connect with ssl when you have an rds instance and using psql on a ec2 instance. however it will run with "prefer". which isn't really needed there.

</comment></comment></comment></comment></comment></comment><comment><USER6> Correct me if I am wrong, but this doesn't sound like a problem with Postgres. It seems like a problem with the author's specific implementation (self-signed certificates) specifically on Heroku.

Anyone else take something else away from this piece?

<comment><USER4> The blog post raises several distinct issues. Heroku's poor configuration is the most significant issue, but it's also concerning that Postgres is insecure by default, and supports several different options to sslmode with confusingly-similar names, only one of which is secure under normal circumstances. That's a recipe for developers and database administrators to shoot themselves in the foot. If Postgres had been secure by default, it might have saved Heroku from making this mistake.

<comment><USER6> See OPs response.

</comment></comment></comment><comment><USER7> I went down a similar road in 2013 and contacted heroku via a support ticket. They said they "do not offer up [their] certs for verification" and wouldn't answer any other questions. Doesn't seem like much has changed :/</comment>


Google acquires LaunchKit - <AUTHOR> https://library.launchkit.io/launchkit-joins-google-7e6108a706ab <comment><USER2> Congrats to the team. I <3 Launchkit, and use a couple of its features.

Seriously bummed that this sounds like the end, however I imagine your amazing skills will be used to enhance the google play store, which is great for you guys.

Anyhow, this is not a shocker considering how well L.K's features worked. Enjoy your time at google.

Finally, thanks for the code, here's hoping someone picks up the torch, or at least uses it for inspiration :)</comment>


WHO lessons from Ebola (listen from 30:50) - <AUTHOR> https://www.youtube.com/watch?v=Gi69S1UNAVA&feature=youtu.be <comment><AUTHOR> Interesting overlap between crisis management & startups:

You need to react quickly. (…) You need to engage with communities deeply - community acceptance is important. You need to be coordinated. You need to be coherent. You need to look at the other sectoral impacts. (…) The lessons I've learned are: be fast, have no regrets. You must be the first mover. (…) One of the great things in emergency response is (…) if you need to be right before you move, you will never win. Perfection is the enemy of the good (…). Speed trumps perfection. And the problem (…) is that everyone is afraid of making a mistake, everyone is afraid of the consequence of error. But the greatest error is not to move. The greatest error is to be paralysed by the fear of failure. That's the single biggest lesson I've learned in Ebola responses in the past.</comment>


Right to repair your devices under threat by apple - <AUTHOR> http://www.theverge.com/2016/6/8/11875096/right-to-repair-new-york-fair-repair-act <comment><AUTHOR> [https://www.youtube.com/watch?v=4eyidi2HaMY](https://www.youtube.com/watch?v=4eyidi2HaMY)

this unauthorized repairman explains how apple and others prevent people from hacking/repairing devices, including both owners and pretty much anyone who is not restricted legally by signing an authorization.</comment>


Ask YC: To Hack or Not to Hack? - <AUTHOR>

I got a phone call this past week from a good pal of mine.
He and an associate of his are looking to have a website built.  A directory of sorts for local businesses.  Due to a confidentiality agreement that's about as much as I can say, but it's going to be a massive project.
My team of 4 is excited about it, and rightfully they should it looks like it could be a great challenge for all of us, both in production and infrastructure demands.
After performing a project analysis, it became quickly evident that this is going to be a very expensive deal for him.  This isn't just a glorified business card website "this is our company, call this number and buy our stuff" situation, and I somewhat fear he and his partner's commitment to this idea may be less than great once they see the costs and responsibilities on their end.  This is completely unfounded, but from the rhetoric and context they explained what they wanted, I don't think they completely understand the magnitude of what they're asking for in terms of actually putting together such a website.
We have a ball park estimate produced, as well as a few slides detailing some of the avenues we plan to take in making this site happen that will be presented this coming Monday.  All of this said, after alerting him of the possibility that prices will be high, and he may need to seek support from outside investors, would it be wise to continue with this project?  As I said my speculation that this project may be over their pay range is completely unfounded, but not unlikely.
(It kind of brings this image to mind: http://farm1.static.flickr.com/38/80500328_2cf369deb4_o.jpg) <comment><USER2> If he can pay (and can demonstrate to your satisfaction his ability to pay), what's the downside with going forward? If he can't, he can't, and that's that.

What's the problem?

<comment><AUTHOR> There's no downside. For what it's worth, this is the first project brought to us by an outside source, and retrospectively our first "big huge" project. So maybe it's just that thought that's making me extraneously skeptical about it.</comment></comment>


Write better Perl with Perl::Critic - <AUTHOR> http://damienlearnsperl.blogspot.com/2009/03/write-better-perl-with-perlcritic.html

<comment><USER2> Try it out at <http://perlcritic.com/>. The feedback is usable - when the tool finds something to complain about, it provides a link to documentation explaining what it didn't like, and the way it "should be".

</comment><comment><USER3> I used Perl::Critic a few years ago on a contract to demonstrate the code I had written was over 90% "Perl-Critic" compliant.

For the few non compliant programs I then documented why and what could be done next (in nearly all cases these programs hadn't been refactored yet).

The client was extremely pleased. So much so he asked me to perform a program audit on the complete Perl codebase he had ;-)

</comment><comment><USER4> Has someone done something similar with other languages?

<comment><USER3> For Python use pylint: <http://pypi.python.org/pypi/pylint></comment></comment>


The Revolutionary Ion Engine That Took Spacecraft to Ceres - <AUTHOR> http://www.iflscience.com/space/dawn-new-era-revolutionary-ion-engine-took-spacecraft-ceres/ <comment><USER2> IFLScience is nice to expose people to a scientific idea on a social network or something, but I'm not sure they have their place here.

In any case, if you're looking for something a bit meatier, I highly recommend reading this article [http://dawn.jpl.nasa.gov/mission/journal_12_06.asp#ips](http://dawn.jpl.nasa.gov/mission/journal_12_06.asp#ips) from the JPL at NASA.

<comment><AUTHOR> I got it from [http://theweek.com/articles/634208/innovation-could- change-s...](http://theweek.com/articles/634208/innovation-could-change-space- travel-forever) which wasn't particularly meaty either.</comment></comment>


The No Starch Press Foundation - <AUTHOR> http://nostarchfoundation.org/ <comment><USER2> From the website:

No Starch Press publishes the finest in geek entertainment — bestsellers like Python for Kids, How Linux Works, Hacking: The Art of Exploitation, Practical Packet Analysis, and The Manga Guides. We focus on open source/Linux, security, hacking, programming, alternative operating systems, and science and math. Our titles have personality and attitude, our authors are passionate about their subjects, and we read and edit every book that bears our name. Our goal is to make computing accessible to technophile and novice alike, and our readers appreciate our straightforward presentation and fearless approach to the complex world of technology. No Starch Press titles have been included in the prestigious Communication Arts Design Annual and STEP inside 100 competition, and have won the Independent Publisher Book Award (the "IPPYs") from Independent Publisher magazine.

San Francisco-based No Starch Press was founded in 1994 by William Pollock, who brings more than 20 years of publishing industry experience to the company. Prior to launching No Starch Press, Pollock worked in professional reference, scientific, college and trade publishing, and was a co-founder of computer book publisher Apress. Pollock remains an active editor and works closely with most of our authors.

No Starch Press, Inc. 245 8th St. San Francisco, CA 94103 USA Phone: 800.420.7240 or +1 415.863.9900 (9 a.m. to 5 p.m., M-F, PST) Fax: +1 415.863.9950 Email: email@example.com

No Starch Press and the new No Starch Foundation is worthy of your support.

</comment><comment><USER3> I'm overall loving what's in there. I'd definitely support it. It seems like a more realistic thing of hackers supporting other hackers instead of hoping society will change to. Great stuff.

"The Foundation will help to create environments where hackers are welcomed, supported, nurtured and celebrated. Creating a safer, more supportive and accepting world for hacker will help to reduce depression and suicide among hackers, and enable hackers to live fuller and happier lives."

I still think someone should bring up one point when stuff like above is mentioned. The corporate media and Hollywood, the most powerful influencers, have totally redefined the label "hacker" to be criminality to a point where it's probably beyond salvage. If anyone uses it, the laypeople hearing it will immediately have a negative mindset that creates a harder conversation for that person. Its constant association with evil by media makes me think of it as the geek N-word or something in terms of average person's negative usage or reactions, hackers arguing about why they identify with positive version of it, and media fueling fires for ratings and profit. Although I got good at explaining real meaning, I've found that there was no real effect among the hundreds of laypeople I tried that on. There's not enough of us doing it to counter media's reach. Being uncommon and marginalized group means that will remain true a long while.

This is a marketing problem more than anything. A brand was trashed but people keep using and defending it. Marketing practice (and results!) say we need new brands so we start fresh in the minds of the audience to get broader support. I've been using the words thinker, inventer, technologist, and recently maker. Three already have positive connotations which correspond with what people will be doing on software and hardware side. Lay people might be happy to invest in locations, equipment, and support for (those words) among the nation's youth. Ive found that maker generates confusion ("What's that?") that lets me explain the concept with positive examples from makerspaces. So, it's weaker initially and requires a little work but that can be as simple as linking to a story. So, there's some options.

I say we keep the hacker term among ourselves while garnering mainstream support with the kind of words they understand and would back. I've already been doing it with positive results. I see others doing it, too, even though many wouldn't call themselves hackers. They're just folks recruiting youth to let them do group projects, dream big, and so on. Happens in many fields. It's a proven model. If we use it, though, we might not call them hackerspaces given that name leaking out to external supporters could cause conflicts or damagen. We'd have to use makerspaces, invention/technology centers, and so on… which again is already happening in many places. Hacker stays internal. Alternatively, we take those little conflicts using them to educate people on the term with positive examples risking losing support or funding on principle. If so, I argue we don't explain the term: use examples of people who built amazing things that countered the status quo using their inquisitive attitude and deep understanding. A number of them showing up in the media overtime coming out of these (words here)-spaces might positively define the hacker spirit in the new terms and/or slowly undue damage to original term.

It would also help if we kept collectively pushing the media for distinction between positive and criminal hackers. Showing more of the inventive ones plus their disdain for the damaging ones. Least there's hackers on the cop shows saving peoples' asses. That's… something… I don't think they understand good hacking, though. I see hints of it with characters that use tech or deep knowledge to bypass limitations of an obstacle or tool. Maybe hackers can keep coming up with ideas like that for major shows forwarding them to the producers. Trickle examples into stories with wide audiences. Similarly, keep forwarding inventive folks to local and national media outlets so they highlight them slipping in words like maker or hacker. Need a positive pushback against what media is already doing preferably in a way that they co- opt it into their own, standard practice due to positive ratings. In the end, they'll be taking credit for their show elements with us rolling our eyes at least being grateful that we're a bit safer and more appreciated for our efforts.

Just some thoughts I have after years of fighting this battle with the general public looking at what worked and didn't. We need to do more of what works. It's more about perception and influences than facts or tech. Our methods must be likewise. Just the way it is.</comment>


Apple's new iOS 14 home screen brings Windows Phone Live Tiles back to life - <AUTHOR> https://www.theverge.com/21299727/apple-ios-14-home-screen-widgets-windows-phone-live-tiles <comment><USER2> They really remind me more of Android widgets, which the article also mentions. Those were a killer feature for me for Android.

<comment><USER3> Agreed, it's definitely Apple taking a step in the direction toward features I miss about Android.

Hope at one point they can behave like true widgets--really miss things like the Hue widget on my Galaxy allowing me to control preset lighting at the tap of a button, without needing to navigate through the app.

Maybe this can be done through shortcuts as well? Haven't really invested the time and effort to develop my understanding of shortcut's possibilities.

</comment></comment><comment><USER4> Windows 8 gets a lot of flak, but I always remember looking at it and thinking that something in Microsoft's DNA had changed. It seemed a risky design move for an outfit seen as risk-averse.

And I really like the 2017 iPhone SE in my pocket right now, but I loved the Nokia Lumia 920 I owned a few years ago, before a long drive in a torrential downpour destroyed it. The (live) tiles were one of the things I loved; bigger tiles worked better for my stubby fingertips.

I held out for as long as I could in hopes of a Surface Phone being released before finally buying the iPhone. The Duo is a nice bit of hardware, but it's Android, which I have never liked.

<comment><USER5> That was a daylight robbery of all my words. I loved Lumia 920 and chose it over the iphone 5s at the time. Wanted the industrial design to succeed so much. Sad that with so much clout, MS could not get enough apps.

<comment><USER6> I loved it so much too. As well as webOS. Once in a while I'll day dream geek of either webOS or Windows Phone having a steady 15-20% world wide market share.

Getting into far too deep say dreaming...even though it basically couldn't have happened, webOS being consumed by Microsoft or some Microsoft and another company JV with a webOS Windows Phone hybrid with similar market share.

OR something where somehow webOS would've remained on tablet as the Touchpad was pretty good. And it being a much better and viable tablet competitor. This would have to involve other things to work and stuff otherwise too small of an ecosystem, but yeah.</comment></comment></comment>


Show HN: App that allows you to follow Facebook pages without liking them in fb - <AUTHOR> http://followpages.com <comment><AUTHOR> I made a web app which allows you to follow facebook pages without actually liking those pages in facebook. This app will allow you to `follow` various facebook pages and it has a `wall` where you will have a PICTURES FEED of the facebook pages that you are following. Will you be interested in trying out this app?

If you do, please share your feedback. Thanks for your time.

[http://followpages.com](http://followpages.com)

I made an android app too. [https://play.google.com/store/apps/details?id=com.ionicframe...](https://play.google.com/store/apps/details?id=com.ionicframework.followfbpages779824)

</comment><comment><USER2> Why there is no text and only images?

<comment><AUTHOR> I assumed that the text is not important. I am showing only the pictures. I wanted to have something like Instagram for Facebook Pages. Do you think the text is important?

<comment><USER2> Yes I think that is an essential part of the content.

<comment><AUTHOR> I will think about it. All the Facebook pages that I have seen post only pictures, not any text (definitely not important text). Can you let me know what type of pages(or which pages) post text?

</comment></comment></comment></comment><comment><USER3> Interesting idea.</comment>


Failing at Microservices - <AUTHOR> https://rclayton.silvrback.com/failing-at-microservices

<comment><USER2> There should be more microservice postmortem posts like this. Or mandatory 6-month follow up after any how-to Docker / container / microservices blog posts to see what actually survived production.</comment>


Huntsman automaton (2015) - <AUTHOR> https://britishmuseum.tumblr.com/post/120605985962/huntsman-automaton <comment><USER2> The labels are removed from the diagram but I believe the large gears in the middle are on top of a main spring, you can see a bit of the coil on the right.

So the diagram shows the mechanism upside-down.

At the top is the start/stop wheel. One revolution of that wheel and the lever clicks into the single slot, stopping the motion.

Just below that are the 3 travel wheels which are toothed for traction. The rear axle has a gear that engages the large gears on the main spring below.

Left of the main spring are the gears for limiting the speed, a kind of governor.

</comment><comment><USER3> See also [https://en.wikipedia.org/wiki/Karakuri_puppet](https://en.wikipedia.org/wiki/Karakuri_puppet)

</comment><comment><USER4> What is propelling this? Am I missing some kind of wind-up spring in the mechanism?

<comment><USER5> Likely force of wine poured in. In other words, gravity. (Much like springless counterweight clocks.)

The top part is a ratchet.</comment></comment>


Deconstructing Finnish - <AUTHOR> http://borealexpat.blogspot.com/2014/08/deconstructing-finnish.html <comment><USER2> I travel quite a bit on business. One tactic I use to build relationships with customers and partners is to have them teach me how to count to ten in their language, typically over a beer. By now I know Japanese, Spanish, Korean, Arabic, French, German, Cantonese, Finnish and a couple of others I've forgotten.

What popped out immediately when learning the Finnish numbers was how long the words are. All of the other languages count with one or two syllable words. When pronounced, the Finnish is, minimum, two syllables. Three, seven and ten are three syllables. Eight and nine are four:

yksi

kaksi

kolme

neljä

viisi

kuusi

seitsemän

kahdeksan

yhdeksän

kymmenen

Twenty-First is: kahdeskymmenesensimmäinen

I've always wondered what it was about the history of the language and culture that led to this. Finnish does quite a bit of concatenating words to create other words. It was originally the same for numbers. For example, the longest, eight: kahdeksan was originally, literally, 'with two ten'. You can see hints of this in that kaksi (two) contains 'ka' and 'dek' references a borrowed word 'deca', ten.

Ref. [http://goo.gl/Zt2WBb](http://goo.gl/Zt2WBb)

<comment><USER3> Ha! My son does a similar icebreaking thing with folks of different culture/language. He asks them how to say "Excuse me, your dog is on fire!" Has it in 5 or six languages now.

<comment><USER4> Anteeksi, koirasi on tulessa

(though in practice the polite forms are rarely used in Finnish. You'd probably go for _hei, sun koiras palaa_ )

<comment><USER5> Growing up in the US, I learned Finnish from books and maybe some official radio/TV, as well as family. My cousins in Finland made fun of me for speaking like a book: I'd always choose the first sentence you presented and they'd just gawk. "Who talks like that?"

I knew lots of old words they'd never heard, though, since I was practiced at speaking with 70-year-olds who'd learned from their immigrant parents. A little linguistic time warp...

</comment></comment></comment></comment><comment><USER6> Bottom line: native speakers of English don't grok morphology. When exposed to it, the best among them get fascinated and keen, the worst are cast into despair and ennui. But hey, this way of dealing with words is quite common as languages go. Greek, Arabic, Russian, Turkish, Swahili, all of them work by affixing lots of grammar markers onto roots, sometimes changing the roots and the affixes in subtle ways. (Actually, English used to be like that, too, no more than a thousand years ago.)

</comment><comment><USER7> It's sounds to me like a problem lots of people have when learning foreign languages. The author said so himself in the article. If you asked a Finnish person why a particular word is spelled/inflected/conjugated the way it is, they wouldn't be able to tell you. They just memorize the final forms and know when to use it. This is how a child learns a language. It's difficult for people learning the language because they know why—they learn the rules. And they can't help but try to run through all the rules in their head when forming a sentence.

A similar problem occurs when learning French. If you take at face value that 75 is "soixante-quinze" instead of deconstructing it as "sixty-fifteen", counting is a non-issue. But you can't, because you learned that counting is "weird" after 70 and you remember that when you try to speak it.

<comment><USER8> You have to learn rules. You can't learn all of the numbers that exist without rules, you'd never get anything else done.

<comment><USER9> Describing how children learn language as "memorization" is probably not accurate. Native speakers do "learn" rules, they just do it more or less unconsciously because our young, developing brains are wired for language acquisition.

<comment><USER10> I think this has far more to do with the difference in how children and adults are taught languages than structural differences in the brain.

After all, 2 year olds aren't sat down with pages of conjugation tables to memorize, rather they pick things up from speaking and being corrected.

</comment></comment></comment></comment><comment><USER11> >>For years, I've enjoyed some popular Finnish bands without necessarily having much of a clue what they're singing about. It's not a strange as it might sound.

I always found it funny when native English speakers first realise that this is possible. But as a person whose first language is not English, I grew up surrounded by songs which I couldn't understand - and I could still enjoy them.

<comment><USER12> Here's a song for English-speaking people to get the experience of listening to American pop music without understanding the words: [https://www.youtube.com/watch?v=E77HpMMbDYc#t=83](https://www.youtube.com/watch?v=E77HpMMbDYc#t=83)

</comment></comment><comment><USER13> Finnish and Hungarian are the two European languages that I can't make any connection to and after reading this article I feel a little bit better about the Finnish part of that, and I'll take consolation in the fact that Finnish and Hungarian are related.

<comment><USER14> Hungarian is regarded complicated, but in fact it is quite regular and even simple in some aspects - there is no grammatical gender and modern Hungarian has only three temporal forms, of which only one is a combined form (future).

Among the unusual things in Hungarian are agglutination (Turkish has it too and even Esperanto) and vowel harmony (mostly found in Turkic and Uralic languages).

Agglutination example: House is ház, apple is alma. Inside the house is ház[ban], inside the apple, almá[ban]. Inside [my] house is ház[am][ban], inside [my] apple almá[m][ban]. And so forth. It's kind of like postfix notation.

<comment><USER15> I learned Hungarian as a Mormon missionary, and by far this agglutination (I'd never seen that term before) is my favorite part of the language. It's like being given a set of word legos and told "go nuts!" And it always seemed really regular to me; I was never as frustrated learning Hungarian as I was with German in high school.

We taught English classes there, which helped me realize just how capricious the language can seem to an ESL student.

</comment></comment></comment><comment><USER16> I'm a Finn and not language person, so I have always wondered why some linguists and philologists (like Tolkien) love Finnish language despite it being so weird and hard to learn. Here is interesting opinion from one foreigner:

[http://www.reddit.com/r/Nordiccountries/comments/2bm3e4/dane...](http://www.reddit.com/r/Nordiccountries/comments/2bm3e4/danes_are_not_as_beautiful_as_they_think_at_least/cj97u9k)

        --8<--

Ok this might get long.

First to give some weight to my opinion, I should mention that I've studied most of the major language families in the world to some depth. I've studied indo-european languages quite extensively (including all scandinavian languages), I have a degree in Icelandic, teach it for a living, and have studied Finnish for many years.

In comparaison to other languages, Finnish is very regular. It is extremely efficient - you can create new words very easily and all the parts 'click' together perfectly. One of the reason for the great practicality and efficiency of the Finnish language is that for one thing, it uses many small ways to integrate endings seemlessly into the words - vowel harmony means only certain vowels can be added onto certain nouns (a o u can only have a o u in the word, whereas ä ö y can only be around other ä ö y, and i e are neutral). Every way in which a word can end in Finnish also has a second 'open' form that is used when the seal of the word is broken (nominative) to add more stuff onto it. The word kuningas 'king' can be 'broken open' to kunkinkaa- and then you add endings (kuninkaalle, kuninkaana, etc.).

So it's kind of like a really slick puzzle where each part fits specifically with a word and various rules make it all seem like one big beautiful well integrated whole.

Another beautiful thing about Finnish is the purity of its sounds. It's extremely clear. You can chose to speak Finnish in such a way that every single vowel is completely distinct from the other, no sound is ambiguous, everything is just the way it should be.

Finnish also has a LOT of words. LOADS of words describing sounds in nature. LOADS of words for various types of movement (jump, jump once, jump around, jump casually, etc.). It is the PERFET language to talk about the forest, mushrooms, types of soil, types of bark, birds, water, weather. I can think of SO many words related to trees, bark, where the tree lies, how big it is, is it dead on its side, dead lying on another tree, dead with the middle rotten away, the bark rotten away, etc.

Finnish is also what is called a linguistic icebox. When you put a new word into Finnish, it remains unchanged for many thousands of years. The word kuningas 'king' is nearly identical to the proto-germanic form (*kuningaZ).

So in other words, Finnish is incredibly clear, very 'integrated' (words seamlessly melt into one another with high specificity), really rich in derivations (you can create hundreds of words based on one root), really rich in words for sound, movement, nature, trees, plants, etc., and it has changed very little for a very very long time.

Sure, it's spoken with a rather low voice and your culture might label Finnish as ugly, but it's just really different from the germanic languages, and in my opinion, infinitely more beautiful!

Upea suomenkieli, kaikkein kaunein kieli!

        --8<--

<comment><USER17> What he is describing are aggulutinative languages. They are not that unique.

I feel like a broken record, but I think Arabic qualifies (my specialty). I also think of German, Turkish, Russian.

What is interesting, at least with dialectical Arabic and a general trend in languages where synthetic languages (agglutinative languages are a subset of that) move to analytic (like English, where you have clusters of words bonding to have a meaning, instead of morphology changes on the word) over time (I was studying with an Arabic dialectologist who worked with US DoS to write their books; perhaps the leading non-native on this stuff). She said if you read, this is not an uncommon trend as hinted earlier.

English is a good example of eventually dropping agglutinative (synthetic to analytic). I am not sure if this is happening to Finnish, but as an Arabic speaker it is very fun to use an agglutinative language with a special pattern system. Imagine basic word meanings are objects, and you can subclass them into a person doing it noun (k-t-b -> k-aa-t-b, writer), or a place where it is done (k-t-b -> m-k-t-b or m-k-t-b-a, office and library respectively) or something that is the passive object form (m-k-t-oo-b, something written down). There are even versions for receivng action passively, and many variants for verb types. You can build verbs on the fly. It is fun to watch US movies, here a weird word, and guess the root into the right pattern.

I have heard Finnish is cool, but not for quite the same reasons (at least it is very general). But keep that agglutination and fight the power!

<comment><USER18> The term agglutinative language has a specific meaning in linguistics: [http://en.wikipedia.org/wiki/Agglutinative_language](http://en.wikipedia.org/wiki/Agglutinative_language). Under this definition, IE languages (Russian, German), Arabic wouldn't be be considered as such. Typical examples are Turkic languages, Hungarian, Finnish, Korean, Japanese, most native American languages. And the language isolate Basque.

But you are right in the sense that other languages do exhibit agglutinative aspects, usually in nouns (Bundesausbildungsförderungsgesetz). One giveaway is how words get marked for mood, person, and tense. In agglutinative languages the basic form almost never changes.

<comment><USER17> You make a good point, I realized later when I was less tired and I was confusing the general type (synthetic) with agglutinative (specific sub- category).

Oh well, thanks for clarifying.

</comment></comment></comment></comment><comment><USER19> I'm Finnish, and I couldn't have performed this deconstruction correctly. I had no idea that the -vat form of verbs had anything to do with the conditionals, for example.

It's common knowledge among Finns that Finnish is a difficult language, but I don't think we're quite able to appreciate just how weird it can get.

<comment><USER20> Foreigners are taught to use the -vat form to form a conditional to get the correct consonant gradation. It's not relevant for juoda because the stem is juo-, no consonants.

</comment></comment><comment><USER21> My fiancée is Finnish, and she's very patient with me trying to speak Finnish, but my progress is slow (due to lack of structured effort). Do any of you HN Finns or language connoisseurs have any good language-learning resources? I have been unable to find something good online paid or otherwise.

<comment><USER22> have you heard of memrise? everybody there can attend every course. they are created by the community and are free.

[http://www.memrise.com/courses/english/finnish/](http://www.memrise.com/courses/english/finnish/)

<comment><USER21> I haven't, and this looks great! Thank you.

<comment><USER13> memrise warning: the quality of the decks is _very_ variable and more than a few of them will teach you total nonsense. I'm not remotely qualified to evaluate the Finnish-English decks (I know exactly two words of Finnish) but I just made a huge 'ignore' list for one particular English-Dutch deck that would happily teach you absolute nonsense.

</comment></comment></comment></comment><comment><USER23> Each language has its difficulties. Fully as fully fonetic language learning how to read Finnish atloud should be far easier than in some other languages who's speakers actually have spelling competitions for kids.

Hard part of English complex vocabulary compared to Finnish, as we usually derive things from existing vocabulary instead of inventing new except for loan words that normally are similar to English but more Finnish style.

Kirja=book. Kirjain=letter as in alphabet. Kirje=letter as in mailbox. kirjoitus=writing Kirjasto=library Kirjoittaa=write Kirjoitettu=written Kirjata=to register [as write to register] Kirjaamo= registry office. Kirjoituskone="writing machine"= type writer

<comment><USER24> As an english speaker who learned some finnish, my problem is that all your nouns all get handled differently e.g. is kirjeet the plural of book, letter(alphabet), letter(mailbox), library or some other book related word. What about kirjoja? Of course I know the answer, but there are so many ways to modify words, and each one is a bit different. Still I enjoy it.

</comment></comment><comment><USER25> Just as example, how many forms one word can take: [http://depressingfinland.tumblr.com/post/65222506844/what- do...](http://depressingfinland.tumblr.com/post/65222506844/what-do-you-mean- finnish-is-difficult)

Sometimes when I write keywords in Finnish and English, people have asked me why the list for Finnish is 10x longer, that's one of the reasons. There can easily be 10 relevant forms for the one word. But I don't naturally list the more uncommon forms.

</comment><comment> guard-of-terra It's not something new, actually every language course has a lot of tables where words turn into another word forms.

And it's not called deconstructing, just morphology that you learn. Studying English yields some tables too, mostly for temporal forms.

</comment><comment><USER26> Definitely going to learn Finnish after I master Russian, been stuck on the latter for a few years now, Finnish the way it sounds, I like it a lot.

<comment> guard-of-terra Kind of sounded like you are going to learn Finnish after forever.</comment></comment>


For One Tiny Instant, Physicists May Have Broken a Law of Nature - <AUTHOR> http://www.physorg.com/news188211977.html <comment><USER2> Between this and Schroedinger's cat, is it that the universe is lazy-by- default evaluation, and eventually consistent (AP on the CAP axis)?

</comment><comment><USER3> Yet another article about the parity breaking at rhic, i work in this field and while this would be very exciting it's not a cut and dry result. Running the numbers for the proposed theoretical cause of the parity violation leads to something a lot smaller than what is observed. While making simpler, non parity violating, arguments based on geometry and the elliptic flow in the fireball can get you near the right numbers.

See this paper for another explanation of the observed charge correlations <http://arxiv.org/abs/1002.1758>

_edit_ clarification

</comment><comment><USER4> This writing is kind of silly. It goes from waffling _May Have Broken a Law of Nature_ in the title to the definitive _a law of nature had been broken_ in the first paragraph.

(I'm not a physicist, so I may be making an ass of myself. But...) If it was already demonstrated back in the 50's that the weak force violated the parity law, then it's not much of a law, is it? Tune in next week when law enforcement agents from the Dept. of Nature identify Zaphod Beeblebrox as a "person of interest".

<comment><USER5> To be fair, "Science experiment to disprove hypothesis disproves hypothesis," is a less exciting title.

</comment></comment><comment><USER6> What a letdown! The article begins with high drama ("Action still resulted in an equal and opposite reaction, gravity kept the Earth circling the Sun..."), then explains that scientists observed the parity law being violated by the strong force, which "was thought to adhere to the law of parity, at least under normal circumstances."

 _At least under normal circumstances???_ Now I remember why I don't study particle physics!

</comment><comment><USER7> Eh... this sort of double-speak annoys me, please forgive me for nit-picking but nature's laws are _never_ broken. By definition. It is some human model of nature's laws that is broken.

<comment><USER8> "Nature's Laws" are constructs created by humans to describe nature. 'Nature' doesn't have laws, it is what it is.

<comment><USER7> This is a silly semantics game.

Nature behaves a certain way. That "is what it is" _is_ what we call "nature's laws."

I think you're confusing "nature's laws" with the "laws of physics." The field of physics is a human construct, whereas nature is not. But really, it all depends on what you consider the definition to be, so I will not debate this further, as we both should understand what we each mean by this point. (Hopefully.)

<comment><USER9> You would think.

I took a course at Caltech named _Philosophy_ _of_ _Science_ , and we spent weeks discussing what a "law of nature" is.

I think the article title is incorrect though. The law wasn't _broken_ (that'd make sense if it was a legal system law), the law had been _disproved_ , perhaps.

<comment><USER10> Broken could also be correct if it was a "law" currently in effect universally and only the high energy of the event lead to its violation i.e the physicists using high energies managed to circumvent something that usually holds true.</comment></comment></comment></comment></comment>


Show HN: Kamber - Static Blog Server on Crystal Language and Kemal Web Framework - <AUTHOR> https://github.com/f/kamber <comment><AUTHOR> Hi!

This is a Crystal language and Kemal based blog server which is very simple and efficient.

Contributions are welcome!</comment>


The Rise and Fall of a Small Orange - <AUTHOR> http://reviewsignal.com/blog/2016/01/19/the-rise-and-fall-of-a-small-orange/ <comment><USER2> Uh oh... I just signed up for A Small Orange a few months back, now I'm curious if I should move hosts yet again. Looking for a good SSD-based host with web hosting. I've moved between hosting companies way too much either with them going out of business, changing plan costs and not telling me, or other poor decisions/support.

Not sure where to go from here. All I need is relatively inexpensive-but- reliable web hosting (preferably where I can use Let's Encrypt).</comment>


Forty-five times faster at programming - <AUTHOR> http://imprompt.us/2011/forty-five/ <comment><USER2> There's totally a selection effect going on here.

\- The professor gets to pick the problems; of course he picks ones he can solve quickly and easily.

\- The students are taking a class from this professor; presumably they lack certain skills or knowledge which he has, and which will be developed during the assignments.

When we normally observe '10X' differences in programmer productivity, it's _not_ the case that one of the programmers being measured is picking the tasks for all the others, and that the others being tested are selected on the basis of not knowing (or having only recently been introduced to) central concepts required for those tasks. Even if his measurement of the students' programming time is solid, and even ignoring that he and his students have different incentives (his students don't necessarily benefit from speeding through assignments), _of course_ you see a dramatically wider difference in programming speed in this case than in most contexts.

<comment><USER3> The tone of your comment suggests you think the guy is bragging or showing off, or something -- I really doubt it.

Maybe the guy is trying to be a better teacher? Maybe he thinks that there is a real effect aside from the selection effect you observe, and is trying to maximize his teaching? Maybe he just wants his students to do well?

I submit that the answer to all these is yes. My evidence is that fact that the article ends with questions about how people learn to program well so he can incorporate it into his course.

<comment><USER4> The "some programmers are X times faster than others" phrase is extraordinarily strong and in my opinion destructive meme.

The reason believe this meme is destructive is because it mostly powers the approach of _"if there's a problem with the development process, it's because we have the wrong people"_ rather than "we have the wrong methodology, we have a broken relationship between customer and programmer" or any approach that could get your existing people _working smarter_.

In any case, A computer science teacher should, at least, be well aware that a post like this is feeding the meme.

Concomitantly, anything that debunks the meme is worthwhile.

<comment><USER5> I find it hard to believe that some programmers don't believe in the huge productivity differences between developers.

Of the people I personally know, there's absolutely no circumstances under which the slower developers could reach 1/5th of the speed of the fastest developers. There's just a huge gap and it's not just methodology. If you haven't witnessed it, you must have been put in very homogeneous environments.

<comment><USER4> I certainly have seen huge gaps in apparent ability. Usually, the "slow" programmers simply don't know how accomplish certain things - for some tasks, I am infinitely faster than an "average programmer" - for example, if the average programmer doesn't understand what a recursive descent parser is or doesn't understand that a database require logical constraints.

However, a team's productivity can be made N times greater if said adopts a coherent process, including education to fill in the gaps of "unproductive" programmers.

It is certainly true that a certain percentage of unproductive programmers would rather quit than upgrade themselves. I've worked with them. But a management approach of demanding a _willingness to learn_ will give you an environment 100x more pleasant than a management approach of shouting "we want A-players". And said approach might indeed improve the total productivity of the team.

<comment><USER5> I agree that the less productive programmers ought to be willing to learn and can improve.

But at least in some of the cases I know, the difference in productivity is based on a couple of extra _decades_ of intensive experience (fanatic code- all-day experience) and does not get narrowed down significantly by studying new techniques.

I agree these are the outliers, though.

<comment><USER6> In my experience, there's fairly little difference between programmers in lines of code per hour. The most I've seen is a factor of about 3, measured over a couple years, and it's largely because the slower programmers are working on harder problems (that require more thinking), or the faster ones work longer hours, or the faster ones do more copy & paste.

There is, however, a massive (orders of magnitude) difference on _impact_ that the better programmers have. And that largely comes with being familiar with high-leverage development practices, being willing to apply them, and being alert to opportunities where a process can generalize to a large scale and investments in automation are worth it. So for example, one programmer might spend a couple hours tracking down a bug, while another programmer spends a week improving the compiler's diagnostics and then a couple days writing a script that applies that and automatically fixes several hundred occurrences of the bug across the codebase. One programmer might spend a month refactoring 30 or so source files, while another programmer spends that month writing a script that fixes 5000 source files. One programmer might waste 6 years of his life writing Web 2.0 startups that nobody uses, while another might spend 6 years of his life inventing Google.

These are all teachable skills, but they can take a while to teach, particularly the ones that rely upon judgment.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I've never liked 'speed' as a programming metric because it's very deceptive. In this case we're talking about students going through some very basic training, and who will do things like blow 3 hours on a trivial-to-me syntax error... but it's "trivial-to-me" only because I, too, spent three hours on trivial syntax errors. I would expect these essentially "constant factors" to be dominating here.

I really don't like speed because there's a quality difference, too. I may not necessarily beat a fresh-out-of-college kid on some task on straight clock- time, but where theirs is bodged together, barely functional, and already extended to the maximum limit, mine will have a strong unit testing suite, be efficient, extensible, scalable, fewer bugs, probably even fewer features in places I know they shouldn't be, less code overall (despite the unit test suite), etc. And there will be tasks I can complete that they can't even get close to; what's the multiplicative difference between "I built a scalable system that serves millions" vs "I couldn't get the system to do anything useful" in the same time period? The productivity differences are really more about quality than raw speed. There are speed differences, certainly, but I think it's dominated by the quality difference.

<comment><USER8> Isn't that the whole point? If we can find a way to get rid of the "constant factor"-type problems, the students will have more time to concentrate on the overall quality rather than just handing in whatever they've been able to bodge into a working shape. Not only that, but it would get rid of the single most frustrating part of learning at a stroke.

</comment></comment><comment><USER9> First comment: _What made me faster? Practice, practice, and a healthy dose of more practice._

What made me faster? Copy, paste, and a healthy repository of stuff to copy and paste.

<comment><USER10> Practice, but also starting to look at problems in a more _realistic_ way. For example, I used to marvel at how one might make a simple 2D game. Now, I realize it's a lot of illusion and design based off of some pretty simple ideas. I think a lot of young developers are fearful of problems because the output seems magical.

<comment><USER11> Writing a 2D platformer this year was one of my more enlightening programming experiences. It absolutely made me draw the line between "Things that are theoretically correct (and impossible to implement)" and "Things that can be implemented easily and are `close enough'".

</comment></comment></comment><comment><USER12> In "Programmers at Work", Bill Gates makes a few interesting comments on programming speed and innate ability (pages 82-83):

"I still think that one of the finest tests of programming ability is to hand the programmer about 30 pages of code and see how quickly he can read through and understand it... A lot of people would say, "I want days and days to read this." A really good programmer would say, "Let me take that home with me. I'll just spend an hour tonight and go through the whole thing". The difference of ability there is vast."

<comment><USER13> Sure, but reading code is quite different from writing code. Not necessarily easier, but different enough that I think it invalidates the comparison.

<comment><USER14> I'm assuming Gates is talking about a reading _comprehension_ test. Like the ones grade school where you needed to read a paragraph and then determine the age of Mount Rushmore. How someone did as part of the follow up (What did you think of the architecture? How would you implement feature X?) would be a pretty good gauge of their skill. Since they're discussing a real code base, it's harder to fake it for the guy who knows all the buzzwords and all that but can't deliver.

</comment></comment></comment><comment><USER15> The blog poster is actually only asking for help getting his students faster. He's not looking to pontificate.

But, I will. Since it's the Internet and all...

One of the things I find intensely irritating is the presumption that classroom effects significantly correlate with industry effects.

Many/most students are still learning. It takes years to really start getting on top of your game. Further, even if the students are highly competent, e.g., a typical "young hacker", the activities are very small and limited.

So studies and anecdotes (plural of anecdote is not data) regarding student or professional performance in a classroom environment just isn't realistic.

</comment><comment><USER16> Here's some of what I've found helps make you faster.

\- Learn the idioms of the programming language and problem domain(s)

\- Keep your hands on the keyboard and OFF the mouse

\- Get the _best_ set of tools you can and learn to use them like an extension of your own body. If you have to stop and think how to use your tools then you lose any momentum you have thinking about the actual problem. (Pro tip: start by learning to touch type, then editor hotkeys.)

\- Anytime you solve a new problem. Spend time afterward making a more general solution. Then file that solution in a snippets file, utility library, or wherever is the first place you're likely to look for it when you need it

</comment><comment><USER17> I think there are a number of possible sources for the observed phenomenon. Students find it very difficult to get started. Students also find it hard to abandon code preferring to try to make poorly structured and thought through code rather than starting over. Finally, students find it hard to invent the abstractions that they need to solve large problems from whole cloth. Programming classes often concentrate on the details of expression and ignore the issue of using them to create patterns and abstractions to solve real problems.

One way you can improve things is to provide a framework for each of the assigned problems, either a program with stubbs or a working program which can be adapted to solve the assigned problem. I don't know how you teach students to throw away code rather than trying to make it work. Finally, teach programming rather than the programming language.

I also have found that having many small assignment works better than having a few larger projects. When I taught beginning programming I assigned on or two small programs per class meeting whereas the other sections had three larger projects. It is also useful to have the small assignments provide a library of abstractions (procedures) which can be used in later assignments. I also think it is useful to teach test focused programming where student need to present tests which validate their program as well as the program. These days I'd be tempted to require students use one of the source code control systems, probably Mecurial.

</comment><comment><USER18> Given the included JAR files, I'd be interested to know if the author measured only his performance in coding Java against his students.

Although I usually code in a basic text editor, Java is one of those languages in which I personally found setting up and getting familiar with a good IDE makes a huge difference. Back at University, my pure CS professors initially discouraged us from using Eclipse, Netbeans, etc. They certainly didn't want to teach us how to use them.

<comment><USER19> Great observation. Java requires masses of scaffolding just for Hello World and for this reason is not IMO a decent introductory teaching lesson. I taught an introductory programming course and I was required after several semesters of using Perl to switch to Java. It was awful to lose the ability to do one- liner scripts.

I also taught an introduction to the Korn shell and Unix environment. Since shells have a REPL, you can make an easy shift from entering commands to putting a list of commands in a file and running it. Super helpful for learning. Not possible with Java.

</comment></comment><comment><USER20> What is the goal of the class? Is it to become a professional programmer or more of an introduction to programming?

If the answer is the first, nothing beats hours of hacking and curiosity to learn in their free time.

However, if the answer is the second, maybe another approach could be used. For instance, is it _really_ important to know the syntax of all small details if those students won't even use it? (Remember, I'm assuming it's more of an introduction).

Maybe, something more educational, would be to have a bigger view of what software engineer is. Talking about the re-usability of modules, the different platforms/languages/patterns/paradigms or real world example huge projects. This way, the student will get a way better "feeling" of what programming is rather than trying to get a theoretical/trivial program to compile due to lack of experiences in that field.

Another suggestion would be to give the students a better set of high level tools to solve bigger problems. Let them have the role of a software architect working for Apple which is working on the next version of iPhone. So, instead of focusing on the small details, the student choose the features, carefully design the UI, think in terms of money/time, etc.

<comment><USER8> > If the answer is the first, nothing beats hours of hacking and curiosity to > learn in their free time.

Why need that be true? There's nothing in the nature of the problem to prevent there being a method for improving skills at a rate _faster_ than hours spent hacking would. I just don't know what it might look like.

It's definitely the case that small study groups _can_ accelerate learning, but it's so dependent on the composition of the groups that I don't think it's generalisable reliably. Dedicated one-on-one tuition can be _astonishingly_ effective, but it's highly dependent on the tutor and again, not generalisable until we can figure out how to efficiently train tutors.

</comment></comment><comment><USER21> Programming is a lot like learning to run. It takes about a year for a baby to walk; and another 2 before they learn how to run. In another 4 years (age 7) most kids are fairly good at running. Programming takes years of practice to get good at it.

Another analogy. Poetry & Programing have a lot in common. Once you learn to write it, creation is easy; good creations take practice & skill. Iteration is key.

</comment><comment><USER22> I would reiterate the practice and practice mantra. But I think it's more of knowing where to find information. Being a professor and many years of experience, the information you need to look up to compete your task is just a thought away. If not, you know where to go find the information online quickly. Whereas, the student struggle with IDE, looking up information from the book that you assigned and google. On top of that, you are confidence that your solution is correct, versus the student may not be as confidence; lacking confidence slows down your progress tremendously I believe. But that's another topic. I think even with google, the student still have to look for an example that is similar to what they are trying to solve, understand the example, and assimilate to their solution. All of that takes much more time than you having the knowledge in your head. To better compare, you should ask them how they go about solving the problem and you try to do similar steps. Now, are you still 40X faster?

</comment><comment><USER23> Is programming speed something that a university lecturer really needs to dwell on like this? I would have thought speed is more a natural by-product of familiarity than something that can be actively taught. And even if it can be taught, is there merit in actively working on it rather than on, say, ensuring correctness?

<comment><USER24> Speed can be taught (ask any pro athlete).

Speed is worth teaching (ask any manager).

Being able to solve small problems fast makes one capable of solving complex problems (divide and conquer).

</comment></comment><comment><USER25> A reformulation of the question as "What contributed to improving your programming speed?" would be nice. Concentrating on why or how the professor is faster is only indirectly useful, coming up against tips that helped people improve in real world scenarios is much more useful - at least to me.

</comment><comment><USER26> I suggest that it is rather absurd for the professor to expect the students programming speed be on par with his own--unless he's asserting that he himself is a poor programmer.

The one thing a professor aught to have in spades above his students is experience. And the only thing that speeds up a programmer, simply, is past experience. Being able to recognize patterns and problems and having a general idea of their solutions is 90% of the programmer's ordeal.

It's only reasonable to expect students to require a non trivial amount of "working it out time" as it's something all programmers go through. The first time you experience a problem of a specific nature you need to contemplate, research and explore the subject trying to flesh out the underlying logic of the problem. After which, you can finally devise a proper solution.

Its also important not to forget that as an experienced programmer you have the discipline to break problems down into smaller manageable components. Students, on the other hand, often are stuck blinded from the trees by the forest. Rather, they are daunted and intimidated by the entire problem set.

I also have to reluctantly point out, that the education for programming at Jr. and Sr. level classes is quite poor. It's kind of a scam. It's paradoxically too brief, too broad, too specific too general all at the same time. From experience, anything sub 400 level classes were simply credit padding courses. For programmers, real programmers that are actually curious and excited by programming who actually invest personal time to explore and enrich their knowledge of the subject as a hobby will get very little out of those courses. They have to sit through instruction on conditional programming, worse sit through hours of insane questions of incomprehension on simple if, else, for and while loops. By the end of the course, you get to do one interesting assignment, it's what the entire course was building up to, and all it is is a generic useless implementation of some common design pattern. The apex of those courses for me were doubly-linked lists, stacks, and knowing how to implement Huffman encoding. All of which I could have figured out on my own. The other type of programmer, the programmer by career appeal--the programmer who thinks I'll just take a couple college courses and land a cushy high paying job, these courses offer them basically nothing aside from an introduction to language syntax. The ugly truth of the matter is that the language portion of coding, the syntax and grammar is the smallest most inconsequential portion of programming--It's simply the tip of the ice-burg. What lies beneath is a solid understanding of logic, how to identify, adapt and apply reasoning. It's problem solving.

Overall my point is simply this, unless you figure out how to compress the sum total of you X++ years of experience as a professor [obtained from industry and as a teacher], and then figure out how to impart all that knowledge to your students there is no feasible reason why they could or should be as apt at programming as you as a professor.

<comment><USER3> The impression I got from that article was a concerned teacher, wondering if this gap was normal, and how he can increase his teaching prowess to help the students better. Basically the guy was looking to do better at his job.

As for how smart you are: wow thats great -- have a cookie for having interest and aptitude above and beyond other students who may also have that interest and aptitude, but did not discover that fact on their own.

<comment><USER26> Don't get me wrong, I'm not trying to elevate myself or be self promotional. I'm by far not one of the smartest programmers. I'm a good programmer, I "get" programming but I'm far from even thinking about trying to teach others how to program. I'm simply identifying two typical sides of student population for programming. From my own experience there were two very apparent groups of students. Aptitude wise, there were those that were cut out for it and those that aren't. I was in the group of students who was [and I'm not even insinuating I'm at the top of that group] and it was in common agreement that the pacing of the courses was inappropriate for either group. It was too slow for us, and too fast for them. It's just not possible to strike that balance. The first year or two of college programming classes is really for weeding out the batch of people that aren't cut out for programming. The people that make it through this selection have yet to really enter into serious programming topics. My point for stating this, is to make it clear that Jr or Sr level students aren't seasoned, they are simply the selection of students are are capable and ready to be turned into good programmers. They are still seedlings though, and can't be expected to compete against some one at a professional level.

Perhaps my wording was a little to aggressive in my comment, I wasn't trying to attack the professor, I was only trying to make it a clear point that being comparative between a seasoned professor and naive programmer is well, absurd.

<comment><USER3> To determine the people "cut out" or "not cut out" for something, based on a single class or two ignores a host of problems which have nothing to do with aptitude nor interest in the material. The way it is taught, the teacher, the fellow students, all contribute to success in an academic endeavor.

Further, some people struggle with subjects for a long time, then one day "get it" and surpass those who were obviously in the good group all through studies. Some people thrive under one teaching methodology and curriculum and others thrive under different conditions.

Basically the thing you describe only selects the subset of people who represent the intersection of the sets (people with an aptitude for proramming) (people who thrive under this curriculum) (people who get it quicly/incrementally). There could be plenty of other people in the (people with and aptitude for programming) set.

Another vaguely related bit of thinking: A lot of the best programmers I know come out of non-cs curriculums like math, music, geography, philosophy and so on.

</comment></comment></comment></comment><comment><USER27> A lot of the speed difference comes from having spent one's time learning the basics. After you've spent 5 hours debugging a mis-placed semi-colon, you tend to remember that kind of mistake and avoid it in the future.

But if the idea is to prevent wasted time while learning, there's a simple solution: have the students do pair-programming, preferably with someone who's already learned the basics. Or at least let them all do it in a lab, and have the prof walk around to help out students who are stuck. Not for their entire college career, but perhaps for CS 101.

Generally speaking I'm not a fan of pair-programming, but this seems like a good application for it.

</comment><comment><USER28> What makes one programmer an order of magnitude faster than another is the ability to intuit an algorithm to solve a novel problem. Where one programmer struggles to wrap their head around a problem and the other immediately sees the solution, that's where you will find such a huge difference in productivity. This intuition comes from experience, but some learn much faster than others.

Mastery of tools, languages, libraries, posture, etc. are significant but not to the same degree.

<comment><USER19> Agreed. Or better, the ability to easily see a number of approaches all of which would work (algorithm designers love to publish improvements on the state of the art), then go about selecting perhaps the simplest. If performance is an issue, one that meets the performance requirements. If future changes are anticipated, one that won't make that too difficult. Doing all this without the need to do time consuming research is what makes for productivity.

</comment></comment><comment><USER29> If you would like to retrieve that old facebook conversation, it might be possible with greplin (<https://www.greplin.com/>), a search engine for your online personal content. It's nice to see a professor be so devoted! At which university do you teach?

<comment><USER30> <http://www.manhattan.edu> \-- Manhattan College

</comment></comment><comment><USER31> I actually got _slower_ as I got better, because I started writing more tests :)

</comment><comment><USER32> This guy obviously spent too much time in academia. It's things exactly like this that make CS graduates less and less prepared for real software development carriers.

</comment><comment><USER33> What do the jar-Files mean, did he program an arkanoid clone in 26 minutes? That would be impressive.

<comment><USER30> 38 for arkanoid. The bubble game was 26.

<comment><USER33> I'll try that exercise myself asap, but my estimate would be more on the order of 3 hours or so.

Of course I'll have to look up a lot of things (I'd do it in HTML 5, so I'd have to double check the API for either Canvas or DOM). I suppose if you know the API mostly by heart it would help a lot.

In fact your article inspired me to put more effort into knowing the APIs. Could be because I was a Java developer for the most time that I got into the habit of always looking stuff up, even if I already knew it - I just felt like double checking a lot. Or maybe knowing the API could be substituted by a good IDE that suggests everything?

What are the rules for speeding up the ball in Arcanoid? :-)

<comment><USER30> It speeds up when it hits the paddle. If you do this exercise, make sure to actually time yourself, rather than guesstimate it afterwards - time slips away when you program.

</comment></comment></comment></comment><comment><USER34> I remember when I went to programming competitions ACM, Topcoder and like, we would have to solve 5 to 8 hard problems in like 4-5 hours. After that most homework CS assignments seemed like a joke, yet most students would spend days just to compile something half-working.

Most CS students are not trained to solve problems. They are taught algos, some language basics, but they only have to code 2 or 3 small programs per week.

We had a programming club where we would solve 4-5 problems in one hour, and only like 5 people attended it, out of ALL CS majors of ALL years.

And that's, kids, why it's so damn hard to find good developers.

<comment><USER35> I also did CS competitions in college, but I always felt they over-stressed speed. They are for quick problem solvers, who are also comfortable with the languages the competition accepts. However, the way I see it, merely being sharp and knowing a language well isn't good enough to be a good programmer. Programming to me is a strange mixture of problem solving, technical knowledge, design, writing, and typing and a good programmer is good at all of them (throw English in there as well if you're not a native speaker). Problem solving and typing are things they teach you to get a CS degree, and it's what those competitions measure, but most of our submissions were really poor code, even by my standards at the time.

[Edit] Add discipline to my long list of essential virtues for a good programmer. Discipline is a big one.</comment></comment>


Show HN: Jigsaw Composer – mockup environment in a chrome extension - <AUTHOR> Hey internet people,
over the last few months I've been working on a project that's been nagging at my brain and I'd like to share the results with you and hopefully get your thoughts.
A few years ago I had a theory that we could avoid unnecessary redesigns & improve the quality of dynamic interfaces with a tool that can plan - create mockups/prototypes - on top of existing sites.
Now, a very early prototype of this tool exists, a chrome extension tentatively called "Jigsaw Composer", with Jigsaw we can:
- Manipulate any site component
- Add & manipulate external components & icons from popular libraries (bootsrap/material/semantic ui)
- Add & manipulate html components from other websites
- Add & manipulate images uploaded from a pc or other sites
Manipulate = everything you'd expect from a mock-up tool
The extension is chrome storage based (no data gathering from me) & free
https://chrome.google.com/webstore/detail/jigsaw-composer/pabcpkphcbamcdeobmfjkgjmogjdbgjn
hope to hear your thoughts and feelings :) <comment><USER2> [https://chrome.google.com/webstore/detail/jigsaw- composer/pa...](https://chrome.google.com/webstore/detail/jigsaw- composer/pabcpkphcbamcdeobmfjkgjmogjdbgjn)</comment>


Tattoos and Y Combinator Demo Day - <AUTHOR> http://www.thisisgoingtobebig.com/blog/2012/4/2/tattoos-and-ycombinator-demo-day.html

<comment><USER2> Feels like a strawman to me.

There are certainly people who do investments based on a quick meeting (e.g. Andy Bechtolsheim's Google investment), but most people will have follow up meetings before actually committing to an investment.

That said, we select startups based on 10 minute meetings, and that works remarkable well.

Also, criticizing entrepreneurs for pitching at demo day just seems mean.

</comment><comment><USER3> _This is why I probably won't go to another YC Demo Day--on the off chance I get invited back._

Why say this? This post is fine explaining the preference to get to know entrepreneurs well and the apparent mistake entrepreneurs are making by approaching investors whom don't know the entrepreneur at all. But it seems to me that Demo Day is just another opportunity to hear an angle on a product as well as getting to know the entrepreneurs behind it.

And why was he having a conversation with Christina from USV if he wants to get to know entrepreneurs better? Then, why let the entrepreneur finish? Put on the Tom Hagen face and tell him "Now, wait just a minute" and start grilling the entrepreneur with questions to get to know him better. Maybe there is something I'm missing about why as an investor you wouldn't play this to your advantage. (As for the point about learning whether the investor is an asshole, this is Y Combinator: don't be an asshole or it is unlikely you'll have the opportunity to invest again.)

The investor is usually the veteran, the entrepreneur is usually the freshman. School him. That's the duty of the veterans in the game.

<comment><USER4> I did get to meet a lot of entrepreneurs there... but I knew her, so I said hello.

I let the entrepreneur finish b/c I didn't want to interrupt and it was only two min anyway.

</comment></comment><comment><USER5> This seems like throwing out the baby with the bathwater. Why would you not go to a demo day with some of the best signal-to-noise ratio on the planet?

I haven't been to a YC demo day in a while, but I assume that many/most companies don't close their whole rounds in 24h. Why not just say, "I liked your pitch-- I'd love to sit down with you guys for an hour or two tomorrow to talk thru it a bit." and then go on to describe how you like to add value/be involved.

It's possible that all of them aren't looking for hands-on-guidance from their earliest investors... But perhaps some of them are.

</comment><comment><USER6> _I spent a ton of time trying to get to know entrepreneurs early--even before their ideas are fully formed or before they have their decks. That's where I think I'm going to have the best outcomes and where I'll be able to be the most useful investor--where everyone knows why they're in, what they're there for, and we can all thoughtfully get on the same page about the vision we're trying to move toward._

Great! I'm one of those entrepreneurs, but I am an unknown. Before I get into YC (assuming that happens), how do I get in touch with you, Mr. Investor?

<comment><USER7> Try the link labeled "Meet with me" on the blog.

<comment><USER6> Believe me, I tried (not with this particular investor, but another one). If you're a nobody, no investor wants to talk to you. YC, and other similar programs, move you from the "nobody" group to a "somebody" group; but then you need demo days to efficiently introduce entrepreneurs to investors, and vice versa.

<comment><USER4> "If you're a nobody, no investor wants to talk to you."

Well, sure if you go in with the pitch that you are, in fact, a nobody, then I'd certainly be less interested. Who wants to talk to someone who isn't confident that what they're doing with their time is awesome? Tell me why you're awesome... and if you're in and around NYC, I'd be happy to make some time.

<comment><USER6> Maybe I just haven't learned the proper bluster when talking to investors... I really believe my idea is awesome, that I and my co-founders have solid skills, and that our startup will succeed with or without investors (but will succeed faster with funding). I feel anything else is BS that investors especially will see through, or am I missing something?

Alas, I am in the Triangle area of NC, but I'd be happy to chat via skype!

<comment><USER8> Investors need to hear the BS. You should be pitching a billion-dollar idea, even if that's phase 3 of your plan.

Also, NC is sadly outside the seed stage bubble. If you have traction, you may get a meeting, but then you won't need it.

</comment></comment></comment></comment></comment></comment><comment><USER9> As someone pretty involved/familiar with tattoo culture, getting a flash piece off the wall is pretty common and accepted.

I mean obviously you don't walk into Tribal Overlord Tattoo on the strip in Orlando Florida (doesn't exist) and pick a biomechanical alien off the wall, but you would walk into say Smith St. Tattoo in Brooklyn (does exist) and pick something off the wall.

<comment><USER10> As someone also involved/familiar with the tattoo culture, I'd say that "accepted" is taking it a bit far, and that "tolerated" is closer to the mark. Most tattoo artists I know produce flash because they know it pays the bills, not because they really like people using it. I don't know any tattoo artist that won't jump at the opportunity to create something new and unique.

</comment></comment><comment><USER11> You got a barbed wire wrap around tattoo after 1994? Ouch.

<comment><USER12> <http://xkcd.com/933/>

</comment></comment><comment><USER7> If I think about the best investments in startups ever, I think about Andy Bechtolsheim's investment in Google. The meeting lasted about 20 minutes then a check was cut. Peter Theil invested in Facebook after a 1 hour meeting.

Maybe some investors and founders want to date for a bit, but the biggest winners in history got in bed together without even dancing.

<comment><USER13> I'm not sure if these two aren't just outliers. The investors were pretty well known after all and had a lot of experience.

I think that closing a deal too fast can be as bad as dicussing it too long. Either you get a fast decission or not, brickering around to much about unecessary details is IMHO a sure sign that it takes too long. Not being asked any questions and just being thrown money for being part of a YC batch is, on the other hand, a sure sign it doesn't take long enough.</comment></comment>


YC W2011 applicants chat back online - <AUTHOR> http://www.nodejscloud.com:8001

<comment><USER2> Thanks to everybody that stopped by and chatted. Was great meeting everybody. - Justin

<comment><AUTHOR> No thank you xD

</comment></comment><comment><AUTHOR> *with spam control</comment>


CS188 Intro to AI – Course Materials - <AUTHOR> http://ai.berkeley.edu/lecture_videos.html <comment><USER2> Lecture videos for MIT's 6.034 (Artificial Intelligence) are also freely available online:

[http://ocw.mit.edu/courses/electrical-engineering-and- comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-034-artificial-intelligence-fall-2010/lecture-videos/)

6.034 emphasizes intuition over math, which might make it an easier alternative for those without a stats or calculus background. Also Prof. Winston is a phenomenal speaker.

<comment><USER3> Lecture 15 from it is my favourite lecture I have ever watched online. Stick with it until the end. And I totally agree Prof. Winston is an incredible speaker.

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

<comment><USER4> Applying Winston's Star method on itself. Meta-star if you wish:

Symbol: star is the symbol of this method, it makes the idea visual and memorable

Slogan: With these 5-star tips, you can 5x the impact of your good ideas

Surprise: You can achieve fame and impact by packaging your ideas better following these simple presentation tips

Salient: Having a good presentation is as important as having good ideas/work

Story: These presentation tips are told by a top MIT prof to his undergraduate AI class as secrets to career success

<comment><USER5> Lecture was phenomenal - thanks for suggesting it. Re: meta-star, I thought the surprise was providing a career/success framework in an AI course. That made it stick out. It was a nice "reveal".

<comment><USER3> It really blew my mind when I first watched it. A fair amount of the course went over my head so I had been randomly skipping around the series but inted to go back chronologically

</comment></comment></comment></comment></comment><comment><USER6> This is a popular undergrad course at Berkeley. To be clear, it's mostly focused on GOFAI (good old fashioned AI) - things like tree/graph search, constraint satisfaction, logic, some basic graphical models, and a bit of RL/ML at the end. It's useful to know about (because these things sometimes show up as components of ML systems), but also fairly disjoint from the core machine learning field that people are undoubtedly interested in.

<comment><USER7> That's also called Symbolic AI I believe. And there are some modern developments in this branch. I personally enjoy this more than ML - too much statistics for me - I tend to prefer a and b over 0.00789 and 1.4500965 :)

</comment></comment><comment><USER8> A more recent iteration of this course from Spring 2015 with better quality all around and the entire playlist of lectures: [https://www.youtube.com/playlist?list=PL-XXv- cvA_iA4YSaTMfF_...](https://www.youtube.com/playlist?list=PL-XXv- cvA_iA4YSaTMfF_K_wvrKAY2H8u)

</comment><comment><USER9> This is an awesome resource, and exactly what I've been wanting!

I've been thinking about AI a lot lately, but I skipped college and went straight into startups, so all my knowledge on the subject is from reading less focused materials. Reminds me of Stanford's iOS dev resources from 4-5 years ago.

[EDIT] oh god math, why can I program but I can't math unless it's trigonometry or vectors/calculus, visually applied math makes sense, otherwise I'm so lost.

<comment><USER10> > Reminds me of Stanford's iOS dev resources from 4-5 years ago.

Believe it or not, they still release a course every year (or semester, not sure). The latest one covers iOS 9 using Swift. You can find them all on iTunes U.

<comment><USER11> Paul Hegarty is such a fantastic instructor of that class... its is hands-down THE resource to get started with iOS dev.

</comment></comment></comment><comment><USER12> A little nicer format - with edited videos (1st half), HW and programming assignments, on edx: [https://courses.edx.org/courses/BerkeleyX/CS188x_1/1T2013/in...](https://courses.edx.org/courses/BerkeleyX/CS188x_1/1T2013/info)

<comment><USER13> Same course, but this link goes to the course overview page: [https://www.edx.org/course/artificial-intelligence-uc- berkel...](https://www.edx.org/course/artificial-intelligence-uc-berkeleyx- cs188-1x)

Your link took me to an internal page.

</comment></comment><comment><USER14> After finishing CS188, if you want to "go deeper", check out Berkeley's CS 294: Deep Reinforcement Learning, Fall 2015:

[http://rll.berkeley.edu/deeprlcourse/](http://rll.berkeley.edu/deeprlcourse/)

And you should be well on your way to being able to read and comprehend the Google DeepMind papers posted on Arxiv ;)

<comment><USER15> Any idea why only 2 out of (seemingly) 4 assignments are posted? Are the other assignments available anywhere?

</comment></comment><comment><USER16> Other AI courses - [https://github.com/prakhar1989/awesome-courses#artificial- in...](https://github.com/prakhar1989/awesome-courses#artificial-intelligence)

</comment><comment><USER17> The first half of this course was previously offered at edx during Fall 2012, Spring 2013, and most recently Spring 2015 (CMIIW). Back in 2013, when I just graduated from high school and waiting for uni to start, I enrolled myself in the Spring 2013 offering and it was a great course. Just note that this is a quite a heavy course to take (there are lectures, homework, and projects); but the project is really fun, you're to make Pac-man more intelligent in its environment :)

From the knowledge gained from the MOOC, later on I made this game [http://kenrick95.github.io/c4/demo/](http://kenrick95.github.io/c4/demo/) which I implemented a simple AI as the opponent, which is a minimax agent. It is not perfect, but it is good enough for me :)

</comment><comment><USER18> I took a later version of this class and I couldn't get into it. I thought I'd love AI, as the idea is extremely appealing to me, but it seemed to be mostly probability and formulaic work. Which is fine, if that's the way AI is, but I would've preferred if they'd explained why the algorithms chosen are what they are, and how we got to them--and what other methods have been explored.

As it is, the class just skims over a variety of techniques and ways to implement them, lacking depth (such as what disadvantages and advantages there are in practice or where they have been used in the real world).

<comment><USER19> This sounds like exactly what it should be as an intro-to-* course. You are given the names and terminologies and the ability (Math! Yes, you do need it.) and freedom to explore any deeper materials on your own.

<comment><USER18> Hmm, I always thought that this style of teaching was a good way to lose a lot of students' interest. A math professor I had was insistent on showing the thinking that led to a proof, which not only made it easier to remember, but also made the study vastly more interesting and engaging. From what I can gather, his technique has made him quite a popular professor amongst the students at the University of Waterloo, so I suspect this is quite an effective alternate style of "intro" course, although I recognize that it limits the breadth of material.

</comment></comment></comment><comment><USER20> They can code AI, but can't run their sound through audacity to clean it up? That's a bummer.

</comment><comment><USER21> I did the first half of this as an edX course (CS188.1x) and it covered up to and including the reinforcement learning content. It was really fascinating and enjoyable - definitely one of my favourite courses that I've done.

</comment><comment><USER22> This is one of my favorite AI courses. It basically takes you through a good chunk of Artificial Intelligence: A Modern Approach (warning, this is mostly the basics and not fancy machine learning) in a very practical way (implementing things for a pac-man game).

I tough a similar course for a while and they are doing a much better job than I did.

</comment><comment><USER23> I just took this course at Berkeley this past semester. The latest materials should be available on EdX for the public!

<comment><USER24> If possible, can you post a link to the same? The material on edX is currently of the Fall 2013 offering. Not that it's an issue but it would be nice to be more current.

</comment></comment><comment><USER25> If you watch the lectures, I highly recommend the projects, some of the best projects in a CS class I've had.

</comment><comment><USER26> Related: how do people normally access edX on an iPad? Am I correct that there is no dedicated app?

<comment><USER27> I believe this is the app: [https://itunes.apple.com/us/app/edx/id945480667?mt=8#](https://itunes.apple.com/us/app/edx/id945480667?mt=8#)

iOS 8.0 and greater

</comment></comment><comment><USER28> Just signed up for the same thing on edX! Still going through the math review though.

</comment><comment><USER29> Your thoughts on CS188 vs Udacity's Intro to AI?

<comment><USER12> The Berkeley one is a bit slower and it has a statistics/probability refresher. I found it much easier to follow at 1.5x speed. I'd recommend the Udacity one if your stats/probability knowledge is fresh or if you're re- learning the topics.

</comment></comment><comment><USER30> Amazing! Only if I had more free time.</comment>


Blocking all Email from Bulk Email Senders - <AUTHOR> http://neltnerb.tumblr.com/post/91372064171/blocking-all-email-from-a-bulk-email-sender <comment><USER2> "Show HN" is for something you've made that people can play with. A blog post doesn't count as a Show HN, so we've taken that out of the title here. For more information, see the Show HN guidelines at [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

<comment><AUTHOR> Thanks for the clarification.

</comment></comment><comment><USER3> > So really these companies cater almost exclusively to businesses which are > too small to actually manage bulk emailing, but who want to send their > newsletter or whatever garbage to everyone on the internet. Screw those > people.

This is just not true. Almost no major company develops or hosts their own email marketing. Both Microsoft and Apple use ExactTarget, for example, a major ESP which was recently bought by SalesForce.

This whole post is pointless. Professional bulk senders honor opt-outs because their entire business depends on staying in the good graces of ISPs and blacklists. So if you know an email is coming from Constant Contact, then you also know that you can trust the opt-out link--so just click it.

</comment><comment><USER4> Or just block any email with the word "unsubscribe" in the body. You will of course have a hell of a time white-listing addresses you do mean to get emails from.</comment>