Debunking the Myth of a Desperate Software Labor Shortage  - barry-cotter http://heather.cs.ucdavis.edu/itaa.real.html

<comment><AUTHOR> So one of the arguments in that article is, there is no labor shortage because companies get inundated with lots and lots of resumes, but they hire only a very small percentage of those resumes ...

But as anyone who has had to go through those resumes know, the vast majority of the resumes are from people who are totally unqualified for the job .. the fact that employers go through the entire resume pool and are unable to find qualified employees proves the shortage.

And that's just basic qualifications, we aren't even talking about actually knowing how to write good code yet.

p.s. if anyone is looking for a job and is a good java coder with some experience in webapps and GWT, send me a message.

<comment><USER2> Regarding your last point, you don't seem to have an email address in your profile.

Is this job on the east or west coast (or somewhere in between)?

<comment><AUTHOR> fixed it. send me your resume and all that (sorry i always thought HN had a PM type feature just never checked)

we have people on both coasts, though we are trying to build up headcount in the new york office right now.

<comment><USER2> Unless my eyes are deceiving me or you're joking, I still don't see any contact info in your profile.

<comment><AUTHOR> it says i have my e-mail address there ..

in either case, firstname.lastname@example.com

</comment></comment></comment></comment></comment><comment><USER3> I only read the chapter about percentages of hires, which didn't seem very convincing to me. So firms only hire 2% of applicants, not a very meaningful number without further information. Maybe the rejects apply to all the firms with a robot script, which would inflate the supposed pool of available applicants.

<comment><USER4> Especially considering that job applicants submit resumes to lots of firms. I think Joel has an article about this, how every firm thinks they hire "the top 2%" because they get 50 times more resumes than they actually hire. But a lot of job applicants and recruiters are spamming their resume to lots of different employers in the hope of just getting one "hit." So it works both ways.

<comment><USER5> One of his other insights in that article is gold too: who persists longest on the labor market? The folks who transparently don't have any business being hired. ("I cannot code a for loop in my language of choice.")

Given a cohort of 100 engineers with bell-curve distributed skills, after 6 weeks of equivalent effort in job searching, there is no reason to assume that the pool of engineers still out of a job would have bell-curve distributed skills (unless hiring decisionmakers are incompetent). Overlay several dozen cohorts like that and you get the labor market: a few good engineers who just graduated or just got married and moved to a new city, and a whole lot of wonderful people who are perhaps not as talented as you'd want on your team.

</comment></comment></comment><comment><USER4> On the one hand, an aspiring entrepreneur reading Hacker News might like the idea of having a cheap labor pool to hire from some day.

On the other hand, I believe there is a danger in devaluing the relationship between education, effort, and wages. With 0 wage growth over the last decade, the American public is becoming cynical about the idea that you can work hard to improve your situation. If industry can always import someone a little more desperate or naive into indentured servitude the moment there is any wage pressure, what incentive is there to improve your skills or education?

Considering the potential impact on macro-economic conditions, this might be a net negative for an aspiring entrepreneur.

<comment><USER6> > an aspiring entrepreneur reading Hacker News might like the idea of having a > cheap labor pool to hire from some day

You mean an aspiring exploiter and member of the parasite class?

<comment><USER7> Exploiter and parasite?

How many jobs and how much wealth have _you_ created today?

<comment><AUTHOR> How is this question relevant?

Does creating jobs and generating wealth justify being an exploiter and parasite?

<comment><USER8> It would seem to me that "creating jobs" and "generating wealth" would mean that you _aren't_ a parasite, and barring further evidence, that you're not an "exploiter" either.

Unless you think it's simply impossible to have a non-exploitative employer relationship, in which case all I can say is that it's great that you don't believe in the concept of an "economy" but personally I prefer it to the squatting-in-a-hut-that-I-made which is the other basic alternative.

<comment><AUTHOR> Well, as an example. You could be creating lots of exploitative sweat-shop type jobs, and generating wealth that that all goes to you, instead of the people who work for you and who created that wealth in the first place.

And if you did that, you would in fact be a parasite, you are parasiting off the wealth that is created by the people tricked/forced into working for you. Furthermore you are parasiting off society, because you have stolen the hopes and ambitions of those people you are exploiting. One of the basic tenets of capitalism is the idea that the harder you work, the more reward you get. When this is not upheld, people become disillusioned, and why wouldn't they be? Why would I work hard and come up with new ideas and inventions, if the benefit of my work is stolen by someone else?

I totally think it is possible to have a non-exploitative employer relationship. I also totally think it is possible to have an exploitative employer relationship. Surely you admit the possibility of the existence of both types of relationships?

<comment><USER8> "Surely you admit the possibility of the existence of both types of relationships?"

Yes, congratulations on finding my point.

By definition, if you are a net wealth suck because you are being exploitative, then you are not a wealth producer. You're trying to have it both ways to make a bad point. Being a net wealth increaser can't "justify" being a net wealth sink because you can't be both at once. This smells like weak thinking.

<comment><AUTHOR> I am saying it is possible to be exploitative even if you are a net increaser of wealth. I am saying that while it is a good thing to generate wealth, the good of generating wealth does not justify exploitation of labor, especially when the wealth that is generated does not go to the people who created that wealth.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> As pg has said, "There is a great shortage at the high end. I know a bunch of startups that are desperate to hire really good programmers."

<http://news.ycombinator.com/item?id=133360> (specific comment)

<http://news.ycombinator.com/item?id=133331> (full thread)

<comment><USER10> Are those startups lobbying for higher H-1B quotas?

This article, and the one in the thread you linked to, are talking about large corporations, not startups. There will always be a shortage at the high end. That's what makes it the high end.

Incidentally, the article you indirectly linked to quotes a Duke professor whose opinion largely agrees with the opinion of the UC Davis professor. Last I checked, Duke was a pretty well-regarded university, so I guess that means he's right. Or is there a flaw in that logic?

</comment></comment><comment><USER11> No less true in 2009.

</comment><comment><USER12> If the average comptetent programmer in the US started getting paid $120k (or more) instead of $80k, you better believe the "labor shortage" would end in a New York minute.

The labor shortage has everything to do with keeping wages deflated by exploiting a market-correctable short term issue, and little to do with any long-term structural problem.

</comment><comment><USER9> This has been submitted a bunch of times. Every time I read this article, I think it has more to do with how a UC Davis degree is perceived in the job market compared to other computer science degrees than it has to do with the overall job market for computer science graduates.

<comment><USER4> What is your basis for saying this?

There are a lot of arguments, citing a lot of studies, in this document. If nothing else, he has thought about this issue pretty thoroughly. If you disagree, something more than a snide remark about the quality of a UC Davis degree would be more convincing.

<comment><USER9> _What is your basis for saying this?_

Thank you for asking the follow-up question. I appreciate anyone on HN who asks another HN participant a follow-up question to clarify the factual basis for a statement.

To briefly respond to your question before I take my child to a doctor appointment, what has always jarred me about this FAQ is the line

"The main answer to this question is that the vast majority of high-tech H-1Bs are programmers, not engineers, and programming does not use math."

If this professor of computer science truly believes that it doesn't take much math to produce a competent programmer, he has a different definition of competent programmer from that found at some other computer science deparments, including most computer science departments overseas. There is a lot of industry demand for computer programmers who can program in a way that best takes advantage of what a computer can do best, by reducing a problem to its most mathematically correct representation.

I don't think a professor at MIT would dream of writing a FAQ with a statement like that in it about the computer science major sequence at MIT. There does seem to be a shortage of MIT-level programmers, even if there is not a shortage of UC Davis-level programmers.

<comment><USER13> I was about to add a new comment quoting this exact phrase (programming doesn't require math). Thanks for expressing my thoughts in a better way than I would have.

</comment></comment></comment></comment><comment><USER14> This article is about age discrimination in high technology. It suggests a number of reasons for it not the least of which is foreign immigration under the flawed H1B program. Other causes are that young people promote it and try to justify it with all the the above arguments. Each of you are complicit in this and will, in time, fall victim to it.

What did you figure you'd do when you turn 35?</comment>


Google Self-Driving Car – Part 1: Outside (2011) - <AUTHOR> https://www.youtube.com/watch?v=e_lGPRIRG3Y <comment><USER2> There's a part 2 video, where they take a ride in the car itself [0]. Pretty cool to see honestly. Almost like a snapshot in history.

[0]: [https://www.youtube.com/watch?v=-cj375UZyaI](https://www.youtube.com/watch?v=-cj375UZyaI)</comment>


Amazon Set to Publish Tim Ferriss  - <AUTHOR> http://www.nytimes.com/2011/08/17/technology/amazon-set-to-publish-tim-ferriss.html?_r=1 <comment><USER2> I've spent hours trawling Amazon for cheap e-books, and I've come to the conclusion that self-publishing is not a model that produces high-quality books.

Editors provide significant value to me as a reader. Whatever strategy Amazon is using, I certainly hope it includes a competent editing arm.

<comment><USER3> I wonder if it's simply that it will require volume and curation like a lot of other free/cheap content?

Book reviews are coming back, eh!

<comment><USER4> Agreed: I suspect that in the future virtually all writers will also write blogs (or the successor of blogs), along with miscellaneous other material designed to show that "Hey! I can at least write coherent sentences based on reasonable ideas."

</comment></comment></comment><comment><USER5> "Some independent bookstores have already said they do not intend to carry any books from the retailer, not wanting to give a dollar to a company they feel is putting them out of business."

Oh no! How will Tim Ferriss recover from the 2% of books he'll lose from the mom & pop stores? His market is 99% 18-35 probably haven't stepped foot in an independent bookstore in ages.

Good news for him, I enjoy reading his stuff, even though some of it goes too far in my opinion.

<comment><USER6> Tim is pure infotainment. Some of his stuff is crazy and over the top, and it is mainly there as great fodder for talk shows.

<comment><USER7> Four hour body had some pretty ridiculous stuff in it, but the diet and bodybuilding advice was pretty solid.

<comment><USER8> Could you point to a blog post or something that separates the ridiculous stuff from the solid advice, for those who perhaps lack the resources to tell the difference themselves?

<comment><USER5> I assume you haven't read the book?

It makes some pretty crazy claims that "COULD" happen, but aren't likely. Like loosing 100lbs in like 3 months (it "could" happen, but it isn't typical) or gaining like 50lbs of muscle in 3 months, etc. The book outlines how he did it - what it doesn't go into too much is the fact that he had that muscle, then lost it, then gained it back. So the argument is that his muscle was just rebuilding itself and that is easier.

The point is not to take everything literally - if you follow his slow-carb diets & exercise even slightly you SHOULD loose weight - you probably wont lose 100 lbs, but you could. Most people healthily lose 1-2 lbs per week and with this you could certainly do that. I'm 6"5 & 300 and I lost about 20 lbs in the first two weeks doing it, although that is fairly consistent on any real extreme change I do for eating healthy.

You'd understand when you read it that it isn't a step by step to get from point a to point b, but rather information to help motivate/guide you from your own point a to your own point b... in a sensationalized manner.

(don't get me wrong, I liked both books)

<comment><USER8> Actually I own the book (and 4HWW), have read several chapters, and found much of it useful but some claims rather incredible. I was merely hoping for a more thoroughly researched rebuttal than my own gut instinct.

</comment></comment></comment></comment></comment></comment><comment><USER9> I know this article is supposed to be centered around Tim Ferriss but the meat of it, to me, was about how Amazon was walking right into the turf of book publishers and setting up shop.

Hey book publishers, you shouldn't be concerned at all, because you've seen this coming for years. They made and popularized the Kindle, and you could have made a huge and radical shift toward digital copies of books and including them in your contract negotiations.

Oh, but I guess you could have never seen this coming. Learning from the music and movie industry must not have been an option.

Come on guys!

<comment><USER10> You are completely wrong. The publishers saw this coming a long time ago ([http://www.newyorker.com/reporting/2010/04/26/100426fa_fact_...](http://www.newyorker.com/reporting/2010/04/26/100426fa_fact_auletta)) and attacked first (<http://blog.laptopmag.com/ebook-price-war>). This is just Amazon slowly following through on its threat of personally entering publishing, which so spooked the publishers years ago.

</comment></comment><comment><USER11> Ok, It's been a while since I read 4HWW, but how is there so much praise for this guy? That book was like a how-to on being an amoral, freeloading douchebag.

</comment><comment><USER12> "the wildly popular self-help guru for young men."

This strikes me as a rather bizarre characterization and somewhat sexist. I haven't read his second book, but the first one was in no way geared to men only & I'm pretty sure the second wasn't either. Odd.

<comment><USER5> He certainly carries himself in that young man thrill seeker type way, which probably appeals on a mass scale more to men. The 2nd book did focus on males (weight lifting, giving women orgasms, etc) a bit but wasn't exclusively for men. To me, he comes across as a guy you'd want to sit down and have a beer with.

<comment><USER13> I have read his second book and actually applied his techniques for eating and it works very well and also isn't to difficult to achieve.

I like his books in general cause he tries to maximize efficiency with minimum input mixed with a significant amount of discipline. I think this is why it also appeals to many people. Who doesn't want to get maximum output whilst putting in little effort !

<comment><USER5> I tried as well, but god I hate beans. If I could just do slow-carb by egg whites and chicken I'd be set... you actually feel good, eat more (so you aren't hungry) and have lots of energy. Neat stuff. No one will get the crazy gains/losses he claims, but it does work.

Business wise I love that philosophy and try to utilize it all the time.

<comment><USER13> Ah thats the opposite :) I love beans and thats why its easy for me to apply. I like green beans, kidney beans, lentils so its the perfect diet. I really like exercise but i kept wondering why i would get defined all around the body but the stomach took so much effort (hundreds of situps just didnt do it) until i realised from reading his book that my whole diet was screwed. And yeh eating right just makes you feel so much better.

I read four hour work week as well. Some of the stuff in that book is quite difficult to apply as is because of work constraints but i think for IT people , we are in the best position to apply it cause for example, working from home isnt such a far stretch for guys supporting a unix environment, or doing some dev work, where else for people doing sales or face to face work its much harder.

I tried applying some of his techniques to lessen my "in office" work time and i managed to get 4 days a week (with just a tad less salary then if i was in the office 5 days) and 1 of those 4 days a week working from home. That was the best i could do, i couldnt get 4 days work from home or anything like that and even so it wasnt easy to apply them, the build up to ask for that kind of schedule from your boss takes time and planning. You have to somewhat let him know thats what you want and then prove that you can really work individually and are on hand to address issues anytime thats needed so gaining that trust takes some time...

But reading his book did kinda of highlight the idea that hey it is possible and if you dont ask you will not get so i tried and it worked (not 4 hrs but close enough :))

</comment></comment></comment></comment></comment><comment><USER14> I'm always surprised how Tim Ferriss sells so many books. He's such an aggressive self-promoter it's shameful.

</comment><comment><USER15> Before Tim Ferris, the only other Ferris I'd ever come across was the fictional Ferris Bueller. If he'd been Tim Smith, would've that affected his success?

He comes across as some kind of Ferris Bueller character too!</comment>


Checklist for Plain Language - <AUTHOR> https://www.plainlanguage.gov/resources/checklists/checklist/ <comment><USER2> The reason that government writing (and institutional writing in general) is often so bad isn't because the people writing it don't know how to write plainly, but because they don't want to.

When you're reading something from an institution that seems unnecessarily obscure or indirect or passive, there is usually a reason, and that reason is usually that if they had stated the plain truth, it would make them look bad.

There was a great geeky essay about the language of the video game portal that went into this:

[https://www.gamasutra.com/view/news/114904/Analysis_Portal_a...](https://www.gamasutra.com/view/news/114904/Analysis_Portal_and_the_Deconstruction_of_the_Institution.php)

And of course the classic Orwell essay:

[http://www.orwell.ru/library/essays/politics/english/e_polit...](http://www.orwell.ru/library/essays/politics/english/e_polit/)

<comment><USER3> [https://en.m.wikipedia.org/wiki/Mistakes_were_made](https://en.m.wikipedia.org/wiki/Mistakes_were_made)

<comment><USER4> Non-mobile link:

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

</comment></comment></comment><comment><USER5> The height of government writing would be Rachel Carson. She's best known for _Silent Spring_ but her Sea books are just as good. Much of her writing was published by the GPO.

[https://en.wikipedia.org/wiki/Rachel_Carson#List_of_works](https://en.wikipedia.org/wiki/Rachel_Carson#List_of_works)

But as for writing advice, the CIA isn't so bad.

 _Thinking and Writing: Cognitive Science and Intelligence Analysis_

[https://www.cia.gov/library/center-for-the-study-of- intellig...](https://www.cia.gov/library/center-for-the-study-of- intelligence/csi-publications/books-and-monographs/Thinking-and-Writing- Feb2010-web.pdf)

Also, the earlier _Bestiary of Intelligence Writing_.

[https://www.cia.gov/library/readingroom/docs/DOC_0000619161....](https://www.cia.gov/library/readingroom/docs/DOC_0000619161.pdf)

</comment><comment><USER6> See also the Accessible Information standard from the English NHS.

[https://www.england.nhs.uk/ourwork/accessibleinfo/](https://www.england.nhs.uk/ourwork/accessibleinfo/)

(I have a few problems with the NHS England accessible info stuff, most of which are around how inaccessible it all is.)

<comment><USER7> Also UK Government Digital Service guidance on writing:

[https://www.gov.uk/guidance/content-design/writing-for- gov-u...](https://www.gov.uk/guidance/content-design/writing-for-gov-uk)

</comment></comment><comment><USER8> Don't try to replace a good dictionary. In other words, don't fill your writing with definitions.

<comment><USER9> Most words have multiple definitions, hence legal definitions.

<comment><USER10> Legalese tend to define things even if that seems absurdly excessive and obvious. IANAL but I've read recently that it's like that because of contra proferentem principle[1]. It's basically a defense against a chance someone may invent some interpretation (different from what's intended) that would look plausible enough.

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

<comment><USER11> yes there is one big case in the uk concerning pensions the outcome depended on what seemed to a layperson trivial wording differences in the scheme of arrangement

<comment><USER10> Interesting. Can you please share a link to this story, if you have one?

<comment><USER11> Its in connection with BT Section B and later DB pesnions

[https://www.ftadviser.com/pensions/2017/09/25/bt-goes-to- cou...](https://www.ftadviser.com/pensions/2017/09/25/bt-goes-to-court-over- pension-inflation-switch/)

This switch to CPI was bared a few years before for British coal - the two schemes of arrangement differ in a very minor way - that a lay person would say where identical

</comment></comment></comment></comment></comment></comment><comment> happy-go-lucky If anyone is interested, here's _Strunk, William, Jr. 1918, The Elements of Style_ :

[http://www.bartleby.com/141/](http://www.bartleby.com/141/)

<comment><USER12> However, remember not to take a 99-year-old book literally as a style guide.

Strunk & White contains _some_ timeless advice. Most (but not all) of the habits it identifies as bad writing are still considered bad. But for positive examples of how to write _well_ , you can't follow the example of a book from 1918. Its language is inherently dated and it predates linguistics as a science. You need a newer style guide.

</comment></comment><comment><USER13> Defines any word as the speaker intends, not as the word is normally defined. ;)

</comment><comment><USER14> Also, doesn't omit anything in the name of "simplicity" or "plain-liness".</comment>


Can you give me some advice on this new video for my Startup. - <AUTHOR>

Hey HN, hows it going.  If you got a sec, I wanted to show you the teaser video for our new startup.  Hit up  http://www.Tugboat.io and click play.
DETAILS -
We shot, edited, and chose music for this in just a few hours last night.  We were able to use natural light.  (the studio was actually setup outside with a projector screen behind me)
The music is from www.Istockphoto.com.  It cost like $40 for that one track!
LAUNCH PAGE - Also feel free to give us some suggestions and our launch page that we built by hand at www.Tugboat.io .  We looked at a number of other launching page options like LaunchRock but we wanted to have control over the page and do things slightly differently.  (like the cool facebook and twitter pop ups once you add you email)
FEEDBACK- Thanks for taking the time to check out the video and page.  And feel free to drop some feedback here on ways we can continue to improve.
Thanks! <comment><USER2> This video has about 5 seconds worth of content.

1\. The company of the name 2\. What the company will do.

You need to write your copy, memorize your copy, and practice your copy until it stops sounding memorized. Then re-shoot with a target of 30 seconds MAX. Your call to action is to get people to put in an email, you shouldn't need a video for that, but if you have to have one make it short.

It would also be good to have very very specific content in the video that demonstrates why your SEO site is better than any other SEO site out there.

<comment><AUTHOR> yea, i like your idea of keeping it way way shorter.

and yea, we should talk about how we grew our site DenimBlog.com to 4million visitors a bit more probably.

thanks for the feedback!

</comment></comment><comment><USER3> after the join form there is a lot of blank scrolling that ends up at the twitter/facebook calls to actions (which I assume are supposed to appear after submission... I did not test).

edit: regarding the video itself, I'd also be more interested if there were some visual demos/examples of the product.

<comment><AUTHOR> yea sorry about that. our dev Mike was still tinkering with that.

yup, we are working on getting those calls to action a bit better. Here is what they are supposed to look like: <http://cl.ly/image/403B152u2K3m>

Yea, I should probably include some more screengrabs and stuff. good call.

Thanks for checking it out!

</comment></comment><comment><USER4> Hmm I put in my email address and hit join, then nothing happened. Not entirely sure it went through.

<comment><AUTHOR> oh sorry, Mike our Dev was working on making that email box not accept fake emails (check it out, try fake@mail and it will turn red)

if you don't mind, please try again. I think we got it working!

(thanks for the patience!)

<comment><USER4> Worked. Thank you.</comment></comment></comment>


Ask HN: Best audio based learning courses? - <AUTHOR> What are some of the best audio based learning of programming, math, and other technical subjects that you would recommend?   I am back to driving at work and the audio format is the only format I would have access to. <comment><USER2> Not a course, but I've enjoyed SE radio podcasts.

<comment><AUTHOR> yes, I have listened to some of them. There are some gems in there.

</comment></comment><comment><USER3> What have you learned through audio format in math or programming before?

<comment><USER4> It's far from perfect but if you're going running or s9methjg, it's the way to learn.</comment></comment>


Ask HN: Any logic based software dev tool which helps building code gradually? - <AUTHOR> I am missing some tooling for years.
My main idea is that as a programmer what I do is constantly reducing the set of all programs to a particular program which satisfies the specification. (At least that is what I think I should do to get a flexible codebase where adding/removing quasi orthogonal constraints is easy: that is where declarative/logic programming, Prolog, rules / inferring assistants come to my mind.)
When thinking, reasoning about timing, concurrency, async, correctness happens
1. Step by step, gradually 2. using nothing but logic.
We have some tools: eg. type systems to express interdependence (constraints) and they are also useful in that "step by step" gradual manner: it warns me if I misstep, but there is much more information I could get from a "dev assistant".
When I am thinking I (have to) enumerate all the possible cases for a given scenario, but I can't really reuse the existing logic statements I have (or ever had!) in my mind, because usually the code is not written in logic and neither the environment processes it to give me insights.
Eg. I would like to make logic statements on the ordering of method calls (or basically just events) to make sure it won't conflict with another ordering (there must be at least one ordering which satisfies for all).
I would like to toggle on and off my logic constraints to have the currently relevant ones only (to help me to develop other parts of the system), save the sets as "views" and combine them to see if there is any conflict between their related logic statements (and if so I could see what and I could fix it).
I'd need higher order logic (eg. existential operator) to make statements about my "desired" program: to help/assist my future self not to forget about that "constraint".
Are you aware of such an IDE/tool/project?
Agda, Coq, etc might do something similar I just did not realize.
I would really appreciate your help, I'm totally obsessed with that. <comment><USER2> Your post is very vague, but Agda and Coq use types to help you gradually write definitions. Agda has "typed holes," where you specify the goal type and the IDE (Agda Emacs mode) will show you the relevant bindings in scope. Then, you gradually refine your definition, filling in the hole while creating new holes. Thus, Agda lets you "fill in the blank" using types as a guide. Similarity, Coq has a tactic language that builds terms, and you can see what goals there are left to fulfill and write tactic programs interactively.

Agda and Coq are pure functional languages, and their type systems are a consistent logical system. They are more mathematically oriented and may not be what you want.

Agda Emacs: [https://agda.readthedocs.io/en/v184.108.40.206/tools/emacs- mode.htm...](https://agda.readthedocs.io/en/v188.8.131.52/tools/emacs-mode.html)

Coq Tactics: [https://coq.inria.fr/refman/proof- engine/tactics.html](https://coq.inria.fr/refman/proof-engine/tactics.html)

<comment><USER3> Hole-based programming is something I really miss in every non-Agda language I've ever used. In particular, I code professionally in F# in such a way that it should very often be possible for the type-checker to fill holes (or at least to help me fill holes) - lots of annotations, tiny-types to encode more meaning into the types, and so on. Once you've tried agda-mode, you feel hamstrung in every other environment.

<comment><AUTHOR> Yes this is one main feature what I am looking for. I have just replied to another comment where I mention holes but ask a more concrete question about focusing different parts of the system when you have multiple holes. Can you please examine it?

Off: may I ask how did you end up with F# and how old are you? I can't really decide the average age of programmers who do know dependent types.

<comment><USER2> I am a high-schooler and I understand dependent types. (I am not the person you are replying to, but I am the person who first mentioned typed holes.)

In type theory, there are things called "terms" and "types." A term is something like `fun x -> x`, or `(1, 2)`, or `1 + 1`. In short, a term is basically an expression. Each term has a type. For example, `fun x -> x` might have the type `a -> a` and `(1, 2)` might have type `Nat * Nat`. If a term has a type, it "inhabits" the type. "x has type T" is written `x : T`.

According to an idea called the Curry-Howard correspondence, types can encode logical statements such that terms that inhabit the type are its proofs. Therefore, by inhabiting a type, you are really proving a theorem.

With dependent types, the term and type languages are the same language, so you can mix them together. In short, types _are_ terms.

Here are some types in Martin-Lof type theory:

        </comment></comment></comment></comment><comment>---
        () : Unit

The unit type is a type with one inhabitant, (). It can be interpreted as the type of the empty tuple. In the Curry-Howard correspondence, the unit type corresponds with truth.

        x : A    y : B
        </comment><comment></comment><comment>--
        (x, y) : A * B

A * B, the product type of A and B, is the type of pairs. It is based on the Cartesian product operation: [https://en.wikipedia.org/wiki/Cartesian_product](https://en.wikipedia.org/wiki/Cartesian_product) In the Curry-Howard correspondence, the product type corresponds with logical conjunction (and). By proving A and proving B, you can prove A * B (AKA A /\ B).

        x : Empty
        </comment><comment></comment><comment>----
        elim-empty x : a

The empty type is the type with no inhabitants. If you have an inhabitant of the empty type, you can eliminate it to derive anything. The empty type corresponds with falsity, and its elimination means that false implies anything.

        x : A
        </comment><comment></comment><comment>--
        Inl x : A + B

        x : B
        </comment><comment></comment><comment>--
        Inr x : A + B

The sum type is the tagged union, meaning "this or that." The type A + B means that the Inl tag holds an A and the Inr tag holds a B. The sum type corresponds with logical disjunction (or).

        f : A -> B    x : A
        </comment><comment></comment><comment></comment><comment>-
        f(x) : B

The exponential type, the type of functions, means logical implication. If you have f, a proof that A implies B, and x, a proof of A, you can prove B by doing f(x).

With dependent types, the product and exponential types are generalized into the dependent sum (sigma) and the dependent product (pi) types respectively.

With the dependent sum type, or sigma type `Σ (x : A) B(x)`, the second component in the type is actually a _function of_ A (meaning that B : A -> Type). The dependent sum type generalizes the product type so that the type of the second element of the pair is actually dependent on the first element. In the Curry-Howard correspondence, the sigma type corresponds with existential quantification, "there exists" or "for some." To prove Σ (x : A) B(x), you must inhabit A (show that A exists) and B(x) (where B is a logical statement _about_ x, the inhabitant of A).

With the dependent product type, or pi type `Π (x : A) B(x)`, B is also a function of A that returns a type. The dependent product type generalizes the exponential type so that the codomain of the function, B(x), is dependent on the function's input, x. The dependent product type corresponds with universal quantification, "for all." To prove Π (x : A) B(x), you must prove B(x) for every possible x, where B(x) is a logical statement about x.

Why the dependent product type generalizes the _exponential_ type and the dependent sum type generalizes the _product_ type seems confusing at first glance, but it really isn't:

Σ for x = 1 to n, B(x) = B(1) + B(2) + ... B(n), and if B(x) is some constant C, Σ for x = 1 to n, C = n * C. The same rule applies to types, as multiplication (product) is just repeated addition (dependent sum of a constant).

Π is like Σ, but for repeated multiplication instead of repeated addition. After all, exponentiation is just repeated multiplication.

Another type that you should be aware of is the equality type, `x = y`. In vanilla Martin-Lof type theory, `x = y` is inhabited by `Refl` if `x` and `y` have the same normal form (reduce to the same simplest form). However, there is ongoing research in a field called Homotopy Type Theory, which redefines the equality type in various ways.

Finally, types themselves form a hierarchy. With dependent types, the types themselves are first-class values, and they have their own types. However, `Type : Type` leads to Girard's paradox (similar to Russell's paradox). The solution is for each type to be in a "universe" so that `Type l : Type (l + 1)`, where `l` is the universe level.

Read about Martin-Lof type theory: [https://en.wikipedia.org/wiki/Intuitionistic_type_theory](https://en.wikipedia.org/wiki/Intuitionistic_type_theory)

<comment><USER4> Whatever your age this is an exceptionally well written description, worth finding a venue for it other than buried as an HN comment.

<comment><USER5> Agreed. This is a very well-written bird's eye view of a significant chunk of type theory.

</comment></comment></comment><comment><USER6> Check out Rodin and Event-B for some inspiration.

[http://www.event-b.org](http://www.event-b.org)

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

Here the inventor demonstrates making a simple bank account simulator with the stepwise refinement approach:

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

<comment><AUTHOR> Thank you! Seems interesting! Will check out.

</comment></comment><comment><USER7> When you say 'tool', are you thinking of something language-independent? That seems hard. Many questions are impossible to answer in C, for example. Even if other languages are easier, each language would require some fairly specialized analysis. Existing IDEs tend to illustrate the state of the art in tooling for one language at a time, and recent languages like Pony or Rust illustrate the state of the art in designing languages to make such analysis easy.

For your specific example it seems easiest to just go with a pure functional language. Haskell compilers do reorder statements in fairly radical ways.

I like the approach of starting from the set of all programs, and gradually refining the set to specific desires. There has been a minor tradition of research here, for example Dijkstra's Guarded Command Language and the notion of Stepwise Refinement. I tangentially used this imagery in [http://akkartik.name/post/modularity](http://akkartik.name/post/modularity).

<comment><AUTHOR> By tool I mean something more than a language. Something like a proof assistant, but more visual: it would show the different "views" (parts) of the already provided code, let the user to focus on just arbitrary parts, but at any time switch back to the whole picture.

I don't know much about proof assistants but I did not see how someone can force the assistant to focus only on particular parts and save these parts for later time.

There might be multiple holes in the implementation and I would like to study them sometimes together but sometimes separately.

<comment><USER7> I understand it's something beyond a language. But surely it has to make some assumptions about the stack it relies on? If such a tool existed but required you to switch to a whole new language, would that be acceptable? What if you had to switch to a whole new programming model? What if you couldn't benefit from any of the software written by others in mainstream platforms?

In any case, I think you'll enjoy hanging out at [https://futureofcoding.org/slack-readme](https://futureofcoding.org/slack- readme) where people often chat about different parts of this (huge) open problem. I do.

<comment><AUTHOR> Yes sure! I did not mean the tool should exist independently, I meant some kind of extra IDE "layer" beside a "regular"/widespread (C,Java,C#) compiler/language. But ofc there is no such thing like "regular" compiler/language

That group seems really cool! Thanks!

<comment><USER7> Ok, to answer your question I don't think mainstream languages like C/Java/C# will ever gain the tools to do what you want. You have to start from scratch.

(Like many others in that group, I'm trying to start from scratch: [https://github.com/akkartik/mu/blob/master/subx/Readme.md](https://github.com/akkartik/mu/blob/master/subx/Readme.md). My focus isn't directly on the tools you describe. But hopefully it'll one day be closer to the main trunk of evolution rather than the dead end the current mainstream seems to be. And it will support a more flexible software stack that can adopt such tools.)

</comment></comment></comment></comment></comment><comment><USER8> > My main idea is that as a programmer what I do is constantly reducing the > set of all programs to a particular program which satisfies the > specification.

An alternate point of view is to start with the specification, interpreted as a generally nondeterministic program, and then refine it using logically sound optimizations to render it executable. This is roughly the approach of Fiat: [http://adam.chlipala.net/papers/FiatSNAPL17/](http://adam.chlipala.net/papers/FiatSNAPL17/)

They've used it to generate crypto primitives that are in use: [http://adam.chlipala.net/papers/FiatCryptoSP19/](http://adam.chlipala.net/papers/FiatCryptoSP19/)

<comment><AUTHOR> Seems interesting, thanks!

</comment></comment><comment><USER9> I really like F* . It is very close to OCaml in design but allows you to write proofs using a SMT solver or tactic based proofs when the SMT solver gives up. Instead of a proof theoretic language like Coq, the language feels closer to something we regularly program with and the F* compiler can output OCaml and C code. The proofs are erased from the final executable code so you still end up with a program that you would write without proofs.

Microsoft Research's project Everest is using it to write a verified HTTPS stack.

Edit: formatting

<comment><AUTHOR> Do you have an idea how to fit F* with Unity or just for a regular C# job?

Is it a good idea?

</comment></comment><comment><USER10> In addition to Agda and Coq (and Idris) you might be interested in djinn ([https://hackage.haskell.org/package/djinn](https://hackage.haskell.org/package/djinn)) and ghc-justdoit ([https://github.com/nomeata/ghc- justdoit](https://github.com/nomeata/ghc-justdoit)) for Haskell. The ghc- justdoit page lists some related work as well.

<comment><AUTHOR> I don't really know haskell but that seems interesting.

Can you please explain 1\. the potential gains you have with the packages above 2\. the drawbacks of using these opposed to a Dependent Typed language?

It would help a lot to me.

</comment></comment><comment><USER11> Edwin Bradley coined the technique Type driven development... You can look for a bunch of videos about it on YouTube

</comment><comment><USER12> tla+ solves a similar problem but isn't exactly what you're describing

<comment><AUTHOR> Yes, thanks for mentioning. It has been on my radar as well, but as I have seen its less universal and more focused on the verification of concurrent processes - which is not the whole picture.

But I will give a shot if there is nothing else.

<comment><USER13> TLA+ is just as good for non-concurrent stuff. It's just that it's one of the _only_ things capable to naturally tackle arbitrary concurrency, so it gets more focus there.

<comment><AUTHOR> Good to know ty!

What are the main differences (pros/cons) using TLA+ vs Dependent Types (and proving the algorithm is fine) for system verification?

<comment><USER13> There are many subtle and less subtle differences, but the main difference is that TLA+ is being used in the industry to help design complex systems in various domains and of various scale, both hardware and software, while dependent types are still in research, and I am not aware of any project not done by a research institution or with the assistance of one to specify and verify a real world system using dependent types in any form resembling ordinary software development and with similar budgets. I am also not aware of any software deeply specified and verified with dependent types that exceeds a few thousand lines of code.

<comment><AUTHOR> Ah okay, thanks!

The complexity of Asynchronicity & Concurrency lead me to the formal expression of time related logic: Temporal Logic ([https://en.wikipedia.org/wiki/Temporal_logic](https://en.wikipedia.org/wiki/Temporal_logic)) There are multiple temporal logics with different level of usefulness. (Check Temporal logics section.) I really want to solve harder problems and express deeper relations, so it seems to me what I'd need is CTL at least ([https://en.wikipedia.org/wiki/Computation_tree_logic](https://en.wikipedia.org/wiki/Computation_tree_logic)).

I thought I might want to model my software (any kind of app!) and prove it is working as intended using CTL (or other more expressive TL) in Agda/Idris (Coq/TLA+) and then make a similar implementation in another language.

Eg. there is an LTL implementation in Agda, but I did not find similar things for CTL.([https://github.com/xekoukou/LTL](https://github.com/xekoukou/LTL))

What do you think, is it a good idea to express my model using (C)TL in Agda/Idris, or I should use a more dedicated piece of technology for that problem? Is there a limit in case of Agda/Idris for that in theory?

Any resource is appreciated!

<comment><USER13> TLA is also a (linear) temporal logic that's simpler than LTL, and it's at the core of TLA+. If you don't want to spend months studying and then months writing proofs as a learning experience but rather would like to actually specify and verify real systems, use a language with a temporal logic model checker, like TLA+ (that has the TLC model checker) or Promella (Spin). If you want the other kind of experience, there have been implementations of TLA in both Coq and Isabelle.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Test Driven Development does this. Each test is a theorem about your code.

<comment><AUTHOR> Yes it is true, but you might accidentally skip cases which a proof assistant will tell you about.

There is much information you can specify than later extract from the already given piece of code eg. with dependent types.

</comment></comment><comment><USER15> Something like Barliman?

<comment><AUTHOR> Yes, this is a good example of a "smart IDE", however I am looking for something more holistic.</comment></comment>


Trump Quits Trump Entertainment, Bankruptcy Possible  - <AUTHOR> http://www.bloomberg.com/apps/news?pid=20601087&sid=a8VJv5VIsICs&refer=worldwide <comment><USER2> Five bankruptcies? So that's where large New England investors are putting their money.</comment>


Ask HN: What's your most frequently used mental model? - <AUTHOR> <comment><USER2> In investing there are a few models I apply when skimming a company, none is sufficient to red flag a company but each is a signal that means that area needs to be dug into and understood at a deep level

\- skin in the game, do the employee's including C level execs hold less than x% of the company 1 year after it goes public or did they sell out as soon as possible?

\- no oversight by boardroom, are the boardroom members on more than 1 other companies board?

\- literally having to pay through the nose to get people to come into work, ie the twitter rule, Does your EBITA look materially different when you remove stock based compensation

</comment><comment><USER3> I sometimes imagine there's a 4D spacetime, containing tangible objects and events, external to me. And I'm an agent moving about in that external world, making free choices.

</comment><comment><USER4> Probably the physics model my brain uses to help me pick things up, walk around, and so on.

</comment><comment><USER5> stoicism - happiness should not depend on circumstances, whether good or bad.</comment>


On Coders and Programmers - <AUTHOR> http://chickenwing.software/scratches/programming/on-coders-and-programmers <comment><USER2> Personally, I think the terms "Software *" are all interchangeable.

Programmer, coder, developer, and engineer.

Everyone has their own subjective opinion on how each one is slightly different but they all mean the same thing in general. Nitpicking about calling it X versus calling it Y is petty.

<comment><USER3> In Germany "we" are simply called (and call ourselfs) "Entwickler" (developer), by professional people. If you're rather senior you'll become an "Software Architekt" (software architect/engineer)

Many people who don't know much about IT call us "Programmierer" (programmer)

I studied Computer Science and our professors always called us "Ingenieure" (engineers)

So academically I'm a scientist, my job description says developer and for my family I'm a programmer, well I don't care much...

</comment></comment><comment><USER4> Ah, rebellion against arbitrary labels. How fun.</comment>


Delivering WordPress in 7kb - <AUTHOR> https://css-tricks.com/delivering-wordpress-in-7kb/ <comment><USER2> This is a great reminder of what can be done by just "rethinking everything" and saying why do I NEED that plugin, lib, script, font lib etc. one thing not immediately obvious to me was that the responsive menu goes to a new page [https://sustywp.com/menu/](https://sustywp.com/menu/) and because the site is so fast it actually doesn't feel like a page load. I haven't really thought about this but hamburger menus get so complex these days it might just be easier to load a minimal page.

Something about this menu approach feels so clever but wrong at the same time.

<comment><USER3> I just opened and closed it a few times to try it out. Then I pressed the back button several times to get back here, cycling the menu open and closed again.

I'm gonna go with "it's a bad idea".

<comment><USER4> If one really wanted to, couldn't they eliminate menu access from the user's history?

<comment><USER3> Yes. You can use replace() instead of push().

But there are other issues like bookmarking or sharing the page with the menu open. People won't expect the result.

It's really not difficult to create an on-page menu so this seems more trouble than it's worth.

<comment><USER5> But would people really try to share / bookmark a page that at that very moment doesn't show the content they want to share?

I think it is a beautiful, simple solution that just works (and also did work perfectly in the past when we didn't have JS)

<comment><USER6> Yes. If you have ever worked on a site with lots of users, you will find that if there is a way to break something, someone will absolutely do that thing. It might not be super often, but it will definitely happen.

</comment></comment></comment></comment></comment></comment><comment><USER7> Interesting work. I wrote a bit about optimizing WP here: [https://hackernoon.com/dont-brake-for-fonts-3-web- performanc...](https://hackernoon.com/dont-brake-for-fonts-3-web-performance- techniques-to-show-content-quickly-fdefcd0d2028)

The most interesting thing I learned is that the _number_ of HTTP requests (not just the total file size) really affected page load times. So for example, WordPress has profile pictures called 'Gravatars' that can be shown alongside comments. By default, your browser will make HTTP requests to fetch all the Gravatars before showing the headline of your post! So we lazy-loaded them instead.

And we used the same plugin shown in this article (Autoptimize) to combine multiple CSS files. You can take this to an extreme by just putting the CSS inline too (but too much markup might make the page slower on mobile).

(And the most powerful tool we used was Cloudflare 'Rocket Loader', which defers all JavaScript execution until after the page first renders. But lately we're finding that it conflicts with the events or listeners in some plugin scripts, causing their JS to not execute at all.)

<comment><USER8> If you're interested in trying the same approach that Cloudflare took with Rocket Loader as a WordPress plugin, check out PhastPress. [https://wordpress.org/plugins/phastpress/](https://wordpress.org/plugins/phastpress/)

This plugin also defers all scripts and tries to simulate all the events that occur during a normal pageload so that the scripts still run as they normally do.

</comment></comment><comment><USER9> I'm fully on board for creating leaner websites and writing less code, but if we're measuring energy usage, then doesn't _streaming video_ pretty much dwarf all other internet traffic? With perhaps blockchain syncs in a distant second place?

<comment><USER10> _if we 're measuring energy usage, then doesn't streaming video pretty much dwarf all other internet traffic?_

Probably. But just because plastic bags dwarf plastic straws as an environmental problem doesn't mean we can't address both.

</comment></comment><comment><USER11> I think this is the wrong way to go about site minimalism. My personal site[0] is pretty minimalist--the home page has one request for 3.3 KB. But it doesn't sacrifice in the same ways this site does: it keeps readable source code, it still uses BEM classes for maintainability, and it has a working menu on the same page (rather than requiring visitors to load a seperate menu page).

So, with less than half the kilobytes, I have a more readable, usable, and maintainable page. How? By jettisoning WordPress and SEO entirely. I use a static site generator (in my case, Gutenberg[1]) to generate the page--no WordPress backend required. And, by respecting my user's privacy and not trying to play the SEO game, I don't need any of the code many sites devote to tracking/SEO.

I believe that static sites and respect for privacy are the better path forward. Instead of tweaking WordPress, we should be looking to build the next WordPress--and build one that is static, and minimalist, by default.

[0] [https://www.codesections.com/](https://www.codesections.com/)

[1] [https://www.getgutenberg.io/](https://www.getgutenberg.io/)

<comment><USER12> I'm curious as to what you are referring to when you say ignoring SEO. In my opinion on page SEO is about structuring your code and content appropriately. What SEO tracking are you referring to?

<comment><USER13> Justifying SEO is _the classic_ motte-and-bailey argument of this industry. Of course SEO is, ostensibly, about "structuring your code and content" in a search-engine-friendly way. But in reality, it's mostly about trying to game the search engine algorithms and spamming the living shit out of the entire web.

</comment></comment></comment><comment><USER14> This is great, for those of us putting document structure first in the name of accessibility I think this going green idea is a natural fit to 'why bother'. Previously my goal had been to score highly on the metrics of Lighthouse and get increased conversion rate, particularly when the reader has 'lie-fi' or feeble 2/3G connection. I genuinely had not thought that going green was also a good reason for the things I have been trying to do. Accessibility is something that is hard to explain to people, they think it means high contrast and MASSIVE fonts. But it is not that and those that do such things have given a bad name to the cause. Going green is a much easier starting point for that conversation.

I think that there is far more that can be shaved off. The SVG logo can be placed in the CSS as a data url so it only gets downloaded just the once. Currently it is in the file and weighs in at 1.19Kb. If this is drawn with more elegant SVG rather than what Inkscape churns out then it could be easier to edit and a lot smaller. There is no need to use three decimal places for the points and since there are no fonts in the SVG there is no need to bloat it out with any styles.

As well as serving via NGINX there is also mod_pagespeed to remove whitespace, comments and create src_sets for any blog images. In this way a client project based on this theme need not lose all gains as soon as an image is uploaded.

I also think the classless methodology has to be considered as the way to go with a pure document and all decorative chintz done in CSS with pseudo elements and more advanced selectors.

CSS Grid also reduces CSS size significantly and would help here. Block based layouts are fine for people that have been hacking away with margins and floats and padding things since IE6 but are absurd for newcomers to learn. CSS Grid is more maintainable as well as lighter on the download.

Not so sure about the menu being a separate page, a web page should be part of a 'book' and navigation with proper HTML5 markup for it is important for accessibility.

The motivation for this is superb and it is a lot more easy to explain to clients than accessibility. Page speed and conversion rate can be hard enough to get buy in with as it is, going green might be an easier sell.

</comment><comment><USER15> Valiant effort. Slightly arbitrary in the finer details but the underlining message is good.

Removing the main menu (which is very small) while also having twitter meta info in the head and other unnecessary tags is an odd choice.

One slightly amusing thing is that in the web 1.0 era we had menu's as separate pages as our pages were built out of 'frames' and the menu frame simply targeted the main frame. So no we've come full circle again. The more screen real estate I have the more designers intend to put less information in it I've noticed.

</comment><comment><USER16> Minimizing requests, using system fonts and using vector images are what makes this great because it makes the page loads so fast. Does 7kb really make much of a difference?

<comment><USER17> 7kb specifically is not of major importance. If you're loading all content from one origin, fitting the content needed to load the page into the initial TCP congestion window does matter. 7kb of content will probably fit depending on how much non-content is in the packets.

This is not noticeable on a low-latency connection, but on a bad mobile connection it makes a massive difference.

<comment><USER18> I'm trying to make a static website myself. Can you tell me if it's possible to optimize the network side of things?

[https://waivek.github.io/website/](https://waivek.github.io/website/)

<comment><USER17> 1) Drop the web font if at all possible. If not, serve it from your domain to avoid DNS query and new TCP connection. For extra points, subset it to your content's character set.

2) Consolidate your CSS and JS files into one per type and minify it. For extra points, inline the critical CSS needed to show the important content of the page directly into the head.

3) Move your script tags to the end of the body to avoid blocking rendering, or inline it if it is absolutely needed to be there before the page loads and is not too big.

4) That web font loader script is not necessary at all.

5) You might get a smaller size out of those buttons as SVG.

</comment></comment></comment></comment><comment><USER19> This is great and is a good lesson for anyone developing websites, regardless of the platform.

</comment><comment><USER8> Reducing the amount of requests and roundtrips required to render the page, and reducing the latency on those requests is key.

For example, you use Google Fonts. For that you need to load CSS. So that's three roundtrips for rendering your page: 1) your page, 2) the Google Fonts CSS, 3) the font files.

We've build a WordPress plugin called PhastPress (fast press) that helps you reduce the request count and those roundtrips without building your own theme. [https://wordpress.org/plugins/phastpress/](https://wordpress.org/plugins/phastpress/)

Among other things, it inlines the critical CSS needed for rendering the page, defers all script loads, and optimizes images. Cuts page size by ½ on the stock theme, and the amount of additional roundtrips to 0.

<comment><USER20> > three roundtrips

Well, before we get to the Google Fonts CSS, we first have to open another connection there, do a TLS handshake, and maybe we even need to look that host up first before any of that.

<comment><USER8> True. I got the roundtrip terminology from Google's PageSpeed Insights tool, which AFAIK does not count the actual network roundtrips.

The one "logical" roundtrip (an additional request) would indeed count for many if you consider DNS, TCP and TLS handshakes.

Even more of a reason to get rid of them.

</comment></comment></comment><comment><USER21> Most of modern web is like that Pascal's letter:

"I would have written a shorter letter, but I did not have the time."

It takes time to make lean sites look good.

</comment><comment><USER22> I don't want to take a way from the work done, it's indeed a lot of work to get websites to load fast nowadays, when the images are so hi-res and there are so many js libraries and requests, and then you have to take tablets and phones into account... it get's big fast. But the 7kb title is clickbait at best. I too can make a website load fast by extracting pretty much everything from it. When working in the real world with real clients, this wouldn't fly. It would be much more impressive to get a website such as css-tricks.com and show me how you have optimized it.

</comment><comment><USER23> While I mostly agree with the author's diagnosis, the cure proposed is a bit strange. First, it's not WordPress anymore. You could use any other solution then, including popular leaner alternatives. Moreover, the front-end is just a part of the equation. And if you're really focused on creating a realistic proposal, there are many other factors to consider, not just slimming down your blog and making it incompatible with the extensions and themes you're using.

<comment><USER24> How is "I took a WP theme designed as a minimalist starting point for building your own theme and cut out a lot of stuff I considered to be cruft" not Wordpress? It's still WP behind the scenes.

(Maybe you think that Underscores is another CMS? It's not, it's a WP theme. [https://underscores.me](https://underscores.me))

</comment></comment><comment><USER25> What's the big deal? Wordpress can be lean on the code is delivers? It certainly can't be lean on the backend. There's also a helper functions for adding tons of classes to elements everywhere so you can "patch" CSS for certain sites / categories only, clearly not for the target audience that values minimalism.

</comment><comment><USER26> Think resonates well with minimalism. My site (halfcoded.com) is inspired by [https://zenhabits.net/](https://zenhabits.net/) and follows a minimal wordpress theme. Happy to learn that more people are cautious of the direct impact of internet on the green world.

</comment><comment><USER27> To put things into perspective, nweb is a webserver written in C which can serve static webpages, and its smallest executable is just 12kb in size:

[https://github.com/ankushagarwal/nweb](https://github.com/ankushagarwal/nweb)

</comment><comment><USER28> Why use wordpress at all? Just create a static webpage at this point.

<comment><USER29> WordPress themes are notoriously bloated and 1/4 of the web is powered by WP.

<comment><USER7> As a developer I'm not too happy about the trend I've seen in the past couple years of 'monolithic' WordPress themes with tons of JS and other code, because making even simple changes to them can get extremely complicated. I think they caught on for two reasons (1) they often have interactive 'builders' that come with widgets you can drag and drop (contact forms, slideshows, etc.) and (2) The whole design trend of things that change as you scroll--'parallax' elements and dynamically-resizing headers, etc.

</comment></comment></comment><comment><USER30> You could also get it down to 0kb if WordPress just serves a blank response. Still uses a ton of resources on the server.

</comment><comment><USER31> Should say "7kB".

<comment><USER32> 7 KiB.

</comment></comment><comment><USER20> > It devastates most benchmarks, with an average time to first byte (TTFB) of > about 0.15s, and fully rendered within 0.5s.

That really isn't that fast, not for your / landing page.

</comment><comment><USER33> Given the goals, this is a project that only works if you don't care about having anything but a barebones website - so not practical for most ppl. Its also irrelevant that WordPress was used. Any CMS could apply here with the same approach.

I guess I was hoping for something more insightful.</comment>


Cascading wp attacks on modern linux systems - <AUTHOR> http://pastebin.com/jFG2LvwL <comment><USER2> Am I in the twilight zone? Because there's still two weeks until April fools..</comment>


How to Measure the Speed of a Blender - <AUTHOR> http://joyofblending.com/measure-blender-speed-methods

<comment><USER2> I'm the blog author. I'm glad you guys are getting a kick out of my write-up! I'll answer a few of the questions/comments here, and I'm happy to answer any other questions.

<comment><USER3> This is why we read Hacker News :)

</comment></comment><comment><USER4> I like the audio approach. It should make it possible to measure rotation speed under load. Even a Vitamix slows down a bit when powering through stuff. This might provide a way to compare different blenders in terms of quality. A good blender and a cheap blender might have the same top speed, but the good blender will have more torque and slow down less when meeting resistance.

<comment><USER2> I'm not sure if you saw it, but the last figure in the post is a spectrogram of the motor under load. I'd say the load results were the most interesting because they revealed differences in the speed control of the different models.

</comment></comment><comment><USER5> You should also be able to see the speed of the blades (or a multiple depending on how the motor is wound) in the back-emf produced by the motor and fed back out the power cord. I've seen many cases where a sewing machine would produce frequencies that interfered with the horizontal and vertical sync of a television set ... in principle, a blender motor should als be noisy.

The simplest way to test this would be to connect an oscilloscope or spectrum analyzer to the AC power line. This can be dangerous, so I'd recommend capacitive-coupling or for an even safer test, inductive coupling. Capacitors are effective high-pass filters, so picking the correct value will reject the 60Hz power while letting you see the high frequencies produced by the blender.

<comment><USER6> That reminded me of something I have wondered about for a while, I was playing an Atari video game as a kid and the picture quality massively degraded. After a death I went to mess with the cable and found it unplugged, but the game was still somewhat visible. While I never could reproduce the effect I assumed it was probably going though the power lines and not EM. Any thoughts?

PS: I assume the simple nature of the graphics made a difference but that's about it.

<comment><USER5> An small air gap is generally capacitive and will pass the higher frequencies while rejecting the lower ones. In the old days (when we only had a few channels on cable television), the CATV systems had a lot more loss and ingress (60Hz from the AC and other signals induced onto the center conductor). To support the higher frequencies now used, the cable has to be carefully installed and maintained.

In the '80's we could get full cable TV by pointing a large Yagi antenna at a particularly strong "leak".

</comment></comment></comment><comment><USER7> This is a great hack and writeup, surprising to see it on a blending blog! I love to watch people explore the solution to a problem without expensive tools or significant experience.

</comment><comment><USER8> Ah, the audio solution is clever!

As far as optical, RC aircraft peeps use something like this tachometer: [https://www.youtube.com/watch?v=9OJ4fx5wwlU](https://www.youtube.com/watch?v=9OJ4fx5wwlU)

</comment><comment><USER9> You can also download a spectrograph app for your smartphone and see it update live. I did that a few years ago when I was getting into a debate online about blender speeds.

<comment><USER2> That's a great idea! Did you find a good app? If so I'd like to hear. I just looked at a few free ones, and they didn't have enough control to be able to read off frequencies in the relevant range very well.

<comment><USER10> Reading your parent, I decided to (on Android) dl and try "Spectrum View" (there's an SpectrumView for remote control of a spectrum analyzer) and "Spectrogram", both from the same publisher. I would say both are useful and fun, particularly Spectrogram. Nice, barebone apps that are free and no ads, while apparently very well made. (no, I have no affiliation with the publisher).

Actually, I got so mesmerized during my bus trip that I missed my stop :) Fun facts: the brakes have a very sharp 5kHz resonance sound, while the beeper ("I'm closing the doors") were spread out over a few fairly sharp bands. Very fun! When I get home I'm gonna check what the freq contents of my infant daughters laugh and yelling looks like. :)

</comment></comment></comment><comment><USER11> There are also a few strobe apps available that use the LED flash on your phone. They work surprisingly well.

</comment><comment><USER12> How about the obvious solution: photo interrupter.

<comment><USER13> That's essentially what he was talking about at the start, he avoided it largely because of issues with setup. Putting wires into the blender would subject them to being destroyed during the testing process or require putting a hole in the pitcher which also isn't ideal. The strobing idea is actually the way that you'll usually adjust the timing on a car engine, it's a well documented and tested technique, and fairly easy to figure out when you've got a harmonic frequency.

<comment><USER14> A small (1/2") round mirror under the blade tip, a pen laser and photo detector would work quite well.

</comment></comment></comment><comment><USER15> That sound one was really cool. I certainly wouldn't have thought of it.

</comment><comment><USER16> Ultra low-tech: thread. One could conceivably let thin thread wind up around the blade's spindle during a timed run. Measure the wound string length and work your way back to the RPM of the blade.

Not sure how various materials (say, sewing thread vs thin vinyl fish line) would hold up at 10k RPM, but there might be something that could survive at a proper tension?

EDIT: Reading fail. Someone had already commented on this. Still seems like a interesting challenge to attempt.

</comment><comment><USER17> I worked on a BLDC-powered high-end blender prototype for a company that wanted to get into that market, and when we wanted to measure the speed of the motor, we connected to the controller's serial console. :)

On a related note, blender sound testing is an awful, awful task. You blend a half-pitcher or so of what are basically airsoft pellets, and it is damn loud. I forget the numbers, but I wore two kinds of hearing protection at once and still found it fatiguing.

</comment><comment><USER18> From the comments: Use a twine, interleave it around the blades and let it run for a second or two. With a long enough twine, the number of knots divided by the number of seconds gives you the RPS :) Like the thought, but at around 380 RPS, I don't think I will find a twine long enough.. plus the twine will offer a very high resistance to the blade after only a few knots..

<comment><USER10> But we won't know how long time it takes to wind up to constant speed and without running for a while this will attribute to a fairly large error. From the audacity FFT plots we see that it takes a fairly long time (100's of ms) to get to the target speed (ie the rise time of a step response).

</comment></comment><comment><USER19> OK what you need here is something called a Sirometer, which is a tool for measuring RPM based on vibration / resonance.

Here is a link: [http://www.treysit.com/16.html](http://www.treysit.com/16.html)

</comment><comment><USER20> The audio measurement is neat, but how is it converted to RPM?

<comment><USER21> Hz is revolutions per second, so RPM = Hz x 60.

<comment><USER22> But is a single revolution equal to 1 Hz of audio? What if the blade made two click sounds in a single revolution. Wouldn't that double the pitch, compared to a blade that made a single click?

<comment><USER2> (Blog author here) If you check out the spectrograms you'll see that there are a lot of different frequencies in the audio. I wasn't sure if the most powerful frequency would be the true rotation rate, so that's why I wanted to have a separate method to check. However, as TheLoneWolfing mentioned, it turns out that the most powerful frequency is indeed once per revolution.

</comment></comment></comment></comment><comment><USER23> I thought this was about the program Blender ( [http://www.blender.org/](http://www.blender.org/) ), but no, this is about measuring the rotational speed of a smoothie-making-blender.

<comment><USER24> Ok, we'll change the title to be less ambiguous.</comment></comment>


Wordpress.com Launches Free Blog-by-Phone Feature - <AUTHOR> http://blog.twilio.com/2010/07/wordpresscom-launches-twiliopowered-blog-by-phone-feature.html

<comment><USER2> Twilio is doing some amazing things. I can't wait to roll some of their features into our app :D

I seem to rememeber Livejournal offering this a loooong time ago but can't seem to find anything by googling. Anyone else remember this or am I insane?</comment>


Ask HN: Would you pay for a service that gets you your first 100 users? - <AUTHOR> Curious if this is a real problem for people and how much you would pay for a service that does the following:<p>- Create a custom landingpage to help pre-launch your startup idea<p>- Create custom branding for credibility, including a logo, color palette etc. (instead of using unbounce or a generic landing page builder)<p>- Improve/write the copy for a higher conversion rate and better messaging<p>- Promises to get you at least 100 people to sign up to your pre-launch list within 4 weeks or else all the work done is yours for free. These are targeted people that opted in, showing interest in your idea which you can then later work with to launch your product to, or talk to in order to improve what you're working on.<p>Was thinking in the $2k range, but love to get ideas <comment><USER2> Not all users are equal though. Do you mean 100 free/trial users?

In general it's going to be much harder to convince 100 users to sign up to a $100 service compared to a $5 service.

It's also going to be much harder to get 100 users to sign up for a terrible product. Are you saying I could create a crappy MVP then pay $2,000 knowing that you'd probably only achieve 10 users max and then get my money back?

It sounds like you need a more complex metric than just number of users.

<comment><AUTHOR> Yes i mean free/trial users. To convert those into paying customers, there's funneling and all sorts of othet work involved. This service would be to take an idea and validate it in 4 weeks. So you have a group of early adopters that can help you shape the product they want.

</comment></comment><comment><USER3> Yes, I think people would pay and I think you're not charging enough. Think about what an SE would charge an entrepreneur to build a product.

> Promises to get you at least 100 people to sign up to your pre-launch list > within 4 weeks or else all the work done is yours for free. These are > targeted people that opted in, showing interest in your idea which you can > then later work with to launch your product to, or talk to in order to > improve what you're working on.

What about a pipeline of leads and an outbound marketing campaign instead; and then the execution of that campaign once the product is built would be another way to do it - I think some SE folks would love to build a product but completely outsource the marketing of it until they have some traction. Thats the problem you're solving.

</comment><comment><USER4> If you can get a 100 real users then $2000 is way, way too cheap. If you are just going to shoot through 100 people with no real interest in the product and who are just signing up for monetary reward then you would have to pay me to use your service.

Basically what you are trying to offer is the holy grail of startups. If you have figured out how to get a 100 real engaged customers to any service on demand then you can get a thousand or a million. If you can do this can I please invest in your business because you are going to be a billion dollar company.

<comment><USER5> > If you can get a 100 real users then $2000 is way, way too cheap

For some services I've delivered people at $0.70. Other at $1,000+. Both are profitable for supplier and the company. Price has no meaning until you understand eCPA, per user revenue, margin and scale.

> If you have figured out how to get a 100 real engaged customers to any > service on demand then you can get a thousand or a million.

Scaling campaigns doesn't work like that, especially in performance channels. Some channels scale better than other but there is always a exponential cost per user acquisition.

This is complete misinformation your saying. Sorry, I'm not trying to be rude. And I'm a bit surprised in a forum that is usually as considered as HN this is getting pushed to the top of the page.

<comment><USER4> I am not saying that you can't acquire 100 real customers under $2000 (in many niches you certainly can), but that if you can do this on demand for any service then $2000 is far too cheap. If you can get me 100 real customers I will pay you $10,000 in a heart beat.

In my niche we can't acquire customers under $2000 a pop - luckily the LCV supports this expenditure. My customers don't click on ads, don't respond to emails, don't respond to snail mail (even hand written ones), and don't answer their phones. The only way we can reach them is by physical cold calling and we have to visit each prospect multiple times in person to get to the stage we can make a presentation. The only good news is once we go through this ordeal 75% of our prospects buy.

</comment></comment></comment><comment><USER6> Getting 100 users is easy. Getting 100 paid users? i would sign up for that.

<comment><USER7> I think every one would. :)

</comment></comment><comment><USER5> You're describing a performance marketing agency/freelancer. This already exists.

And thinking a good price is irrelevant until you have a product. Some products you supply at $0.70 others at $1,000+

</comment><comment><USER8> These aren't users which would be something else of course :p. These are [qualified] leads. Not that they aren't worth anything. They are. But the distinction is big.

</comment><comment><USER9> Are you thinking only B2C or B2B as well? Also "user" sounds more substantial than what you describe in your last point which is really a lead with expressed interest that has agreed to be contacted again. A lead isn't exactly a user.

Having clarified that distinction between user and lead what you seem to be thinking of offering is $20 per opted-in targeted lead along with design and copy editing services to make pre-launch start-up look more professional.

The pricing seems fine if you have a portfolio that shows that you can actually do the design and copy editing. I feel like the 100 users or your money back is gimmicky.

Maybe a fixed pricing something like the following:

Logo, color palette and font selections - $300

Create landingpage - $300

Writing and copy editing for landing page, automated response email $400

Targeted opt-in leads $10 per lead

This still gets you to the $2000 if you succeed at the lead generation.

<comment><USER10> I agree I would rather see it piecemeal and/or hourly on some items. you want to knock it out of the park figure out how to do sales on commission for projects. although most people are cheap and completely under estimate cost of acquiring their customers.

</comment></comment><comment><USER11> I'd imagine the first 100 "users" would rapidly turn into a here's 100 random emails that are interested in ANYTHING (but not really).

</comment><comment><USER12> Yes they would, but I think there would be caveats, so not just 100 random people signed up to your mailing list but people who are in the correct demographic for the company and have actively signed up / are using it (not necessarily paid though). If you could do that you could charge more than 2k.

</comment><comment><USER13> We paid $600 per lead for a meeting with a CEO or VP of a sizable company that met various criteria. It sounded great because we were confident that we could close enough deals to make it profitable.

In reality we only got a few leads and they weren't as relevant as we had hoped. We ended up suing for breach of contract and got about 1/2 of our money back.

My takeaway was to be very skeptical of someone else that says they can get customers for you. It may work at a later stage for a company but for earlier stage companies I'm not sure you can (or should) outsource that.

That said, you can probably find people who haven't had the same experience as me that would pay you some $.

<comment><USER14> If you don't mind me asking what were the grounds for the breach of contract?

<comment><USER13> They didn't fulfill the number of leads we had paid for. I think they fulfilled 2 of 18. The big mistake we made was paying for the leads up front. We lost any and all leverage we had.

</comment></comment></comment><comment><USER15> Getting users to sign up for a pre-launch list isn't incredibly hard, especially when you have a good looking product. Getting those users to convert into paying customers is where the real challenge is. I generated a list of a few hundred users pre-launch and am still sitting at a consistent ~25 paying users 3 months in.

</comment><comment><USER16> Curious how such a service would qualify the users.

</comment><comment><USER17> Would definitely use this. Hit me up at sixsamuraisoldier [at] gmail.com

</comment><comment><USER18> Absolutely. I'd also pay for a service that generates a business idea, has 100 paying users, and is willing to sell the idea and list.

<comment><AUTHOR> What would you pay for that?

</comment></comment><comment><USER19> If they are paying users. Hell yeah :-)

</comment><comment><USER20> As long as first signups are not like these:

firstname.lastname@example.com

firstname.lastname@example.com

firstname.lastname@example.com

firstname.lastname@example.com

</comment><comment><USER21> I have no personal use for this, but it sounds like a great idea.

</comment><comment><USER10> Is this B2b or B2C?</comment>


Lessons the "learn to code" movement needs to learn from Hackathons. - <AUTHOR> http://theycallmeswift.com/2013/03/05/things-the-learn-to-code-movement-needs-to-learn-from-hackathons/ <comment><USER2> "Mistakes are cheap because there's no external pressure to perform, so developers can take risks and experiment without fear of repercussions or embarrassment"

What a great way to learn :)

<comment><AUTHOR> I've been lucky enough to have jobs in the past that allotted a bunch of time for learning, but I know a ton of people who don't have that luxury.

For students, I'm sure hackathons are a great change of pace from what they're doing in class too. Nobody puts a grade on your hackathon project after all :)</comment></comment>